aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog265
-rw-r--r--gdb/Makefile.in1631
-rw-r--r--gdb/ada-exp.y2
-rw-r--r--gdb/alphanbsd-tdep.c29
-rw-r--r--gdb/avr-tdep.c3
-rw-r--r--gdb/ax-gdb.c1
-rw-r--r--gdb/breakpoint.c42
-rw-r--r--gdb/c-exp.y2
-rw-r--r--gdb/c-valprint.c1
-rw-r--r--gdb/cli/cli-script.c30
-rw-r--r--gdb/cli/cli-script.h2
-rw-r--r--gdb/config/i386/nbsd.mt (renamed from gdb/config/i386/nbsdelf.mt)3
-rw-r--r--gdb/config/i386/nbsdaout.mh3
-rw-r--r--gdb/config/i386/nbsdaout.mt3
-rw-r--r--gdb/config/i386/nbsdelf.mh3
-rw-r--r--gdb/config/i386/tm-nbsd.h13
-rw-r--r--gdb/config/i386/tm-nbsdaout.h26
-rw-r--r--gdb/config/mips/nbsd.mt3
-rw-r--r--gdb/configure.tgt5
-rw-r--r--gdb/cp-abi.c1
-rw-r--r--gdb/doc/ChangeLog17
-rw-r--r--gdb/doc/gdb.texinfo135
-rw-r--r--gdb/dwarf2read.c11
-rw-r--r--gdb/f-exp.y2
-rw-r--r--gdb/gdb-events.c31
-rw-r--r--gdb/gdb-events.h4
-rwxr-xr-xgdb/gdb-events.sh2
-rw-r--r--gdb/gdbserver/ChangeLog15
-rw-r--r--gdb/gdbserver/linux-low.c33
-rw-r--r--gdb/gdbserver/remote-utils.c6
-rw-r--r--gdb/gdbserver/server.c29
-rw-r--r--gdb/gdbserver/target.h7
-rw-r--r--gdb/gnu-nat.c1
-rw-r--r--gdb/hpux-thread.c1
-rw-r--r--gdb/i386-linux-nat.c7
-rw-r--r--gdb/i386-tdep.c26
-rw-r--r--gdb/i386-tdep.h1
-rw-r--r--gdb/i386bsd-tdep.c61
-rw-r--r--gdb/i386nbsd-tdep.c157
-rw-r--r--gdb/i387-tdep.c1
-rw-r--r--gdb/inferior.h2
-rw-r--r--gdb/inflow.c17
-rw-r--r--gdb/inftarg.c1
-rw-r--r--gdb/jv-exp.y2
-rw-r--r--gdb/jv-valprint.c1
-rw-r--r--gdb/lin-lwp.c1
-rw-r--r--gdb/m2-exp.y2
-rw-r--r--gdb/m3-nat.c1
-rw-r--r--gdb/mipsnbsd-tdep.c4
-rw-r--r--gdb/nbsd-tdep.c11
-rw-r--r--gdb/nbsd-tdep.h2
-rw-r--r--gdb/osabi.c1
-rw-r--r--gdb/p-exp.y2
-rw-r--r--gdb/p-lang.c1
-rw-r--r--gdb/ppcnbsd-tdep.c9
-rw-r--r--gdb/proc-api.c2
-rw-r--r--gdb/procfs.c1
-rw-r--r--gdb/regcache.c23
-rw-r--r--gdb/regcache.h4
-rw-r--r--gdb/rs6000-tdep.c11
-rw-r--r--gdb/shnbsd-tdep.c9
-rw-r--r--gdb/signals/signals.c1
-rw-r--r--gdb/sol-thread.c1
-rw-r--r--gdb/sparcnbsd-tdep.c2
-rw-r--r--gdb/stack.c27
-rw-r--r--gdb/symtab.c25
-rw-r--r--gdb/target.c15
-rw-r--r--gdb/target.h9
-rw-r--r--gdb/testsuite/ChangeLog21
-rw-r--r--gdb/testsuite/gdb.base/commands.exp115
-rw-r--r--gdb/testsuite/gdb.mi/ChangeLog5
-rw-r--r--gdb/testsuite/gdb.mi/gdb680.exp56
-rw-r--r--gdb/testsuite/gdb.threads/killed.c24
-rw-r--r--gdb/testsuite/gdb.threads/killed.exp97
-rw-r--r--gdb/testsuite/gdb.threads/pthreads.exp32
-rw-r--r--gdb/testsuite/lib/gdb.exp36
-rw-r--r--gdb/testsuite/lib/mi-support.exp2
-rw-r--r--gdb/tui/ChangeLog179
-rw-r--r--gdb/tui/tui-hooks.c71
-rw-r--r--gdb/tui/tui-out.c2
-rw-r--r--gdb/tui/tui.c198
-rw-r--r--gdb/tui/tui.h28
-rw-r--r--gdb/tui/tuiData.c296
-rw-r--r--gdb/tui/tuiData.h41
-rw-r--r--gdb/tui/tuiDisassem.c400
-rw-r--r--gdb/tui/tuiDisassem.h2
-rw-r--r--gdb/tui/tuiIO.c246
-rw-r--r--gdb/tui/tuiIO.h7
-rw-r--r--gdb/tui/tuiSource.c116
-rw-r--r--gdb/tui/tuiSourceWin.c226
-rw-r--r--gdb/tui/tuiSourceWin.h17
-rw-r--r--gdb/tui/tuiStack.c181
-rw-r--r--gdb/tui/tuiWin.c6
-rw-r--r--gdb/version.in2
-rw-r--r--gdb/win32-nat.c1
-rw-r--r--gdb/wince.c1
-rw-r--r--gdb/x86-64-linux-nat.c1
-rw-r--r--gdb/x86-64-linux-tdep.c1
98 files changed, 3283 insertions, 1929 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 3d9bb66..f379860 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,258 @@
+2002-09-03 Theodore A. Roth <troth@verinet.com>
+
+ * gdb/avr-tdep.c (avr_gdbarch_init): Use
+ generic_unwind_get_saved_register.
+
+2002-09-03 David Carlton <carlton@math.stanford.edu>
+
+ * dwarf2read.c (dwarf2_add_member_fn): Add the 'type'
+ argument (PR gdb/653). Update call to smash_to_method_type.
+ (read_structure_scope): Update call to dwarf2_add_member_fn.
+
+2002-09-03 Michal Ludvig <mludvig@suse.cz>
+
+ * x86-64-linux-tdep.c: Include gdb_string.h
+ * x86-64-linux-nat.c: Ditto.
+
+2002-09-02 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * ada-exp.y (yyname, yyrule): Remap global variables that appear
+ when YYDEBUG is set to 1.
+ * c-exp.y: Likewise.
+ * f-exp.y: Likewise.
+ * jv-exp.y: Likewise.
+ * m2-exp.y: Likewise.
+ * p-exp.y: Likewise.
+
+2002-09-02 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (i386nbsd-tdep.o): Add $(solib_svr4_h) to
+ dependency list.
+ * i386nbsd-tdep.c (i386nbsdelf_init_abi): Set
+ solib_svr4_fetch_link_map_offsets to
+ nbsd_ilp32_solib_svr4_fetch_link_map_offsets.
+ * config/i386/nbsd.mt (TDEPFILES): Add solib.o and solib-svr4.o.
+ * config/i386/nbsdaout.mh (NATDEPFILES): Remove solib.o.
+ * config/i386/nbsdelf.mh (NATDEPFILES): Remove solib.o,
+ solib-svr4.o, and solib-legacy.o.
+ * config/i386/tm-nbsd.h: Include solib.h.
+
+2002-09-02 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * configure.tgt (i[3456]86-*-netbsdelf*): Merge with...
+ (i[3456]86-*-netbsd*): ...this. Set gdb_target to nbsd.
+ (i[3456]86-*-openbsd*): Make this a separate entry. Add a
+ comment noting that this needs its own target configuration.
+ * config/i386/nbsd.mt: New file.
+ * config/i386/nbsdaout.mt: Remove.
+ * config/i386/nbsdelf.mt: Ditto.
+ * config/i386/tm-nbsdaout.h: Ditto.
+
+2002-09-02 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * i386nbsd-tdep.c (i386nbsd_sigtramp_offset): New function.
+ (i386nbsd_pc_in_sigtramp): Rewrite to use i386nbsd_sigtramp_offset.
+ (i386nbsd_init_abi): Don't initialize tdep->sigtramp_start or
+ tdep->sigtramp_end.
+ (i386nbsd_sigtramp_start, i386nbsd_sigtramp_end): Remove.
+ * config/i386/tm-nbsd.h (SIGTRAMP_START, SIGTRAMP_END)
+ (i386bsd_sigtramp_start, i386bsd_sigtramp_end): Remove.
+
+2002-09-02 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (i386nbsd-tdep.o): Add $(arch_utils_h),
+ $(i386_tdep_h), and $(nbsd_tdep_h) to dependency list.
+ * i386-tdep.h (i386bsd_init_abi): New prototype.
+ * i386bsd-tdep.c (i386bsd_init_abi): Remove "static" from
+ function declaration.
+ (_initialize_i386bsd_tdep): Don't register OS ABI handlers
+ for NetBSD-a.out or NetBSD-ELF.
+ (i386nbsd_sigtramp_start, i386nbsd_sigtramp_end)
+ (i386nbsd_sc_pc_offset, i386nbsd_sc_sp_offset)
+ (i386nbsd_init_abi, i386nbsdelf_init_abi): Move to...
+ * i386nbsd-tdep.c: ...here. Include arch-utils.h, i386-tdep.h,
+ and nbsd-tdep.h.
+ (i386nbsd_pc_in_sigtramp): New function.
+ (i386nbsd_init_abi): Set gdbarch_pc_in_sigtramp to
+ i386nbsd_pc_in_sigtramp.
+ (_initialize_i386nbsd_tdep): Register i386nbsd_init_abi
+ and i386nbsdelf_init_abi OS ABI handlers.
+ * config/i386/nbsdaout.mt (TDEPFILES): Add nbsd-tdep.o.
+ * config/i386/nbsdelf.mt (TDEPFILES): Likewise.
+
+2002-09-02 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-linux-nat.c (dummy_sse_values): Only try to fill in the SSE
+ registers if the target really has them.
+
+2002-08-31 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (mipsnbsd-tdep.o): Use $(nbsd_tdep_h) rather
+ than nbsd-tdep.h.
+
+2002-08-31 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (alphanbsd-tdep.o): Add $(frame_h) to dependency
+ list.
+ * alphanbsd-tdep.c (alphanbsd_sigcontext_addr)
+ (alphanbsd_skip_sigtramp_frame): New functions.
+ (alphanbsd_init_abi): Set tdep->skip_sigtramp_frame to
+ alphanbsd_skip_sigtramp_frame. Set tdep->sigcontext_addr
+ to alphanbsd_sigcontext_addr.
+
+2002-08-31 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * Makefile.in (mipsnbsd-tdep.o): Add nbsd-tdep.h to dependency
+ list.
+ (nbsd-tdep.o): Add $(gdb_string_h) to dependency list.
+ * alphanbsd-tdep.c (alphanbsd_pc_in_sigtramp): Use
+ nbsd_pc_in_sigtramp.
+ * mipsnbsd-tdep.c: Include nbsd-tdep.h.
+ (mipsnbsd_pc_in_sigtramp): Use nbsd_pc_in_sigtramp.
+ * nbsd-tdep.c: Include gdb_string.h.
+ (nbsd_pc_in_sigtramp): New function.
+ * nbsd-tdep.h (nbsd_pc_in_sigtramp): New prototype.
+ * ppcnbsd-tdep.c (ppcnbsd_pc_in_sigtramp): New function.
+ (ppcnbsd_init_abi): Set gdbarch_pc_in_sigtramp to
+ ppcnbsd_pc_in_sigtramp.
+ * shnbsd-tdep.c (shnbsd_pc_in_sigtramp): New function.
+ (shnbsd_init_abi): Set gdbarch_pc_in_sigtramp to
+ shnbsd_pc_in_sigtramp.
+ * sparcnbsd-tdep.c (sparcnbsd_init_abi_elf): Set
+ gdbarch_pc_in_sigtramp to nbsd_pc_in_sigtramp.
+ * config/mips/nbsd.mt (TDEPFILES): Add nbsd-tdep.o.
+
+2002-08-30 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * breakpoint.c (breakpoint_init_inferior): Reset the val field of
+ watchpoints to NULL.
+ (insert_breakpoints): set val field of watchpoints if NULL.
+
+
+2002-08-29 Jim Blandy <jimb@redhat.com>
+
+ * symtab.c (lookup_symbol_aux): In the cases where we find a
+ minimal symbol of an appropriate name and use its address to
+ select a symtab to read and search, use `name' (as passed to us)
+ as the demangled name when searching the symtab's global and
+ static blocks, not the minsym's name.
+
+2002-08-29 Keith Seitz <keiths@redhat.com>
+
+ * stack.c (print_frame_info_base): Always set current_source_symtab
+ and current_source_line.
+
+2002-08-29 Donn Terry <donnte@microsoft.com>
+
+ * proc-api.c (rw_table): Fix typo in #ifdef PCSHOLD (missing S).
+
+2002-08-28 Keith Seitz <keiths@redhat.com>
+
+ * stack.c (select_frame): Add FIXME concerning selected-frame
+ events.
+ (select_frame_command): Send selected-frame-level-changed
+ event notification, but only if the level actually changed.
+ (up_silently_base): Add selected-frame-level-changed event
+ notification.
+ (down_silently_base): Likewise.
+
+2002-08-28 Andrew Cagney <ac131313@redhat.com>
+
+ * Makefile.in: Update dependencies for all gdb/*.c files.
+
+2002-08-27 Tom Tromey <tromey@redhat.com>
+
+ * Makefile.in (osabi.o, i387-tdep.o, i386-linux-nat.o, lin-lwp.o,
+ ax-gdb.o, signals.o, jv-valprint.o, c-valprint.o, cp-abi.o):
+ Update dependencies.
+ * i387-tdep.c: Include gdb_string.h.
+ * osabi.c: Likewise.
+ * i386-linux-nat.c: Likewise.
+ * lin-lwp.c: Likewise.
+ * ax-gdb.c: Likewise.
+ * signals/signals.c: Likewise.
+ * jv-valprint.c: Likewise.
+ * p-lang.c: Likewise.
+ * c-valprint.c: Likewise.
+ * cp-abi.c: Likewise.
+
+2002-08-27 Elena Zannoni <ezannoni@redhat.com>
+
+ * cli/cli-script.h (copy_command_lines): Export.
+ * breakpoint.c: Include cli/cli-script.h.
+ * Makefile.in (breakpoint.o): Update dependencies.
+
+2002-08-26 Joel Brobecker <brobecker@gnat.com>
+
+ * cli/cli-script.c (copy_command_lines): New function.
+ * defs.h (copy_command_lines): Export.
+ * testsuite/gdb.base/commands.exp: New tests for commands
+ attached to a temporary breakpoint, and for commands that
+ delete the breakpoint they are attached to.
+
+2002-08-26 Michael Snyder <msnyder@redhat.com>
+
+ * breakpoint.c (bpstat_stop_status): Instead of copying the
+ pointer to the breakpoint commands struct, make a new copy
+ of the struct and point to that.
+ (bpstat_clear): Free the commands struct.
+ (bpstat_clear_actions): Free the commands struct.
+ (bpstat_do_actions): Free the command actions. Also execute
+ the local cleanups, instead of deleting them.
+ (delete_breakpoint): Leave the commands field of the bpstat
+ chain alone -- it will be freed later.
+
+2002-08-26 Kevin Buettner <kevinb@redhat.com>
+
+ * rs6000-tdep.c (altivec_register_p): Restore function inadvertently
+ deleted in 2002-08-20 commit. This function is still used by
+ ppc-linux-nat.c.
+
+2002-08-26 Keith Seitz <keiths@redhat.com>
+
+ * gdb-events.sh: Add selected-frame-level-changed event.
+ * gdb-events.c: Regenerated.
+ * gdb-events.h: Regenerated.
+
+2002-08-26 Stephane Carrez <stcarrez@nerim.fr>
+
+ Fix PR gdb/393:
+ * inflow.c (terminal_save_ours): New function to save terminal
+ settings.
+ * inferior.h (terminal_save_ours): Declare.
+ * target.c (debug_to_terminal_save_ours): New function.
+ (cleanup_target): Defaults to_terminal_save_ours.
+ (update_current_target): Inherit to_terminal_save_ours.
+ (setup_target_debug): Set to_terminal_save_ours.
+ * target.h (target_terminal_save_ours): New to save terminal settings.
+ (target_ops): New member to_terminal_save_ours.
+ * gnu-nat.c (init_gnu_ops): Set to_terminal_save_ours.
+ * hpux-thread.c (init_hpux_thread_ops): Likewise.
+ * inftarg.c (init_child_ops): Likewise.
+ * m3-nat.c (init_m3_ops): Likewise.
+ * procfs.c (init_procfs_ops): Likewise.
+ * wince.c (init_child_ops): Likewise.
+ * win32-nat.c (init_child_ops): Likewise.
+ * sol-thread.c (init_sol_thread_ops): Likewise.
+
+2002-08-26 Mark Kettenis <kettenis@gnu.org>
+
+ * i386-tdep.c (i386_store_return_value): Undeprecate. Convert to
+ use regcache_* functions.
+ (i386_gdbarch_init): Set store_return_value instead of
+ deprecated_store_return_value.
+
+ * regcache.c (regcache_raw_write_signed,
+ regcache_raw_write_unsigned): New functions.
+ * regcache.h (regcache_raw_write_signed,
+ regcache_raw_write_unsigned): New prototypes.
+
+2002-08-25 Andrew Cagney <ac131313@redhat.com>
+
+ * Makefile.in (c-exp.tab.o, jv-exp.tab.o, f-exp.tab.o)
+ (m2-exp.tab.o, p-exp.tab.o, ada-exp.tab.o): Move to before the
+ source file dependencies. Cleanup corresponding generator rules.
+
2002-08-25 Andrew Cagney <ac131313@redhat.com>
* regcache.h (register_offset_hack): Declare.
@@ -149,7 +404,7 @@
(linux_make_note_section): Initialize thread_args.num_notes, and
use it to determine whether notes for any threads were created.
-2002-08-23 Donn Terry <dterry@microsoft.com>
+2002-08-23 Donn Terry <donnte@microsoft.com>
* proc-api.c (rw_table): Do not include a row for PCDSTOP if the
corresponding macro is not defined. Likewise for PCNICE, PCSHOLD
@@ -161,6 +416,14 @@
2002-08-22 Elena Zannoni <ezannoni@redhat.com>
+ * ppc-sysv-tdep.c (ppc_sysv_abi_push_arguments): use
+ write_register wherever possible instead of manipulating the
+ register bytes directly.
+ Assign VALUE_CONTENTS to a variable and use that.
+ The GPR numbers are now dependent on the architecture.
+
+2002-08-22 Elena Zannoni <ezannoni@redhat.com>
+
* rs6000-tdep.c (struct rs6000_framedata): Add saved_ev and
ev_offset fields.
(skip_prologue): Add support for BookE/e500 instructions.
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 756ffdf..45739e3 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -1198,15 +1198,20 @@ version.c: Makefile version.in
mv version.c-tmp version.c
version.o: version.c $(version_h)
-# c-exp.tab.c is generated in objdir from c-exp.y if it doesn't exist
-# in srcdir, then compiled in objdir to c-exp.tab.o.
-# If we said c-exp.tab.c rather than ./c-exp.tab.c some makes
-# would sometimes re-write it into $(srcdir)/c-exp.tab.c.
+# LANG-exp.tab.c is generated in objdir from LANG-exp.y if it doesn't
+# exist in srcdir, then compiled in objdir to LANG-exp.tab.o.
-# Remove bogus decls for malloc/realloc/free which conflict with everything
-# else. Strictly speaking c-exp.tab.c should therefore depend on
-# Makefile.in, but that was a pretty big annoyance.
+# If we said LANG-exp.tab.c rather than ./c-exp.tab.c some makes would
+# sometimes re-write it into $(srcdir)/c-exp.tab.c.
+
+# Remove bogus decls for malloc/realloc/free which conflict with
+# everything else. Strictly speaking c-exp.tab.c should therefore
+# depend on Makefile.in, but that was a pretty big annoyance.
+
+# See comments above ...
+.PRECIOUS: c-exp.tab.c
+c-exp.tab.o: c-exp.tab.c
c-exp.tab.c: c-exp.y
$(SHELL) $(YLWRAP) "$(YACC)" $(srcdir)/c-exp.y y.tab.c c-exp.tmp -- $(YFLAGS)
-sed -e '/extern.*malloc/d' \
@@ -1220,6 +1225,8 @@ c-exp.tab.c: c-exp.y
-rm c-exp.tmp
mv c-exp.new ./c-exp.tab.c
+# See comments above ...
+.PRECIOUS: jv-exp.tab.c
jv-exp.tab.o: jv-exp.tab.c
jv-exp.tab.c: jv-exp.y
$(SHELL) $(YLWRAP) "$(YACC)" $(srcdir)/jv-exp.y y.tab.c jv-exp.tmp -- $(YFLAGS)
@@ -1234,6 +1241,8 @@ jv-exp.tab.c: jv-exp.y
-rm jv-exp.tmp
mv jv-exp.new ./jv-exp.tab.c
+# See comments above ...
+.PRECIOUS: f-exp.tab.c
f-exp.tab.o: f-exp.tab.c
f-exp.tab.c: f-exp.y c-exp.tab.c
$(SHELL) $(YLWRAP) "$(YACC)" $(srcdir)/f-exp.y y.tab.c f-exp.tmp -- $(YFLAGS)
@@ -1248,10 +1257,8 @@ f-exp.tab.c: f-exp.y c-exp.tab.c
-rm f-exp.tmp
mv f-exp.new ./f-exp.tab.c
-# m2-exp.tab.c is generated in objdir from m2-exp.y if it doesn't exist
-# in srcdir, then compiled in objdir to m2-exp.tab.o.
-# Remove bogus decls for malloc/realloc/free which conflict with everything
-# else.
+# See comments above ...
+.PRECIOUS: m2-exp.tab.c
m2-exp.tab.o: m2-exp.tab.c
m2-exp.tab.c: m2-exp.y
$(SHELL) $(YLWRAP) "$(YACC)" $(srcdir)/m2-exp.y y.tab.c m2-exp.tmp -- $(YFLAGS)
@@ -1266,10 +1273,9 @@ m2-exp.tab.c: m2-exp.y
-rm m2-exp.tmp
mv m2-exp.new ./m2-exp.tab.c
-# ada-exp.tab.c is generated in objdir from ada-exp.y if it doesn't exist
-# in srcdir, then compiled in objdir to ada-exp.tab.o.
-# Remove bogus decls for malloc/realloc/free which conflict with everything
-# else.
+# See comments above ...
+.PRECIOUS: ada-exp.tab.c
+ada-exp.tab.o: ada-exp.tab.c
ada-exp.tab.c: ada-exp.y
$(YACC) $(YFLAGS) $(srcdir)/ada-exp.y
-sed -e '/extern.*malloc/d' \
@@ -1282,6 +1288,9 @@ ada-exp.tab.c: ada-exp.y
-rm y.tab.c
mv ada-exp.new ./ada-exp.tab.c
+# See comments above ...
+.PRECIOUS: ada-lex.c
+ada-lex.o: ada-lex.c
ada-lex.c: ada-lex.l
@if [ "$(FLEX)" ] && $(FLEX) --version >/dev/null 2>&1; then \
echo $(FLEX) -Isit $(srcdir)/ada-lex.l ">" ada-lex.c; \
@@ -1293,10 +1302,8 @@ ada-lex.c: ada-lex.l
echo "Warning: ada-lex.c older than ada-lex.l and flex not available."; \
fi
-# p-exp.tab.c is generated in objdir from p-exp.y if it doesn't exist
-# in srcdir, then compiled in objdir to p-exp.tab.o.
-# Remove bogus decls for malloc/realloc/free which conflict with everything
-# else.
+# See comments above ...
+.PRECIOUS: p-exp.tab.c
p-exp.tab.o: p-exp.tab.c
p-exp.tab.c: p-exp.y
$(SHELL) $(YLWRAP) "$(YACC)" $(srcdir)/p-exp.y y.tab.c p-exp.tmp -- $(YFLAGS)
@@ -1311,10 +1318,6 @@ p-exp.tab.c: p-exp.y
-rm p-exp.tmp
mv p-exp.new ./p-exp.tab.c
-# These files are updated atomically, so make never has to remove them
-.PRECIOUS: m2-exp.tab.c f-exp.tab.c c-exp.tab.c
-.PRECIOUS: jv-exp.tab.c p-exp.tab.c ada-exp.tab.c
-
lint: $(LINTFILES)
$(LINT) $(INCLUDE_CFLAGS) $(LINTFLAGS) $(LINTFILES) \
`echo $(DEPFILES) | sed 's/\.o /\.c /g'`
@@ -1429,991 +1432,867 @@ z8k-tdep.o: $(srcdir)/z8k-tdep.c
$(CC) -c $(INTERNAL_WARN_CFLAGS) $(NO_WERROR_CFLAGS) \
$(srcdir)/z8k-tdep.c
-# The dependencies. In aphabetic order.
+#
+# Generated YACC/LEX dependencies
+#
-a68v-nat.o: a68v-nat.c $(defs_h) $(gdbcore_h) $(inferior_h) \
- $(regcache_h)
+c-exp.tab.o: c-exp.tab.c $(defs_h) $(gdb_string_h) $(expression_h) \
+ $(value_h) $(parser_defs_h) $(language_h) $(c_lang_h) $(bfd_h) \
+ $(symfile_h) $(objfiles_h)
-aix-thread.o: aix-thread.c $(defs_h) $(gdbcore_h) $(gdbthread_h) \
- $(inferior_h) $(target_h) $(regcache_h) $(gdbcmd_h) $(gdb_assert_h) \
- $(ppc_tdep_h) $(language_h)
+jv-exp.tab.o: jv-exp.tab.c jv-lang.h $(defs_h) $(expression_h) \
+ $(gdbtypes_h) $(language_h) $(parser_defs_h) $(symtab_h) $(value_h) \
+ $(bfd_h) $(objfiles_h) $(symfile_h)
-ada-lang.o: ada-lang.c ada-lang.h c-lang.h $(defs_h) $(expression_h) \
- $(gdbtypes_h) $(inferior_h) language.h parser-defs.h $(symtab_h) \
- $(gdbcmd_h) $(ui_out_h) symfile.h objfiles.h $(gdbcore_h)
+f-exp.tab.o: f-exp.tab.c f-lang.h $(defs_h) $(expression_h) \
+ $(language_h) $(parser_defs_h) $(value_h) $(bfd_h) $(objfiles_h) \
+ $(symfile_h)
-ada-tasks.o: ada-tasks.c ada-lang.h $(defs_h) language.h $(value_h) \
- $(command_h) $(value_h) $(gdbcore_h)
+m2-exp.tab.o: m2-exp.tab.c $(defs_h) $(expression_h) $(gdbtypes_h) \
+ $(language_h) m2-lang.h $(parser_defs_h) $(symtab_h) $(value_h) \
+ $(bfd_h) $(objfiles_h) $(symfile_h)
-ada-typeprint.o: ada-typeprint.c ada-lang.h $(defs_h) $(expression_h) \
- $(gdbcmd_h) $(gdbcore_h) $(gdbtypes_h) language.h $(symtab_h) \
- target.h typeprint.h $(value_h) ada-lang.h
+p-exp.tab.o: p-exp.tab.c $(defs_h) $(expression_h) $(gdbtypes_h) \
+ $(language_h) p-lang.h $(parser_defs_h) $(symtab_h) $(value_h) \
+ $(bfd_h) $(objfiles_h) $(symfile_h)
-ada-valprint.o: ada-valprint.c $(defs_h) $(expression_h) $(gdbtypes_h) \
- language.h $(symtab_h) valprint.h $(value_h) c-lang.h ada-lang.h \
- annotate.h
+ada-exp.tab.o: ada-exp.tab.c ada-lex.c ada-lang.h \
+ $(defs_h) $(expression_h) \
+ $(gdbtypes_h) language.h parser-defs.h $(symtab_h) $(value_h) \
+ $(bfd_h) objfiles.h symfile.h
-alpha-nat.o: alpha-nat.c $(defs_h) $(gdbcore_h) $(inferior_h) $(target_h) \
- $(regcache_h) $(alpha_tdep_h)
+#
+# The dependencies. In aphabetic order.
+#
+a68v-nat.o: a68v-nat.c $(defs_h) $(inferior_h) $(regcache_h)
+abug-rom.o: abug-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
+ $(serial_h) $(regcache_h)
+ada-lang.o: ada-lang.c $(gdb_string_h) $(demangle_h) $(defs_h) $(symtab_h) \
+ $(gdbtypes_h) $(gdbcmd_h) $(expression_h) $(parser_defs_h) \
+ $(language_h) $(c_lang_h) $(inferior_h) $(symfile_h) $(objfiles_h) \
+ $(breakpoint_h) $(gdbcore_h) $(ada_lang_h) $(ui_out_h)
+ada-tasks.o: ada-tasks.c $(defs_h) $(command_h) $(value_h) $(language_h) \
+ $(inferior_h) $(symtab_h) $(target_h) $(gdbcore_h) $(gregset_h) \
+ $(ada_lang_h)
+ada-typeprint.o: ada-typeprint.c $(defs_h) $(gdb_obstack_h) $(bfd_h) \
+ $(symtab_h) $(gdbtypes_h) $(expression_h) $(value_h) $(gdbcore_h) \
+ $(target_h) $(command_h) $(gdbcmd_h) $(language_h) $(demangle_h) \
+ $(c_lang_h) $(typeprint_h) $(ada_lang_h) $(gdb_string_h)
+ada-valprint.o: ada-valprint.c $(defs_h) $(symtab_h) $(gdbtypes_h) \
+ $(expression_h) $(value_h) $(demangle_h) $(valprint_h) $(language_h) \
+ $(annotate_h) $(ada_lang_h) $(c_lang_h)
+aix-thread.o: aix-thread.c $(defs_h) $(gdb_assert_h) $(gdbthread_h) \
+ $(target_h) $(inferior_h) $(regcache_h) $(gdbcmd_h) $(language_h) \
+ $(ppc_tdep_h)
+alpha-linux-tdep.o: alpha-linux-tdep.c $(defs_h) $(frame_h) $(gdbcore_h) \
+ $(value_h) $(alpha_tdep_h)
+alpha-nat.o: alpha-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) $(target_h) \
+ $(regcache_h) $(alpha_tdep_h) $(gregset_h)
+alpha-osf1-tdep.o: alpha-osf1-tdep.c $(defs_h) $(frame_h) $(gdbcore_h) \
+ $(value_h) $(alpha_tdep_h)
+alpha-tdep.o: alpha-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(symtab_h) \
+ $(value_h) $(gdbcmd_h) $(gdbcore_h) $(dis_asm_h) $(symfile_h) \
+ $(objfiles_h) $(gdb_string_h) $(linespec_h) $(regcache_h) \
+ $(doublest_h) $(arch_utils_h) $(elf_bfd_h) $(alpha_tdep_h)
alphabsd-nat.o: alphabsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \
- $(alpha_tdep_h) alphabsd-tdep.h
-
-alpha-tdep.o: alpha-tdep.c $(defs_h) $(gdbcmd_h) $(gdbcore_h) \
- $(inferior_h) $(symtab_h) $(dis_asm_h) $(gdb_string_h) $(linespec_h) \
- $(regcache_h) $(doublest_h) $(BFD_SRC)/elf-bfd.h $(alpha_tdep_h)
-
-alpha-linux-tdep.o: alpha-linux-tdep.c $(defs_h) $(value_h) $(alpha_tdep_h)
-
-alpha-osf1-tdep.o: alpha-osf1-tdep.c $(defs_h) $(value_h) $(alpha_tdep_h)
-
-alphabsd-tdep.o: alphabsd-tdep.c $(defs_h) $(regcache_h) alphabsd-tdep.h
-
+ $(alpha_tdep_h) $(alphabsd_tdep_h) $(gregset_h)
+alphabsd-tdep.o: alphabsd-tdep.c $(defs_h) $(regcache_h) $(alpha_tdep_h) \
+ $(alphabsd_tdep_h)
alphafbsd-tdep.o: alphafbsd-tdep.c $(defs_h) $(value_h) $(alpha_tdep_h)
-
-alphanbsd-tdep.o: alphanbsd-tdep.c $(defs_h) $(gdbcore_h) $(regcache_h) \
- $(value_h) $(alpha_tdep_h) solib-svr4.h alphabsd-tdep.h nbsd-tdep.h
-
-annotate.o: annotate.c $(defs_h) $(annotate_h) $(value_h) $(target_h) $(gdbtypes_h)
-
+alphanbsd-tdep.o: alphanbsd-tdep.c $(defs_h) $(gdbcore_h) $(frame_h) \
+ $(regcache_h) $(value_h) $(solib_svr4_h) $(alpha_tdep_h) \
+ $(alphabsd_tdep_h) $(nbsd_tdep_h)
+annotate.o: annotate.c $(defs_h) $(annotate_h) $(value_h) $(target_h) \
+ $(gdbtypes_h) $(breakpoint_h)
+# OBSOLETE arc-tdep.o: arc-tdep.c
+arch-utils.o: arch-utils.c $(defs_h) $(arch_utils_h) $(gdbcmd_h) \
+ $(inferior_h) $(symtab_h) $(frame_h) $(inferior_h) $(breakpoint_h) \
+ $(gdb_wait_h) $(gdbcore_h) $(gdbcmd_h) $(target_h) $(annotate_h) \
+ $(gdb_string_h) $(regcache_h) $(gdb_assert_h) $(sim_regno_h) \
+ $(version_h) $(floatformat_h)
arm-linux-nat.o: arm-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \
- $(gdb_string_h) $(regcache_h) $(arm_tdep_h)
-
+ $(gdb_string_h) $(regcache_h) $(arm_tdep_h) $(gregset_h)
arm-linux-tdep.o: arm-linux-tdep.c $(defs_h) $(target_h) $(value_h) \
- $(gdbtypes_h) $(floatformat_h) $(regcache_h) $(doublest_h) $(arm_tdep_h)
-
+ $(gdbtypes_h) $(floatformat_h) $(gdbcore_h) $(frame_h) $(regcache_h) \
+ $(doublest_h) $(arm_tdep_h) $(symtab_h) $(symfile_h) $(objfiles_h)
arm-tdep.o: arm-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(gdbcmd_h) \
- $(gdbcore_h) $(gdb_string_h) $(dis_asm_h) $(regcache_h) $(doublest_h) \
- $(value_h) $(arch_utils_h) $(solib_svr4_h) $(arm_tdep_h) \
- $(BFD_SRC)/elf-bfd.h $(INCLUDE_DIR)/coff/internal.h \
- $(INCLUDE_DIR)/elf/arm.h $(sim_arm_h) $(gdb_assert_h)
-
+ $(gdbcore_h) $(symfile_h) $(gdb_string_h) $(dis_asm_h) $(regcache_h) \
+ $(doublest_h) $(value_h) $(arch_utils_h) $(solib_svr4_h) \
+ $(arm_tdep_h) $(gdb_sim_arm_h) $(elf_bfd_h) $(coff_internal_h) \
+ $(elf_arm_h) $(gdb_assert_h) $(bfd_in2_h) $(libcoff_h)
armnbsd-nat.o: armnbsd-nat.c $(defs_h) $(arm_tdep_h) $(inferior_h) \
$(regcache_h) $(gdbcore_h)
-
-armnbsd-tdep.o: armnbsd-tdep.c $(defs_h) $(arm_tdep_h) solib-svr4.h \
- nbsd-tdep.h
-
+armnbsd-tdep.o: armnbsd-tdep.c $(defs_h) $(arm_tdep_h) $(nbsd_tdep_h) \
+ $(solib_svr4_h)
avr-tdep.o: avr-tdep.c $(defs_h) $(gdbcmd_h) $(gdbcore_h) $(inferior_h) \
$(symfile_h) $(arch_utils_h) $(regcache_h) $(gdb_string_h)
-
+ax-gdb.o: ax-gdb.c $(defs_h) $(symtab_h) $(symfile_h) $(gdbtypes_h) \
+ $(value_h) $(expression_h) $(command_h) $(gdbcmd_h) $(frame_h) \
+ $(target_h) $(ax_h) $(ax_gdb_h) $(gdb_string_h)
+ax-general.o: ax-general.c $(defs_h) $(ax_h) $(value_h) $(gdb_string_h)
bcache.o: bcache.c $(defs_h) $(gdb_obstack_h) $(bcache_h) $(gdb_string_h)
-
-blockframe.o: blockframe.c $(defs_h) $(gdbcore_h) $(inferior_h) \
- $(objfiles_h) $(symfile_h) $(target_h) $(regcache_h)
-
-breakpoint.o: breakpoint.c $(defs_h) $(gdbcmd_h) $(gdbcore_h) \
- $(inferior_h) $(language_h) $(target_h) $(gdbthread_h) \
- $(gdb_string_h) $(gdb_events_h) $(linespec_h) $(ui_out_h) \
- $(completer_h) $(gdb_h)
-
+blockframe.o: blockframe.c $(defs_h) $(symtab_h) $(bfd_h) $(symfile_h) \
+ $(objfiles_h) $(frame_h) $(gdbcore_h) $(value_h) $(target_h) \
+ $(inferior_h) $(annotate_h) $(regcache_h) $(gdb_assert_h)
+breakpoint.o: breakpoint.c $(defs_h) $(symtab_h) $(frame_h) $(breakpoint_h) \
+ $(gdbtypes_h) $(expression_h) $(gdbcore_h) $(gdbcmd_h) $(value_h) \
+ $(command_h) $(inferior_h) $(gdbthread_h) $(target_h) $(language_h) \
+ $(gdb_string_h) $(demangle_h) $(annotate_h) $(symfile_h) \
+ $(objfiles_h) $(linespec_h) $(completer_h) $(gdb_h) $(ui_out_h) \
+ $(cli_script_h) $(gdb_events_h)
buildsym.o: buildsym.c $(defs_h) $(bfd_h) $(gdb_obstack_h) $(symtab_h) \
$(symfile_h) $(objfiles_h) $(gdbtypes_h) $(complaints_h) \
$(gdb_string_h) $(expression_h) $(language_h) $(bcache_h) \
- $(filenames_h) $(macrotab_h) $(demangle_h) $(buildsym_h) $(stabsread_h)
-
-builtin-regs.o: builtin-regs.c $(defs.h) $(builtin_regs_h) $(gdbtypes_h) \
- $(gdb_string_h) $(value_h) $(frame_h)
-
-c-lang.o: c-lang.c $(c_lang_h) $(defs_h) $(expression_h) $(gdbtypes_h) \
- $(language_h) $(parser_defs_h) $(symtab_h) $(macroscope_h) \
- gdb_assert.h
-
+ $(filenames_h) $(macrotab_h) $(demangle_h) $(buildsym_h) \
+ $(stabsread_h)
+builtin-regs.o: builtin-regs.c $(defs_h) $(builtin_regs_h) $(gdbtypes_h) \
+ $(gdb_string_h) $(gdb_assert_h)
+c-lang.o: c-lang.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \
+ $(parser_defs_h) $(language_h) $(c_lang_h) $(valprint_h) \
+ $(macroscope_h) $(gdb_assert_h)
c-typeprint.o: c-typeprint.c $(defs_h) $(gdb_obstack_h) $(bfd_h) $(symtab_h) \
$(gdbtypes_h) $(expression_h) $(value_h) $(gdbcore_h) $(target_h) \
$(language_h) $(demangle_h) $(c_lang_h) $(typeprint_h) $(cp_abi_h) \
$(gdb_string_h)
-
-c-valprint.o: c-valprint.c $(defs_h) $(expression_h) $(gdbtypes_h) \
- $(language_h) $(symtab_h) $(valprint_h) $(value_h) $(cp_abi_h)
-
-doublest.o: doublest.c $(defs_h) $(doublest_h) $(floatformat_h) $(gdbtypes_h) \
- $(gdb_assert_h) $(gdb_string_h)
-
-f-lang.o: f-lang.c f-lang.h $(defs_h) $(expression_h) $(gdbtypes_h) \
- $(language_h) $(parser_defs_h) $(symtab_h) $(gdb_string_h)
-
-f-typeprint.o: f-typeprint.c $(defs_h) $(gdb_obstack_h) $(bfd_h) $(symtab_h) \
- $(gdbtypes_h) $(expression_h) $(value_h) $(gdbcore_h) $(target_h) \
- $(f_lang_h) $(gdb_string_h)
-
-f-valprint.o: f-valprint.c $(defs_h) $(expression_h) $(gdbtypes_h) \
- $(language_h) $(symtab_h) $(valprint_h) $(value_h) $(gdb_string_h)
-
-# OBSOLETE ch-exp.o: ch-exp.c ch-lang.h $(defs_h) $(language_h) $(parser_defs_h) \
-# OBSOLETE $(bfd_h) $(symfile_h) $(objfiles_h) $(value_h)
-
-# OBSOLETE ch-lang.o: ch-lang.c ch-lang.h $(defs_h) $(expression_h) $(gdbtypes_h) \
-# OBSOLETE $(language_h) $(parser_defs_h) $(symtab_h)
-
-# OBSOLETE ch-typeprint.o: ch-typeprint.c $(defs_h) $(gdb_obstack_h) $(bfd_h) \
-# OBSOLETE $(symtab_h) $(gdbtypes_h) $(expression_h) $(value_h) $(gdbcore_h) \
-# OBSOLETE $(target_h) $(language_h) $(ch_lang_h) $(typeprint_h) $(gdb_string_h)
-
-# OBSOLETE ch-valprint.o: ch-valprint.c $(defs_h) $(gdb_obstack_h) $(symtab_h) \
-# OBSOLETE $(gdbtypes_h) $(valprint_h) $(expression_h) $(value_h) $(language_h) \
-# OBSOLETE $(demangle_h) $(c_lang_h) $(typeprint_h) $(ch_lang_h) $(annotate_h)
-
-coff-solib.o: coff-solib.c $(defs_h)
-
+c-valprint.o: c-valprint.c $(defs_h) $(gdb_string_h) $(symtab_h) \
+ $(gdbtypes_h) $(expression_h) $(value_h) $(valprint_h) $(language_h) \
+ $(c_lang_h) $(cp_abi_h)
+# OBSOLETE ch-exp.o: ch-exp.c
+# OBSOLETE ch-lang.o: ch-lang.c
+# OBSOLETE ch-typeprint.o: ch-typeprint.c
+# OBSOLETE ch-valprint.o: ch-valprint.c
+cli-out.o: cli-out.c $(defs_h) $(ui_out_h) $(cli_out_h) $(gdb_string_h) \
+ $(gdb_assert_h)
+coff-solib.o: coff-solib.c $(defs_h) $(frame_h) $(bfd_h) $(gdbcore_h) \
+ $(symtab_h) $(symfile_h) $(objfiles_h)
coffread.o: coffread.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(demangle_h) \
$(breakpoint_h) $(bfd_h) $(gdb_obstack_h) $(gdb_string_h) \
$(coff_internal_h) $(libcoff_h) $(symfile_h) $(objfiles_h) \
$(buildsym_h) $(gdb_stabs_h) $(stabsread_h) $(complaints_h) \
$(target_h) $(gdb_assert_h)
-
-complaints.o: complaints.c $(complaints_h) $(defs_h) $(gdbcmd_h)
-
-# Provide explicit rule/dependency - works for more makes.
-copying.o: $(srcdir)/copying.c $(defs_h) $(gdbcmd_h)
-
-core-aout.o: core-aout.c $(defs_h) $(gdbcore_h) $(value_h) $(inferior_h) \
- $(regcache_h)
-
-core-sol2.o: core-sol2.c $(command_h) $(defs_h) $(gdbcore_h) \
- $(inferior_h) $(target_h) $(gdb_string_h) $(regcache_h)
-
-core-regset.o: core-regset.c $(command_h) $(defs_h) $(gdbcore_h) \
- $(inferior_h) $(target_h) $(gdb_string_h)
-
-corefile.o: corefile.c $(dis_asm_h) $(defs_h) $(gdbcmd_h) $(gdbcore_h) \
- $(inferior_h) $(target_h) $(language_h) $(gdb_string_h) \
- $(completer_h) $(symfile_h)
-
-corelow.o: corelow.c $(command_h) $(defs_h) $(gdbcore_h) $(inferior_h) \
- $(target_h) $(gdbthread_h) $(gdb_string_h) $(regcache_h)
-
-gcore.o: gcore.c $(defs_h) $(cli_decode_h) $(inferior_h) $(gdbcore_h) \
- $(elf_bfd_h) $(symfile_h) $(objfiles_h)
-
-linux-proc.o: linux-proc.c $(defs_h) $(inferior_h) $(regcache_h) $(gregset_h) \
- $(gdbcore_h) $(gdbthread_h) $(elf_bfd_h) $(cli_decode_h) \
- $(gdb_string_h)
-
-cp-abi.o: cp-abi.c $(defs_h) $(value_h) $(cp_abi_h)
-
+complaints.o: complaints.c $(defs_h) $(complaints_h) $(gdbcmd_h)
+completer.o: completer.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \
+ $(filenames_h) $(cli_decode_h) $(gdbcmd_h) $(completer_h)
+copying.o: copying.c $(defs_h) $(command_h) $(gdbcmd_h)
+core-aout.o: core-aout.c $(defs_h) $(gdbcore_h) $(value_h) $(regcache_h) \
+ $(gdb_dirent_h) $(gdb_stat_h)
+core-regset.o: core-regset.c $(defs_h) $(gdb_string_h) $(inferior_h) \
+ $(target_h) $(command_h) $(gdbcore_h) $(gregset_h)
+core-sol2.o: core-sol2.c $(defs_h) $(gdb_string_h) $(regcache_h) \
+ $(inferior_h) $(target_h) $(command_h) $(gdbcore_h) $(gregset_h)
+corefile.o: corefile.c $(defs_h) $(gdb_string_h) $(inferior_h) $(symtab_h) \
+ $(command_h) $(gdbcmd_h) $(bfd_h) $(target_h) $(gdbcore_h) \
+ $(dis_asm_h) $(gdb_stat_h) $(completer_h)
+corelow.o: corelow.c $(defs_h) $(gdb_string_h) $(frame_h) $(inferior_h) \
+ $(symtab_h) $(command_h) $(bfd_h) $(target_h) $(gdbcore_h) \
+ $(gdbthread_h) $(regcache_h) $(symfile_h)
+cp-abi.o: cp-abi.c $(defs_h) $(value_h) $(cp_abi_h) $(gdb_string_h)
cp-valprint.o: cp-valprint.c $(defs_h) $(gdb_obstack_h) $(symtab_h) \
$(gdbtypes_h) $(expression_h) $(value_h) $(command_h) $(gdbcmd_h) \
$(demangle_h) $(annotate_h) $(gdb_string_h) $(c_lang_h) $(target_h) \
$(cp_abi_h)
-
-dcache.o: dcache.c $(dcache_h) $(defs_h) $(gdbcmd_h) $(gdb_string_h) \
- $(gdbcore_h) $(target_h)
-
+cpu32bug-rom.o: cpu32bug-rom.c $(defs_h) $(gdbcore_h) $(target_h) \
+ $(monitor_h) $(serial_h) $(regcache_h)
+cris-tdep.o: cris-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(inferior_h) \
+ $(gdbtypes_h) $(gdbcore_h) $(gdbcmd_h) $(target_h) $(value_h) \
+ $(opcode_cris_h) $(arch_utils_h) $(regcache_h) $(symfile_h) \
+ $(solib_h) $(solib_svr4_h)
+# OBSOLETE cxux-nat.o: cxux-nat.c
d10v-tdep.o: d10v-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(gdbtypes_h) \
$(gdbcmd_h) $(gdbcore_h) $(gdb_string_h) $(value_h) $(inferior_h) \
- $(dis_asm_h) $(symfile_h) $(objfiles_h) $(language_h) $(arch_utils_h) \
- $(regcache_h) $(floatformat_h) $(sim_d10v_h) $(sim_regno_h)
-
-dbxread.o: dbxread.c $(defs_h) $(gdb_string_h) $(gdb_obstack_h) $(gdb_stat_h) \
- $(symtab_h) $(breakpoint_h) $(target_h) $(gdbcore_h) $(libaout_h) \
- $(symfile_h) $(objfiles_h) $(buildsym_h) $(stabsread_h) \
+ $(dis_asm_h) $(symfile_h) $(objfiles_h) $(language_h) \
+ $(arch_utils_h) $(regcache_h) $(floatformat_h) $(gdb_sim_d10v_h) \
+ $(sim_regno_h)
+# OBSOLETE d30v-tdep.o: d30v-tdep.c
+dbug-rom.o: dbug-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
+ $(serial_h) $(regcache_h)
+dbxread.o: dbxread.c $(defs_h) $(gdb_string_h) $(gdb_obstack_h) \
+ $(gdb_stat_h) $(symtab_h) $(breakpoint_h) $(target_h) $(gdbcore_h) \
+ $(libaout_h) $(symfile_h) $(objfiles_h) $(buildsym_h) $(stabsread_h) \
$(gdb_stabs_h) $(demangle_h) $(language_h) $(complaints_h) \
$(cp_abi_h) $(aout_aout64_h) $(aout_stab_gnu_h)
-
+dcache.o: dcache.c $(defs_h) $(dcache_h) $(gdbcmd_h) $(gdb_string_h) \
+ $(gdbcore_h) $(target_h)
delta68-nat.o: delta68-nat.c $(defs_h)
-
-demangle.o: demangle.c $(defs_h) $(gdbcmd_h) $(gdb_string_h)
-
-dink32-rom.o: dink32-rom.c $(monitor_h) $(bfd_h) $(gdb_wait_h) $(defs_h) \
- $(gdbcmd_h) $(inferior_h) $(target_h) $(serial_h) $(terminal_h) \
- $(symfile_h) $(regcache_h)
-
+demangle.o: demangle.c $(defs_h) $(command_h) $(gdbcmd_h) $(demangle_h) \
+ $(gdb_string_h)
+dink32-rom.o: dink32-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
+ $(serial_h) $(symfile_h) $(inferior_h) $(regcache_h)
+doublest.o: doublest.c $(defs_h) $(doublest_h) $(floatformat_h) \
+ $(gdb_assert_h) $(gdb_string_h) $(gdbtypes_h)
dpx2-nat.o: dpx2-nat.c $(defs_h) $(gdbcore_h) $(gdb_string_h)
-
-# OBSOLETE dstread.o: dstread.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(breakpoint_h) \
-# OBSOLETE $(bfd_h) $(symfile_h) $(objfiles_h) $(buildsym_h) $(gdb_obstack_h) \
-# OBSOLETE $(gdb_string_h) $(dst_h)
-
-dwarf2cfi.o: dwarf2cfi.c $(defs_h) $(symtab_h) $(symfile_h) $(objfiles_h) \
- $(target_h) $(inferior_h) $(regcache_h) $(dwarf2cfi_h)
-
-dwarfread.o: dwarfread.c $(bfd_h) $(buildsym_h) $(complaints_h) $(defs_h) \
- $(expression_h) $(gdbtypes_h) $(language_h) $(objfiles_h) \
- $(symfile_h) $(symtab_h) $(gdb_string_h)
-
-dwarf2read.o: dwarf2read.c $(bfd_h) $(buildsym_h) $(defs_h) \
- $(expression_h) $(gdbtypes_h) $(language_h) $(objfiles_h) \
- $(symfile_h) $(symtab_h) $(gdb_string_h) $(macrotab_h)
-
-elfread.o: elfread.c $(bfd_h) $(buildsym_h) $(complaints_h) $(defs_h) \
- $(gdb_stabs_h) $(objfiles_h) $(symfile_h) $(symtab_h) $(gdb_string_h) \
- $(BFD_SRC)/elf-bfd.h $(INCLUDE_DIR)/elf/mips.h
-
-environ.o: environ.c $(defs_h) environ.h $(gdbcore_h) $(gdb_string_h)
-
-eval.o: eval.c $(bfd_h) $(defs_h) $(expression_h) $(frame_h) \
- $(gdbtypes_h) $(language_h) $(symtab_h) $(target_h) $(value_h) \
- $(gdb_string_h) $(cp_abi_h)
-
-event-loop.o: event-loop.c $(defs_h) $(top_h) $(event_loop_h) $(event_top_h)
-
-event-top.o: event-top.c $(top_h) $(readline_headers) \
- $(defs_h) $(inferior_h) $(event_loop_h) $(event_top_h) $(terminal_h) \
- $(gdbcmd_h) $(target_h) $(cli_decode_h)
-
-inf-loop.o: inf-loop.c $(defs_h) $(inferior_h) $(inf_loop_h) $(event_loop_h) \
- $(event_top_h)
-
-exec.o: exec.c $(defs_h) $(gdbcmd_h) $(gdbcore_h) $(inferior_h) \
- $(target_h) $(language_h) $(gdb_string_h) $(completer_h) $(value_h)
-
-expprint.o: expprint.c $(defs_h) $(expression_h) $(gdbtypes_h) \
- $(language_h) $(parser_defs_h) $(symtab_h) $(value_h)
-
-fbsd-proc.o: fbsd-proc.c $(defs_h) $(gdbcore_h) $(inferior_h) $(gdb_string_h) \
- $(elf_bfd_h) $(gregset_h)
-
-findvar.o: findvar.c $(defs_h) $(gdbcore_h) $(inferior_h) $(target_h) \
- $(gdb_string_h) $(regcache_h) $(builtin_regs_h)
-
+dsrec.o: dsrec.c $(defs_h) $(serial_h) $(srec_h)
+# OBSOLETE dstread.o: dstread.c
+dve3900-rom.o: dve3900-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
+ $(serial_h) $(inferior_h) $(command_h) $(gdb_string_h) $(regcache_h)
+dwarf2cfi.o: dwarf2cfi.c $(defs_h) $(gdbcore_h) $(symtab_h) $(symfile_h) \
+ $(objfiles_h) $(target_h) $(elf_dwarf2_h) $(inferior_h) \
+ $(regcache_h) $(dwarf2cfi_h) $(gdb_assert_h)
+dwarf2read.o: dwarf2read.c $(defs_h) $(bfd_h) $(symtab_h) $(gdbtypes_h) \
+ $(symfile_h) $(objfiles_h) $(elf_dwarf2_h) $(buildsym_h) \
+ $(demangle_h) $(expression_h) $(filenames_h) $(macrotab_h) \
+ $(language_h) $(complaints_h) $(bcache_h) $(gdb_string_h) \
+ $(gdb_assert_h)
+dwarfread.o: dwarfread.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(symfile_h) \
+ $(objfiles_h) $(elf_dwarf_h) $(buildsym_h) $(demangle_h) \
+ $(expression_h) $(language_h) $(complaints_h) $(gdb_string_h)
+elfread.o: elfread.c $(defs_h) $(bfd_h) $(gdb_string_h) $(elf_bfd_h) \
+ $(elf_mips_h) $(symtab_h) $(symfile_h) $(objfiles_h) $(buildsym_h) \
+ $(stabsread_h) $(gdb_stabs_h) $(complaints_h) $(demangle_h)
+environ.o: environ.c $(defs_h) $(environ_h) $(gdb_string_h)
+eval.o: eval.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
+ $(value_h) $(expression_h) $(target_h) $(frame_h) $(language_h) \
+ $(f_lang_h) $(cp_abi_h)
+event-loop.o: event-loop.c $(defs_h) $(event_loop_h) $(event_top_h) \
+ $(gdb_string_h)
+event-top.o: event-top.c $(defs_h) $(top_h) $(inferior_h) $(target_h) \
+ $(terminal_h) $(event_loop_h) $(event_top_h) $(gdbcmd_h)
+exec.o: exec.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) $(gdbcmd_h) \
+ $(language_h) $(symfile_h) $(objfiles_h) $(completer_h) $(value_h) \
+ $(gdb_string_h) $(gdbcore_h) $(gdb_stat_h) $(xcoffsolib_h)
+expprint.o: expprint.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \
+ $(value_h) $(language_h) $(parser_defs_h)
+f-lang.o: f-lang.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
+ $(expression_h) $(parser_defs_h) $(language_h) $(f_lang_h) \
+ $(valprint_h)
+f-typeprint.o: f-typeprint.c $(defs_h) $(gdb_obstack_h) $(bfd_h) $(symtab_h) \
+ $(gdbtypes_h) $(expression_h) $(value_h) $(gdbcore_h) $(target_h) \
+ $(f_lang_h) $(gdb_string_h)
+f-valprint.o: f-valprint.c $(defs_h) $(gdb_string_h) $(symtab_h) \
+ $(gdbtypes_h) $(expression_h) $(value_h) $(valprint_h) $(language_h) \
+ $(f_lang_h) $(frame_h) $(gdbcore_h) $(command_h)
+fbsd-proc.o: fbsd-proc.c $(defs_h) $(gdbcore_h) $(inferior_h) \
+ $(gdb_string_h) $(elf_bfd_h) $(gregset_h)
+findvar.o: findvar.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(frame_h) \
+ $(value_h) $(gdbcore_h) $(inferior_h) $(target_h) $(gdb_string_h) \
+ $(gdb_assert_h) $(floatformat_h) $(symfile_h) $(regcache_h) \
+ $(builtin_regs_h)
+fork-child.o: fork-child.c $(defs_h) $(gdb_string_h) $(frame_h) \
+ $(inferior_h) $(target_h) $(gdb_wait_h) $(gdb_vfork_h) $(gdbcore_h) \
+ $(terminal_h) $(gdbthread_h) $(command_h)
+# OBSOLETE fr30-tdep.o: fr30-tdep.c
frame.o: frame.c $(defs_h) $(frame_h) $(target_h) $(value_h) $(inferior_h) \
- $(regcache_h)
-
+ $(regcache_h) $(gdb_assert_h)
frv-tdep.o: frv-tdep.c $(defs_h) $(inferior_h) $(symfile_h) $(gdbcore_h) \
$(arch_utils_h) $(regcache_h)
-
-regcache.o: regcache.c $(defs_h) $(inferior_h) $(target_h) $(gdbarch_h) \
- $(gdbcmd_h) $(regcache_h) $(gdb_assert_h) $(gdb_string_h) $(gdbcmd_h)
-
-fork-child.o: fork-child.c $(gdb_wait_h) $(defs_h) $(gdbcore_h) \
- $(inferior_h) $(target_h) $(terminal_h) $(gdbthread_h) $(gdb_string_h)
-
-v850ice.o: v850ice.c $(defs_h) $(symtab_h) $(inferior_h) $(command_h) \
- $(frame_h) $(breakpoint_h) $(gdbcore_h) $(value_h) $(symfile_h) \
- $(gdb_string_h) $(target_h) $(objfiles_h) $(regcache_h)
-
-v850-tdep.o: v850-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
- $(value_h) $(bfd_h) $(gdb_string_h) $(gdbcore_h) $(symfile_h) \
- $(arch_utils_h) $(regcache_h) $(symtab_h)
-
-tracepoint.o: tracepoint.c $(defs_h) $(symtab_h) $(frame_h) $(tracepoint_h) \
- $(gdbtypes_h) $(expression_h) $(gdbcmd_h) $(value_h) $(target_h) \
- $(language_h) $(gdb_string_h) $(readline_headers) $(remote_h) \
- $(linespec_h) $(regcache_h) $(completer_h)
-
+gcore.o: gcore.c $(defs_h) $(cli_decode_h) $(inferior_h) $(gdbcore_h) \
+ $(elf_bfd_h) $(symfile_h) $(objfiles_h)
+gdb-events.o: gdb-events.c $(defs_h) $(gdb_events_h) $(gdbcmd_h)
gdbarch.o: gdbarch.c $(defs_h) $(arch_utils_h) $(gdbcmd_h) $(inferior_h) \
$(gdb_string_h) $(symtab_h) $(frame_h) $(inferior_h) $(breakpoint_h) \
$(gdb_wait_h) $(gdbcore_h) $(gdbcmd_h) $(target_h) $(gdbthread_h) \
$(annotate_h) $(symfile_h) $(value_h) $(symcat_h) $(floatformat_h) \
$(gdb_assert_h) $(gdb_string_h) $(gdb_events_h)
-
-arch-utils.o: arch-utils.c $(defs_h) $(bfd_h) $(gdbcmd_h) \
- $(arch_utils_h) $(gdb_assert_h) $(inferior_h) \
- $(gdb_string_h) $(symtab.h) $(frame_h) $(breakpoint_h) $(gdb_wait_h) \
- $(gdbcore_h) $(target_h) $(annotate_h) $(regcache_h) $(gdb_assert_h) \
- $(version_h) $(floatformat_h) $(sim_regno_h)
-
-gdbtypes.o: gdbtypes.c $(bfd_h) $(complaints_h) $(defs_h) $(expression_h) \
- $(gdbtypes_h) $(language_h) $(objfiles_h) $(symfile_h) $(symtab_h) \
- $(target_h) $(value_h) $(gdb_string_h) $(wrapper_h) $(cp_abi_h)
-
-osabi.o: osabi.c $(defs_h) $(BFD_SRC)/elf-bfd.h
-
-go32-nat.o: go32-nat.c $(defs_h) $(inferior_h) $(gdb_wait_h) $(gdbcore_h) \
- $(command_h) $(floatformat_h) $(target_h) i387-tdep.h $(regcache_h)
-
-gnu-nat.o: process_reply_S.h exc_request_S.h notify_S.h msg_reply_S.h \
- exc_request_U.h msg_U.h gnu-nat.h
-
+gdbtypes.o: gdbtypes.c $(defs_h) $(gdb_string_h) $(bfd_h) $(symtab_h) \
+ $(symfile_h) $(objfiles_h) $(gdbtypes_h) $(expression_h) \
+ $(language_h) $(target_h) $(value_h) $(demangle_h) $(complaints_h) \
+ $(gdbcmd_h) $(wrapper_h) $(cp_abi_h) $(gdb_assert_h)
+gnu-nat.o: gnu-nat.c $(gdb_string_h) $(defs_h) $(inferior_h) $(symtab_h) \
+ $(value_h) $(language_h) $(target_h) $(gdb_wait_h) $(gdbcmd_h) \
+ $(gdbcore_h) $(gdbthread_h) $(gdb_assert_h) $(gnu_nat_h) \
+ $(exc_request_S_h) $(notify_S_h) $(process_reply_S_h) \
+ $(msg_reply_S_h) $(exc_request_U_h) $(msg_U_h)
gnu-v2-abi.o: gnu-v2-abi.c $(defs_h) $(gdb_string_h) $(symtab_h) \
- $(gdbtypes_h) $(value_h) $(demangle_h) $(cp_abi_h)
-
+ $(gdbtypes_h) $(value_h) $(demangle_h) $(cp_abi_h)
gnu-v3-abi.o: gnu-v3-abi.c $(defs_h) $(value_h) $(cp_abi_h) $(demangle_h) \
$(gdb_assert_h) $(gdb_string_h)
-
+go32-nat.o: go32-nat.c $(defs_h) $(inferior_h) $(gdb_wait_h) $(gdbcore_h) \
+ $(command_h) $(gdbcmd_h) $(floatformat_h) $(buildsym_h) \
+ $(i387_tdep_h) $(i386_tdep_h) $(value_h) $(regcache_h) \
+ $(gdb_string_h)
h8300-tdep.o: h8300-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(dis_asm_h) \
$(gdbcmd_h) $(gdbtypes_h) $(gdbcore_h) $(gdb_string_h) $(value_h) \
$(regcache_h)
-
h8500-tdep.o: h8500-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(gdbtypes_h) \
$(gdbcmd_h) $(value_h) $(dis_asm_h) $(gdbcore_h) $(regcache_h)
-
-hp300ux-nat.o: hp300ux-nat.c $(defs_h) $(gdbcore_h) $(inferior_h) $(regcache_h)
-
-hpacc-abi.o: hpacc-abi.c $(defs_h) $(cp_abi_h) $(gdb_string_h) $(gdbtypes_h) \
- $(value_h) $(gdbcore_h)
-
-hppa-tdep.o: hppa-tdep.c $(gdb_wait_h) $(defs_h) $(gdbcmd_h) $(gdbcore_h) \
- $(inferior_h) $(objfiles_h) $(symfile_h) $(target_h) $(regcache_h) \
- $(completer_h)
-
-hppab-nat.o: hppab-nat.c $(bfd_h) $(defs_h) $(inferior_h) $(target_h) \
- $(regcache_h)
-
-hppah-nat.o: hppah-nat.c $(bfd_h) $(defs_h) $(inferior_h) $(target_h) \
- $(regcache_h)
-
-i386gnu-tdep.o: $(defs_h) $(i386_tdep_h)
-
-i386gnu-nat.o: gnu-nat.h
-
-i386-tdep.o: i386-tdep.c $(defs_h) $(gdb_string_h) $(frame_h) \
- $(inferior_h) $(gdbcore_h) $(target_h) $(floatformat_h) \
- $(symtab_h) $(gdbcmd_h) $(command_h) $(arch_utils_h) $(regcache_h) \
- $(doublest_h) $(value_h)
-
-i386-nat.o: i386-nat.c $(defs_h) $(breakpoint_h) $(command_h) $(gdbcmd_h)
-
-# OBSOLETE i386aix-nat.o: i386aix-nat.c $(defs_h) $(frame_h) $(inferior_h) \
-# OBSOLETE $(language_h) $(gdbcore_h) $(floatformat_h) $(target_h) $(regcache_h)
-
-i386b-nat.o: i386b-nat.c $(defs_h) $(regcache_h)
-
-i386bsd-tdep.o: i386bsd-tdep.c $(defs_h) $(frame_h) $(gdb_core_h) \
+hp300ux-nat.o: hp300ux-nat.c $(defs_h) $(frame_h) $(inferior_h) \
$(regcache_h)
-
-i386bsd-nat.o: i386bsd-nat.c $(defs_h) $(inferior_h) $(regcache_h)
-
-i386fbsd-nat.o: i386fbsd-nat.c $(defs_h) $(inferior_h) $(regcache_h)
-
-i386ly-nat.o: i386ly-nat.c $(defs_h) $(frame_h) $(inferior_h) $(target_h)
-
-i386ly-tdep.o: i386ly-tdep.c $(defs_h) $(inferior_h) $(target_h) $(gdbcore_h) \
+hpacc-abi.o: hpacc-abi.c $(defs_h) $(value_h) $(gdb_regex_h) $(gdb_string_h) \
+ $(gdbtypes_h) $(gdbcore_h) $(cp_abi_h)
+hppa-tdep.o: hppa-tdep.c $(defs_h) $(frame_h) $(bfd_h) $(inferior_h) \
+ $(value_h) $(regcache_h) $(completer_h) $(symtab_h) $(a_out_encap_h) \
+ $(gdb_stat_h) $(gdb_wait_h) $(gdbcore_h) $(gdbcmd_h) $(target_h) \
+ $(symfile_h) $(objfiles_h)
+hppab-nat.o: hppab-nat.c $(defs_h) $(inferior_h) $(target_h) $(regcache_h)
+hppah-nat.o: hppah-nat.c $(defs_h) $(inferior_h) $(target_h) $(gdbcore_h) \
+ $(gdb_wait_h) $(regcache_h)
+hppam3-nat.o: hppam3-nat.c $(defs_h) $(inferior_h) $(floatformat_h) \
$(regcache_h)
-
-# OBSOLETE i386m3-nat.o: i386m3-nat.c $(defs_h) $(inferior_h) $(floatformat_h) $(target_h) \
-# OBSOLETE $(regcache_h)
-
-# OBSOLETE i386mach-nat.o: i386mach-nat.c $(defs_h) $(gdbcore_h) $(inferior_h) \
-# OBSOLETE $(regcache_h)
-
-i386v-nat.o: i386v-nat.c $(floatformat_h) $(defs_h) $(gdbcore_h) \
- $(inferior_h) $(language_h) $(target_h)
-
+hpread.o: hpread.c $(defs_h) $(bfd_h) $(gdb_string_h) $(hp_symtab_h) \
+ $(syms_h) $(symtab_h) $(symfile_h) $(objfiles_h) $(buildsym_h) \
+ $(complaints_h) $(gdb_stabs_h) $(gdbtypes_h) $(demangle_h) \
+ $(gdb_string_h)
+hpux-thread.o: hpux-thread.c $(defs_h) $(gdbthread_h) $(target_h) \
+ $(inferior_h) $(regcache_h) $(gdbcore_h)
i386-linux-nat.o: i386-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \
- $(symtab_h) $(symfile_h) $(objfiles_h) $(regcache_h) \
- $(i386_linux_tdep_h) $(i386_tdep_h) $(i387_tdep_h)
-
+ $(regcache_h) $(gdb_assert_h) $(gdb_string_h) $(gregset_h) \
+ $(i387_tdep_h) $(i386_tdep_h) $(i386_linux_tdep_h)
i386-linux-tdep.o: i386-linux-tdep.c $(defs_h) $(gdbcore_h) $(frame_h) \
- $(value_h) $(regcache_h)
-
-i386v4-nat.o: i386v4-nat.c $(defs_h) $(regcache_h)
-
-i387-tdep.o: i387-tdep.c $(floatformat_h) $(defs_h) $(gdbcore_h) \
- $(inferior_h) $(language_h) $(regcache_h) $(doublest_h) i386-tdep.h
-
-# OBSOLETE i960-tdep.o: i960-tdep.c $(defs_h) $(symtab_h) $(value_h) $(frame_h) \
-# OBSOLETE $(floatformat_h) $(target_h) $(gdbcore_h) $(inferior_h) $(regcache_h)
-
-ia64-linux-nat.o: ia64-linux-nat.c $(defs_h) $(inferior_h) $(target_h) \
- $(gdbcore_h) $(regcache_h)
-
+ $(value_h) $(regcache_h) $(inferior_h) $(symtab_h) $(symfile_h) \
+ $(objfiles_h) $(solib_svr4_h) $(i386_tdep_h) $(i386_linux_tdep_h)
+i386-nat.o: i386-nat.c $(defs_h) $(breakpoint_h) $(command_h) $(gdbcmd_h)
+i386-sol2-tdep.o: i386-sol2-tdep.c $(defs_h) $(value_h) $(i386_tdep_h)
+i386-stub.o: i386-stub.c
+i386-tdep.o: i386-tdep.c $(defs_h) $(gdb_string_h) $(frame_h) $(inferior_h) \
+ $(gdbcore_h) $(objfiles_h) $(target_h) $(floatformat_h) $(symfile_h) \
+ $(symtab_h) $(gdbcmd_h) $(command_h) $(arch_utils_h) $(regcache_h) \
+ $(doublest_h) $(value_h) $(gdb_assert_h) $(i386_tdep_h) \
+ $(i387_tdep_h)
+# OBSOLETE i386aix-nat.o: i386aix-nat.c
+i386b-nat.o: i386b-nat.c $(defs_h)
+i386bsd-nat.o: i386bsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \
+ $(gdb_assert_h) $(gregset_h) $(i386_tdep_h) $(i387_tdep_h)
+i386bsd-tdep.o: i386bsd-tdep.c $(defs_h) $(arch_utils_h) $(frame_h) \
+ $(gdbcore_h) $(regcache_h) $(gdb_string_h) $(i386_tdep_h)
+i386fbsd-nat.o: i386fbsd-nat.c $(defs_h) $(inferior_h) $(regcache_h)
+i386gnu-nat.o: i386gnu-nat.c $(defs_h) $(inferior_h) $(floatformat_h) \
+ $(regcache_h) $(gdb_assert_h) $(i386_tdep_h) $(gnu_nat_h) \
+ $(i387_tdep_h)
+i386gnu-tdep.o: i386gnu-tdep.c $(defs_h) $(i386_tdep_h)
+i386ly-tdep.o: i386ly-tdep.c $(defs_h) $(gdbcore_h) $(inferior_h) \
+ $(regcache_h) $(target_h) $(i386_tdep_h)
+# OBSOLETE i386m3-nat.o: i386m3-nat.c
+# OBSOLETE i386mach-nat.o: i386mach-nat.c
+i386nbsd-tdep.o: i386nbsd-tdep.c $(defs_h) $(gdbtypes_h) $(gdbcore_h) \
+ $(regcache_h) $(arch_utils_h) $(i386_tdep_h) $(i387_tdep_h) \
+ $(nbsd_tdep_h) $(solib_svr4_h)
+i386obsd-nat.o: i386obsd-nat.c $(defs_h)
+i386v-nat.o: i386v-nat.c $(defs_h) $(frame_h) $(inferior_h) $(language_h) \
+ $(gdbcore_h) $(gdb_stat_h) $(floatformat_h) $(target_h)
+i386v4-nat.o: i386v4-nat.c $(defs_h) $(value_h) $(inferior_h) $(regcache_h) \
+ $(i386_tdep_h) $(i387_tdep_h) $(gregset_h)
+i387-tdep.o: i387-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(language_h) \
+ $(value_h) $(gdbcore_h) $(floatformat_h) $(regcache_h) \
+ $(gdb_assert_h) $(gdb_string_h) $(doublest_h) $(i386_tdep_h)
+# OBSOLETE i960-tdep.o: i960-tdep.c
+ia64-aix-nat.o: ia64-aix-nat.c $(defs_h) $(inferior_h) $(target_h) \
+ $(gdbcore_h) $(regcache_h) $(symtab_h) $(bfd_h) $(symfile_h) \
+ $(objfiles_h) $(gdb_stat_h)
+ia64-aix-tdep.o: ia64-aix-tdep.c $(defs_h)
+ia64-linux-nat.o: ia64-linux-nat.c $(defs_h) $(inferior_h) $(target_h) \
+ $(gdbcore_h) $(regcache_h) $(gregset_h)
ia64-linux-tdep.o: ia64-linux-tdep.c $(defs_h) $(arch_utils_h)
-
ia64-tdep.o: ia64-tdep.c $(defs_h) $(inferior_h) $(symfile_h) $(gdbcore_h) \
- $(arch_utils_h) $(floatformat_h) $(objfiles_h) $(value_h) \
- $(INCLUDE_DIR)/elf/common.h $(regcache_h) $(doublest_h)
-
-infcmd.o: infcmd.c $(defs_h) environ.h $(gdbcmd_h) $(gdbcore_h) \
- $(inferior_h) $(target_h) $(language_h) $(symfile_h) $(gdb_string_h) \
- $(ui_out_h) $(completer_h) $(regcache_h)
-
-inflow.o: inflow.c $(bfd_h) $(command_h) $(defs_h) $(inferior_h) \
- $(target_h) $(terminal_h) $(gdbthread_h) $(gdb_string_h)
-
-infptrace.o: infptrace.c $(defs_h) $(gdbcore_h) $(inferior_h) $(target_h) \
- $(gdb_string_h) $(gdb_wait_h) $(command_h) $(regcache_h)
-
-infrun.o: infrun.c $(gdb_wait_h) $(defs_h) $(gdbcmd_h) $(cli_script_h) \
- $(gdbcore_h) $(value_h) \
- $(inferior_h) $(target_h) $(gdbthread_h) $(gdb_string_h) $(event_loop_h) \
- $(event_top_h) $(regcache_h)
-
-inftarg.o: inftarg.c $(gdb_wait_h) $(defs_h) $(gdbcore_h) $(inferior_h) \
- $(target_h) $(terminal_h) $(command_h)
-
-irix4-nat.o: irix4-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) $(regcache_h)
+ $(arch_utils_h) $(floatformat_h) $(regcache_h) $(doublest_h) \
+ $(value_h) $(objfiles_h) $(elf_common_h) $(elf_bfd_h)
+inf-loop.o: inf-loop.c $(defs_h) $(inferior_h) $(target_h) $(event_loop_h) \
+ $(event_top_h) $(inf_loop_h) $(remote_h)
+infcmd.o: infcmd.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
+ $(frame_h) $(inferior_h) $(environ_h) $(value_h) $(gdbcmd_h) \
+ $(symfile_h) $(gdbcore_h) $(target_h) $(language_h) $(symfile_h) \
+ $(objfiles_h) $(completer_h) $(ui_out_h) $(event_top_h) \
+ $(parser_defs_h) $(regcache_h)
+inflow.o: inflow.c $(defs_h) $(frame_h) $(inferior_h) $(command_h) \
+ $(serial_h) $(terminal_h) $(target_h) $(gdbthread_h) $(gdb_string_h)
+infptrace.o: infptrace.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
+ $(gdb_string_h) $(regcache_h) $(gdb_wait_h) $(command_h) \
+ $(gdb_dirent_h) $(gdbcore_h) $(gdb_stat_h)
+infrun.o: infrun.c $(defs_h) $(gdb_string_h) $(symtab_h) $(frame_h) \
+ $(inferior_h) $(breakpoint_h) $(gdb_wait_h) $(gdbcore_h) $(gdbcmd_h) \
+ $(cli_script_h) $(target_h) $(gdbthread_h) $(annotate_h) \
+ $(symfile_h) $(top_h) $(inf_loop_h) $(regcache_h) $(value_h)
+inftarg.o: inftarg.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
+ $(gdbcore_h) $(command_h) $(gdb_stat_h) $(gdb_wait_h)
+infttrace.o: infttrace.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
+ $(gdb_string_h) $(gdb_wait_h) $(command_h) $(gdbcore_h)
+irix4-nat.o: irix4-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) $(regcache_h) \
+ $(gregset_h)
irix5-nat.o: irix5-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) $(target_h) \
- $(symtab_h) $(symfile_h) $(objfiles_h) $(command_h) $(frame_h) \
- $(gdb_regex_h) $(language_h) $(gdb_string_h) $(regcache_h)
-
-jv-lang.o: jv-lang.c $(bfd_h) $(defs_h) $(symtab_h) $(gdbtypes_h) \
- $(expression_h) $(parser_defs_h) $(language_h) $(symfile_h) \
- $(objfiles_h) $(gdb_string_h) $(value_h) $(c_lang_h) jv-lang.h \
- $(gdbcore_h)
-
-jv-typeprint.o: jv-typeprint.c $(bfd_h) $(defs_h) $(symtab_h) $(gdbtypes_h) \
- $(value_h) $(demangle_h) jv-lang.h $(gdb_string_h) \
- $(typeprint_h) $(c_lang_h) $(cp_abi_h)
-
-jv-valprint.o: jv-valprint.c $(bfd_h) $(defs_h) $(symtab_h) $(gdbtypes_h) \
- $(expression_h) $(value_h) $(demangle_h) $(valprint_h) \
- $(language_h) jv-lang.h $(c_lang_h) gdbcore.h $(annotate_h)
-
+ $(regcache_h) $(gdb_string_h) $(gregset_h)
+jv-lang.o: jv-lang.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \
+ $(parser_defs_h) $(language_h) $(gdbtypes_h) $(symtab_h) \
+ $(symfile_h) $(objfiles_h) $(gdb_string_h) $(value_h) $(c_lang_h) \
+ $(jv_lang_h) $(gdbcore_h)
+jv-typeprint.o: jv-typeprint.c $(defs_h) $(symtab_h) $(gdbtypes_h) \
+ $(value_h) $(demangle_h) $(jv_lang_h) $(gdb_string_h) $(typeprint_h) \
+ $(c_lang_h) $(cp_abi_h)
+jv-valprint.o: jv-valprint.c $(defs_h) $(symtab_h) $(gdbtypes_h) \
+ $(gdbcore_h) $(expression_h) $(value_h) $(demangle_h) $(valprint_h) \
+ $(language_h) $(jv_lang_h) $(c_lang_h) $(annotate_h) $(gdb_string_h)
+kod-cisco.o: kod-cisco.c $(defs_h) $(gdb_string_h) $(kod_h)
kod.o: kod.c $(defs_h) $(command_h) $(gdbcmd_h) $(target_h) $(gdb_string_h) \
- kod.h
-
-kod-cisco.o: kod-cisco.c $(defs_h) $(gdb_string_h) kod.h
-
-language.o: language.c $(bfd_h) $(defs_h) $(expression_h) $(frame_h) \
- $(gdbcmd_h) $(gdbtypes_h) $(language_h) $(parser_defs_h) $(symtab_h) \
- $(target_h) $(value_h) $(gdb_string_h)
-
-lynx-nat.o: lynx-nat.c $(defs_h) $(frame_h) $(inferior_h) $(gdbcore_h) \
- $(target_h) $(regcache_h)
-
-m2-lang.o: m2-lang.c $(defs_h) $(expression_h) $(gdbtypes_h) \
- $(language_h) m2-lang.h $(parser_defs_h) $(symtab_h)
-
-m2-typeprint.o: m2-typeprint.c $(defs_h) $(expression_h) $(gdbcmd_h) \
- $(gdbcore_h) $(gdbtypes_h) $(language_h) m2-lang.h $(symtab_h) \
- $(target_h) $(value_h) $(gdb_string_h)
-
-m2-valprint.o: m2-valprint.c $(defs_h) $(gdbtypes_h) $(symtab_h) \
- $(valprint_h) m2-lang.h
-
-m3-nat.o: m3-nat.c $(defs_h) $(inferior_h) $(value_h) $(language_h) \
- $(target_h) $(gdb_wait_h) $(gdbcmd_h) $(gdbcore_h) $(regcache_h)
-
+ $(kod_h)
+language.o: language.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
+ $(value_h) $(gdbcmd_h) $(expression_h) $(language_h) $(target_h) \
+ $(parser_defs_h) $(jv_lang_h)
+lin-lwp.o: lin-lwp.c $(defs_h) $(gdb_assert_h) $(gdb_string_h) $(gdb_wait_h) \
+ $(gdbthread_h) $(inferior_h) $(target_h) $(regcache_h) $(gdbcmd_h)
+linespec.o: linespec.c $(defs_h) $(symtab_h) $(frame_h) $(command_h) \
+ $(symfile_h) $(objfiles_h) $(demangle_h) $(value_h) $(completer_h) \
+ $(cp_abi_h)
+linux-proc.o: linux-proc.c $(defs_h) $(inferior_h) $(regcache_h) \
+ $(gregset_h) $(gdbcore_h) $(gdbthread_h) $(elf_bfd_h) \
+ $(cli_decode_h) $(gdb_string_h)
+lynx-nat.o: lynx-nat.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
+ $(gdbcore_h) $(regcache_h)
+m2-lang.o: m2-lang.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \
+ $(parser_defs_h) $(language_h) $(m2_lang_h) $(c_lang_h) \
+ $(valprint_h)
+m2-typeprint.o: m2-typeprint.c $(defs_h) $(bfd_h) $(symtab_h) $(gdbtypes_h) \
+ $(expression_h) $(value_h) $(gdbcore_h) $(target_h) $(m2_lang_h)
+m2-valprint.o: m2-valprint.c $(defs_h) $(symtab_h) $(gdbtypes_h) \
+ $(m2_lang_h)
+m3-nat.o: m3-nat.c $(defs_h) $(inferior_h) $(symtab_h) $(value_h) \
+ $(language_h) $(target_h) $(gdb_wait_h) $(gdbcmd_h) $(gdbcore_h) \
+ $(regcache_h)
+m32r-rom.o: m32r-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
+ $(serial_h) $(symtab_h) $(command_h) $(gdbcmd_h) $(symfile_h) \
+ $(gdb_string_h) $(objfiles_h) $(inferior_h) $(regcache_h)
+m32r-stub.o: m32r-stub.c $(syscall_h)
m32r-tdep.o: m32r-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
$(value_h) $(bfd_h) $(gdb_string_h) $(gdbcore_h) $(symfile_h) \
$(regcache_h)
-
-p-lang.o: p-lang.c p-lang.h $(defs_h) $(expression_h) $(gdbtypes_h) \
- $(language_h) $(parser_defs_h) $(symtab_h) $(gdb_string_h)
-
-p-typeprint.o: p-typeprint.c $(defs_h) $(gdb_obstack_h) $(bfd_h) $(symtab_h) \
- $(gdbtypes_h) $(expression_h) $(value_h) $(gdbcore_h) $(target_h) \
- $(language_h) $(p_lang_h) $(typeprint_h) $(gdb_string_h)
-
-p-valprint.o: p-valprint.c $(defs_h) $(gdb_obstack_h) $(symtab_h) \
- $(gdbtypes_h) $(expression_h) $(value_h) $(command_h) $(gdbcmd_h) \
- $(gdbcore_h) $(demangle_h) $(valprint_h) $(typeprint_h) $(language_h) \
- $(target_h) $(annotate_h) $(p_lang_h) $(cp_abi_h)
-
-m68hc11-tdep.o: m68hc11-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(gdbtypes_h) \
- $(gdbcmd_h) $(gdbcore_h) $(gdb_string_h) $(value_h) $(inferior_h) \
- $(dis_asm_h) $(symfile_h) $(objfiles_h) $(arch_utils_h) $(regcache_h) \
- $(target_h) $(opcode_m68hc11_h)
-
-m68k-tdep.o: m68k-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(value_h) \
- $(gdbcore_h) $(gdb_string_h) $(regcache_h)
-
-m68kly-nat.o: m68kly-nat.c $(defs_h) $(frame_h) $(inferior_h) $(target_h)
-
+m68hc11-tdep.o: m68hc11-tdep.c $(defs_h) $(frame_h) $(symtab_h) \
+ $(gdbtypes_h) $(gdbcmd_h) $(gdbcore_h) $(gdb_string_h) $(value_h) \
+ $(inferior_h) $(dis_asm_h) $(symfile_h) $(objfiles_h) \
+ $(arch_utils_h) $(regcache_h) $(target_h) $(opcode_m68hc11_h) \
+ $(elf_m68hc11_h) $(elf_bfd_h)
+m68k-stub.o: m68k-stub.c
+m68k-tdep.o: m68k-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(gdbcore_h) \
+ $(value_h) $(gdb_string_h) $(inferior_h) $(regcache_h) \
+ $(arch_utils_h) $(gregset_h)
m68klinux-nat.o: m68klinux-nat.c $(defs_h) $(frame_h) $(inferior_h) \
- $(language_h) $(gdbcore_h) $(floatformat_h) $(target_h) $(regcache_h)
-
-mac-nat.o: mac-nat.c $(defs_h) $(gdb_string_h) $(regcache_h)
-
-main.o: main.c $(top_h) $(defs_h) $(gdb_string_h) $(event_loop_h) \
- $(symfile_h) $(gdbcore_h) $(ui_out_h) $(inferior_h)
-
-maint.o: maint.c $(defs_h) $(gdbcmd_h) $(gdbtypes_h) $(symtab_h) \
- $(language_h) $(expression_h) $(objfiles_h) $(symfile_h) \
- $(cli_decode_h)
-
-mcore-tdep.o: mcore-tdep.c $(defs_h) $(frame_h) $(gdbcmd_h) $(value_h) \
- $(symtab_h) $(symfile_h) $(gdbcore_h) $(inferior_h)
-
+ $(language_h) $(gdbcore_h) $(regcache_h) $(gdb_stat_h) \
+ $(floatformat_h) $(target_h) $(gregset_h)
+m68knbsd-nat.o: m68knbsd-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \
+ $(regcache_h)
+m68knbsd-tdep.o: m68knbsd-tdep.c $(defs_h) $(gdbtypes_h) $(regcache_h)
+# OBSOLETE m88k-nat.o: m88k-nat.c
+# OBSOLETE m88k-tdep.o: m88k-tdep.c
+macrocmd.o: macrocmd.c $(defs_h) $(macrotab_h) $(macroexp_h) $(macroscope_h) \
+ $(command_h) $(gdbcmd_h)
+macroexp.o: macroexp.c $(defs_h) $(gdb_obstack_h) $(bcache_h) $(macrotab_h) \
+ $(macroexp_h) $(gdb_assert_h)
+macroscope.o: macroscope.c $(defs_h) $(macroscope_h) $(symtab_h) $(target_h) \
+ $(frame_h) $(inferior_h)
+macrotab.o: macrotab.c $(defs_h) $(gdb_obstack_h) $(splay_tree_h) \
+ $(symtab_h) $(symfile_h) $(objfiles_h) $(macrotab_h) $(gdb_assert_h) \
+ $(bcache_h) $(complaints_h)
+main.o: main.c $(defs_h) $(top_h) $(target_h) $(inferior_h) $(symfile_h) \
+ $(gdbcore_h) $(getopt_h) $(gdb_stat_h) $(gdb_string_h) \
+ $(event_loop_h) $(ui_out_h)
+maint.o: maint.c $(defs_h) $(command_h) $(gdbcmd_h) $(symtab_h) \
+ $(gdbtypes_h) $(demangle_h) $(gdbcore_h) $(expression_h) \
+ $(language_h) $(symfile_h) $(objfiles_h) $(value_h) $(cli_decode_h)
mcore-rom.o: mcore-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
$(gdb_string_h) $(regcache_h) $(serial_h)
-
+mcore-tdep.o: mcore-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(value_h) \
+ $(gdbcmd_h) $(regcache_h) $(symfile_h) $(gdbcore_h) $(inferior_h) \
+ $(arch_utils_h)
mdebugread.o: mdebugread.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(gdbcore_h) \
$(symfile_h) $(objfiles_h) $(gdb_obstack_h) $(buildsym_h) \
$(stabsread_h) $(complaints_h) $(demangle_h) $(gdb_assert_h) \
$(coff_sym_h) $(coff_symconst_h) $(gdb_stat_h) $(gdb_string_h) \
$(bfd_h) $(coff_ecoff_h) $(libaout_h) $(aout_aout64_h) \
$(aout_stab_gnu_h) $(expression_h) $(language_h)
-
-mipsm3-nat.o: mipsm3-nat.c $(defs_h) $(inferior_h) $(regcache_h)
-
-# OBSOLETE # os9kread assumes that sizeof(char*) <= sizeof(int). This looses on
-# OBSOLETE # 64 bit targets where often, sizeof(int)=4 but sizeof(char*)=9.
-# OBSOLETE os9kread.o: os9kread.c $(buildsym_h) $(complaints_h) $(bfd_h) $(defs_h) \
-# OBSOLETE $(expression_h) $(gdb_stabs_h) $(gdbcore_h) $(gdbtypes_h) \
-# OBSOLETE $(language_h) $(objfiles_h) $(stabsread_h) $(symfile_h) \
-# OBSOLETE $(symtab_h) $(target_h) $(gdb_string_h)
-# OBSOLETE $(CC) -c $(INTERNAL_WARN_CFLAGS) $(NO_WERROR_CFLAGS) \
-# OBSOLETE $(srcdir)/os9kread.c
-
mem-break.o: mem-break.c $(defs_h) $(symtab_h) $(breakpoint_h) $(inferior_h) \
$(target_h)
-
memattr.o: memattr.c $(defs_h) $(command_h) $(gdbcmd_h) $(memattr_h) \
$(target_h) $(value_h) $(language_h) $(gdb_string_h)
-
-minsyms.o: minsyms.c $(bfd_h) $(defs_h) $(objfiles_h) $(symfile_h) \
- $(symtab_h) $(gdb_string_h) $(value_h) $(cp_abi_h)
-
+minsyms.o: minsyms.c $(defs_h) $(gdb_string_h) $(symtab_h) $(bfd_h) \
+ $(symfile_h) $(objfiles_h) $(demangle_h) $(value_h) $(cp_abi_h)
+mips-irix-tdep.o: mips-irix-tdep.c $(defs_h) $(osabi_h) $(elf_bfd_h)
mips-linux-nat.o: mips-linux-nat.c $(defs_h)
-
mips-linux-tdep.o: mips-linux-tdep.c $(defs_h) $(gdbcore_h) $(target_h) \
- solib-svr4.h
-
-mips-nat.o: mips-nat.c $(defs_h) $(gdbcore_h) $(inferior_h) $(regcache_h)
-
-mips-irix-tdep.o: mips-irix-tdep.c $(defs_h) osabi.h $(BFD_SRC)/elf-bfd.h
-
-mips-tdep.o: mips-tdep.c $(defs_h) $(gdbcmd_h) $(gdbcore_h) \
- $(arch_utils_h) $(regcache_h) \
- $(inferior_h) $(language_h) $(objfiles_h) $(symfile_h) \
- $(gdb_string_h) osabi.h
-
-mipsread.o: mipsread.c $(buildsym_h) $(complaints_h) $(bfd_h) $(defs_h) \
- $(expression_h) $(gdb_stabs_h) $(gdbcore_h) $(gdbtypes_h) \
- $(language_h) $(objfiles_h) $(stabsread_h) $(symfile_h) $(symtab_h) \
- $(gdb_string_h)
-
-mipsv4-nat.o: mipsv4-nat.c $(defs_h) $(gdbcore_h) $(inferior_h) $(target_h) \
- $(regcache_h)
-
+ $(solib_svr4_h)
+mips-nat.o: mips-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) $(regcache_h)
+mips-tdep.o: mips-tdep.c $(defs_h) $(gdb_string_h) $(frame_h) $(inferior_h) \
+ $(symtab_h) $(value_h) $(gdbcmd_h) $(language_h) $(gdbcore_h) \
+ $(symfile_h) $(objfiles_h) $(gdbtypes_h) $(target_h) $(arch_utils_h) \
+ $(regcache_h) $(osabi_h) $(opcode_mips_h) $(elf_mips_h) $(elf_bfd_h) \
+ $(symcat_h)
+mipsm3-nat.o: mipsm3-nat.c $(defs_h) $(inferior_h) $(regcache_h)
mipsnbsd-nat.o: mipsnbsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \
- mipsnbsd-tdep.h
-
+ $(mipsnbsd_tdep_h)
mipsnbsd-tdep.o: mipsnbsd-tdep.c $(defs_h) $(gdbcore_h) $(regcache_h) \
- $(target_h) $(value_h) osabi.h solib-svr4.h mipsnbsd-tdep.h
-
-mn10200-tdep.o: mn10200-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
- $(value_h) $(bfd_h) $(gdb_string_h) $(gdbcore_h) $(symfile_h) \
- $(regcache_h)
-
-mn10300-tdep.o: mn10300-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
- $(value_h) $(bfd_h) $(gdb_string_h) $(gdbcore_h) $(symfile_h) \
- $(regcache_h) $(arch_utils_h)
-
-monitor.o: monitor.c $(monitor_h) $(bfd_h) $(defs_h) $(gdbcmd_h) \
- $(inferior_h) $(target_h) $(serial_h) $(terminal_h) $(gdb_string_h) \
- $(regcache_h)
-
-nbsd-tdep.o: nbsd-tdep.c $(defs_h) solib-svr4.h
-
-nlmread.o: nlmread.c $(bfd_h) $(buildsym_h) $(complaints_h) $(defs_h) \
- $(gdb_stabs_h) $(objfiles_h) $(symfile_h) $(symtab_h) $(stabsread_h) \
- $(gdb_string_h)
-
-nindy-tdep.o: nindy-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(gdbcore_h)
-
-ns32k-tdep.o: ns32k-tdep.c $(bfd_h) $(dis_asm_h) $(defs_h)
-
+ $(target_h) $(value_h) $(osabi_h) $(mipsnbsd_tdep_h) $(solib_svr4_h) \
+ $(nbsd_tdep_h)
+mipsread.o: mipsread.c $(defs_h) $(gdb_string_h) $(bfd_h) $(symtab_h) \
+ $(symfile_h) $(objfiles_h) $(buildsym_h) $(stabsread_h) \
+ $(coff_sym_h) $(coff_internal_h) $(coff_ecoff_h) $(libcoff_h) \
+ $(libecoff_h) $(elf_common_h) $(elf_mips_h)
+mipsv4-nat.o: mipsv4-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) $(target_h) \
+ $(regcache_h) $(gregset_h)
+mn10200-tdep.o: mn10200-tdep.c $(defs_h) $(frame_h) $(inferior_h) \
+ $(target_h) $(value_h) $(bfd_h) $(gdb_string_h) $(gdbcore_h) \
+ $(symfile_h) $(regcache_h)
+mn10300-tdep.o: mn10300-tdep.c $(defs_h) $(frame_h) $(inferior_h) \
+ $(target_h) $(value_h) $(bfd_h) $(gdb_string_h) $(gdbcore_h) \
+ $(symfile_h) $(regcache_h) $(arch_utils_h)
+mon960-rom.o: mon960-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
+ $(serial_h) $(srec_h) $(xmodem_h) $(symtab_h) $(symfile_h) \
+ $(inferior_h) $(gdb_string_h)
+monitor.o: monitor.c $(defs_h) $(gdbcore_h) $(target_h) $(gdb_string_h) \
+ $(command_h) $(serial_h) $(monitor_h) $(gdbcmd_h) $(inferior_h) \
+ $(gdb_regex_h) $(srec_h) $(regcache_h)
+nbsd-tdep.o: nbsd-tdep.c $(defs_h) $(gdb_string_h) $(solib_svr4_h)
+nindy-tdep.o: nindy-tdep.c $(defs_h) $(symtab_h) $(frame_h) $(gdbcore_h)
+nlmread.o: nlmread.c $(defs_h) $(bfd_h) $(symtab_h) $(symfile_h) \
+ $(objfiles_h) $(buildsym_h) $(stabsread_h)
+ns32k-tdep.o: ns32k-tdep.c $(defs_h) $(frame_h) $(gdbtypes_h) $(gdbcore_h) \
+ $(inferior_h) $(regcache_h) $(target_h) $(arch_utils_h) \
+ $(ns32k_tdep_h)
+ns32knbsd-nat.o: ns32knbsd-nat.c $(defs_h) $(inferior_h) $(target_h) \
+ $(gdbcore_h) $(regcache_h)
+ns32knbsd-tdep.o: ns32knbsd-tdep.c $(defs_h) $(ns32k_tdep_h)
objfiles.o: objfiles.c $(defs_h) $(bfd_h) $(symtab_h) $(symfile_h) \
$(objfiles_h) $(gdb_stabs_h) $(target_h) $(bcache_h) $(gdb_stat_h) \
$(gdb_obstack_h) $(gdb_string_h) $(breakpoint_h) $(mmalloc_h)
-
-solib-osf.o: solib-osf.c $(defs_h) $(inferior_h) $(symtab_h) $(objfiles_h) \
- $(symfile_h) $(target_h) $(gdb_string_h) $(solist_h)
-
-somread.o: somread.c $(bfd_h) $(buildsym_h) $(complaints_h) $(defs_h) \
- $(gdb_stabs_h) $(objfiles_h) $(symfile_h) $(symtab_h) $(gdb_string_h)
-
-somsolib.o: somsolib.c $(defs_h) $(regcache_h)
-
-std-regs.o: std-regs.c $(defs_h) $(builtin_regs_h) $(frame_h) $(gdbtypes_h) \
- $(value_h) $(gdb_string_h)
-
-pa64solib.o: pa64solib.c $(defs_h) $(regcache_h)
-
-hpux-thread.o: hpux-thread.c $(defs_h) $(gdbthread_h) $(target_h) inferior.h \
+ocd.o: ocd.c $(defs_h) $(gdbcore_h) $(gdb_string_h) $(frame_h) $(inferior_h) \
+ $(bfd_h) $(symfile_h) $(target_h) $(gdbcmd_h) $(objfiles_h) \
+ $(gdb_stabs_h) $(serial_h) $(ocd_h) $(regcache_h)
+op50-rom.o: op50-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
+ $(serial_h)
+# OBSOLETE os9kread.o: os9kread.c
+osabi.o: osabi.c $(defs_h) $(gdb_string_h) $(osabi_h) $(elf_bfd_h)
+osfsolib.o: osfsolib.c $(defs_h) $(gdb_string_h) $(symtab_h) $(bfd_h) \
+ $(symfile_h) $(objfiles_h) $(gdbcore_h) $(command_h) $(target_h) \
+ $(frame_h) $(gdb_regex_h) $(inferior_h) $(language_h) $(gdbcmd_h)
+p-lang.o: p-lang.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
+ $(expression_h) $(parser_defs_h) $(language_h) $(p_lang_h) \
+ $(valprint_h)
+p-typeprint.o: p-typeprint.c $(defs_h) $(gdb_obstack_h) $(bfd_h) $(symtab_h) \
+ $(gdbtypes_h) $(expression_h) $(value_h) $(gdbcore_h) $(target_h) \
+ $(language_h) $(p_lang_h) $(typeprint_h) $(gdb_string_h)
+p-valprint.o: p-valprint.c $(defs_h) $(gdb_obstack_h) $(symtab_h) \
+ $(gdbtypes_h) $(expression_h) $(value_h) $(command_h) $(gdbcmd_h) \
+ $(gdbcore_h) $(demangle_h) $(valprint_h) $(typeprint_h) \
+ $(language_h) $(target_h) $(annotate_h) $(p_lang_h) $(cp_abi_h)
+pa64solib.o: pa64solib.c $(defs_h) $(frame_h) $(bfd_h) $(libhppa_h) \
+ $(gdbcore_h) $(symtab_h) $(breakpoint_h) $(symfile_h) $(objfiles_h) \
+ $(inferior_h) $(gdb_stabs_h) $(gdb_stat_h) $(gdbcmd_h) $(language_h) \
$(regcache_h)
-
-hpread.o: hpread.c $(bfd_h) $(buildsym_h) $(complaints_h) $(defs_h) \
- $(demangle_h) $(gdb_stabs_h) $(gdbtypes_h) $(objfiles_h) \
- $(symfile_h) $(syms_h) $(symtab_h) $(gdb_string_h) \
- $(INCLUDE_DIR)/hp-symtab.h
-
-parse.o: parse.c $(command_h) $(defs_h) $(expression_h) $(frame_h) \
- $(gdbtypes_h) $(language_h) $(parser_defs_h) $(symtab_h) $(value_h) \
- $(gdb_string_h) $(linespec_h) $(doublest_h)
-
+parse.o: parse.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
+ $(frame_h) $(expression_h) $(value_h) $(command_h) $(language_h) \
+ $(parser_defs_h) $(gdbcmd_h) $(symfile_h) $(inferior_h) \
+ $(doublest_h) $(builtin_regs_h) $(gdb_assert_h)
ppc-bdm.o: ppc-bdm.c $(defs_h) $(gdbcore_h) $(gdb_string_h) $(frame_h) \
$(inferior_h) $(bfd_h) $(symfile_h) $(target_h) $(gdbcmd_h) \
- $(objfiles_h) $(gdb_stabs_h) $(serial_h) ocd.h $(regcache_h)
-
-ppc-linux-nat.o: ppc-linux-nat.c $(defs_h) $(gdbcore_h) $(frame_h) \
- $(inferior_h) $(target_h) $(regcache_h) $(ppc_tdep_h)
-
-ppc-linux-tdep.o: ppc-linux-tdep.c $(defs_h) $(gdbcore_h) $(inferior_h) \
- $(target_h) $(ppc_tdep_h) $(regcache_h) $(value_h)
-
+ $(objfiles_h) $(gdb_stabs_h) $(serial_h) $(ocd_h) $(ppc_tdep_h) \
+ $(regcache_h)
+ppc-linux-nat.o: ppc-linux-nat.c $(defs_h) $(frame_h) $(inferior_h) \
+ $(gdbcore_h) $(regcache_h) $(gregset_h) $(ppc_tdep_h)
+ppc-linux-tdep.o: ppc-linux-tdep.c $(defs_h) $(frame_h) $(inferior_h) \
+ $(symtab_h) $(target_h) $(gdbcore_h) $(gdbcmd_h) $(symfile_h) \
+ $(objfiles_h) $(regcache_h) $(value_h) $(solib_svr4_h) $(ppc_tdep_h)
ppc-sysv-tdep.o: ppc-sysv-tdep.c $(defs_h) $(gdbcore_h) $(inferior_h) \
- $(value_h) $(regcache_h) $(ppc_tdep_h)
-
+ $(regcache_h) $(value_h) $(ppc_tdep_h)
+ppcbug-rom.o: ppcbug-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
+ $(serial_h) $(regcache_h)
ppcnbsd-nat.o: ppcnbsd-nat.c $(defs_h) $(inferior_h) $(ppc_tdep_h) \
- ppcnbsd-tdep.h
-
+ $(ppcnbsd_tdep_h)
ppcnbsd-tdep.o: ppcnbsd-tdep.c $(defs_h) $(gdbcore_h) $(regcache_h) \
- $(target_h) $(breakpoint_h) $(value_h) $(ppc_tdep_t) ppcnbsd-tdep.h \
- nbsd-tdep.h
-
-ppcbug-rom.o: ppcbug-rom.c $(monitor_h) $(bfd_h) $(gdb_wait_h) $(defs_h) \
- $(gdbcmd_h) $(inferior_h) $(target_h) $(serial_h) $(terminal_h) \
- $(regcache_h)
-
-printcmd.o: printcmd.c $(breakpoint_h) $(defs_h) $(expression_h) \
- $(gdbcmd_h) $(gdbcore_h) $(gdbtypes_h) $(language_h) $(objfiles_h) \
- $(symfile_h) $(symtab_h) $(target_h) $(gdb_string_h) $(ui_out_h) \
- $(completer_h)
-
-# FIXME: Procfs.o gets -Wformat errors because things like pid_t don't
-# match output format strings.
-procfs.o: procfs.c $(command_h) $(defs_h) $(gdbcore_h) $(inferior_h) \
- $(target_h) $(gdb_string_h) $(gdbthread_h) proc-utils.h
-
-proc-api.o: proc-api.c $(defs_h) $(gdbcmd_h) proc-utils.h $(completer_h)
-
+ $(target_h) $(breakpoint_h) $(value_h) $(ppc_tdep_h) \
+ $(ppcnbsd_tdep_h) $(nbsd_tdep_h) $(solib_svr4_h)
+printcmd.o: printcmd.c $(defs_h) $(gdb_string_h) $(frame_h) $(symtab_h) \
+ $(gdbtypes_h) $(value_h) $(language_h) $(expression_h) $(gdbcore_h) \
+ $(gdbcmd_h) $(target_h) $(breakpoint_h) $(demangle_h) $(valprint_h) \
+ $(annotate_h) $(symfile_h) $(objfiles_h) $(completer_h) $(ui_out_h) \
+ $(gdb_assert_h)
+proc-api.o: proc-api.c $(defs_h) $(gdbcmd_h) $(completer_h) $(proc_utils_h)
proc-events.o: proc-events.c $(defs_h)
-
proc-flags.o: proc-flags.c $(defs_h)
-
-proc-why.o: proc-why.c $(defs_h) proc-utils.h
-
-sol-thread.o: sol-thread.c $(defs_h) $(gdbthread_h) $(target_h) $(inferior_h) \
- $(gdbcmd_h) $(regcache_h)
-
-linux-proc.o: linux-proc.c $(defs_h)
-
-thread-db.o: thread-db.c $(defs_h) $(gdb_assert_h) gdb_proc_service.h \
- gdb_thread_db.h $(bfd_h) $(gdbthread_h) $(inferior_h) $(symfile_h) \
- $(objfiles_h) $(target_h) $(regcache_h)
-
-lin-lwp.o: lin-lwp.c $(defs_h) $(gdb_assert_h) $(gdb_wait_h) $(gdbthread_h) \
- $(inferior_h) $(target_h) $(gdbcmd_h) $(regcache_h)
-
-proc-service.o: proc-service.c $(defs_h) $(inferior_h) gdb_proc_service.h \
- $(symtab_h) $(target_h) gregset.h
-
+proc-service.o: proc-service.c $(defs_h) $(gdb_proc_service_h) $(inferior_h) \
+ $(symtab_h) $(target_h) $(gregset_h)
+proc-why.o: proc-why.c $(defs_h) $(proc_utils_h)
+procfs.o: procfs.c $(defs_h) $(inferior_h) $(target_h) $(gdbcore_h) \
+ $(elf_bfd_h) $(gdbcmd_h) $(gdbthread_h) $(gdb_dirent_h) $(X_OK) \
+ $(gdb_stat_h) $(proc_utils_h) $(gregset_h)
+ptx4-nat.o: ptx4-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) $(regcache_h) \
+ $(gregset_h)
+regcache.o: regcache.c $(defs_h) $(inferior_h) $(target_h) $(gdbarch_h) \
+ $(gdbcmd_h) $(regcache_h) $(gdb_assert_h) $(gdb_string_h) \
+ $(gdbcmd_h)
remote-array.o: remote-array.c $(defs_h) $(gdbcore_h) $(target_h) \
- $(gdb_string_h) $(command_h) $(serial_h) $(monitor_h) $(remote_utils_h) \
- $(version_h) $(regcache_h)
-
-remote-rdi.o: remote-rdi.c $(defs_h) $(gdbcore_h) \
- $(inferior_h) $(gdb_string_h) $(completer_h) $(arm_tdep_h)
-
-remote-rdp.o: remote-rdp.c $(defs_h) $(gdbcore_h) \
- $(inferior_h) $(gdb_string_h) $(arm_tdep_h) $(callback_h)
-
-remote-e7000.o: remote-e7000.c $(defs_h) $(gdbcore_h) $(target_h) \
- $(serial_h) $(gdb_string_h) $(regcache_h)
-
-remote-es.o: remote-es.c $(bfd_h) $(command_h) $(defs_h) \
- $(inferior_h) $(remote_utils_h) $(terminal_h) $(gdb_string_h) \
- $(symfile_h) $(regcache_h) $(value_h)
-
-remote-est.o: remote-est.c $(defs_h) $(gdbcore_h) \
- $(inferior_h) $(serial_h) $(target_h) $(terminal_h) $(regcache_h)
-
-remote-hms.o: remote-hms.c $(defs_h) $(gdbcore_h) \
- $(inferior_h) $(serial_h) $(target_h) $(terminal_h) $(regcache_h)
-
-remote-mips.o: remote-mips.c $(defs_h) $(gdbcmd_h) \
- $(gdbcore_h) $(inferior_h) $(serial_h) $(symfile_h) $(target_h) \
+ $(gdb_string_h) $(command_h) $(serial_h) $(monitor_h) \
+ $(remote_utils_h) $(inferior_h) $(version_h) $(regcache_h)
+# OBSOLETE remote-bug.o: remote-bug.c
+remote-e7000.o: remote-e7000.c $(defs_h) $(gdbcore_h) $(gdbarch_h) \
+ $(inferior_h) $(target_h) $(value_h) $(command_h) $(gdb_string_h) \
+ $(gdbcmd_h) $(serial_h) $(remote_utils_h) $(symfile_h) $(regcache_h)
+remote-es.o: remote-es.c $(defs_h) $(gdb_string_h) $(frame_h) $(inferior_h) \
+ $(target_h) $(command_h) $(symfile_h) $(remote_utils_h) $(gdbcore_h) \
+ $(serial_h) $(regcache_h) $(value_h)
+remote-est.o: remote-est.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
+ $(serial_h) $(regcache_h)
+remote-hms.o: remote-hms.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
+ $(serial_h) $(regcache_h)
+remote-mips.o: remote-mips.c $(defs_h) $(inferior_h) $(bfd_h) $(symfile_h) \
+ $(gdbcmd_h) $(gdbcore_h) $(serial_h) $(target_h) $(remote_utils_h) \
+ $(gdb_string_h) $(gdb_stat_h) $(regcache_h)
+# OBSOLETE remote-nindy.o: remote-nindy.c
+# OBSOLETE remote-nrom.o: remote-nrom.c
+# OBSOLETE remote-os9k.o: remote-os9k.c
+remote-rdi.o: remote-rdi.c $(defs_h) $(gdb_string_h) $(frame_h) \
+ $(inferior_h) $(bfd_h) $(symfile_h) $(target_h) $(gdbcmd_h) \
+ $(objfiles_h) $(gdb_stabs_h) $(gdbthread_h) $(gdbcore_h) \
+ $(breakpoint_h) $(completer_h) $(regcache_h) $(arm_tdep_h) \
+ $(rdi_share_ardi_h) $(rdi_share_adp_h) $(rdi_share_hsys_h)
+remote-rdp.o: remote-rdp.c $(defs_h) $(inferior_h) $(value_h) \
+ $(gdb_callback_h) $(command_h) $(symfile_h) $(remote_utils_h) \
+ $(gdb_string_h) $(gdbcore_h) $(regcache_h) $(serial_h) $(arm_tdep_h)
+remote-sds.o: remote-sds.c $(defs_h) $(gdb_string_h) $(frame_h) \
+ $(inferior_h) $(bfd_h) $(symfile_h) $(target_h) $(gdbcmd_h) \
+ $(objfiles_h) $(gdb_stabs_h) $(gdbthread_h) $(gdbcore_h) \
+ $(regcache_h) $(serial_h)
+remote-sim.o: remote-sim.c $(defs_h) $(inferior_h) $(value_h) \
+ $(gdb_string_h) $(terminal_h) $(target_h) $(gdbcore_h) \
+ $(gdb_callback_h) $(gdb_remote_sim_h) $(remote_utils_h) $(command_h) \
+ $(regcache_h) $(gdb_assert_h) $(sim_regno_h)
+remote-st.o: remote-st.c $(defs_h) $(gdbcore_h) $(target_h) $(gdb_string_h) \
+ $(serial_h) $(regcache_h)
+remote-utils.o: remote-utils.c $(defs_h) $(gdb_string_h) $(gdbcmd_h) \
+ $(target_h) $(serial_h) $(gdbcore_h) $(inferior_h) $(remote_utils_h) \
$(regcache_h)
-
-# OBSOLETE remote-nindy.o: remote-nindy.c $(floatformat_h) $(command_h) \
-# OBSOLETE $(defs_h) $(gdbcore_h) $(inferior_h) \
-# OBSOLETE nindy-share/env.h nindy-share/stop.h $(remote_utils_h) \
-# OBSOLETE $(symfile_h) $(regcache_h)
-
-# OBSOLETE remote-os9k.o: remote-os9k.c $(defs_h) $(gdbcore_h) \
-# OBSOLETE $(command_h) $(monitor_h) $(remote_utils_h) $(symtab_h) $(symfile_h) \
-# OBSOLETE $(objfiles_h) $(gdb_stabs_h) $(gdb_string_h) $(regcache_h)
-
-remote-sds.o: remote-sds.c $(bfd_h) $(defs_h) $(gdbcmd_h) \
- $(inferior_h) $(remote_utils_h) $(symfile_h) $(terminal_h) \
- $(gdb_string_h) $(regcache_h)
-
-remote-sim.o: remote-sim.c $(defs_h) $(inferior_h) $(value_h) $(gdb_string_h) \
- $(terminal_h) $(target_h) $(gdbcore_h) $(callback_h) \
- $(remote_sim_h) $(remote_utils_h) $(command_h) $(regcache_h) \
- $(sim_regno_h)
-
-remote-st.o: remote-st.c $(defs_h) $(gdbcore_h) $(serial_h) \
- $(target_h) $(gdb_string_h) $(regcache_h)
-
-remote-vx.o: remote-vx.c $(complaints_h) $(defs_h) $(gdbcmd_h) \
- $(gdbcore_h) $(inferior_h) $(target_h) vx-share/dbgRpcLib.h \
- vx-share/ptrace.h vx-share/xdr_ld.h vx-share/xdr_ptrace.h \
- vx-share/xdr_rdb.h $(gdb_stabs_h) $(objfiles_h) $(symfile_h) $(bfd_h) \
- $(gdb_string_h) $(regcache_h)
-
-remote-vx29k.o: remote-vx29k.c $(complaints_h) $(defs_h) $(gdbcmd_h) \
- $(gdbcore_h) $(inferior_h) $(target_h) vx-share/dbgRpcLib.h \
- vx-share/ptrace.h vx-share/xdr_ld.h vx-share/xdr_ptrace.h \
- vx-share/xdr_rdb.h $(gdb_string_h) $(regcache_h)
-
-ocd.o: ocd.c ocd.h $(gdbcore_h) $(gdb_string_h) $(frame_h) $(inferior_h) \
- $(bfd_h) $(symfile_h) $(target_h) $(gdbcmd_h) $(objfiles_h) \
- $(gdb_stabs_h) $(dcache_h) $(serial_h) $(regcache_h)
-
-remote-utils.o: remote-utils.c $(defs_h) $(gdbcmd_h) $(gdbcore_h) \
- $(inferior_h) $(remote_utils_h) $(gdb_string_h) $(regcache_h)
-
-remote.o: remote.c $(bfd_h) $(gdb_wait_h) $(defs_h) $(gdbcmd_h) \
- $(inferior_h) $(remote_utils_h) $(symfile_h) $(terminal_h) \
- $(gdb_string_h) $(event_loop_h) $(event_top_h) $(remote_h) \
- $(inf_loop_h) $(value_h)
-
-# OBSOLETE remote-nrom.o: remote-nrom.c $(bfd_h) $(gdb_wait_h) $(defs_h) $(gdbcmd_h) \
-# OBSOLETE $(inferior_h) $(remote_utils_h) $(symfile_h) $(terminal_h)
-
-rom68k-rom.o: rom68k-rom.c $(monitor_h) $(bfd_h) $(gdb_wait_h) $(defs_h) \
- $(gdbcmd_h) $(inferior_h) $(target_h) $(serial_h) $(terminal_h) \
- $(regcache_h) $(value_h)
-
-rs6000-nat.o: rs6000-nat.c $(bfd_h) $(defs_h) $(inferior_h) $(target_h) \
- $(gdbcore_h) $(xcoffsolib_h) $(symfile_h) $(objfiles_h) \
+remote-vx.o: remote-vx.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
+ $(gdbcore_h) $(command_h) $(symtab_h) $(complaints_h) $(gdbcmd_h) \
+ $(bfd_h) $(symfile_h) $(objfiles_h) $(gdb_stabs_h) $(regcache_h) \
+ $(gdb_string_h) $(vx_share_ptrace_h) $(vx_share_xdr_ptrace_h) \
+ $(vx_share_xdr_ld_h) $(vx_share_xdr_rdb_h) $(vx_share_dbgRpcLib_h)
+remote-vx68.o: remote-vx68.c $(defs_h) $(vx_share_regPacket_h) $(frame_h) \
+ $(inferior_h) $(target_h) $(gdbcore_h) $(command_h) $(symtab_h) \
+ $(symfile_h) $(regcache_h) $(gdb_string_h) $(vx_share_ptrace_h) \
+ $(vx_share_xdr_ptrace_h) $(vx_share_xdr_ld_h) $(vx_share_xdr_rdb_h) \
+ $(vx_share_dbgRpcLib_h)
+# OBSOLETE remote-vx960.o: remote-vx960.c
+remote-vxmips.o: remote-vxmips.c $(defs_h) $(vx_share_regPacket_h) \
+ $(frame_h) $(inferior_h) $(target_h) $(gdbcore_h) $(command_h) \
+ $(symtab_h) $(symfile_h) $(regcache_h) $(gdb_string_h) \
+ $(vx_share_ptrace_h) $(vx_share_xdr_ptrace_h) $(vx_share_xdr_ld_h) \
+ $(vx_share_xdr_rdb_h) $(vx_share_dbgRpcLib_h)
+remote-vxsparc.o: remote-vxsparc.c $(defs_h) $(vx_share_regPacket_h) \
+ $(frame_h) $(inferior_h) $(target_h) $(gdbcore_h) $(command_h) \
+ $(symtab_h) $(symfile_h) $(regcache_h) $(gdb_string_h) \
+ $(vx_share_ptrace_h) $(vx_share_xdr_ptrace_h) $(vx_share_xdr_ld_h) \
+ $(vx_share_xdr_rdb_h) $(vx_share_dbgRpcLib_h)
+remote.o: remote.c $(defs_h) $(gdb_string_h) $(inferior_h) $(bfd_h) \
+ $(symfile_h) $(target_h) $(gdbcmd_h) $(objfiles_h) $(gdb_stabs_h) \
+ $(gdbthread_h) $(remote_h) $(regcache_h) $(value_h) $(gdb_assert_h) \
+ $(event_loop_h) $(event_top_h) $(inf_loop_h) $(serial_h) \
+ $(gdbcore_h)
+rom68k-rom.o: rom68k-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
+ $(serial_h) $(regcache_h) $(value_h)
+rs6000-nat.o: rs6000-nat.c $(defs_h) $(inferior_h) $(target_h) $(gdbcore_h) \
+ $(xcoffsolib_h) $(symfile_h) $(objfiles_h) $(libbfd_h) $(bfd_h) \
$(gdb_stabs_h) $(regcache_h) $(arch_utils_h) $(language_h) \
+ $(ppc_tdep_h) $(gdb_stat_h)
+rs6000-tdep.o: rs6000-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(symtab_h) \
+ $(target_h) $(gdbcore_h) $(gdbcmd_h) $(symfile_h) $(objfiles_h) \
+ $(arch_utils_h) $(regcache_h) $(doublest_h) $(value_h) \
+ $(parser_defs_h) $(libbfd_h) $(coff_internal_h) $(libcoff_h) \
+ $(coff_xcoff_h) $(libxcoff_h) $(elf_bfd_h) $(solib_svr4_h) \
$(ppc_tdep_h)
-
-rs6000-tdep.o: rs6000-tdep.c $(defs_h) $(gdbcore_h) $(inferior_h) \
- $(target_h) $(ppc_tdep_h) $(regcache_h) $(value_h) $(parser_defs_h)
-
-s390-tdep.o: s390-tdep.c $(defs_h) $(arch_utils_h) $(frame_h) $(inferior_h) \
+s390-nat.o: s390-nat.c $(defs_h) $(tm_h) $(regcache_h)
+s390-tdep.o: s390-tdep.c $(arch_utils_h) $(frame_h) $(inferior_h) \
$(symtab_h) $(target_h) $(gdbcore_h) $(gdbcmd_h) $(symfile_h) \
- $(objfiles_h) $(bfd_h) $(floatformat_h) $(regcache_h) $(value_h)
-
-s390-nat.o: s390-nat.c $(defs_h) $(regcache_h)
-
-scm-exp.o: $(defs_h) $(value_h) $(parser_defs_h) $(language_h) $(c_lang_h) \
- scm-lang.h scm-tags.h
-
-scm-lang.o: $(defs_h) $(value_h) $(parser_defs_h) $(language_h) $(c_lang_h) \
- scm-lang.h scm-tags.h $(gdb_string_h) $(gdbcore_h)
-
-scm-valprint.o: $(defs_h) $(value_h) $(parser_defs_h) $(language_h) \
- scm-lang.h $(valprint_h) $(gdbcore_h)
-
-ser-go32.o: ser-go32.c $(defs_h) $(serial_h)
-
-ser-pipe.o: ser-pipe.c $(defs_h) $(serial_h) $(gdb_string_h) $(ser_unix_h)
-
-ser-tcp.o: ser-tcp.c $(defs_h) $(serial_h) $(gdb_string_h) $(ser_unix_h)
-
-ser-unix.o: ser-unix.c $(defs_h) $(serial_h) $(ser_unix_h)
-
-serial.o: serial.c $(defs_h) $(serial_h) $(gdb_string_h)
-
+ $(objfiles_h) $(tm_h) $(__bfd_bfd_h) $(floatformat_h) $(regcache_h) \
+ $(value_h) $(gdb_assert_h)
+scm-exp.o: scm-exp.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \
+ $(parser_defs_h) $(language_h) $(value_h) $(c_lang_h) $(scm_lang_h) \
+ $(scm_tags_h)
+scm-lang.o: scm-lang.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \
+ $(parser_defs_h) $(language_h) $(value_h) $(c_lang_h) $(scm_lang_h) \
+ $(scm_tags_h) $(gdb_string_h) $(gdbcore_h)
+scm-valprint.o: scm-valprint.c $(defs_h) $(symtab_h) $(gdbtypes_h) \
+ $(expression_h) $(parser_defs_h) $(language_h) $(value_h) \
+ $(scm_lang_h) $(valprint_h) $(gdbcore_h)
+ser-e7kpc.o: ser-e7kpc.c $(defs_h) $(serial_h) $(gdb_string_h)
+ser-go32.o: ser-go32.c $(defs_h) $(gdbcmd_h) $(serial_h) $(gdb_string_h)
+ser-pipe.o: ser-pipe.c $(defs_h) $(serial_h) $(ser_unix_h) $(gdb_vfork_h) \
+ $(gdb_string_h)
+ser-tcp.o: ser-tcp.c $(defs_h) $(serial_h) $(ser_unix_h) $(gdb_string_h)
+ser-unix.o: ser-unix.c $(defs_h) $(serial_h) $(ser_unix_h) $(terminal_h) \
+ $(gdb_string_h) $(event_loop_h)
+serial.o: serial.c $(defs_h) $(serial_h) $(gdb_string_h) $(gdbcmd_h)
+sh-stub.o: sh-stub.c
sh-tdep.o: sh-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(symfile_h) \
$(gdbtypes_h) $(gdbcmd_h) $(gdbcore_h) $(value_h) $(dis_asm_h) \
$(inferior_h) $(gdb_string_h) $(arch_utils_h) $(floatformat_h) \
- $(regcache_h) $(doublest_h) $(sh_tdep_h) $(elf_bfd_h) $(solib_svr4_h) \
- $(elf_sh_h) $(gdb_sim_sh_h)
-
-shnbsd-tdep.o: shnbsd-tdep.c $(defs_h) $(gdbcore_h) $(regcache_h) \
- $(value_h) $(sh_tdep_h) solib-svr4.h shnbsd-tdep.h nbsd-tdep.h
-
-shnbsd-nat.o: shnbsd-nat.c $(defs_h) $(inferior_h) shnbsd-tdep.h
-
-sh3-rom.o: sh3-rom.c $(monitor_h) $(bfd_h) $(gdb_wait_h) $(defs_h) $(gdbcmd_h) \
- $(inferior_h) $(target_h) $(serial_h) $(terminal_h) $(arch_utils_h) \
- $(regcache_h) $(sh_tdep_h)
-
-mon960-rom.o: mon960-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
- $(serial_h) $(srec_h) $(xmodem_h) $(symtab_h) $(symfile_h) \
- $(inferior_h)
-
-solib.o: solib.c $(command_h) $(defs_h) $(gdbcore_h) $(inferior_h) \
- $(objfiles_h) $(gdb_regex_h) $(symfile_h) $(target_h) $(gdb_string_h) \
- $(solist_h) $(completer_h)
-
-solib-irix.o: solib-irix.c $(defs_h) $(gdbcore_h) $(inferior_h) $(objfiles_h) \
- $(symfile_h) $(target_h) $(solist_h) solib-svr4.h
-
-solib-sunos.o: solib-sunos.c $(defs_h) $(symfile_h) $(objfiles_h) \
- $(gdbcore_h) $(inferior_h) $(solist_h)
-
-solib-svr4.o: solib-svr4.c $(defs_h) $(gdbcore_h) $(inferior_h) $(objfiles_h) \
- $(symfile_h) $(target_h) $(solist_h) solib-svr4.h
-
-solib-legacy.o: solib-legacy.c $(defs_h) $(gdbcore_h) solib-svr4.h
-
-source.o: source.c $(defs_h) $(expression_h) $(frame_h) $(gdbcmd_h) \
- $(gdbcore_h) $(language_h) $(objfiles_h) $(gdb_regex_h) $(symfile_h) \
- $(symtab_h) $(gdb_string_h) $(source_h) $(completer_h) $(linespec_h) \
- $(ui_out_h) $(value_h)
-
-sparc-linux-nat.o: sparc-linux-nat.c $(defs_h) $(regcache_h)
-
-sparc-nat.o: sparc-nat.c $(bfd_h) $(defs_h) $(inferior_h) $(gdbcore_h) \
- $(target_h) $(regcache_h)
-
-sparc-tdep.o: sparc-tdep.c $(defs_h) $(arch_utils_h) $(frame_h) $(inferior_h) \
- $(target_h) $(value_h) $(bfd_h) $(gdb_string_h) $(regcache_h) \
- $(osabi_h) $(gregset_h) $(gdbcore_h) $(symfile_h)
-
-sparcl-tdep.o: sparcl-tdep.c $(defs_h) $(gdbcore_h) $(target_h) $(regcache_h)
-
+ $(regcache_h) $(doublest_h) $(sh_tdep_h) $(elf_bfd_h) \
+ $(solib_svr4_h) $(elf_sh_h) $(gdb_sim_sh_h)
+sh3-rom.o: sh3-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
+ $(serial_h) $(srec_h) $(arch_utils_h) $(regcache_h) $(sh_tdep_h)
+shnbsd-nat.o: shnbsd-nat.c $(defs_h) $(inferior_h) $(shnbsd_tdep_h)
+shnbsd-tdep.o: shnbsd-tdep.c $(defs_h) $(gdbcore_h) $(regcache_h) $(value_h) \
+ $(solib_svr4_h) $(nbsd_tdep_h) $(sh_tdep_h) $(shnbsd_tdep_h)
+sol-thread.o: sol-thread.c $(defs_h) $(gdbthread_h) $(target_h) \
+ $(inferior_h) $(gdbcmd_h) $(gdbcore_h) $(regcache_h) $(symfile_h) \
+ $(gregset_h)
+solib-aix5.o: solib-aix5.c $(defs_h) $(gdb_string_h) $(elf_external_h) \
+ $(symtab_h) $(bfd_h) $(symfile_h) $(objfiles_h) $(gdbcore_h) \
+ $(command_h) $(target_h) $(frame_h) $(gdb_regex_h) $(inferior_h) \
+ $(environ_h) $(language_h) $(gdbcmd_h) $(solist_h)
+solib-irix.o: solib-irix.c $(defs_h) $(symtab_h) $(bfd_h) $(symfile_h) \
+ $(objfiles_h) $(gdbcore_h) $(target_h) $(inferior_h) $(solist_h)
+solib-legacy.o: solib-legacy.c $(defs_h) $(gdbcore_h) $(solib_svr4_h)
+solib-osf.o: solib-osf.c $(defs_h) $(gdb_string_h) $(bfd_h) $(symtab_h) \
+ $(symfile_h) $(objfiles_h) $(target_h) $(inferior_h) $(solist_h)
+solib-sunos.o: solib-sunos.c $(defs_h) $(gdb_string_h) $(symtab_h) $(bfd_h) \
+ $(symfile_h) $(objfiles_h) $(gdbcore_h) $(inferior_h) $(solist_h)
+solib-svr4.o: solib-svr4.c $(defs_h) $(elf_external_h) $(elf_common_h) \
+ $(elf_mips_h) $(symtab_h) $(bfd_h) $(symfile_h) $(objfiles_h) \
+ $(gdbcore_h) $(target_h) $(inferior_h) $(solist_h) $(solib_svr4_h)
+solib.o: solib.c $(defs_h) $(gdb_string_h) $(symtab_h) $(bfd_h) $(symfile_h) \
+ $(objfiles_h) $(gdbcore_h) $(command_h) $(target_h) $(frame_h) \
+ $(gdb_regex_h) $(inferior_h) $(environ_h) $(language_h) $(gdbcmd_h) \
+ $(completer_h) $(filenames_h) $(solist_h)
+somread.o: somread.c $(defs_h) $(bfd_h) $(symtab_h) $(symfile_h) \
+ $(objfiles_h) $(buildsym_h) $(stabsread_h) $(gdb_stabs_h) \
+ $(complaints_h) $(gdb_string_h) $(demangle_h) $(som_h) $(libhppa_h)
+somsolib.o: somsolib.c $(defs_h) $(frame_h) $(bfd_h) $(som_h) $(libhppa_h) \
+ $(gdbcore_h) $(symtab_h) $(breakpoint_h) $(symfile_h) $(objfiles_h) \
+ $(inferior_h) $(gdb_stabs_h) $(gdb_stat_h) $(gdbcmd_h) $(language_h) \
+ $(regcache_h)
+source.o: source.c $(defs_h) $(symtab_h) $(expression_h) $(language_h) \
+ $(command_h) $(source_h) $(gdbcmd_h) $(frame_h) $(value_h) \
+ $(gdb_string_h) $(gdb_stat_h) $(gdbcore_h) $(gdb_regex_h) \
+ $(symfile_h) $(objfiles_h) $(annotate_h) $(gdbtypes_h) $(linespec_h) \
+ $(filenames_h) $(completer_h) $(ui_out_h)
+sparc-linux-nat.o: sparc-linux-nat.c $(defs_h) $(regcache_h) $(gregset_h)
+sparc-nat.o: sparc-nat.c $(defs_h) $(inferior_h) $(target_h) $(gdbcore_h) \
+ $(regcache_h)
+sparc-stub.o: sparc-stub.c
+sparc-tdep.o: sparc-tdep.c $(defs_h) $(arch_utils_h) $(frame_h) \
+ $(inferior_h) $(target_h) $(value_h) $(bfd_h) $(gdb_string_h) \
+ $(regcache_h) $(osabi_h) $(gregset_h) $(gdbcore_h) $(symfile_h)
sparc64nbsd-nat.o: sparc64nbsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \
- sparcnbsd-tdep.h
-
+ $(sparcnbsd_tdep_h)
+sparcl-stub.o: sparcl-stub.c
+sparcl-tdep.o: sparcl-tdep.c $(defs_h) $(gdbcore_h) $(breakpoint_h) \
+ $(target_h) $(serial_h) $(regcache_h)
+sparclet-rom.o: sparclet-rom.c $(defs_h) $(gdbcore_h) $(target_h) \
+ $(monitor_h) $(serial_h) $(srec_h) $(symtab_h) $(symfile_h) \
+ $(regcache_h)
+sparclet-stub.o: sparclet-stub.c
sparcnbsd-nat.o: sparcnbsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \
- sparcnbsd-tdep.h
-
+ $(sparcnbsd_tdep_h)
sparcnbsd-tdep.o: sparcnbsd-tdep.c $(defs_h) $(gdbcore_h) $(regcache_h) \
- $(target_h) $(value_h) osabi.h sparcnbsd-tdep.h nbsd-tdep.h \
- solib-svr4.h
-
-xstormy16-tdep.o: xstormy16-tdep.c $(defs_h) $(value_h) $(inferior_h) \
- $(symfile_h) $(arch_utils_h) $(regcache_h) $(gdbcore_h)
-
-dsrec.o: dsrec.c $(defs_h) srec.h
-
+ $(target_h) $(value_h) $(osabi_h) $(sparcnbsd_tdep_h) $(nbsd_tdep_h) \
+ $(solib_svr4_h)
stabsread.o: stabsread.c $(defs_h) $(gdb_string_h) $(bfd_h) $(gdb_obstack_h) \
$(symtab_h) $(gdbtypes_h) $(expression_h) $(symfile_h) $(objfiles_h) \
$(aout_stab_gnu_h) $(libaout_h) $(aout_aout64_h) $(gdb_stabs_h) \
$(buildsym_h) $(complaints_h) $(demangle_h) $(language_h) \
$(doublest_h) $(stabsread_h)
-
-stack.o: stack.c $(defs_h) $(gdbcmd_h) $(gdbcore_h) $(inferior_h) \
- $(language_h) $(target_h) $(gdb_string_h) $(ui_out_h)
-
-ui-file.o: ui-file.c $(defs_h) ui-file.h
-tui-file.o: $(srcdir)/tui/tui-file.c $(defs_h) $(srcdir)/tui/tui-file.h \
- $(srcdir)/tui/tuiIO.h
-
-ax-general.o: ax-general.c $(defs_h) $(ax_h) $(value_h)
-
-ax-gdb.o: ax-gdb.c $(defs_h) $(symtab_h) $(symfile_h) $(gdbtypes_h) \
- $(value_h) $(expression_h) $(command_h) $(ax_h) $(gdbcmd_h) ax-gdb.h
-
-sun3-nat.o: sun3-nat.c $(defs_h) $(gdbcore_h) $(inferior_h) $(regcache_h)
-
+stack.o: stack.c $(defs_h) $(gdb_string_h) $(value_h) $(symtab_h) \
+ $(gdbtypes_h) $(expression_h) $(language_h) $(frame_h) $(gdbcmd_h) \
+ $(gdbcore_h) $(target_h) $(breakpoint_h) $(demangle_h) $(inferior_h) \
+ $(annotate_h) $(ui_out_h)
+standalone.o: standalone.c $(gdb_stat_h) $(defs_h) $(symtab_h) $(frame_h) \
+ $(inferior_h) $(gdb_wait_h)
+std-regs.o: std-regs.c $(defs_h) $(builtin_regs_h) $(frame_h) $(gdbtypes_h) \
+ $(value_h) $(gdb_string_h)
+stop-gdb.o: stop-gdb.c $(defs_h)
+sun3-nat.o: sun3-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) $(regcache_h)
symfile.o: symfile.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(gdbcore_h) \
$(frame_h) $(target_h) $(value_h) $(symfile_h) $(objfiles_h) \
$(gdbcmd_h) $(breakpoint_h) $(language_h) $(complaints_h) \
$(demangle_h) $(inferior_h) $(gdb_stabs_h) $(gdb_obstack_h) \
$(completer_h) $(bcache_h) $(gdb_string_h) $(gdb_stat_h)
-
-symm-tdep.o: symm-tdep.c $(defs_h) $(gdbcore_h) $(inferior_h)
-
-symm-nat.o: symm-nat.c $(defs_h) $(gdbcore_h) $(inferior_h) $(regcache_h)
-
+symm-nat.o: symm-nat.c $(defs_h) $(frame_h) $(inferior_h) $(symtab_h) \
+ $(target_h) $(regcache_h) $(gdb_stat_h) $(gdbcore_h) $(gdbcore_h)
+symm-tdep.o: symm-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(symtab_h) \
+ $(gdb_stat_h) $(gdbcore_h)
symmisc.o: symmisc.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(bfd_h) \
$(symfile_h) $(objfiles_h) $(breakpoint_h) $(command_h) \
$(gdb_obstack_h) $(language_h) $(bcache_h) $(gdb_string_h)
-
symtab.o: symtab.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(gdbcore_h) \
$(frame_h) $(target_h) $(value_h) $(symfile_h) $(objfiles_h) \
$(gdbcmd_h) $(call_cmds_h) $(gdb_regex_h) $(expression_h) \
$(language_h) $(demangle_h) $(inferior_h) $(linespec_h) \
$(filenames_h) $(gdb_obstack_h) $(gdb_string_h) $(gdb_stat_h) \
$(cp_abi_h)
-
-linespec.o: linespec.c $(linespec_h) $(defs_h) $(frame_h) $(value_h) \
- $(objfiles_h) $(symfile_h) $(completer_h) $(symtab_h) \
- $(demangle_h) $(command_h) $(cp_abi_h)
-
-macroexp.o: macroexp.c $(defs_h) $(gdb_obstack_h) $(bcache_h) $(macrotab_h) \
- $(macroexp_h) $(gdb_assert_h)
-
-macrotab.o: macrotab.c $(defs_h) $(gdb_obstack_h) $(splay_tree_h) $(symtab_h) \
- $(symfile_h) $(objfiles_h) $(macrotab_h) $(gdb_assert_h) $(bcache_h) \
- $(complaints_h)
-
-macroscope.o: macroscope.c $(defs_h) $(macroscope_h)
-
-macrocmd.o: macrocmd.c $(defs_h) $(macrotab_h) $(macroexp_h) \
- $(macroscope_h) $(command_h) $(gdbcmd_h)
-
-target.o: target.c $(bfd_h) $(defs_h) $(gdbcmd_h) $(inferior_h) \
- $(objfiles_h) $(symfile_h) $(target_h) $(gdb_string_h) $(regcache_h)
-
+target.o: target.c $(defs_h) $(gdb_string_h) $(target_h) $(gdbcmd_h) \
+ $(symtab_h) $(inferior_h) $(bfd_h) $(symfile_h) $(objfiles_h) \
+ $(gdb_wait_h) $(dcache_h) $(regcache_h)
+thread-db.o: thread-db.c $(defs_h) $(gdb_assert_h) $(gdb_proc_service_h) \
+ $(gdb_thread_db_h) $(bfd_h) $(gdbthread_h) $(inferior_h) \
+ $(symfile_h) $(objfiles_h) $(target_h) $(regcache_h)
thread.o: thread.c $(defs_h) $(symtab_h) $(frame_h) $(inferior_h) \
$(environ_h) $(value_h) $(target_h) $(gdbthread_h) $(command_h) \
- $(gdbcmd_h) $(regcache_h) $(gdb_h) $(ui_out_h)
-
-completer.o: completer.c $(completer_h) $(gdbtypes_h) $(symtab_h) \
- $(defs_h) $(gdbcmd_h) $(expression_h) $(readline_headers) \
- $(cli_decode_h)
-
-top.o: top.c $(top_h) $(bfd_h) $(getopt_h) $(readline_headers) $(call_cmds_h) \
- $(cli_cmds_h) $(cli_script_h) $(cli_setshow_h) \
- $(defs_h) $(gdbcmd_h) $(inferior_h) $(language_h) \
- $(remote_utils_h) $(gdb_string_h) $(event_loop_h) $(event_top_h) \
- $(completer_h) $(version_h) $(ui_out_h) $(doublest_h) \
- $(serial_h)
-
+ $(gdbcmd_h) $(regcache_h) $(gdb_h) $(gdb_string_h) $(ui_out_h)
+top.o: top.c $(defs_h) $(gdbcmd_h) $(call_cmds_h) $(cli_cmds_h) \
+ $(cli_script_h) $(cli_setshow_h) $(cli_decode_h) $(symtab_h) \
+ $(inferior_h) $(target_h) $(breakpoint_h) $(gdbtypes_h) \
+ $(expression_h) $(value_h) $(language_h) $(terminal_h) $(annotate_h) \
+ $(completer_h) $(top_h) $(version_h) $(serial_h) $(doublest_h) \
+ $(gdb_assert_h) $(event_top_h) $(gdb_string_h) $(gdb_stat_h) \
+ $(ui_out_h) $(cli_out_h)
+tracepoint.o: tracepoint.c $(defs_h) $(symtab_h) $(frame_h) $(gdbtypes_h) \
+ $(expression_h) $(gdbcmd_h) $(value_h) $(target_h) $(language_h) \
+ $(gdb_string_h) $(inferior_h) $(tracepoint_h) $(remote_h) \
+ $(linespec_h) $(regcache_h) $(completer_h) $(gdb_events_h) $(ax_h) \
+ $(ax_gdb_h)
typeprint.o: typeprint.c $(defs_h) $(gdb_obstack_h) $(bfd_h) $(symtab_h) \
$(gdbtypes_h) $(expression_h) $(value_h) $(gdbcore_h) $(command_h) \
$(gdbcmd_h) $(target_h) $(language_h) $(cp_abi_h) $(gdb_string_h)
-
-utils.o: utils.c $(bfd_h) $(defs_h) $(expression_h) $(gdbcmd_h) \
- $(language_h) $(target_h) $(terminal_h) $(readline_headers) \
- $(gdb_string_h) $(event_loop_h) $(event_top_h) $(inferior_h)
-
-valarith.o: valarith.c $(bfd_h) $(defs_h) $(expression_h) \
- $(gdbtypes_h) $(language_h) $(symtab_h) $(target_h) $(value_h) \
- $(gdb_string_h) $(doublest_h)
-
-valops.o: valops.c $(defs_h) $(gdbcore_h) $(inferior_h) $(target_h) \
- $(gdb_string_h) $(regcache_h) $(cp_abi_h) $(gdb_assert_h)
-
-valprint.o: valprint.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
- $(value_h) $(gdbcore_h) $(gdbcmd_h) $(target_h) $(obstack_h) \
- $(language_h) $(annotate_h) $(valprint_h) $(floatformat_h) \
+ui-file.o: ui-file.c $(defs_h) $(ui_file_h) $(gdb_string_h)
+ui-out.o: ui-out.c $(defs_h) $(gdb_string_h) $(expression_h) $(language_h) \
+ $(ui_out_h) $(gdb_assert_h)
+utils.o: utils.c $(config_h) $(defs_h) $(gdb_assert_h) $(gdb_string_h) \
+ $(event_top_h) $(gdbcmd_h) $(serial_h) $(bfd_h) $(target_h) \
+ $(demangle_h) $(expression_h) $(language_h) $(annotate_h) \
+ $(filenames_h) $(inferior_h) $(mmalloc_h)
+uw-thread.o: uw-thread.c $(defs_h) $(gdbthread_h) $(target_h) $(inferior_h) \
+ $(regcache_h) $(gregset_h)
+v850-tdep.o: v850-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
+ $(value_h) $(bfd_h) $(gdb_string_h) $(gdbcore_h) $(symfile_h) \
+ $(arch_utils_h) $(regcache_h) $(symtab_h)
+v850ice.o: v850ice.c $(defs_h) $(gdb_string_h) $(frame_h) $(symtab_h) \
+ $(inferior_h) $(breakpoint_h) $(symfile_h) $(target_h) $(objfiles_h) \
+ $(gdbcore_h) $(value_h) $(command_h) $(regcache_h)
+valarith.o: valarith.c $(defs_h) $(value_h) $(symtab_h) $(gdbtypes_h) \
+ $(expression_h) $(target_h) $(language_h) $(gdb_string_h) \
$(doublest_h)
-
-values.o: values.c $(defs_h) $(expression_h) $(frame_h) $(gdbcmd_h) \
- $(gdbcore_h) $(gdbtypes_h) $(symtab_h) $(target_h) $(value_h) \
- $(gdb_string_h) scm-lang.h $(doublest_h) $(regcache_h)
-
-vax-tdep.o: vax-tdep.c $(OP_INCLUDE)/vax.h $(defs_h) $(symtab_h) \
- $(arch_utils_h) $(inferior_h) $(vax_tdep_h)
-
-x86-64-linux-tdep.o : x86-64-linux-tdep.c $(defs_h) $(inferior_h) \
- $(gdbcore_h) $(regcache_h) x86-64-tdep.h i386-tdep.h $(dwarf2cfi_h)
-
-x86-64-tdep.o : x86-64-tdep.c $(defs_h) $(inferior_h) $(gdbcore_h) \
- $(gdbcmd_h) $(arch_utils_h) $(regcache_h) $(symfile_h) x86-64-tdep.h \
- i386-tdep.h $(dwarf2cfi_h) $(gdb_assert_h) $(objfiles_h)
-
-x86-64-linux-nat.o : x86-64-linux-nat.c $(defs_h) $(inferior_h) \
- $(gdbcore_h) $(regcache_h) $(gdb_assert_h) x86-64-tdep.h \
- i386-tdep.h
-
-win32-nat.o: win32-nat.c $(gdbcmd_h) $(gdbcore_h) $(inferior_h) $(defs_h) \
- $(gdb_string_h) $(regcache_h) $(completer_h)
-
-xcoffread.o: xcoffread.c $(bfd_h) $(INCLUDE_DIR)/aout/stab.def \
- $(INCLUDE_DIR)/aout/stab_gnu.h $(INCLUDE_DIR)/coff/internal.h \
- $(INCLUDE_DIR)/coff/rs6000.h $(BFD_SRC)/libcoff.h $(buildsym_h) \
- $(complaints_h) $(defs_h) $(gdbtypes_h) $(objfiles_h) $(stabsread_h) \
- $(symfile_h) $(symtab_h) $(gdb_string_h)
-
-xcoffsolib.o: xcoffsolib.c $(bfd_h) $(defs_h) $(xcoffsolib_h) $(inferior_h) \
- $(gdbcmd_h) $(symfile_h) $(frame_h) $(gdb_regex_h)
-
-# FIXME: z8k-tdep.c calls _initialize_gdbtypes(). Since that isn't
-# declared -Wimplicit fails. It should be using the GDBARCH framework.
-# cagney 1999-09-02.
-z8k-tdep.o: z8k-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(gdbcmd_h) \
- $(gdbtypes_h) $(dis_asm_h) $(gdbcore_h) $(regcache_h)
-
-c-exp.tab.o: c-exp.tab.c $(defs_h) $(gdb_string_h) $(expression_h) \
- $(value_h) $(parser_defs_h) $(language_h) $(c_lang_h) $(bfd_h) \
- $(symfile_h) $(objfiles_h)
-
-jv-exp.tab.o: jv-exp.tab.c jv-lang.h $(defs_h) $(expression_h) \
- $(gdbtypes_h) $(language_h) $(parser_defs_h) $(symtab_h) $(value_h) \
- $(bfd_h) $(objfiles_h) $(symfile_h)
-
-f-exp.tab.o: f-exp.tab.c f-lang.h $(defs_h) $(expression_h) \
- $(language_h) $(parser_defs_h) $(value_h) $(bfd_h) $(objfiles_h) \
- $(symfile_h)
-
-m2-exp.tab.o: m2-exp.tab.c $(defs_h) $(expression_h) $(gdbtypes_h) \
- $(language_h) m2-lang.h $(parser_defs_h) $(symtab_h) $(value_h) \
- $(bfd_h) $(objfiles_h) $(symfile_h)
-
-p-exp.tab.o: p-exp.tab.c $(defs_h) $(expression_h) $(gdbtypes_h) \
- $(language_h) p-lang.h $(parser_defs_h) $(symtab_h) $(value_h) \
- $(bfd_h) $(objfiles_h) $(symfile_h)
-
-ada-exp.tab.o: ada-exp.tab.c ada-lex.c ada-lang.h \
- $(defs_h) $(expression_h) \
- $(gdbtypes_h) language.h parser-defs.h $(symtab_h) $(value_h) \
- $(bfd_h) objfiles.h symfile.h
-
-gdb-events.o: gdb-events.c $(gdb_events_h) $(defs_h) $(gdbcmd_h)
-
-ui-out.o: ui-out.c $(defs_h) $(ui_out_h) $(expression_h) $(language_h)
-cli-out.o: cli-out.c $(defs_h) $(ui_out_h) $(cli_out_h)
-
+valops.o: valops.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(value_h) $(frame_h) \
+ $(inferior_h) $(gdbcore_h) $(target_h) $(demangle_h) $(language_h) \
+ $(gdbcmd_h) $(regcache_h) $(cp_abi_h) $(gdb_string_h) \
+ $(gdb_assert_h)
+valprint.o: valprint.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
+ $(value_h) $(gdbcore_h) $(gdbcmd_h) $(target_h) $(language_h) \
+ $(annotate_h) $(valprint_h) $(floatformat_h) $(doublest_h)
+values.o: values.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
+ $(value_h) $(gdbcore_h) $(command_h) $(gdbcmd_h) $(target_h) \
+ $(language_h) $(scm_lang_h) $(demangle_h) $(doublest_h) \
+ $(gdb_assert_h) $(regcache_h)
varobj.o: varobj.c $(defs_h) $(value_h) $(expression_h) $(frame_h) \
$(language_h) $(wrapper_h) $(gdbcmd_h) $(gdb_string_h) $(varobj_h)
-
-wrapper.o: wrapper.c $(defs_h) $(frame_h) $(value_h) $(wrapper_h)
+vax-tdep.o: vax-tdep.c $(defs_h) $(symtab_h) $(opcode_vax_h) $(gdbcore_h) \
+ $(inferior_h) $(regcache_h) $(frame_h) $(value_h) $(arch_utils_h) \
+ $(vax_tdep_h)
+w89k-rom.o: w89k-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
+ $(serial_h) $(xmodem_h) $(regcache_h)
+win32-nat.o: win32-nat.c $(defs_h) $(tm_h) $(frame_h) $(inferior_h) \
+ $(target_h) $(gdbcore_h) $(command_h) $(completer_h) $(regcache_h) \
+ $(top_h) $(i386_tdep_h) $(buildsym_h) $(symfile_h) $(objfiles_h) \
+ $(gdb_string_h) $(gdbthread_h) $(gdbcmd_h)
+wince-stub.o: wince-stub.c $(wince_stub_h)
+wince.o: wince.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) $(gdbcore_h) \
+ $(command_h) $(buildsym_h) $(symfile_h) $(objfiles_h) \
+ $(gdb_string_h) $(gdbthread_h) $(gdbcmd_h) $(wince_stub_h) \
+ $(regcache_h)
+wrapper.o: wrapper.c $(defs_h) $(value_h) $(wrapper_h)
+x86-64-linux-nat.o: x86-64-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \
+ $(regcache_h) $(gdb_assert_h) $(x86_64_tdep_h)
+x86-64-linux-tdep.o: x86-64-linux-tdep.c $(defs_h) $(inferior_h) \
+ $(gdbcore_h) $(regcache_h) $(x86_64_tdep_h) $(dwarf2cfi_h)
+x86-64-tdep.o: x86-64-tdep.c $(defs_h) $(inferior_h) $(gdbcore_h) \
+ $(gdbcmd_h) $(arch_utils_h) $(regcache_h) $(symfile_h) $(objfiles_h) \
+ $(x86_64_tdep_h) $(dwarf2cfi_h) $(gdb_assert_h)
+xcoffread.o: xcoffread.c $(defs_h) $(bfd_h) $(gdb_string_h) $(gdb_stat_h) \
+ $(coff_internal_h) $(libcoff_h) $(coff_xcoff_h) $(libxcoff_h) \
+ $(coff_rs6000_h) $(symtab_h) $(gdbtypes_h) $(symfile_h) \
+ $(objfiles_h) $(buildsym_h) $(stabsread_h) $(expression_h) \
+ $(complaints_h) $(gdb_stabs_h) $(aout_stab_gnu_h)
+xcoffsolib.o: xcoffsolib.c $(defs_h) $(bfd_h) $(xcoffsolib_h) $(inferior_h) \
+ $(gdbcmd_h) $(symfile_h) $(frame_h) $(gdb_regex_h)
+xmodem.o: xmodem.c $(defs_h) $(serial_h) $(target_h) $(xmodem_h)
+xstormy16-tdep.o: xstormy16-tdep.c $(defs_h) $(value_h) $(inferior_h) \
+ $(symfile_h) $(arch_utils_h) $(regcache_h) $(gdbcore_h) \
+ $(objfiles_h)
+z8k-tdep.o: z8k-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(gdbcmd_h) \
+ $(gdbtypes_h) $(dis_asm_h) $(gdbcore_h) $(regcache_h) $(value_h)
#
# gdb/cli/ dependencies
@@ -2605,7 +2484,7 @@ rdi-share/libangsd.a: force
# Need to explicitly specify the compile rule as make will do nothing
# or try to compile the object file into the mi directory.
-signals.o: $(srcdir)/signals/signals.c $(defs_h) $(target_h)
+signals.o: $(srcdir)/signals/signals.c $(defs_h) $(target_h) $(gdb_string_h)
$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/signals/signals.c
#
diff --git a/gdb/ada-exp.y b/gdb/ada-exp.y
index 67185a3..2e34e01 100644
--- a/gdb/ada-exp.y
+++ b/gdb/ada-exp.y
@@ -90,6 +90,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#define yylloc ada_lloc
#define yyreds ada_reds /* With YYDEBUG defined */
#define yytoks ada_toks /* With YYDEBUG defined */
+#define yyname ada_name /* With YYDEBUG defined */
+#define yyrule ada_rule /* With YYDEBUG defined */
#ifndef YYDEBUG
#define YYDEBUG 1 /* Default to yydebug support */
diff --git a/gdb/alphanbsd-tdep.c b/gdb/alphanbsd-tdep.c
index 519d816..bc7b1a4 100644
--- a/gdb/alphanbsd-tdep.c
+++ b/gdb/alphanbsd-tdep.c
@@ -21,6 +21,7 @@
#include "defs.h"
#include "gdbcore.h"
+#include "frame.h"
#include "regcache.h"
#include "value.h"
@@ -178,7 +179,31 @@ alphanbsd_sigtramp_offset (CORE_ADDR pc)
static int
alphanbsd_pc_in_sigtramp (CORE_ADDR pc, char *func_name)
{
- return (alphanbsd_sigtramp_offset (pc) >= 0);
+ return (nbsd_pc_in_sigtramp (pc, func_name)
+ || alphanbsd_sigtramp_offset (pc) >= 0);
+}
+
+static CORE_ADDR
+alphanbsd_sigcontext_addr (struct frame_info *frame)
+{
+ /* FIXME: This is not correct for all versions of NetBSD/alpha.
+ We will probably need to disassemble the trampoline to figure
+ out which trampoline frame type we have. */
+ return frame->frame;
+}
+
+static CORE_ADDR
+alphanbsd_skip_sigtramp_frame (struct frame_info *frame, CORE_ADDR pc)
+{
+ char *name;
+
+ /* FIXME: This is not correct for all versions of NetBSD/alpha.
+ We will probably need to disassemble the trampoline to figure
+ out which trampoline frame type we have. */
+ find_pc_partial_function (pc, &name, (CORE_ADDR *) NULL, (CORE_ADDR *) NULL);
+ if (PC_IN_SIGTRAMP (pc, name))
+ return frame->frame;
+ return 0;
}
static void
@@ -196,7 +221,9 @@ alphanbsd_init_abi (struct gdbarch_info info,
set_solib_svr4_fetch_link_map_offsets (gdbarch,
nbsd_lp64_solib_svr4_fetch_link_map_offsets);
+ tdep->skip_sigtramp_frame = alphanbsd_skip_sigtramp_frame;
tdep->dynamic_sigtramp_offset = alphanbsd_sigtramp_offset;
+ tdep->sigcontext_addr = alphanbsd_sigcontext_addr;
tdep->jb_pc = 2;
tdep->jb_elt_size = 8;
diff --git a/gdb/avr-tdep.c b/gdb/avr-tdep.c
index b245332..e38f13d 100644
--- a/gdb/avr-tdep.c
+++ b/gdb/avr-tdep.c
@@ -1216,8 +1216,7 @@ avr_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_max_register_virtual_size (gdbarch, 4);
set_gdbarch_register_virtual_type (gdbarch, avr_register_virtual_type);
- /* We might need to define our own here or define FRAME_INIT_SAVED_REGS */
- set_gdbarch_get_saved_register (gdbarch, generic_get_saved_register);
+ set_gdbarch_get_saved_register (gdbarch, generic_unwind_get_saved_register);
set_gdbarch_print_insn (gdbarch, print_insn_avr);
diff --git a/gdb/ax-gdb.c b/gdb/ax-gdb.c
index 368b9df..8f23905 100644
--- a/gdb/ax-gdb.c
+++ b/gdb/ax-gdb.c
@@ -30,6 +30,7 @@
#include "target.h"
#include "ax.h"
#include "ax-gdb.h"
+#include "gdb_string.h"
/* To make sense of this file, you should read doc/agentexpr.texi.
Then look at the types and enums in ax-gdb.h. For the code itself,
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 0f498af..b88f674 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -45,6 +45,7 @@
#include "completer.h"
#include "gdb.h"
#include "ui-out.h"
+#include "cli/cli-script.h"
#include "gdb-events.h"
@@ -737,7 +738,19 @@ insert_breakpoints (void)
if (b->enable_state == bp_permanent)
/* Permanent breakpoints cannot be inserted or removed. */
continue;
- else if (b->type != bp_watchpoint
+ if ((b->type == bp_watchpoint
+ || b->type == bp_hardware_watchpoint
+ || b->type == bp_read_watchpoint
+ || b->type == bp_access_watchpoint) && (!b->val))
+ {
+ struct value *val;
+ val = evaluate_expression (b->exp);
+ release_value (val);
+ if (VALUE_LAZY (val))
+ value_fetch_lazy (val);
+ b->val = val;
+ }
+ if (b->type != bp_watchpoint
&& b->type != bp_hardware_watchpoint
&& b->type != bp_read_watchpoint
&& b->type != bp_access_watchpoint
@@ -1565,6 +1578,14 @@ breakpoint_init_inferior (enum inf_context context)
/* Likewise for watchpoints on local expressions. */
if (b->exp_valid_block != NULL)
delete_breakpoint (b);
+ if (context == inf_starting)
+ {
+ /* Reset val field to force reread of starting value
+ in insert_breakpoints. */
+ if (b->val)
+ value_free (b->val);
+ b->val = NULL;
+ }
break;
default:
/* Likewise for exception catchpoints in dynamic-linked
@@ -1763,6 +1784,7 @@ bpstat_clear (bpstat *bsp)
q = p->next;
if (p->old_val != NULL)
value_free (p->old_val);
+ free_command_lines (&p->commands);
xfree (p);
p = q;
}
@@ -1875,7 +1897,7 @@ bpstat_clear_actions (bpstat bs)
{
for (; bs != NULL; bs = bs->next)
{
- bs->commands = NULL;
+ free_command_lines (&bs->commands);
if (bs->old_val != NULL)
{
value_free (bs->old_val);
@@ -1944,11 +1966,9 @@ top:
to look at, so start over. */
goto top;
else
- bs->commands = NULL;
+ free_command_lines (&bs->commands);
}
-
- executing_breakpoint_commands = 0;
- discard_cleanups (old_chain);
+ do_cleanups (old_chain);
}
/* This is the normal print function for a bpstat. In the future,
@@ -2730,7 +2750,7 @@ bpstat_stop_status (CORE_ADDR *pc, int not_a_sw_breakpoint)
/* We will stop here */
if (b->disposition == disp_disable)
b->enable_state = bp_disabled;
- bs->commands = b->commands;
+ bs->commands = copy_command_lines (b->commands);
if (b->silent)
bs->print = 0;
if (bs->commands &&
@@ -6787,14 +6807,8 @@ delete_breakpoint (struct breakpoint *bpt)
if (bs->breakpoint_at == bpt)
{
bs->breakpoint_at = NULL;
-
- /* we'd call bpstat_clear_actions, but that free's stuff and due
- to the multiple pointers pointing to one item with no
- reference counts found anywhere through out the bpstat's (how
- do you spell fragile?), we don't want to free things twice --
- better a memory leak than a corrupt malloc pool! */
- bs->commands = NULL;
bs->old_val = NULL;
+ /* bs->commands will be freed later. */
}
/* On the chance that someone will soon try again to delete this same
bp, we mark it as deleted before freeing its storage. */
diff --git a/gdb/c-exp.y b/gdb/c-exp.y
index ea50836..c6fc52c 100644
--- a/gdb/c-exp.y
+++ b/gdb/c-exp.y
@@ -89,6 +89,8 @@ extern int hp_som_som_object_present;
#define yylloc c_lloc
#define yyreds c_reds /* With YYDEBUG defined */
#define yytoks c_toks /* With YYDEBUG defined */
+#define yyname c_name /* With YYDEBUG defined */
+#define yyrule c_rule /* With YYDEBUG defined */
#define yylhs c_yylhs
#define yylen c_yylen
#define yydefred c_yydefred
diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c
index 9361067..925d9c5 100644
--- a/gdb/c-valprint.c
+++ b/gdb/c-valprint.c
@@ -21,6 +21,7 @@
Boston, MA 02111-1307, USA. */
#include "defs.h"
+#include "gdb_string.h"
#include "symtab.h"
#include "gdbtypes.h"
#include "expression.h"
diff --git a/gdb/cli/cli-script.c b/gdb/cli/cli-script.c
index 9aac6e6..2b23301 100644
--- a/gdb/cli/cli-script.c
+++ b/gdb/cli/cli-script.c
@@ -1012,6 +1012,36 @@ make_cleanup_free_command_lines (struct command_line **arg)
{
return make_cleanup (do_free_command_lines_cleanup, arg);
}
+
+struct command_line *
+copy_command_lines (struct command_line *cmds)
+{
+ struct command_line *result = NULL;
+
+ if (cmds)
+ {
+ result = (struct command_line *) xmalloc (sizeof (struct command_line));
+
+ result->next = copy_command_lines (cmds->next);
+ result->line = xstrdup (cmds->line);
+ result->control_type = cmds->control_type;
+ result->body_count = cmds->body_count;
+ if (cmds->body_count > 0)
+ {
+ int i;
+
+ result->body_list = (struct command_line **)
+ xmalloc (sizeof (struct command_line *) * cmds->body_count);
+
+ for (i = 0; i < cmds->body_count; i++)
+ result->body_list[i] = copy_command_lines (cmds->body_list[i]);
+ }
+ else
+ result->body_list = NULL;
+ }
+
+ return result;
+}
static void
validate_comname (char *comname)
diff --git a/gdb/cli/cli-script.h b/gdb/cli/cli-script.h
index f8604c6..898e3cc 100644
--- a/gdb/cli/cli-script.h
+++ b/gdb/cli/cli-script.h
@@ -41,6 +41,8 @@ extern enum command_control_type
extern void print_command_lines (struct ui_out *,
struct command_line *, unsigned int);
+extern struct command_line * copy_command_lines (struct command_line *cmds);
+
/* Exported to gdb/infrun.c */
extern void execute_user_command (struct cmd_list_element *c, char *args);
diff --git a/gdb/config/i386/nbsdelf.mt b/gdb/config/i386/nbsd.mt
index fc80608..f7f8cd6 100644
--- a/gdb/config/i386/nbsdelf.mt
+++ b/gdb/config/i386/nbsd.mt
@@ -1,3 +1,4 @@
# Target: Intel 386 running NetBSD
-TDEPFILES= i386-tdep.o i387-tdep.o i386bsd-tdep.o i386nbsd-tdep.o corelow.o
+TDEPFILES= i386-tdep.o i387-tdep.o i386bsd-tdep.o i386nbsd-tdep.o corelow.o \
+ nbsd-tdep.o solib.o solib-svr4.o
TM_FILE= tm-nbsd.h
diff --git a/gdb/config/i386/nbsdaout.mh b/gdb/config/i386/nbsdaout.mh
index e52f38a..226c56c 100644
--- a/gdb/config/i386/nbsdaout.mh
+++ b/gdb/config/i386/nbsdaout.mh
@@ -1,6 +1,5 @@
# Host: Intel 386 running NetBSD
-NATDEPFILES= fork-child.o infptrace.o inftarg.o i386bsd-nat.o \
- solib.o solib-sunos.o
+NATDEPFILES= fork-child.o infptrace.o inftarg.o i386bsd-nat.o solib-sunos.o
XM_FILE= xm-nbsd.h
NAT_FILE= nm-nbsdaout.h
diff --git a/gdb/config/i386/nbsdaout.mt b/gdb/config/i386/nbsdaout.mt
deleted file mode 100644
index aa88957..0000000
--- a/gdb/config/i386/nbsdaout.mt
+++ /dev/null
@@ -1,3 +0,0 @@
-# Target: Intel 386 running NetBSD
-TDEPFILES= i386-tdep.o i387-tdep.o i386bsd-tdep.o i386nbsd-tdep.o corelow.o
-TM_FILE= tm-nbsdaout.h
diff --git a/gdb/config/i386/nbsdelf.mh b/gdb/config/i386/nbsdelf.mh
index 0d1c4d1..7c27b02 100644
--- a/gdb/config/i386/nbsdelf.mh
+++ b/gdb/config/i386/nbsdelf.mh
@@ -1,5 +1,4 @@
# Host: Intel 386 running NetBSD
-NATDEPFILES= fork-child.o infptrace.o inftarg.o i386bsd-nat.o \
- solib.o solib-svr4.o solib-legacy.o
+NATDEPFILES= fork-child.o infptrace.o inftarg.o i386bsd-nat.o
XM_FILE= xm-nbsd.h
NAT_FILE= nm-nbsd.h
diff --git a/gdb/config/i386/tm-nbsd.h b/gdb/config/i386/tm-nbsd.h
index 0d73d3a..8e58928 100644
--- a/gdb/config/i386/tm-nbsd.h
+++ b/gdb/config/i386/tm-nbsd.h
@@ -22,17 +22,6 @@
#define TM_NBSD_H
#include "i386/tm-i386.h"
-
-/* These defines allow the recognition of sigtramps as a function name
- <sigtramp>.
-
- FIXME: kettenis/2002-05-12: Of course these defines will have to go
- if we go truly "multi-arch", but I don't know yet how to get rid of
- them. */
-
-#define SIGTRAMP_START(pc) i386bsd_sigtramp_start (pc)
-#define SIGTRAMP_END(pc) i386bsd_sigtramp_end (pc)
-extern CORE_ADDR i386bsd_sigtramp_start (CORE_ADDR pc);
-extern CORE_ADDR i386bsd_sigtramp_end (CORE_ADDR pc);
+#include "solib.h"
#endif /* TM_NBSD_H */
diff --git a/gdb/config/i386/tm-nbsdaout.h b/gdb/config/i386/tm-nbsdaout.h
deleted file mode 100644
index 25325e1..0000000
--- a/gdb/config/i386/tm-nbsdaout.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Macro definitions for i386 running under NetBSD.
- Copyright 2000, 2002 Free Software Foundation, Inc.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#ifndef TM_NBSDAOUT_H
-#define TM_NBSDAOUT_H
-
-#include "i386/tm-nbsd.h"
-
-#endif /* TM_NBSDAOUT_H */
diff --git a/gdb/config/mips/nbsd.mt b/gdb/config/mips/nbsd.mt
index de52916..eb5d887 100644
--- a/gdb/config/mips/nbsd.mt
+++ b/gdb/config/mips/nbsd.mt
@@ -1,5 +1,6 @@
# Target: MIPS running NetBSD
-TDEPFILES= mips-tdep.o mipsnbsd-tdep.o corelow.o solib.o solib-svr4.o
+TDEPFILES= mips-tdep.o mipsnbsd-tdep.o corelow.o solib.o solib-svr4.o \
+ nbsd-tdep.o
TM_FILE= tm-nbsd.h
SIM_OBS = remote-sim.o
diff --git a/gdb/configure.tgt b/gdb/configure.tgt
index 385dbd0..896fbb1 100644
--- a/gdb/configure.tgt
+++ b/gdb/configure.tgt
@@ -92,9 +92,8 @@ i[3456]86-ncr-*) gdb_target=ncr3000 ;;
# OBSOLETE i[3456]86-*-aix*) gdb_target=i386aix ;;
i[3456]86-*-bsd*) gdb_target=i386bsd ;;
i[3456]86-*-freebsd*) gdb_target=fbsd ;;
-i[3456]86-*-netbsdelf*) gdb_target=nbsdelf ;;
-i[3456]86-*-netbsd* | i[3456]86-*-openbsd*)
- gdb_target=nbsdaout ;;
+i[3456]86-*-netbsd*) gdb_target=nbsd ;;
+i[3456]86-*-openbsd*) gdb_target=nbsd ;; # FIXME: needs its own target
# OBSOLETE i[3456]86-*-os9k) gdb_target=i386os9k ;;
i[3456]86-*-go32*) gdb_target=i386aout ;;
i[3456]86-*-msdosdjgpp*) gdb_target=go32 ;;
diff --git a/gdb/cp-abi.c b/gdb/cp-abi.c
index d4eb0a0..36d2992 100644
--- a/gdb/cp-abi.c
+++ b/gdb/cp-abi.c
@@ -21,6 +21,7 @@
#include "defs.h"
#include "value.h"
#include "cp-abi.h"
+#include "gdb_string.h"
struct cp_abi_ops current_cp_abi;
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 37a5e3a..5bfecf0 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,20 @@
+2002-09-02 Stephane Carrez <stcarrez@nerim.fr>
+
+ * gdb.texinfo (TUI Overview): Document status line fields.
+
+2002-09-02 Stephane Carrez <stcarrez@nerim.fr>
+
+ * gdb.texinfo (TUI Commands): Document info win command.
+
+2002-09-01 Stephane Carrez <stcarrez@nerim.fr>
+
+ * gdb.texinfo (TUI Overview): Document breakpoint markers.
+
+2002-09-01 Stephane Carrez <stcarrez@nerim.fr>
+
+ * gdb.texinfo (TUI Single Key Mode): Document new SingleKey mode.
+ (TUI Keys): Likewise.
+
2002-08-25 Andrew Cagney <ac131313@redhat.com>
* gdb.texinfo (Examples): Use ``->'' for a packet send and ``<-''
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index c88c17d..4b8e4ca 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -13101,6 +13101,7 @@ letter.
@menu
* TUI Overview:: TUI overview
* TUI Keys:: TUI key bindings
+* TUI Single Key Mode:: TUI single key mode
* TUI Commands:: TUI specific commands
* TUI Configuration:: TUI configuration variables
@end menu
@@ -13141,8 +13142,6 @@ window is always visible.
@item source
The source window shows the source file of the program. The current
line as well as active breakpoints are displayed in this window.
-The current program position is shown with the @samp{>} marker and
-active breakpoints are shown with @samp{*} markers.
@item assembly
The assembly window shows the disassembly output of the program.
@@ -13154,6 +13153,37 @@ changed are highlighted.
@end table
+The source and assembly windows show the current program position
+by highlighting the current line and marking them with the @samp{>} marker.
+Breakpoints are also indicated with two markers. A first one
+indicates the breakpoint type:
+
+@table @code
+@item B
+Breakpoint which was hit at least once.
+
+@item b
+Breakpoint which was never hit.
+
+@item H
+Hardware breakpoint which was hit at least once.
+
+@item h
+Hardware breakpoint which was never hit.
+
+@end table
+
+The second marker indicates whether the breakpoint is enabled or not:
+
+@table @code
+@item +
+Breakpoint is enabled.
+
+@item -
+Breakpoint is disabled.
+
+@end table
+
The source, assembly and register windows are attached to the thread
and the frame position. They are updated when the current thread
changes, when the frame changes or when the program counter changes.
@@ -13179,6 +13209,35 @@ assembly and registers
@end itemize
+On top of the command window a status line gives various information
+concerning the current process begin debugged. The status line is
+updated when the information it shows changes. The following fields
+are displayed:
+
+@table @emph
+@item target
+Indicates the current gdb target
+(@pxref{Targets, ,Specifying a Debugging Target}).
+
+@item process
+Gives information about the current process or thread number.
+When no process is being debugged, this field is set to @code{No process}.
+
+@item function
+Gives the current function name for the selected frame.
+The name is demangled if demangling is turned on (@pxref{Print Settings}).
+When there is no symbol corresponding to the current program counter
+the string @code{??} is displayed.
+
+@item line
+Indicates the current line number for the selected frame.
+When the current line number is not known the string @code{??} is displayed.
+
+@item pc
+Indicates the current program counter address.
+
+@end table
+
@node TUI Keys
@section TUI Key Bindings
@cindex TUI key bindings
@@ -13186,7 +13245,9 @@ assembly and registers
The TUI installs several key bindings in the readline keymaps
(@pxref{Command Line Editing}).
They allow to leave or enter in the TUI mode or they operate
-directly on the TUI layout and windows. The following key bindings
+directly on the TUI layout and windows. The TUI also provides
+a @emph{SingleKey} keymap which binds several keys directly to
+@value{GDBN} commands. The following key bindings
are installed for both TUI mode and the @value{GDBN} standard mode.
@table @kbd
@@ -13219,6 +13280,11 @@ previous layout and the new one.
Think of it as the Emacs @kbd{C-x 2} binding.
+@kindex C-x s
+@item C-x s
+Use the TUI @emph{SingleKey} keymap that binds single key to gdb commands
+(@pxref{TUI Single Key Mode}).
+
@end table
The following key bindings are handled only by the TUI mode:
@@ -13259,6 +13325,65 @@ for scrolling. This means they are not available for readline. It is
necessary to use other readline key bindings such as @key{C-p}, @key{C-n},
@key{C-b} and @key{C-f}.
+@node TUI Single Key Mode
+@section TUI Single Key Mode
+@cindex TUI single key mode
+
+The TUI provides a @emph{SingleKey} mode in which it installs a particular
+key binding in the readline keymaps to connect single keys to
+some gdb commands.
+
+@table @kbd
+@kindex c @r{(SingleKey TUI key)}
+@item c
+continue
+
+@kindex d @r{(SingleKey TUI key)}
+@item d
+down
+
+@kindex f @r{(SingleKey TUI key)}
+@item f
+finish
+
+@kindex n @r{(SingleKey TUI key)}
+@item n
+next
+
+@kindex q @r{(SingleKey TUI key)}
+@item q
+exit the @emph{SingleKey} mode.
+
+@kindex r @r{(SingleKey TUI key)}
+@item r
+run
+
+@kindex s @r{(SingleKey TUI key)}
+@item s
+step
+
+@kindex u @r{(SingleKey TUI key)}
+@item u
+up
+
+@kindex v @r{(SingleKey TUI key)}
+@item v
+info locals
+
+@kindex w @r{(SingleKey TUI key)}
+@item w
+where
+
+@end table
+
+Other keys temporarily switch to the @value{GDBN} command prompt.
+The key that was pressed is inserted in the editing buffer so that
+it is possible to type most @value{GDBN} commands without interaction
+with the TUI @emph{SingleKey} mode. Once the command is entered the TUI
+@emph{SingleKey} mode is restored. The only way to permanently leave
+this mode is by hitting @key{q} or @samp{@key{C-x} @key{s}}.
+
+
@node TUI Commands
@section TUI specific commands
@cindex TUI commands
@@ -13270,6 +13395,10 @@ is in the standard mode, using these commands will automatically switch
in the TUI mode.
@table @code
+@item info win
+@kindex info win
+List and give the size of all displayed windows.
+
@item layout next
@kindex layout next
Display the next layout.
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 0d96e1f..4ef683c 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -803,7 +803,8 @@ static void dwarf2_attach_fields_to_type (struct field_info *,
struct type *, struct objfile *);
static void dwarf2_add_member_fn (struct field_info *,
- struct die_info *, struct objfile *objfile,
+ struct die_info *, struct type *,
+ struct objfile *objfile,
const struct comp_unit_head *);
static void dwarf2_attach_fn_fields_to_type (struct field_info *,
@@ -2259,7 +2260,7 @@ dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
static void
dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
- struct objfile *objfile,
+ struct type *type, struct objfile *objfile,
const struct comp_unit_head *cu_header)
{
struct attribute *attr;
@@ -2327,7 +2328,9 @@ dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
struct type *return_type = TYPE_TARGET_TYPE (die->type);
int nparams = TYPE_NFIELDS (die->type);
- smash_to_method_type (fnp->type, die->type,
+ /* TYPE is the domain of this method, and DIE->TYPE is the type
+ of the method itself (TYPE_CODE_METHOD). */
+ smash_to_method_type (fnp->type, type,
TYPE_TARGET_TYPE (die->type),
TYPE_FIELDS (die->type),
TYPE_NFIELDS (die->type),
@@ -2516,7 +2519,7 @@ read_structure_scope (struct die_info *die, struct objfile *objfile,
{
/* C++ member function. */
process_die (child_die, objfile, cu_header);
- dwarf2_add_member_fn (&fi, child_die, objfile, cu_header);
+ dwarf2_add_member_fn (&fi, child_die, type, objfile, cu_header);
}
else if (child_die->tag == DW_TAG_inheritance)
{
diff --git a/gdb/f-exp.y b/gdb/f-exp.y
index a26f019..b900426 100644
--- a/gdb/f-exp.y
+++ b/gdb/f-exp.y
@@ -91,6 +91,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define yylloc f_lloc
#define yyreds f_reds /* With YYDEBUG defined */
#define yytoks f_toks /* With YYDEBUG defined */
+#define yyname f_name /* With YYDEBUG defined */
+#define yyrule f_rule /* With YYDEBUG defined */
#define yylhs f_yylhs
#define yylen f_yylen
#define yydefred f_yydefred
diff --git a/gdb/gdb-events.c b/gdb/gdb-events.c
index 3acccf1..e32d0e4 100644
--- a/gdb/gdb-events.c
+++ b/gdb/gdb-events.c
@@ -129,6 +129,16 @@ target_changed_event (void)
current_event_hooks->target_changed ();
}
+void
+selected_frame_level_changed_event (int level)
+{
+ if (gdb_events_debug)
+ fprintf_unfiltered (gdb_stdlog, "selected_frame_level_changed_event\n");
+ if (!current_event_hooks->selected_frame_level_changed)
+ return;
+ current_event_hooks->selected_frame_level_changed (level);
+}
+
#endif
#if WITH_GDB_EVENTS
@@ -162,6 +172,7 @@ enum gdb_event
tracepoint_modify,
architecture_changed,
target_changed,
+ selected_frame_level_changed,
nr_gdb_events
};
@@ -195,6 +206,11 @@ struct tracepoint_modify
int number;
};
+struct selected_frame_level_changed
+ {
+ int level;
+ };
+
struct event
{
enum gdb_event type;
@@ -207,6 +223,7 @@ struct event
struct tracepoint_create tracepoint_create;
struct tracepoint_delete tracepoint_delete;
struct tracepoint_modify tracepoint_modify;
+ struct selected_frame_level_changed selected_frame_level_changed;
}
data;
};
@@ -293,6 +310,15 @@ queue_target_changed (void)
append (event);
}
+static void
+queue_selected_frame_level_changed (int level)
+{
+ struct event *event = XMALLOC (struct event);
+ event->type = selected_frame_level_changed;
+ event->data.selected_frame_level_changed.level = level;
+ append (event);
+}
+
void
gdb_events_deliver (struct gdb_events *vector)
{
@@ -344,6 +370,10 @@ gdb_events_deliver (struct gdb_events *vector)
case target_changed:
vector->target_changed ();
break;
+ case selected_frame_level_changed:
+ vector->selected_frame_level_changed
+ (event->data.selected_frame_level_changed.level);
+ break;
}
delivering_events = event->next;
xfree (event);
@@ -364,6 +394,7 @@ _initialize_gdb_events (void)
queue_event_hooks.tracepoint_modify = queue_tracepoint_modify;
queue_event_hooks.architecture_changed = queue_architecture_changed;
queue_event_hooks.target_changed = queue_target_changed;
+ queue_event_hooks.selected_frame_level_changed = queue_selected_frame_level_changed;
#endif
c = add_set_cmd ("eventdebug", class_maintenance, var_zinteger,
diff --git a/gdb/gdb-events.h b/gdb/gdb-events.h
index daba6a4..c3332d7 100644
--- a/gdb/gdb-events.h
+++ b/gdb/gdb-events.h
@@ -60,6 +60,7 @@ typedef void (gdb_events_tracepoint_delete_ftype) (int number);
typedef void (gdb_events_tracepoint_modify_ftype) (int number);
typedef void (gdb_events_architecture_changed_ftype) (void);
typedef void (gdb_events_target_changed_ftype) (void);
+typedef void (gdb_events_selected_frame_level_changed_ftype) (int level);
/* gdb-events: object. */
@@ -74,6 +75,7 @@ struct gdb_events
gdb_events_tracepoint_modify_ftype *tracepoint_modify;
gdb_events_architecture_changed_ftype *architecture_changed;
gdb_events_target_changed_ftype *target_changed;
+ gdb_events_selected_frame_level_changed_ftype *selected_frame_level_changed;
};
@@ -88,6 +90,7 @@ extern void tracepoint_delete_event (int number);
extern void tracepoint_modify_event (int number);
extern void architecture_changed_event (void);
extern void target_changed_event (void);
+extern void selected_frame_level_changed_event (int level);
/* When GDB_EVENTS are not being used, completly disable them. */
@@ -101,6 +104,7 @@ extern void target_changed_event (void);
#define tracepoint_modify_event(number) 0
#define architecture_changed_event() 0
#define target_changed_event() 0
+#define selected_frame_level_changed_event(level) 0
#endif
/* Install custom gdb-events hooks. */
diff --git a/gdb/gdb-events.sh b/gdb/gdb-events.sh
index e92a714..ed3340b 100755
--- a/gdb/gdb-events.sh
+++ b/gdb/gdb-events.sh
@@ -66,6 +66,7 @@ f:void:tracepoint_delete:int number:number
f:void:tracepoint_modify:int number:number
f:void:architecture_changed:void
f:void:target_changed:void
+f:void:selected_frame_level_changed:int level:level
#*:void:annotate_starting_hook:void
#*:void:annotate_stopped_hook:void
#*:void:annotate_signalled_hook:void
@@ -88,7 +89,6 @@ f:void:target_changed:void
#*:void:readline_begin_hook:char *format, ...:format
#*:char *:readline_hook:char *prompt:prompt
#*:void:readline_end_hook:void
-#*:void:context_hook:int num:num
#*:int:target_wait_hook:int pid, struct target_waitstatus *status:pid, status
#*:void:call_command_hook:struct cmd_list_element *c, char *cmd, int from_tty:c, cmd, from_tty
#*:NORETURN void:error_hook:void:: ATTR_NORETURN
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index c5365cf..e7ab609 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,18 @@
+2002-08-29 Daniel Jacobowitz <drow@mvista.com>
+
+ * linux-low.c (linux_create_inferior): Call setpgid. Return
+ the new PID.
+ (unstopped_p, linux_signal_pid): Remove.
+ (linux_target_ops): Remove linux_signal_pid.
+ * remote-utils.c (putpkt, input_interrupt): Use signal_pid
+ global instead of target method.
+ * target.h (struct target_ops): Remove signal_pid. Update comment
+ for create_inferior.
+ * server.c (signal_pid): New variable.
+ (create_inferior): Set signal_pid. Block SIGTTOU and SIGTTIN in
+ gdbserver. Set the child to be the foreground process group.
+ (attach_inferior): Set signal_pid.
+
2002-08-23 Daniel Jacobowitz <drow@mvista.com>
* ChangeLog: New file, with entries from gdb/ChangeLog after GDB 5.2.
diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c
index 7048daf..7644f9e 100644
--- a/gdb/gdbserver/linux-low.c
+++ b/gdb/gdbserver/linux-low.c
@@ -149,6 +149,8 @@ linux_create_inferior (char *program, char **allargs)
signal (SIGRTMIN + 1, SIG_DFL);
+ setpgid (0, 0);
+
execv (program, allargs);
fprintf (stderr, "Cannot exec %s: %s.\n", program,
@@ -160,7 +162,7 @@ linux_create_inferior (char *program, char **allargs)
new_process = add_process (pid);
add_thread (pid, new_process);
- return 0;
+ return pid;
}
/* Attach to an inferior process. */
@@ -1228,34 +1230,6 @@ linux_look_up_symbols (void)
#endif
}
-/* Return 1 if this process is not stopped. */
-static int
-unstopped_p (struct inferior_list_entry *entry, void *dummy)
-{
- struct process_info *process = (struct process_info *) entry;
-
- if (process->stopped)
- return 0;
-
- return 1;
-}
-
-static int
-linux_signal_pid ()
-{
- struct inferior_list_entry *process;
-
- process = find_inferior (&all_processes, unstopped_p, NULL);
-
- if (process == NULL)
- {
- warning ("no unstopped process");
- return inferior_pid;
- }
-
- return pid_of ((struct process_info *) process);
-}
-
static struct target_ops linux_target_ops = {
linux_create_inferior,
@@ -1269,7 +1243,6 @@ static struct target_ops linux_target_ops = {
linux_read_memory,
linux_write_memory,
linux_look_up_symbols,
- linux_signal_pid,
};
static void
diff --git a/gdb/gdbserver/remote-utils.c b/gdb/gdbserver/remote-utils.c
index c610c4c..d569937 100644
--- a/gdb/gdbserver/remote-utils.c
+++ b/gdb/gdbserver/remote-utils.c
@@ -46,6 +46,8 @@ static int remote_desc;
extern int using_threads;
extern int debug_threads;
+extern int signal_pid;
+
/* Open a connection to a remote debugger.
NAME is the filename used for communication. */
@@ -324,7 +326,7 @@ putpkt (char *buf)
/* Check for an input interrupt while we're here. */
if (buf3[0] == '\003')
- kill ((*the_target->signal_pid) (), SIGINT);
+ kill (signal_pid, SIGINT);
}
while (buf3[0] != '+');
@@ -361,7 +363,7 @@ input_interrupt (int unused)
return;
}
- kill ((*the_target->signal_pid) (), SIGINT);
+ kill (signal_pid, SIGINT);
}
}
diff --git a/gdb/gdbserver/server.c b/gdb/gdbserver/server.c
index b674ed0..d0963ba 100644
--- a/gdb/gdbserver/server.c
+++ b/gdb/gdbserver/server.c
@@ -21,6 +21,10 @@
#include "server.h"
+#include <unistd.h>
+#include <signal.h>
+#include <sys/wait.h>
+
int cont_thread;
int general_thread;
int step_thread;
@@ -31,14 +35,27 @@ int server_waiting;
jmp_buf toplevel;
+/* The PID of the originally created or attached inferior. Used to
+ send signals to the process when GDB sends us an asynchronous interrupt
+ (user hitting Control-C in the client), and to wait for the child to exit
+ when no longer debugging it. */
+
+int signal_pid;
+
static unsigned char
start_inferior (char *argv[], char *statusptr)
{
- /* FIXME Check error? Or turn to void. */
- create_inferior (argv[0], argv);
+ signal (SIGTTOU, SIG_DFL);
+ signal (SIGTTIN, SIG_DFL);
+
+ signal_pid = create_inferior (argv[0], argv);
fprintf (stderr, "Process %s created; pid = %d\n", argv[0],
- all_threads.head->id);
+ signal_pid);
+
+ signal (SIGTTOU, SIG_IGN);
+ signal (SIGTTIN, SIG_IGN);
+ tcsetpgrp (fileno (stderr), signal_pid);
/* Wait till we are at 1st instruction in program, return signal number. */
return mywait (statusptr, 0);
@@ -49,9 +66,15 @@ attach_inferior (int pid, char *statusptr, unsigned char *sigptr)
{
/* myattach should return -1 if attaching is unsupported,
0 if it succeeded, and call error() otherwise. */
+
if (myattach (pid) != 0)
return -1;
+ /* FIXME - It may be that we should get the SIGNAL_PID from the
+ attach function, so that it can be the main thread instead of
+ whichever we were told to attach to. */
+ signal_pid = pid;
+
*sigptr = mywait (statusptr, 0);
return 0;
diff --git a/gdb/gdbserver/target.h b/gdb/gdbserver/target.h
index c6aeee6..e554c0a 100644
--- a/gdb/gdbserver/target.h
+++ b/gdb/gdbserver/target.h
@@ -32,7 +32,7 @@ struct target_ops
ARGS is a standard NULL-terminated array of arguments,
to be passed to the inferior as ``argv''.
- Returns 0 on success, -1 on failure. Registers the new
+ Returns the new PID on success, -1 on failure. Registers the new
process with the process list. */
int (*create_inferior) (char *program, char **args);
@@ -104,11 +104,6 @@ struct target_ops
symbols. */
void (*look_up_symbols) (void);
-
- /* Return the PID we should send a signal to. Used for asynchronous
- interrupts (user hitting Control-C). */
-
- int (*signal_pid) (void);
};
extern struct target_ops *the_target;
diff --git a/gdb/gnu-nat.c b/gdb/gnu-nat.c
index a4b8020..59aad5d 100644
--- a/gdb/gnu-nat.c
+++ b/gdb/gnu-nat.c
@@ -2612,6 +2612,7 @@ init_gnu_ops (void)
gnu_ops.to_terminal_init = gnu_terminal_init_inferior;
gnu_ops.to_terminal_inferior = terminal_inferior;
gnu_ops.to_terminal_ours_for_output = terminal_ours_for_output;
+ gnu_ops.to_terminal_save_ours = terminal_save_ours;
gnu_ops.to_terminal_ours = terminal_ours;
gnu_ops.to_terminal_info = child_terminal_info;
gnu_ops.to_kill = gnu_kill_inferior; /* to_kill */
diff --git a/gdb/hpux-thread.c b/gdb/hpux-thread.c
index eec18ff..981bb9d 100644
--- a/gdb/hpux-thread.c
+++ b/gdb/hpux-thread.c
@@ -554,6 +554,7 @@ init_hpux_thread_ops (void)
hpux_thread_ops.to_terminal_init = terminal_init_inferior;
hpux_thread_ops.to_terminal_inferior = terminal_inferior;
hpux_thread_ops.to_terminal_ours_for_output = terminal_ours_for_output;
+ hpux_thread_ops.to_terminal_save_ours = terminal_save_ours;
hpux_thread_ops.to_terminal_ours = terminal_ours;
hpux_thread_ops.to_terminal_info = child_terminal_info;
hpux_thread_ops.to_kill = hpux_thread_kill_inferior;
diff --git a/gdb/i386-linux-nat.c b/gdb/i386-linux-nat.c
index fe61021..8458879 100644
--- a/gdb/i386-linux-nat.c
+++ b/gdb/i386-linux-nat.c
@@ -25,6 +25,7 @@
#include "regcache.h"
#include "gdb_assert.h"
+#include "gdb_string.h"
#include <sys/ptrace.h>
#include <sys/user.h>
#include <sys/procfs.h>
@@ -540,15 +541,17 @@ store_fpxregs (int tid, int regno)
static void
dummy_sse_values (void)
{
+ struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
/* C doesn't have a syntax for NaN's, so write it out as an array of
longs. */
static long dummy[4] = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff };
static long mxcsr = 0x1f80;
int reg;
- for (reg = 0; reg < 8; reg++)
+ for (reg = 0; reg < tdep->num_xmm_regs; reg++)
supply_register (XMM0_REGNUM + reg, (char *) dummy);
- supply_register (MXCSR_REGNUM, (char *) &mxcsr);
+ if (tdep->num_xmm_regs > 0)
+ supply_register (MXCSR_REGNUM, (char *) &mxcsr);
}
#else
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
index 8684fce..4a2eab6 100644
--- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c
@@ -973,20 +973,21 @@ i386_extract_return_value (struct type *type, struct regcache *regcache,
in VALBUF of type TYPE, given in virtual format. */
static void
-i386_store_return_value (struct type *type, char *valbuf)
+i386_store_return_value (struct type *type, struct regcache *regcache,
+ const void *valbuf)
{
int len = TYPE_LENGTH (type);
if (TYPE_CODE (type) == TYPE_CODE_STRUCT
&& TYPE_NFIELDS (type) == 1)
{
- i386_store_return_value (TYPE_FIELD_TYPE (type, 0), valbuf);
+ i386_store_return_value (TYPE_FIELD_TYPE (type, 0), regcache, valbuf);
return;
}
if (TYPE_CODE (type) == TYPE_CODE_FLT)
{
- unsigned int fstat;
+ ULONGEST fstat;
char buf[FPU_REG_RAW_SIZE];
if (FP0_REGNUM == 0)
@@ -1004,20 +1005,20 @@ i386_store_return_value (struct type *type, char *valbuf)
not exactly how it would happen on the target itself, but
it is the best we can do. */
convert_typed_floating (valbuf, type, buf, builtin_type_i387_ext);
- write_register_gen (FP0_REGNUM, buf);
+ regcache_raw_write (regcache, FP0_REGNUM, buf);
/* Set the top of the floating-point register stack to 7. The
actual value doesn't really matter, but 7 is what a normal
function return would end up with if the program started out
with a freshly initialized FPU. */
- fstat = read_register (FSTAT_REGNUM);
+ regcache_raw_read_unsigned (regcache, FSTAT_REGNUM, &fstat);
fstat |= (7 << 11);
- write_register (FSTAT_REGNUM, fstat);
+ regcache_raw_write_unsigned (regcache, FSTAT_REGNUM, fstat);
/* Mark %st(1) through %st(7) as empty. Since we set the top of
the floating-point register stack to 7, the appropriate value
for the tag word is 0x3fff. */
- write_register (FTAG_REGNUM, 0x3fff);
+ regcache_raw_write_unsigned (regcache, FTAG_REGNUM, 0x3fff);
}
else
{
@@ -1025,13 +1026,12 @@ i386_store_return_value (struct type *type, char *valbuf)
int high_size = REGISTER_RAW_SIZE (HIGH_RETURN_REGNUM);
if (len <= low_size)
- write_register_bytes (REGISTER_BYTE (LOW_RETURN_REGNUM), valbuf, len);
+ regcache_raw_write_part (regcache, LOW_RETURN_REGNUM, 0, len, valbuf);
else if (len <= (low_size + high_size))
{
- write_register_bytes (REGISTER_BYTE (LOW_RETURN_REGNUM),
- valbuf, low_size);
- write_register_bytes (REGISTER_BYTE (HIGH_RETURN_REGNUM),
- valbuf + low_size, len - low_size);
+ regcache_raw_write (regcache, LOW_RETURN_REGNUM, valbuf);
+ regcache_raw_write_part (regcache, HIGH_RETURN_REGNUM, 0,
+ len - low_size, (char *) valbuf + low_size);
}
else
internal_error (__FILE__, __LINE__,
@@ -1533,7 +1533,7 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_push_return_address (gdbarch, i386_push_return_address);
set_gdbarch_pop_frame (gdbarch, i386_pop_frame);
set_gdbarch_store_struct_return (gdbarch, i386_store_struct_return);
- set_gdbarch_deprecated_store_return_value (gdbarch, i386_store_return_value);
+ set_gdbarch_store_return_value (gdbarch, i386_store_return_value);
set_gdbarch_extract_struct_value_address (gdbarch,
i386_extract_struct_value_address);
set_gdbarch_use_struct_convention (gdbarch, i386_use_struct_convention);
diff --git a/gdb/i386-tdep.h b/gdb/i386-tdep.h
index 30128d9..646001b 100644
--- a/gdb/i386-tdep.h
+++ b/gdb/i386-tdep.h
@@ -175,5 +175,6 @@ extern void i386_svr4_init_abi (struct gdbarch_info, struct gdbarch *);
/* Functions exported from i386bsd-tdep.c. */
extern CORE_ADDR i386bsd_sigcontext_addr (struct frame_info *frame);
+extern void i386bsd_init_abi (struct gdbarch_info, struct gdbarch *);
#endif /* i386-tdep.h */
diff --git a/gdb/i386bsd-tdep.c b/gdb/i386bsd-tdep.c
index 2edf3ea..368fa56 100644
--- a/gdb/i386bsd-tdep.c
+++ b/gdb/i386bsd-tdep.c
@@ -93,7 +93,7 @@ i386bsd_aout_in_solib_call_trampoline (CORE_ADDR pc, char *name)
int i386bsd_sc_pc_offset = 20;
int i386bsd_sc_sp_offset = 8;
-static void
+void
i386bsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
{
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
@@ -113,61 +113,6 @@ i386bsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
tdep->sc_sp_offset = i386bsd_sc_sp_offset;
}
-/* NetBSD 1.0 or later. */
-
-CORE_ADDR i386nbsd_sigtramp_start = 0xbfbfdf20;
-CORE_ADDR i386nbsd_sigtramp_end = 0xbfbfdff0;
-
-/* From <machine/signal.h>. */
-int i386nbsd_sc_pc_offset = 44;
-int i386nbsd_sc_sp_offset = 56;
-
-static void
-i386nbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
-{
- struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-
- /* Obviously NetBSD is BSD-based. */
- i386bsd_init_abi (info, gdbarch);
-
- /* NetBSD uses -freg-struct-return by default. */
- tdep->struct_return = reg_struct_return;
-
- /* NetBSD uses a different memory layout. */
- tdep->sigtramp_start = i386nbsd_sigtramp_start;
- tdep->sigtramp_end = i386nbsd_sigtramp_end;
-
- /* NetBSD has a `struct sigcontext' that's different from the
- origional 4.3 BSD. */
- tdep->sc_pc_offset = i386nbsd_sc_pc_offset;
- tdep->sc_sp_offset = i386nbsd_sc_sp_offset;
-}
-
-/* NetBSD ELF. */
-static void
-i386nbsdelf_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
-{
- struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-
- /* It's still NetBSD. */
- i386nbsd_init_abi (info, gdbarch);
-
- /* But ELF-based. */
- i386_elf_init_abi (info, gdbarch);
-
- /* NetBSD ELF uses SVR4-style shared libraries. */
- set_gdbarch_in_solib_call_trampoline (gdbarch,
- generic_in_solib_call_trampoline);
-
- /* NetBSD ELF uses -fpcc-struct-return by default. */
- tdep->struct_return = pcc_struct_return;
-
- /* We support the SSE registers on NetBSD ELF. */
- tdep->num_xmm_regs = I386_NUM_XREGS - 1;
- set_gdbarch_num_regs (gdbarch, I386_NUM_GREGS + I386_NUM_FREGS
- + I386_NUM_XREGS);
-}
-
/* FreeBSD 3.0-RELEASE or later. */
CORE_ADDR i386fbsd_sigtramp_start = 0xbfbfdf20;
@@ -246,10 +191,6 @@ _initialize_i386bsd_tdep (void)
gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_aout_flavour,
i386bsd_aout_osabi_sniffer);
- gdbarch_register_osabi (bfd_arch_i386, GDB_OSABI_NETBSD_AOUT,
- i386nbsd_init_abi);
- gdbarch_register_osabi (bfd_arch_i386, GDB_OSABI_NETBSD_ELF,
- i386nbsdelf_init_abi);
gdbarch_register_osabi (bfd_arch_i386, GDB_OSABI_FREEBSD_AOUT,
i386fbsdaout_init_abi);
gdbarch_register_osabi (bfd_arch_i386, GDB_OSABI_FREEBSD_ELF,
diff --git a/gdb/i386nbsd-tdep.c b/gdb/i386nbsd-tdep.c
index 634101a..8d32a03 100644
--- a/gdb/i386nbsd-tdep.c
+++ b/gdb/i386nbsd-tdep.c
@@ -23,8 +23,13 @@
#include "gdbtypes.h"
#include "gdbcore.h"
#include "regcache.h"
+#include "arch-utils.h"
+#include "i386-tdep.h"
#include "i387-tdep.h"
+#include "nbsd-tdep.h"
+
+#include "solib-svr4.h"
/* Map a GDB register number to an offset in the reg structure. */
static int regmap[] =
@@ -137,9 +142,161 @@ static struct core_fns i386nbsd_elfcore_fns =
NULL /* next */
};
+/* Under NetBSD/i386, signal handler invocations can be identified by the
+ designated code sequence that is used to return from a signal handler.
+ In particular, the return address of a signal handler points to the
+ following code sequence:
+
+ leal 0x10(%esp), %eax
+ pushl %eax
+ pushl %eax
+ movl $0x127, %eax # __sigreturn14
+ int $0x80
+
+ Each instruction has a unique encoding, so we simply attempt to match
+ the instruction the PC is pointing to with any of the above instructions.
+ If there is a hit, we know the offset to the start of the designated
+ sequence and can then check whether we really are executing in the
+ signal trampoline. If not, -1 is returned, otherwise the offset from the
+ start of the return sequence is returned. */
+#define RETCODE_INSN1 0x8d
+#define RETCODE_INSN2 0x50
+#define RETCODE_INSN3 0x50
+#define RETCODE_INSN4 0xb8
+#define RETCODE_INSN5 0xcd
+
+#define RETCODE_INSN2_OFF 4
+#define RETCODE_INSN3_OFF 5
+#define RETCODE_INSN4_OFF 6
+#define RETCODE_INSN5_OFF 11
+
+static const unsigned char sigtramp_retcode[] =
+{
+ RETCODE_INSN1, 0x44, 0x24, 0x10,
+ RETCODE_INSN2,
+ RETCODE_INSN3,
+ RETCODE_INSN4, 0x27, 0x01, 0x00, 0x00,
+ RETCODE_INSN5, 0x80,
+};
+
+static LONGEST
+i386nbsd_sigtramp_offset (CORE_ADDR pc)
+{
+ unsigned char ret[sizeof(sigtramp_retcode)], insn;
+ LONGEST off;
+ int i;
+
+ if (read_memory_nobpt (pc, &insn, 1) != 0)
+ return -1;
+
+ switch (insn)
+ {
+ case RETCODE_INSN1:
+ off = 0;
+ break;
+
+ case RETCODE_INSN2:
+ /* INSN2 and INSN3 are the same. Read at the location of PC+1
+ to determine if we're actually looking at INSN2 or INSN3. */
+ if (read_memory_nobpt (pc + 1, &insn, 1) != 0)
+ return -1;
+
+ if (insn == RETCODE_INSN3)
+ off = RETCODE_INSN2_OFF;
+ else
+ off = RETCODE_INSN3_OFF;
+ break;
+
+ case RETCODE_INSN4:
+ off = RETCODE_INSN4_OFF;
+ break;
+
+ case RETCODE_INSN5:
+ off = RETCODE_INSN5_OFF;
+ break;
+
+ default:
+ return -1;
+ }
+
+ pc -= off;
+
+ if (read_memory_nobpt (pc, (char *) ret, sizeof (ret)) != 0)
+ return -1;
+
+ if (memcmp (ret, sigtramp_retcode, sizeof (ret)) == 0)
+ return off;
+
+ return -1;
+}
+
+static int
+i386nbsd_pc_in_sigtramp (CORE_ADDR pc, char *name)
+{
+
+ return (nbsd_pc_in_sigtramp (pc, name)
+ || i386nbsd_sigtramp_offset (pc) >= 0);
+}
+
+/* From <machine/signal.h>. */
+int i386nbsd_sc_pc_offset = 44;
+int i386nbsd_sc_sp_offset = 56;
+
+static void
+i386nbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+
+ /* Obviously NetBSD is BSD-based. */
+ i386bsd_init_abi (info, gdbarch);
+
+ /* NetBSD has different signal trampoline conventions. */
+ set_gdbarch_pc_in_sigtramp (gdbarch, i386nbsd_pc_in_sigtramp);
+
+ /* NetBSD uses -freg-struct-return by default. */
+ tdep->struct_return = reg_struct_return;
+
+ /* NetBSD has a `struct sigcontext' that's different from the
+ origional 4.3 BSD. */
+ tdep->sc_pc_offset = i386nbsd_sc_pc_offset;
+ tdep->sc_sp_offset = i386nbsd_sc_sp_offset;
+}
+
+/* NetBSD ELF. */
+static void
+i386nbsdelf_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+
+ /* It's still NetBSD. */
+ i386nbsd_init_abi (info, gdbarch);
+
+ /* But ELF-based. */
+ i386_elf_init_abi (info, gdbarch);
+
+ /* NetBSD ELF uses SVR4-style shared libraries. */
+ set_gdbarch_in_solib_call_trampoline (gdbarch,
+ generic_in_solib_call_trampoline);
+ set_solib_svr4_fetch_link_map_offsets (gdbarch,
+ nbsd_ilp32_solib_svr4_fetch_link_map_offsets);
+
+ /* NetBSD ELF uses -fpcc-struct-return by default. */
+ tdep->struct_return = pcc_struct_return;
+
+ /* We support the SSE registers on NetBSD ELF. */
+ tdep->num_xmm_regs = I386_NUM_XREGS - 1;
+ set_gdbarch_num_regs (gdbarch, I386_NUM_GREGS + I386_NUM_FREGS
+ + I386_NUM_XREGS);
+}
+
void
_initialize_i386nbsd_tdep (void)
{
add_core_fns (&i386nbsd_core_fns);
add_core_fns (&i386nbsd_elfcore_fns);
+
+ gdbarch_register_osabi (bfd_arch_i386, GDB_OSABI_NETBSD_AOUT,
+ i386nbsd_init_abi);
+ gdbarch_register_osabi (bfd_arch_i386, GDB_OSABI_NETBSD_ELF,
+ i386nbsdelf_init_abi);
}
diff --git a/gdb/i387-tdep.c b/gdb/i387-tdep.c
index daf1c6f..3d4b397 100644
--- a/gdb/i387-tdep.c
+++ b/gdb/i387-tdep.c
@@ -28,6 +28,7 @@
#include "floatformat.h"
#include "regcache.h"
#include "gdb_assert.h"
+#include "gdb_string.h"
#include "doublest.h"
#include "i386-tdep.h"
diff --git a/gdb/inferior.h b/gdb/inferior.h
index e875e9c..8035ccd 100644
--- a/gdb/inferior.h
+++ b/gdb/inferior.h
@@ -152,6 +152,8 @@ extern void kill_inferior (void);
extern void generic_mourn_inferior (void);
+extern void terminal_save_ours (void);
+
extern void terminal_ours (void);
extern int run_stack_dummy (CORE_ADDR , struct regcache *);
diff --git a/gdb/inflow.c b/gdb/inflow.c
index 526acdf..b37fc54 100644
--- a/gdb/inflow.c
+++ b/gdb/inflow.c
@@ -200,6 +200,23 @@ terminal_init_inferior_with_pgrp (int pgrp)
}
}
+/* Save the terminal settings again. This is necessary for the TUI
+ when it switches to TUI or non-TUI mode; curses changes the terminal
+ and gdb must be able to restore it correctly. */
+
+void
+terminal_save_ours ()
+{
+ if (gdb_has_a_terminal ())
+ {
+ /* We could just as well copy our_ttystate (if we felt like adding
+ a new function serial_copy_tty_state). */
+ if (our_ttystate)
+ xfree (our_ttystate);
+ our_ttystate = serial_get_tty_state (stdin_serial);
+ }
+}
+
void
terminal_init_inferior (void)
{
diff --git a/gdb/inftarg.c b/gdb/inftarg.c
index 9035310..e496811 100644
--- a/gdb/inftarg.c
+++ b/gdb/inftarg.c
@@ -774,6 +774,7 @@ init_child_ops (void)
child_ops.to_terminal_init = terminal_init_inferior;
child_ops.to_terminal_inferior = terminal_inferior;
child_ops.to_terminal_ours_for_output = terminal_ours_for_output;
+ child_ops.to_terminal_save_ours = terminal_save_ours;
child_ops.to_terminal_ours = terminal_ours;
child_ops.to_terminal_info = child_terminal_info;
child_ops.to_kill = kill_inferior;
diff --git a/gdb/jv-exp.y b/gdb/jv-exp.y
index c2e5d16..70c228b 100644
--- a/gdb/jv-exp.y
+++ b/gdb/jv-exp.y
@@ -85,6 +85,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define yylloc java_lloc
#define yyreds java_reds /* With YYDEBUG defined */
#define yytoks java_toks /* With YYDEBUG defined */
+#define yyname java_name /* With YYDEBUG defined */
+#define yyrule java_rule /* With YYDEBUG defined */
#define yylhs java_yylhs
#define yylen java_yylen
#define yydefred java_yydefred
diff --git a/gdb/jv-valprint.c b/gdb/jv-valprint.c
index f0fd0f5..1ddfcb5 100644
--- a/gdb/jv-valprint.c
+++ b/gdb/jv-valprint.c
@@ -30,6 +30,7 @@
#include "jv-lang.h"
#include "c-lang.h"
#include "annotate.h"
+#include "gdb_string.h"
/* Local functions */
diff --git a/gdb/lin-lwp.c b/gdb/lin-lwp.c
index cb5b19f..cd577fb 100644
--- a/gdb/lin-lwp.c
+++ b/gdb/lin-lwp.c
@@ -21,6 +21,7 @@
#include "defs.h"
#include "gdb_assert.h"
+#include "gdb_string.h"
#include <errno.h>
#include <signal.h>
#include <sys/ptrace.h>
diff --git a/gdb/m2-exp.y b/gdb/m2-exp.y
index 707c9e2..e291d62 100644
--- a/gdb/m2-exp.y
+++ b/gdb/m2-exp.y
@@ -87,6 +87,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define yylloc m2_lloc
#define yyreds m2_reds /* With YYDEBUG defined */
#define yytoks m2_toks /* With YYDEBUG defined */
+#define yyname m2_name /* With YYDEBUG defined */
+#define yyrule m2_rule /* With YYDEBUG defined */
#define yylhs m2_yylhs
#define yylen m2_yylen
#define yydefred m2_yydefred
diff --git a/gdb/m3-nat.c b/gdb/m3-nat.c
index c29101b..28e62a8 100644
--- a/gdb/m3-nat.c
+++ b/gdb/m3-nat.c
@@ -4474,6 +4474,7 @@ init_m3_ops (void)
m3_ops.to_terminal_init = terminal_init_inferior;
m3_ops.to_terminal_inferior = terminal_inferior;
m3_ops.to_terminal_ours_for_output = terminal_ours_for_output;
+ m3_ops.to_terminal_save_ours = terminal_save_ours;
m3_ops.to_terminal_ours = terminal_ours;
m3_ops.to_terminal_info = child_terminal_info;
m3_ops.to_kill = m3_kill_inferior;
diff --git a/gdb/mipsnbsd-tdep.c b/gdb/mipsnbsd-tdep.c
index 029ae6f..3367e36 100644
--- a/gdb/mipsnbsd-tdep.c
+++ b/gdb/mipsnbsd-tdep.c
@@ -26,6 +26,7 @@
#include "value.h"
#include "osabi.h"
+#include "nbsd-tdep.h"
#include "mipsnbsd-tdep.h"
#include "solib-svr4.h"
@@ -219,7 +220,8 @@ mipsnbsd_sigtramp_offset (CORE_ADDR pc)
static int
mipsnbsd_pc_in_sigtramp (CORE_ADDR pc, char *func_name)
{
- return (mipsnbsd_sigtramp_offset (pc) >= 0);
+ return (nbsd_pc_in_sigtramp (pc, func_name)
+ || mipsnbsd_sigtramp_offset (pc) >= 0);
}
/* Figure out where the longjmp will land. We expect that we have
diff --git a/gdb/nbsd-tdep.c b/gdb/nbsd-tdep.c
index 71e229d..a2d8f7d 100644
--- a/gdb/nbsd-tdep.c
+++ b/gdb/nbsd-tdep.c
@@ -20,6 +20,7 @@
Boston, MA 02111-1307, USA. */
#include "defs.h"
+#include "gdb_string.h"
#include "solib-svr4.h"
/* Fetch (and possibly build) an appropriate link_map_offsets
@@ -96,3 +97,13 @@ nbsd_lp64_solib_svr4_fetch_link_map_offsets (void)
return lmp;
}
+
+int
+nbsd_pc_in_sigtramp (CORE_ADDR pc, char *func_name)
+{
+ /* Check for libc-provided signal trampoline. All such trampolines
+ have function names which begin with "__sigtramp". */
+
+ return (func_name != NULL
+ && strncmp (func_name, "__sigtramp", 10) == 0);
+}
diff --git a/gdb/nbsd-tdep.h b/gdb/nbsd-tdep.h
index ca40965..9d26ae9 100644
--- a/gdb/nbsd-tdep.h
+++ b/gdb/nbsd-tdep.h
@@ -25,4 +25,6 @@
struct link_map_offsets *nbsd_ilp32_solib_svr4_fetch_link_map_offsets (void);
struct link_map_offsets *nbsd_lp64_solib_svr4_fetch_link_map_offsets (void);
+int nbsd_pc_in_sigtramp (CORE_ADDR, char *);
+
#endif /* NBSD_TDEP_H */
diff --git a/gdb/osabi.c b/gdb/osabi.c
index 83eb767..682dbba 100644
--- a/gdb/osabi.c
+++ b/gdb/osabi.c
@@ -19,6 +19,7 @@
Boston, MA 02111-1307, USA. */
#include "defs.h"
+#include "gdb_string.h"
#include "osabi.h"
#include "elf-bfd.h"
diff --git a/gdb/p-exp.y b/gdb/p-exp.y
index fbdd3f6..f0939e7 100644
--- a/gdb/p-exp.y
+++ b/gdb/p-exp.y
@@ -93,6 +93,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define yylloc pascal_lloc
#define yyreds pascal_reds /* With YYDEBUG defined */
#define yytoks pascal_toks /* With YYDEBUG defined */
+#define yyname pascal_name /* With YYDEBUG defined */
+#define yyrule pascal_rule /* With YYDEBUG defined */
#define yylhs pascal_yylhs
#define yylen pascal_yylen
#define yydefred pascal_yydefred
diff --git a/gdb/p-lang.c b/gdb/p-lang.c
index 8e13b6e..88c8cc0 100644
--- a/gdb/p-lang.c
+++ b/gdb/p-lang.c
@@ -20,6 +20,7 @@
/* This file is derived from c-lang.c */
#include "defs.h"
+#include "gdb_string.h"
#include "symtab.h"
#include "gdbtypes.h"
#include "expression.h"
diff --git a/gdb/ppcnbsd-tdep.c b/gdb/ppcnbsd-tdep.c
index 6fabab7..3d052a8 100644
--- a/gdb/ppcnbsd-tdep.c
+++ b/gdb/ppcnbsd-tdep.c
@@ -196,6 +196,13 @@ static struct core_fns ppcnbsd_elfcore_fns =
NULL /* next */
};
+static int
+ppcnbsd_pc_in_sigtramp (CORE_ADDR pc, char *func_name)
+{
+ /* FIXME: Need to add support for kernel-provided signal trampolines. */
+ return (nbsd_pc_in_sigtramp (pc, func_name));
+}
+
static void
ppcnbsd_init_abi (struct gdbarch_info info,
struct gdbarch *gdbarch)
@@ -203,6 +210,8 @@ ppcnbsd_init_abi (struct gdbarch_info info,
/* Stop at main. */
set_gdbarch_frame_chain_valid (gdbarch, generic_func_frame_chain_valid);
+ set_gdbarch_pc_in_sigtramp (gdbarch, ppcnbsd_pc_in_sigtramp);
+
set_solib_svr4_fetch_link_map_offsets (gdbarch,
nbsd_ilp32_solib_svr4_fetch_link_map_offsets);
}
diff --git a/gdb/proc-api.c b/gdb/proc-api.c
index a74882d..3e8b198 100644
--- a/gdb/proc-api.c
+++ b/gdb/proc-api.c
@@ -423,7 +423,7 @@ static struct trans rw_table[] = {
{ PCSEXIT, "PCSEXIT", "set traced syscall exit set" },
{ PCSFAULT, "PCSFAULT", "set traced fault set" },
{ PCSFPREG, "PCSFPREG", "set floating point registers" },
-#ifdef PCHOLD /* solaris */
+#ifdef PCSHOLD /* solaris */
{ PCSHOLD, "PCSHOLD", "set signal mask" },
#endif
{ PCSREG, "PCSREG", "set general registers" },
diff --git a/gdb/procfs.c b/gdb/procfs.c
index 79f5575..ff8a7d3 100644
--- a/gdb/procfs.c
+++ b/gdb/procfs.c
@@ -170,6 +170,7 @@ init_procfs_ops (void)
procfs_ops.to_terminal_inferior = terminal_inferior;
procfs_ops.to_terminal_ours_for_output = terminal_ours_for_output;
procfs_ops.to_terminal_ours = terminal_ours;
+ procfs_ops.to_terminal_save_ours = terminal_save_ours;
procfs_ops.to_terminal_info = child_terminal_info;
procfs_ops.to_find_new_threads = procfs_find_new_threads;
diff --git a/gdb/regcache.c b/gdb/regcache.c
index 6c86ba9..ab65c67 100644
--- a/gdb/regcache.c
+++ b/gdb/regcache.c
@@ -725,6 +725,29 @@ regcache_raw_read_unsigned (struct regcache *regcache, int regnum,
}
void
+regcache_raw_write_signed (struct regcache *regcache, int regnum, LONGEST val)
+{
+ void *buf;
+ gdb_assert (regcache != NULL);
+ gdb_assert (regnum >=0 && regnum < regcache->descr->nr_raw_registers);
+ buf = alloca (regcache->descr->sizeof_register[regnum]);
+ store_signed_integer (buf, regcache->descr->sizeof_register[regnum], val);
+ regcache_raw_write (regcache, regnum, buf);
+}
+
+void
+regcache_raw_write_unsigned (struct regcache *regcache, int regnum,
+ ULONGEST val)
+{
+ void *buf;
+ gdb_assert (regcache != NULL);
+ gdb_assert (regnum >=0 && regnum < regcache->descr->nr_raw_registers);
+ buf = alloca (regcache->descr->sizeof_register[regnum]);
+ store_unsigned_integer (buf, regcache->descr->sizeof_register[regnum], val);
+ regcache_raw_write (regcache, regnum, buf);
+}
+
+void
read_register_gen (int regnum, char *buf)
{
gdb_assert (current_regcache != NULL);
diff --git a/gdb/regcache.h b/gdb/regcache.h
index 1db42e3..4ddcda3 100644
--- a/gdb/regcache.h
+++ b/gdb/regcache.h
@@ -42,6 +42,10 @@ extern void regcache_raw_read_signed (struct regcache *regcache,
int regnum, LONGEST *val);
extern void regcache_raw_read_unsigned (struct regcache *regcache,
int regnum, ULONGEST *val);
+extern void regcache_raw_write_signed (struct regcache *regcache,
+ int regnum, LONGEST val);
+extern void regcache_raw_write_unsigned (struct regcache *regcache,
+ int regnum, ULONGEST val);
/* Partial transfer of a raw registers. These perform read, modify,
write style operations. */
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
index 398b0e0..f661861 100644
--- a/gdb/rs6000-tdep.c
+++ b/gdb/rs6000-tdep.c
@@ -123,6 +123,17 @@ static void frame_get_saved_regs (struct frame_info * fi,
struct rs6000_framedata * fdatap);
static CORE_ADDR frame_initial_stack_address (struct frame_info *);
+/* Is REGNO an AltiVec register? Return 1 if so, 0 otherwise. */
+int
+altivec_register_p (int regno)
+{
+ struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+ if (tdep->ppc_vr0_regnum < 0 || tdep->ppc_vrsave_regnum < 0)
+ return 0;
+ else
+ return (regno >= tdep->ppc_vr0_regnum && regno <= tdep->ppc_vrsave_regnum);
+}
+
/* Read a LEN-byte address from debugged memory address MEMADDR. */
static CORE_ADDR
diff --git a/gdb/shnbsd-tdep.c b/gdb/shnbsd-tdep.c
index 0298226..b67884d 100644
--- a/gdb/shnbsd-tdep.c
+++ b/gdb/shnbsd-tdep.c
@@ -165,10 +165,19 @@ static struct core_fns shnbsd_elfcore_fns =
NULL /* next */
};
+static int
+shnbsd_pc_in_sigtramp (CORE_ADDR pc, char *func_name)
+{
+ /* FIXME: Need to add support for kernel-provided signal trampolines. */
+ return (nbsd_pc_in_sigtramp (pc, func_name));
+}
+
static void
shnbsd_init_abi (struct gdbarch_info info,
struct gdbarch *gdbarch)
{
+ set_gdbarch_pc_in_sigtramp (gdbarch, shnbsd_pc_in_sigtramp);
+
set_solib_svr4_fetch_link_map_offsets (gdbarch,
nbsd_ilp32_solib_svr4_fetch_link_map_offsets);
}
diff --git a/gdb/signals/signals.c b/gdb/signals/signals.c
index 0057e60..82c63d8 100644
--- a/gdb/signals/signals.c
+++ b/gdb/signals/signals.c
@@ -25,6 +25,7 @@
#else
#include "defs.h"
#include "target.h"
+#include "gdb_string.h"
#endif
#include <signal.h>
diff --git a/gdb/sol-thread.c b/gdb/sol-thread.c
index 50caed3..35cb578 100644
--- a/gdb/sol-thread.c
+++ b/gdb/sol-thread.c
@@ -1556,6 +1556,7 @@ init_sol_thread_ops (void)
sol_thread_ops.to_terminal_inferior = terminal_inferior;
sol_thread_ops.to_terminal_ours_for_output = terminal_ours_for_output;
sol_thread_ops.to_terminal_ours = terminal_ours;
+ sol_thread_ops.to_terminal_save_ours = terminal_save_ours;
sol_thread_ops.to_terminal_info = child_terminal_info;
sol_thread_ops.to_kill = sol_thread_kill_inferior;
sol_thread_ops.to_load = 0;
diff --git a/gdb/sparcnbsd-tdep.c b/gdb/sparcnbsd-tdep.c
index ea70e51..1103eaa 100644
--- a/gdb/sparcnbsd-tdep.c
+++ b/gdb/sparcnbsd-tdep.c
@@ -500,6 +500,8 @@ sparcnbsd_init_abi_elf (struct gdbarch_info info,
{
sparcnbsd_init_abi_common (info, gdbarch);
+ set_gdbarch_pc_in_sigtramp (gdbarch, nbsd_pc_in_sigtramp);
+
set_solib_svr4_fetch_link_map_offsets (gdbarch,
gdbarch_ptr_bit (gdbarch) == 32 ?
nbsd_ilp32_solib_svr4_fetch_link_map_offsets :
diff --git a/gdb/stack.c b/gdb/stack.c
index fa58963..30ebc09 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -398,6 +398,11 @@ print_frame_info_base (struct frame_info *fi, int level, int source, int args)
print_frame (fi, level, source, args, sal);
source_print = (source == SRC_LINE || source == SRC_AND_LOC);
+ if (sal.symtab)
+ {
+ current_source_symtab = sal.symtab;
+ current_source_line = sal.line;
+ }
if (source_print && sal.symtab)
{
@@ -410,10 +415,7 @@ print_frame_info_base (struct frame_info *fi, int level, int source, int args)
if (!done)
{
if (print_frame_info_listing_hook)
- {
- print_frame_info_listing_hook (sal.symtab, sal.line, sal.line + 1, 0);
- current_source_symtab = sal.symtab;
- }
+ print_frame_info_listing_hook (sal.symtab, sal.line, sal.line + 1, 0);
else
{
/* We used to do this earlier, but that is clearly
@@ -1517,6 +1519,15 @@ select_frame (struct frame_info *fi)
if (selected_frame_level_changed_hook)
selected_frame_level_changed_hook (frame_relative_level (fi));
+ /* FIXME: kseitz/2002-08-28: It would be nice to call
+ selected_frame_level_changed_event right here, but due to limitations
+ in the current interfaces, we would end up flooding UIs with events
+ because select_frame is used extensively internally.
+
+ Once we have frame-parameterized frame (and frame-related) commands,
+ the event notification can be moved here, since this function will only
+ be called when the users selected frame is being changed. */
+
/* Ensure that symbols for this frame are read in. Also, determine the
source language of this frame, and switch to it if desired. */
if (fi)
@@ -1620,8 +1631,8 @@ select_frame_command_wrapper (char *level_exp, int from_tty)
static void
select_frame_command (char *level_exp, int from_tty)
{
- register struct frame_info *frame, *frame1;
- unsigned int level = 0;
+ struct frame_info *frame;
+ int level = frame_relative_level (selected_frame);
if (!target_has_stack)
error ("No stack.");
@@ -1629,6 +1640,8 @@ select_frame_command (char *level_exp, int from_tty)
frame = parse_frame_specification (level_exp);
select_frame (frame);
+ if (level != frame_relative_level (selected_frame))
+ selected_frame_level_changed_event (frame_relative_level (selected_frame));
}
/* The "frame" command. With no arg, print selected frame briefly.
@@ -1674,6 +1687,7 @@ up_silently_base (char *count_exp)
if (count1 != 0 && count_exp == 0)
error ("Initial frame selected; you cannot go up.");
select_frame (fi);
+ selected_frame_level_changed_event (frame_relative_level (selected_frame));
}
static void
@@ -1719,6 +1733,7 @@ down_silently_base (char *count_exp)
}
select_frame (frame);
+ selected_frame_level_changed_event (frame_relative_level (selected_frame));
}
/* ARGSUSED */
diff --git a/gdb/symtab.c b/gdb/symtab.c
index d39962e..c18625a 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -860,15 +860,20 @@ lookup_symbol_aux (const char *name, const char *mangled_name,
/* This is a function which has a symtab for its address. */
bv = BLOCKVECTOR (s);
block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
- sym = lookup_block_symbol (block, SYMBOL_NAME (msymbol),
- mangled_name, namespace);
+
+ /* This call used to pass `SYMBOL_NAME (msymbol)' as the
+ `name' argument to lookup_block_symbol. But the name
+ of a minimal symbol is always mangled, so that seems
+ to be clearly the wrong thing to pass as the
+ unmangled name. */
+ sym = lookup_block_symbol (block, name, mangled_name, namespace);
/* We kept static functions in minimal symbol table as well as
in static scope. We want to find them in the symbol table. */
if (!sym)
{
block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
- sym = lookup_block_symbol (block, SYMBOL_NAME (msymbol),
- mangled_name, namespace);
+ sym = lookup_block_symbol (block, name,
+ mangled_name, namespace);
}
/* sym == 0 if symbol was found in the minimal symbol table
@@ -1027,15 +1032,19 @@ lookup_symbol_aux (const char *name, const char *mangled_name,
{
bv = BLOCKVECTOR (s);
block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
- sym = lookup_block_symbol (block, SYMBOL_NAME (msymbol),
- mangled_name, namespace);
+ /* This call used to pass `SYMBOL_NAME (msymbol)' as the
+ `name' argument to lookup_block_symbol. But the name
+ of a minimal symbol is always mangled, so that seems
+ to be clearly the wrong thing to pass as the
+ unmangled name. */
+ sym = lookup_block_symbol (block, name, mangled_name, namespace);
/* We kept static functions in minimal symbol table as well as
in static scope. We want to find them in the symbol table. */
if (!sym)
{
block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
- sym = lookup_block_symbol (block, SYMBOL_NAME (msymbol),
- mangled_name, namespace);
+ sym = lookup_block_symbol (block, name,
+ mangled_name, namespace);
}
/* If we found one, return it */
if (sym)
diff --git a/gdb/target.c b/gdb/target.c
index ec1979b..75d022f 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -138,6 +138,8 @@ static void debug_to_terminal_inferior (void);
static void debug_to_terminal_ours_for_output (void);
+static void debug_to_terminal_save_ours (void);
+
static void debug_to_terminal_ours (void);
static void debug_to_terminal_info (char *, int);
@@ -445,6 +447,9 @@ cleanup_target (struct target_ops *t)
de_fault (to_terminal_ours,
(void (*) (void))
target_ignore);
+ de_fault (to_terminal_save_ours,
+ (void (*) (void))
+ target_ignore);
de_fault (to_terminal_info,
default_terminal_info);
de_fault (to_kill,
@@ -608,6 +613,7 @@ update_current_target (void)
INHERIT (to_terminal_inferior, t);
INHERIT (to_terminal_ours_for_output, t);
INHERIT (to_terminal_ours, t);
+ INHERIT (to_terminal_save_ours, t);
INHERIT (to_terminal_info, t);
INHERIT (to_kill, t);
INHERIT (to_load, t);
@@ -1980,6 +1986,14 @@ debug_to_terminal_ours (void)
}
static void
+debug_to_terminal_save_ours (void)
+{
+ debug_target.to_terminal_save_ours ();
+
+ fprintf_unfiltered (gdb_stdlog, "target_terminal_save_ours ()\n");
+}
+
+static void
debug_to_terminal_info (char *arg, int from_tty)
{
debug_target.to_terminal_info (arg, from_tty);
@@ -2405,6 +2419,7 @@ setup_target_debug (void)
current_target.to_terminal_inferior = debug_to_terminal_inferior;
current_target.to_terminal_ours_for_output = debug_to_terminal_ours_for_output;
current_target.to_terminal_ours = debug_to_terminal_ours;
+ current_target.to_terminal_save_ours = debug_to_terminal_save_ours;
current_target.to_terminal_info = debug_to_terminal_info;
current_target.to_kill = debug_to_kill;
current_target.to_load = debug_to_load;
diff --git a/gdb/target.h b/gdb/target.h
index c165801..18b95b0 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -264,6 +264,7 @@ struct target_ops
void (*to_terminal_inferior) (void);
void (*to_terminal_ours_for_output) (void);
void (*to_terminal_ours) (void);
+ void (*to_terminal_save_ours) (void);
void (*to_terminal_info) (char *, int);
void (*to_kill) (void);
void (*to_load) (char *, int);
@@ -626,6 +627,14 @@ extern void print_section_info (struct target_ops *, bfd *);
#define target_terminal_ours() \
(*current_target.to_terminal_ours) ()
+/* Save our terminal settings.
+ This is called from TUI after entering or leaving the curses
+ mode. Since curses modifies our terminal this call is here
+ to take this change into account. */
+
+#define target_terminal_save_ours() \
+ (*current_target.to_terminal_save_ours) ()
+
/* Print useful information about our terminal status, if such a thing
exists. */
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index e47afec..d0f9ef2 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,24 @@
+2002-09-03 Keith Seitz <keiths@redhat.com>
+
+ * lib/gdb.exp (gdb_compile_pthreads): Fix "build_bin" typo.
+ Use integer comparison instead of string comparison for testing
+ whether binary was built.
+
+2002-09-03 Jim Blandy <jimb@redhat.com>
+
+ * gdb.threads/killed.exp, gdb.threads/killed.c: New test.
+
+2002-08-29 Jim Blandy <jimb@redhat.com>
+
+ * gdb.threads/pthreads.exp: Move the portable thread compilation
+ code into a function in lib/gdb.exp, and call that from here.
+ * lib/gdb.exp (gdb_compile_pthreads): New function.
+
+2002-08-29 Keith Seitz <keiths@redhat.com>
+
+ * lib/mi-support.exp (mi_gdb_test): Add global declaration for
+ expect_out so that callers can get at it.
+
2002-08-23 Daniel Jacobowitz <drow@mvista.com>
* gdb.threads/print-threads.c: New file.
diff --git a/gdb/testsuite/gdb.base/commands.exp b/gdb/testsuite/gdb.base/commands.exp
index dfaf965..3db28b1 100644
--- a/gdb/testsuite/gdb.base/commands.exp
+++ b/gdb/testsuite/gdb.base/commands.exp
@@ -440,7 +440,120 @@ proc deprecated_command_test {} {
"deprecate with no arguments"
}
+proc bp_deleted_in_command_test {} {
+ global gdb_prompt
+
+ gdb_test "set args 1" "" "set args in bp_deleted_in_command_test"
+ delete_breakpoints
+
+ # Create a breakpoint, and associate a command-list to it, with
+ # one command that deletes this breakpoint.
+ gdb_test "break factorial" \
+ "Breakpoint \[0-9\]+ at .*: file .*/run.c, line \[0-9\]+\." \
+ "breakpoint in bp_deleted_in_command_test"
+
+ send_gdb "commands\n"
+ gdb_expect {
+ -re "Type commands for when breakpoint .* is hit, one per line.*>" {
+ pass "begin commands in bp_deleted_in_command_test"
+ }
+ -re "$gdb_prompt $" {fail "begin commands in bp_deleted_in_command_test"}
+ timeout {fail "(timeout) begin commands bp_deleted_in_command_test"}
+ }
+ send_gdb "silent\n"
+ gdb_expect {
+ -re ">" {pass "add silent command"}
+ -re "$gdb_prompt $" {fail "add silent command"}
+ timeout {fail "(timeout) add silent command"}
+ }
+ send_gdb "clear factorial\n"
+ gdb_expect {
+ -re ">" {pass "add clear command"}
+ -re "$gdb_prompt $" {fail "add clear command"}
+ timeout {fail "(timeout) add clear command"} }
+ send_gdb "printf \"factorial command-list executed\\n\"\n"
+ gdb_expect {
+ -re ">" {pass "add printf command"}
+ -re "$gdb_prompt $" {fail "add printf command"}
+ timeout {fail "(timeout) add printf command"}
+ }
+ send_gdb "cont\n"
+ gdb_expect {
+ -re ">" {pass "add cont command"}
+ -re "$gdb_prompt $" {fail "add cont command"}
+ timeout {fail "(timeout) add cont command"} }
+ send_gdb "end\n"
+ gdb_expect {
+ -re "$gdb_prompt $" {pass "end commands"}
+ timeout {fail "(timeout) end commands"}
+ }
+ gdb_run_cmd
+ gdb_expect {
+ -re ".*factorial command-list executed.*1.*Program exited normally.*$gdb_prompt $" {
+ pass "run factorial until breakpoint"
+ }
+ -re ".*$gdb_prompt $" {
+ fail "run factorial until breakpoint"
+ }
+ default { fail "(timeout) run factorial until breakpoint" }
+ timeout { fail "(timeout) run factorial until breakpoint" }
+ }
+}
+
+proc temporary_breakpoint_commands {} {
+ global gdb_prompt
+
+ gdb_test "set args 1" "" "set args in temporary_breakpoint_commands"
+ delete_breakpoints
+
+ # Create a temporary breakpoint, and associate a commands list to it.
+ # This test will verify that this commands list is executed when the
+ # breakpoint is hit.
+ gdb_test "tbreak factorial" \
+ "Breakpoint \[0-9\]+ at .*: file .*/run.c, line \[0-9\]+\." \
+ "breakpoint in temporary_breakpoint_commands"
+
+ send_gdb "commands\n"
+ gdb_expect {
+ -re "Type commands for when breakpoint .* is hit, one per line.*>" {
+ pass "begin commands in bp_deleted_in_command_test"
+ }
+ -re "$gdb_prompt $" {fail "begin commands in bp_deleted_in_command_test"}
+ timeout {fail "(timeout) begin commands bp_deleted_in_command_test"}
+ }
+ send_gdb "silent\n"
+ gdb_expect {
+ -re ">" {pass "add silent tbreak command"}
+ -re "$gdb_prompt $" {fail "add silent tbreak command"}
+ timeout {fail "(timeout) add silent tbreak command"}
+ }
+ send_gdb "printf \"factorial tbreak commands executed\\n\"\n"
+ gdb_expect {
+ -re ">" {pass "add printf tbreak command"}
+ -re "$gdb_prompt $" {fail "add printf tbreak command"}
+ timeout {fail "(timeout) add printf tbreak command"}
+ }
+ send_gdb "cont\n"
+ gdb_expect {
+ -re ">" {pass "add cont tbreak command"}
+ -re "$gdb_prompt $" {fail "add cont tbreak command"}
+ timeout {fail "(timeout) add cont tbreak command"} }
+ send_gdb "end\n"
+ gdb_expect {
+ -re "$gdb_prompt $" {pass "end tbreak commands"}
+ timeout {fail "(timeout) end tbreak commands"}
+ }
+
+ gdb_run_cmd
+ gdb_expect {
+ -re ".*factorial tbreak commands executed.*1.*Program exited normally.*" {
+ pass "run factorial until temporary breakpoint"
+ }
+ timeout { fail "(timeout) run factorial until temporary breakpoint" }
+ }
+}
+
gdbvar_simple_if_test
gdbvar_simple_while_test
gdbvar_complex_if_while_test
@@ -454,3 +567,5 @@ user_defined_command_test
watchpoint_command_test
test_command_prompt_position
deprecated_command_test
+bp_deleted_in_command_test
+temporary_breakpoint_commands
diff --git a/gdb/testsuite/gdb.mi/ChangeLog b/gdb/testsuite/gdb.mi/ChangeLog
index 26d662c..ac00d9f 100644
--- a/gdb/testsuite/gdb.mi/ChangeLog
+++ b/gdb/testsuite/gdb.mi/ChangeLog
@@ -1,3 +1,8 @@
+2002-09-03 Keith Seitz <keiths@redhat.com>
+
+ * gdb680.exp: New file to test to check for uiout list/tuple
+ nesting bug.
+
2002-03-04 Michael Chastain <mec@shout.net>
* mi-var-cmd.exp: In test "create local variable func",
diff --git a/gdb/testsuite/gdb.mi/gdb680.exp b/gdb/testsuite/gdb.mi/gdb680.exp
new file mode 100644
index 0000000..eee96a6
--- /dev/null
+++ b/gdb/testsuite/gdb.mi/gdb680.exp
@@ -0,0 +1,56 @@
+# Copyright 2002 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-gdb@prep.ai.mit.edu
+
+#
+# test gdb/680
+#
+
+load_lib mi-support.exp
+set MIFLAGS "-i=mi"
+
+gdb_exit
+if [mi_gdb_start] {
+ continue
+}
+
+proc do_test {count} {
+ mi_gdb_test "-data-list-register-names -1" \
+ {\^error,msg=\"bad register number\"} \
+ "-data-list-register-names -1, try $count"
+}
+
+# Tests a bug with ui-out and nested uiout types. When
+# an error is encountered building a nest typed, like
+# lists or tuples, the uiout is not reset to some sane
+# state. As a result, uiout still thinks it is building
+# this nested type. Execute enough of these errors and
+# an assertion failure occurs. This is most obvious
+# with invalid register number and the register commands.
+
+# MAX_UIOUT_LEVELS is set to 5.
+set counter 0
+for {set i 0} {$i < 4} {incr i} {
+ do_test $i
+}
+
+#setup_kfail "gdb/680"
+do_test $i
+
+mi_gdb_exit
+return 0
diff --git a/gdb/testsuite/gdb.threads/killed.c b/gdb/testsuite/gdb.threads/killed.c
new file mode 100644
index 0000000..6cb3928
--- /dev/null
+++ b/gdb/testsuite/gdb.threads/killed.c
@@ -0,0 +1,24 @@
+#include <sys/types.h>
+#include <signal.h>
+#include <pthread.h>
+#include <stdio.h>
+
+int pid;
+
+void *
+child_func (void *dummy)
+{
+ kill (pid, SIGKILL);
+ exit (1);
+}
+
+int
+main ()
+{
+ pthread_t child;
+
+ pid = getpid ();
+ pthread_create (&child, 0, child_func, 0);
+ for (;;)
+ sleep (10000);
+}
diff --git a/gdb/testsuite/gdb.threads/killed.exp b/gdb/testsuite/gdb.threads/killed.exp
new file mode 100644
index 0000000..3712508
--- /dev/null
+++ b/gdb/testsuite/gdb.threads/killed.exp
@@ -0,0 +1,97 @@
+# Copyright 2002 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-gdb@gnu.org
+
+# This is a regression test for gdb/568 in the sources.redhat.com
+# GNATS database. As of early June 2002, GDB could get sort of wedged
+# debugging the program `killed.c':
+#
+# $ $D6/gdb/gdb -nw killed
+# GNU gdb 2002-06-11-cvs
+# Copyright 2002 Free Software Foundation, Inc.
+# GDB is free software, covered by the GNU General Public License, and you are
+# welcome to change it and/or distribute copies of it under certain conditions.
+# Type "show copying" to see the conditions.
+# There is absolutely no warranty for GDB. Type "show warranty" for details.
+# This GDB was configured as "i686-pc-linux-gnu"...
+# (gdb) run
+# Starting program: /home/jimb/foo/play/killed
+# [New Thread 1024 (LWP 6487)]
+# [New Thread 2049 (LWP 6488)]
+# [New Thread 1026 (LWP 6489)]
+# Cannot find user-level thread for LWP 6487: generic error
+# (gdb) quit
+# The program is running. Exit anyway? (y or n) y
+# Cannot find thread 2049: generic error
+# (gdb) kill
+# Kill the program being debugged? (y or n) y
+# Cannot find thread 2049: generic error
+# (gdb) The program is running. Exit anyway? (y or n) y
+# Cannot find thread 2049: generic error
+# (gdb)
+# [7]+ Stopped $D6/gdb/gdb -nw killed
+# $ kill %7
+#
+# [7]+ Stopped $D6/gdb/gdb -nw killed
+# $ kill -9 %7
+#
+# [7]+ Stopped $D6/gdb/gdb -nw killed
+# $
+# [7]+ Killed $D6/gdb/gdb -nw killed
+# $
+
+if $tracelevel then {
+ strace $tracelevel
+}
+
+set prms_id 0
+set bug_id 0
+
+set testfile "killed"
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+
+if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug "incdir=${objdir}/${subdir}"]] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
+
+
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+gdb_test "run" "" "run program to completion"
+
+# Try to quit.
+send_gdb "quit\n"
+gdb_expect {
+ -re "The program is running. Exit anyway\\? \\(y or n\\) $" {
+ send_gdb "y\n"
+ exp_continue
+ }
+ eof {
+ pass "GDB exits after multi-threaded program exits messily"
+ }
+ -re "Cannot find thread ${decimal}: generic error\[\r\n\]*$gdb_prompt $" {
+ # setup_kfail "gdb/568"
+ fail "GDB exits after multi-threaded program exits messily (gdb/568)"
+ }
+ timeout {
+ fail "GDB exits after multi-threaded program exits messily (timeout)"
+ }
+}
diff --git a/gdb/testsuite/gdb.threads/pthreads.exp b/gdb/testsuite/gdb.threads/pthreads.exp
index 0703395..dc9b7a8 100644
--- a/gdb/testsuite/gdb.threads/pthreads.exp
+++ b/gdb/testsuite/gdb.threads/pthreads.exp
@@ -39,42 +39,16 @@ set binfile ${objdir}/${subdir}/${testfile}
# carriage return)
set horiz "\[^\n\r\]*"
-set built_binfile 0
if [istarget "*-*-linux"] then {
set target_cflags "-D_MIT_POSIX_THREADS"
} else {
set target_cflags ""
}
-set why_msg "unrecognized error"
-foreach lib {-lpthreads -lpthread -lthread} {
- set options "debug"
- lappend options "incdir=${objdir}/${subdir}"
- lappend options "libs=$lib"
- set ccout [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable $options]
- switch -regexp -- $ccout {
- ".*no posix threads support.*" {
- set why_msg "missing threads include file"
- break
- }
- ".*cannot open -lpthread.*" {
- set why_msg "missing runtime threads library"
- }
- ".*Can't find library for -lpthread.*" {
- set why_msg "missing runtime threads library"
- }
- {^$} {
- pass "successfully compiled posix threads test case"
- set built_binfile 1
- break
- }
- }
-}
-if {$built_binfile == "0"} {
- unsupported "Couldn't compile ${srcfile}, ${why_msg}"
- return -1
+
+if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug "incdir=${objdir}/${subdir}"]] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
-# Now we can proceed with the real testing.
# Start with a fresh gdb.
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index b4a0b8a..f4ddc63 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -1171,6 +1171,42 @@ proc gdb_compile {source dest type options} {
return $result;
}
+
+# This is just like gdb_compile, above, except that it tries compiling
+# against several different thread libraries, to see which one this
+# system has.
+proc gdb_compile_pthreads {source dest type options} {
+ set built_binfile 0
+ set why_msg "unrecognized error"
+ foreach lib {-lpthreads -lpthread -lthread} {
+ # This kind of wipes out whatever libs the caller may have
+ # set. Or maybe theirs will override ours. How infelicitous.
+ set options_with_lib [concat $options [list libs=$lib]]
+ set ccout [gdb_compile $source $dest $type $options_with_lib]
+ switch -regexp -- $ccout {
+ ".*no posix threads support.*" {
+ set why_msg "missing threads include file"
+ break
+ }
+ ".*cannot open -lpthread.*" {
+ set why_msg "missing runtime threads library"
+ }
+ ".*Can't find library for -lpthread.*" {
+ set why_msg "missing runtime threads library"
+ }
+ {^$} {
+ pass "successfully compiled posix threads test case"
+ set built_binfile 1
+ break
+ }
+ }
+ }
+ if {!$built_binfile} {
+ unsupported "Couldn't compile $source: ${why_msg}"
+ return -1
+ }
+}
+
proc send_gdb { string } {
global suppress_flag;
if { $suppress_flag } {
diff --git a/gdb/testsuite/lib/mi-support.exp b/gdb/testsuite/lib/mi-support.exp
index 44679f0..d3861e1 100644
--- a/gdb/testsuite/lib/mi-support.exp
+++ b/gdb/testsuite/lib/mi-support.exp
@@ -382,7 +382,7 @@ proc mi_gdb_load { arg } {
proc mi_gdb_test { args } {
global verbose
global mi_gdb_prompt
- global GDB
+ global GDB expect_out
upvar timeout timeout
if [llength $args]>2 then {
diff --git a/gdb/tui/ChangeLog b/gdb/tui/ChangeLog
index ac71eee..dbb9f54 100644
--- a/gdb/tui/ChangeLog
+++ b/gdb/tui/ChangeLog
@@ -1,3 +1,182 @@
+2002-09-04 Stephane Carrez <stcarrez@nerim.fr>
+
+ * tuiIO.c (tui_putc): New function to print one character.
+ (printable_part): New function from readline/complete.c.
+ (PUTX): New macro, likewise.
+ (print_filename): New function, likewise.
+ (get_y_or_n): New function, likewise and adapted for TUI.
+ (tui_rl_display_match_list): New function from readline/complete.c
+ and writes on TUI command window.
+ (tui_setup_io): Install or remove the readline hook
+ rl_completion_display_matches_hook so that completion is written
+ directly in TUI command window instead of in the TUI pipe.
+ (tui_initialize_io): Use #ifdef TUI_USE_PIPE_FOR_READLINE for the
+ TUI redirection pipe.
+ (tui_getc): Likewise for call to tui_readline_output.
+ (tui_readline_output): Likewise for function.
+ * tui.c (tui_rl_startup_hook): Always take care of gdb prompt.
+
+2002-09-02 Stephane Carrez <stcarrez@nerim.fr>
+
+ * tuiWin.c (_newHeightOk): Fix compilation warnings.
+
+2002-09-01 Stephane Carrez <stcarrez@nerim.fr>
+
+ * tuiWin.c (_tuiAllWindowsInfo): Don't crash if the window
+ is not displayed.
+
+2002-09-01 Stephane Carrez <stcarrez@nerim.fr>
+
+ * tui-out.c (tui_out_new): Clear start_of_line.
+ * tuiSource.c (tuiVerticalSourceScroll): Use print_source_lines
+ to update the current source line.
+
+2002-09-01 Stephane Carrez <stcarrez@nerim.fr>
+
+ * tui-hooks.c (tui_detach_hook): New hook to know when a process dies.
+ (tui_install_hooks): Install it.
+ (tui_remove_hooks): Remove it.
+
+2002-09-01 Stephane Carrez <stcarrez@nerim.fr>
+
+ * tuiData.h (FILE_PREFIX): Don't define.
+ (blankStr, locationStr, breakStr): Don't declare.
+ (breakLocationStr, nullStr, historyLimit, setHistoryLimitTo): Likewise.
+ (displayableWinContentOf, displayableWinContentAt): Likewise.
+ (winElementHeight, winByName, freeAllWindows): Likewise.
+
+ * tuiData.c (blankStr, locationStr, breakStr): Remove.
+ (breakLocationStr, nullStr, historyLimit, setHistoryLimitTo): Remove.
+ (displayableWinContentOf, displayableWinContentAt): Remove.
+ (winElementHeight, winByName, freeAllWindows): Remove.
+
+2002-09-01 Stephane Carrez <stcarrez@nerim.fr>
+
+ * tuiStack.c (tui_make_status_line): New function to create the
+ status line.
+ (tuiShowLocatorContent): Use it instead of displayableWinContentAt.
+ * tuiData.h (PROC_PREFIX): Use "In:" to reduce length of prefix.
+ (PC_PREFIX): Use upper case.
+ (SINGLE_KEY, MIN_LINE_WIDTH, MIN_PROC_WIDTH): Define.
+ (MAX_TARGET_WIDTH, MAX_PID_WIDTH): Define.
+
+2002-08-31 Stephane Carrez <stcarrez@nerim.fr>
+
+ * tuiSourceWin.h (tuiUpdateAllExecInfos): Don't declare.
+ (tuiClearAllExecInfosContent): Likewise.
+ (tuiEraseAllExecInfosContent): Ditto.
+ (tuiUpdateSourceWindowsFromLocator): Ditto.
+ * tuiSourceWin.c (tuiUpdateAllExecInfos): Remove.
+ * tui.h (tui_vCheckDataValues): Don't declare.
+ (tui_vStartNewLines, tui_vAllSetHasBreakAt): Likewise.
+ (tui_vUpdateLocatorFilename, tui_vUpdateSourceWindowsWithAddr): Ditto.
+ (tui_vShowFrameInfo): Ditto.
+
+2002-08-31 Stephane Carrez <stcarrez@nerim.fr>
+
+ * tui.c (tui_commands): Table of single key commands.
+ (tui_rl_command_key): New function to execute gdb command.
+ (tui_rl_command_mode): New function to temporarily leave SingleKey.
+ (tui_rl_next_keymap): New function to enter/leave the SingleKey mode.
+ (tui_rl_startup_hook): New function to avoid prompt display by
+ readline functions.
+ (tui_set_key_mode): New function to set the key mode and install
+ the readline keymap.
+ (tui_initialize_readline): Create TUI SingleKey readline map.
+ (tui_enable): Install rl_startup_hook.
+ (tui_disable): Remove it.
+ * tui.h (enum tui_key_mode): Declare.
+ (tui_set_key_mode, tui_current_key_mode): Declare.
+ * tuiIO.c (tui_redisplay_readline): Don't display the prompt in
+ SingleKey mode.
+ * tuiIO.h (tui_redisplay_readline): Declare.
+
+2002-08-31 Stephane Carrez <stcarrez@nerim.fr>
+
+ * tuiSourceWin.c (tuiSetIsExecPointAt): Redraw the previous and
+ current line.
+
+2002-08-31 Stephane Carrez <stcarrez@nerim.fr>
+
+ * tuiSource.c (tuiSetSourceContent): Remove old breakpoint code.
+ (_hasBreak): Remove.
+ (tuiShowSource): Fix comment indentation.
+ (tuiSourceIsDisplayed): Likewise.
+ (tuiVerticalSourceScroll): Likewise.
+
+2002-08-30 Stephane Carrez <stcarrez@nerim.fr>
+
+ * tuiSourceWin.h (tui_update_all_breakpoint_info): Declare.
+ (tui_update_breakpoint_info): Declare.
+ (tuiSetHasBreakAt, tuiAllSetHasBreakAt): Remove.
+
+ * tuiSourceWin.c (tuiUpdateSourceWindowAsIs): Update breakpoint
+ information using tui_update_breakpoint_info.
+ (tui_update_all_breakpoint_info): New function to refresh all
+ execution windows.
+ (tui_update_breakpoint_info): New function to recompute the status
+ of exec info window from breakpoints.
+ (tuiSetHasBreakAt, tuiAllSetHasBreakAt): Remove.
+ (tuiSetExecInfoContent): Use the exec info flags computed by
+ tui_update_breakpoint_info to display a short status about breakpoints.
+
+ * tuiData.h (TuiExecInfoContent): New for exec info string.
+ (TuiWhichElement): Use it.
+ (TUI_BP_ENABLED, TUI_BP_DISABLED, TUI_BP_HIT): New defines.
+ (TUI_BP_CONDITIONAL, TUI_BP_HARDWARE): New defines.
+ (TUI_BP_HIT_POS, TUI_BP_BREAK_POS, TUI_EXEC_POS): Likewise.
+ (TUI_EXECINFO_SIZE): Likewise.
+ * tuiData.c (initContentElement): Clear exec info string.
+
+ * tui-hooks.c (get_breakpoint): Remove.
+ (tui_event_create_breakpoint): Call tui_update_all_breakpoint_info.
+ (tui_event_delete_breakpoint): Likewise.
+ (tui_event_modify_breakpoint): Likewise.
+
+2002-08-29 Stephane Carrez <stcarrez@nerim.fr>
+
+ * tui.c (tuiGetLowDisassemblyAddress): Moved from here.
+ * tuiDisassem.c (tuiGetLowDisassemblyAddress): To here, and use
+ tui_find_disassembly_address to find the starting address of
+ disassemble window.
+
+2002-08-28 Stephane Carrez <stcarrez@nerim.fr>
+
+ * tuiDisassem.c (tui_disassemble): New function to disassemble
+ several lines in a buffer.
+ (tui_find_disassembly_address): New function to search backward
+ or forward a disassembly line.
+ (tuiSetDisassemContent): Use tui_disassemble to obtain the real
+ content and format it in the window.
+ (tuiShowDisassemAndUpdateSource): Remove unused locals.
+ (tuiVerticalDisassemScroll): Use tui_find_disassembly_address to
+ obtain the address to disassemble for the scrolling.
+ * tuiDisassem.h (tuiGetBeginAsmAddress): Update.
+ * tuiSourceWin.c (tuiUpdateSourceWindowAsIs): Don't pass symtab.
+
+2002-08-28 Stephane Carrez <stcarrez@nerim.fr>
+
+ * tuiIO.c (CTRL_CHAR): Redefine and use readline 4.3 definition.
+
+2002-08-26 Stephane Carrez <stcarrez@nerim.fr>
+
+ Fix PR gdb/393:
+ * tui.c (tui_disable): Update gdb's knowledge of its terminal
+ using target_terminal_save_ours.
+ (tui_enable): Likewise.
+
+2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
+
+ * tui.c (tui_rl_switch_mode): Renames tui_switch_mode.
+ (tui_rl_change_windows): Renames tui_change_windows.
+ (tui_rl_delete_other_windows): Renames tui_delete_other_windows.
+ (tui_initialize_readline): Update.
+
+2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
+
+ * tuiDisassem.c (tuiSetDisassemContent): Use breakpoint_here_p.
+ (_hasBreak): Remove.
+
2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
* tuiDisassem.c (tuiGetBeginAsmAddress): Use lookup_minimal_symbol
diff --git a/gdb/tui/tui-hooks.c b/gdb/tui/tui-hooks.c
index d605194..35d7ce8 100644
--- a/gdb/tui/tui-hooks.c
+++ b/gdb/tui/tui-hooks.c
@@ -167,44 +167,12 @@ tui_register_changed_hook (int regno)
}
}
-extern struct breakpoint *breakpoint_chain;
-
-/* Find a breakpoint given its number. Returns null if not found. */
-static struct breakpoint *
-get_breakpoint (int number)
-{
- struct breakpoint *bp;
-
- for (bp = breakpoint_chain; bp; bp = bp->next)
- {
- if (bp->number == number)
- return bp;
- }
- return 0;
-}
-
/* Breakpoint creation hook.
Update the screen to show the new breakpoint. */
static void
tui_event_create_breakpoint (int number)
{
- struct breakpoint *bp;
-
- bp = get_breakpoint (number);
- if (bp)
- {
- switch (bp->type)
- {
- case bp_breakpoint:
- case bp_hardware_breakpoint:
- tuiAllSetHasBreakAt (bp, 1);
- tuiUpdateAllExecInfos ();
- break;
-
- default:
- break;
- }
- }
+ tui_update_all_breakpoint_info ();
}
/* Breakpoint deletion hook.
@@ -212,35 +180,13 @@ tui_event_create_breakpoint (int number)
static void
tui_event_delete_breakpoint (int number)
{
- struct breakpoint *bp;
- struct breakpoint *b;
- int clearIt;
-
- bp = get_breakpoint (number);
- if (bp == 0)
- return;
-
- /* Before turning off the visuals for the bp, check to see that
- there are no other bps at the same address. */
- clearIt = 0;
- for (b = breakpoint_chain; b; b = b->next)
- {
- clearIt = (b == bp || b->address != bp->address);
- if (!clearIt)
- break;
- }
-
- if (clearIt)
- {
- tuiAllSetHasBreakAt (bp, 0);
- tuiUpdateAllExecInfos ();
- }
+ tui_update_all_breakpoint_info ();
}
static void
tui_event_modify_breakpoint (int number)
{
- ;
+ tui_update_all_breakpoint_info ();
}
static void
@@ -331,6 +277,15 @@ tui_print_frame_info_listing_hook (struct symtab *s, int line,
tuiShowFrameInfo (selected_frame);
}
+/* Called when the target process died or is detached.
+ Update the status line. */
+static void
+tui_detach_hook (void)
+{
+ tuiShowFrameInfo (0);
+ tui_display_main ();
+}
+
/* Install the TUI specific hooks. */
void
tui_install_hooks (void)
@@ -346,6 +301,7 @@ tui_install_hooks (void)
registers_changed_hook = tui_registers_changed_hook;
register_changed_hook = tui_register_changed_hook;
+ detach_hook = tui_detach_hook;
}
/* Remove the TUI specific hooks. */
@@ -358,6 +314,7 @@ tui_remove_hooks (void)
query_hook = 0;
registers_changed_hook = 0;
register_changed_hook = 0;
+ detach_hook = 0;
/* Restore the previous event hooks. */
set_gdb_event_hooks (tui_old_event_hooks);
diff --git a/gdb/tui/tui-out.c b/gdb/tui/tui-out.c
index a8cc58b..71ce5e0 100644
--- a/gdb/tui/tui-out.c
+++ b/gdb/tui/tui-out.c
@@ -398,7 +398,7 @@ tui_out_new (struct ui_file *stream)
data->stream = stream;
data->suppress_output = 0;
data->line = -1;
- data->start_of_line = 1;
+ data->start_of_line = 0;
return ui_out_new (&tui_ui_out_impl, data, flags);
}
diff --git a/gdb/tui/tui.c b/gdb/tui/tui.c
index 8bf4776..8bf467d 100644
--- a/gdb/tui/tui.c
+++ b/gdb/tui/tui.c
@@ -72,9 +72,35 @@
int tui_active = 0;
static int tui_finish_init = 1;
-/* Switch the output mode between TUI/standard gdb. */
+enum tui_key_mode tui_current_key_mode = tui_command_mode;
+
+struct tui_char_command
+{
+ unsigned char key;
+ const char* cmd;
+};
+
+/* Key mapping to gdb commands when the TUI is using the single key mode. */
+static const struct tui_char_command tui_commands[] = {
+ { 'c', "continue" },
+ { 'd', "down" },
+ { 'f', "finish" },
+ { 'n', "next" },
+ { 'r', "run" },
+ { 's', "step" },
+ { 'u', "up" },
+ { 'v', "info locals" },
+ { 'w', "where" },
+ { 0, 0 },
+};
+
+static Keymap tui_keymap;
+static Keymap tui_readline_standard_keymap;
+
+/* TUI readline command.
+ Switch the output mode between TUI/standard gdb. */
static int
-tui_switch_mode (void)
+tui_rl_switch_mode (void)
{
if (tui_active)
{
@@ -107,15 +133,16 @@ tui_switch_mode (void)
return 0;
}
-/* Change the TUI layout to show a next layout.
+/* TUI readline command.
+ Change the TUI layout to show a next layout.
This function is bound to CTRL-X 2. It is intended to provide
a functionality close to the Emacs split-window command. We always
show two windows (src+asm), (src+regs) or (asm+regs). */
static int
-tui_change_windows (void)
+tui_rl_change_windows (void)
{
if (!tui_active)
- tui_switch_mode ();
+ tui_rl_switch_mode ();
if (tui_active)
{
@@ -157,13 +184,13 @@ tui_change_windows (void)
return 0;
}
-
-/* Delete the second TUI window to only show one. */
+/* TUI readline command.
+ Delete the second TUI window to only show one. */
static int
-tui_delete_other_windows (void)
+tui_rl_delete_other_windows (void)
{
if (!tui_active)
- tui_switch_mode ();
+ tui_rl_switch_mode ();
if (tui_active)
{
@@ -192,19 +219,126 @@ tui_delete_other_windows (void)
return 0;
}
+/* TUI readline command.
+ Execute the gdb command bound to the specified key. */
+static int
+tui_rl_command_key (int count, int key)
+{
+ int i;
+
+ reinitialize_more_filter ();
+ for (i = 0; tui_commands[i].cmd; i++)
+ {
+ if (tui_commands[i].key == key)
+ {
+ /* Must save the command because it can be modified
+ by execute_command. */
+ char* cmd = alloca (strlen (tui_commands[i].cmd) + 1);
+ strcpy (cmd, tui_commands[i].cmd);
+ execute_command (cmd, TRUE);
+ return 0;
+ }
+ }
+ return 0;
+}
+
+/* TUI readline command.
+ Temporarily leave the TUI SingleKey mode to allow editing
+ a gdb command with the normal readline. Once the command
+ is executed, the TUI SingleKey mode is installed back. */
+static int
+tui_rl_command_mode (int count, int key)
+{
+ tui_set_key_mode (tui_one_command_mode);
+ return rl_insert (count, key);
+}
+
+/* TUI readline command.
+ Switch between TUI SingleKey mode and gdb readline editing. */
+static int
+tui_rl_next_keymap (void)
+{
+ tui_set_key_mode (tui_current_key_mode == tui_command_mode
+ ? tui_single_key_mode : tui_command_mode);
+ return 0;
+}
+
+/* Readline hook to redisplay ourself the gdb prompt.
+ In the SingleKey mode, the prompt is not printed so that
+ the command window is cleaner. It will be displayed if
+ we temporarily leave the SingleKey mode. */
+static int
+tui_rl_startup_hook ()
+{
+ rl_already_prompted = 1;
+ if (tui_current_key_mode != tui_command_mode)
+ tui_set_key_mode (tui_single_key_mode);
+ tui_redisplay_readline ();
+ return 0;
+}
+
+/* Change the TUI key mode by installing the appropriate readline keymap. */
+void
+tui_set_key_mode (enum tui_key_mode mode)
+{
+ tui_current_key_mode = mode;
+ rl_set_keymap (mode == tui_single_key_mode
+ ? tui_keymap : tui_readline_standard_keymap);
+ tuiShowLocatorContent ();
+}
+
/* Initialize readline and configure the keymap for the switching
key shortcut. */
void
tui_initialize_readline ()
{
+ int i;
+ Keymap tui_ctlx_keymap;
+
rl_initialize ();
- rl_add_defun ("tui-switch-mode", tui_switch_mode, -1);
- rl_bind_key_in_map ('a', tui_switch_mode, emacs_ctlx_keymap);
- rl_bind_key_in_map ('A', tui_switch_mode, emacs_ctlx_keymap);
- rl_bind_key_in_map (CTRL ('A'), tui_switch_mode, emacs_ctlx_keymap);
- rl_bind_key_in_map ('1', tui_delete_other_windows, emacs_ctlx_keymap);
- rl_bind_key_in_map ('2', tui_change_windows, emacs_ctlx_keymap);
+ rl_add_defun ("tui-switch-mode", tui_rl_switch_mode, -1);
+ rl_add_defun ("gdb-command", tui_rl_command_key, -1);
+ rl_add_defun ("next-keymap", tui_rl_next_keymap, -1);
+
+ tui_keymap = rl_make_bare_keymap ();
+ tui_ctlx_keymap = rl_make_bare_keymap ();
+ tui_readline_standard_keymap = rl_get_keymap ();
+
+ for (i = 0; tui_commands[i].cmd; i++)
+ rl_bind_key_in_map (tui_commands[i].key, tui_rl_command_key, tui_keymap);
+
+ rl_generic_bind (ISKMAP, "\\C-x", (char*) tui_ctlx_keymap, tui_keymap);
+
+ /* Bind all other keys to tui_rl_command_mode so that we switch
+ temporarily from SingleKey mode and can enter a gdb command. */
+ for (i = ' ' + 1; i < 0x7f; i++)
+ {
+ int j;
+
+ for (j = 0; tui_commands[j].cmd; j++)
+ if (tui_commands[j].key == i)
+ break;
+
+ if (tui_commands[j].cmd)
+ continue;
+
+ rl_bind_key_in_map (i, tui_rl_command_mode, tui_keymap);
+ }
+
+ rl_bind_key_in_map ('a', tui_rl_switch_mode, emacs_ctlx_keymap);
+ rl_bind_key_in_map ('a', tui_rl_switch_mode, tui_ctlx_keymap);
+ rl_bind_key_in_map ('A', tui_rl_switch_mode, emacs_ctlx_keymap);
+ rl_bind_key_in_map ('A', tui_rl_switch_mode, tui_ctlx_keymap);
+ rl_bind_key_in_map (CTRL ('A'), tui_rl_switch_mode, emacs_ctlx_keymap);
+ rl_bind_key_in_map (CTRL ('A'), tui_rl_switch_mode, tui_ctlx_keymap);
+ rl_bind_key_in_map ('1', tui_rl_delete_other_windows, emacs_ctlx_keymap);
+ rl_bind_key_in_map ('1', tui_rl_delete_other_windows, tui_ctlx_keymap);
+ rl_bind_key_in_map ('2', tui_rl_change_windows, emacs_ctlx_keymap);
+ rl_bind_key_in_map ('2', tui_rl_change_windows, tui_ctlx_keymap);
+ rl_bind_key_in_map ('q', tui_rl_next_keymap, tui_keymap);
+ rl_bind_key_in_map ('s', tui_rl_next_keymap, emacs_ctlx_keymap);
+ rl_bind_key_in_map ('s', tui_rl_next_keymap, tui_ctlx_keymap);
}
/* Enter in the tui mode (curses).
@@ -254,6 +388,7 @@ tui_enable (void)
/* Install the TUI specific hooks. */
tui_install_hooks ();
+ rl_startup_hook = tui_rl_startup_hook;
tui_update_variables ();
@@ -265,6 +400,9 @@ tui_enable (void)
tuiShowFrameInfo (selected_frame);
refresh ();
+
+ /* Update gdb's knowledge of its terminal. */
+ target_terminal_save_ours ();
tui_update_gdb_sizes ();
}
@@ -280,6 +418,8 @@ tui_disable (void)
/* Remove TUI hooks. */
tui_remove_hooks ();
+ rl_startup_hook = 0;
+ rl_already_prompted = 0;
/* Leave curses and restore previous gdb terminal setting. */
endwin ();
@@ -288,6 +428,9 @@ tui_disable (void)
so that terminal management with the inferior works. */
tui_setup_io (0);
+ /* Update gdb's knowledge of its terminal. */
+ target_terminal_save_ours ();
+
tui_version = 0;
tui_active = 0;
tui_update_gdb_sizes ();
@@ -304,31 +447,6 @@ tuiFree (char *ptr)
}
}
-/* Determine what the low address will be to display in the TUI's
- disassembly window. This may or may not be the same as the
- low address input. */
-CORE_ADDR
-tuiGetLowDisassemblyAddress (CORE_ADDR low, CORE_ADDR pc)
-{
- int line;
- CORE_ADDR newLow;
-
- /* Determine where to start the disassembly so that the pc is about in the
- middle of the viewport. */
- for (line = 0, newLow = pc;
- (newLow > low &&
- line < (tuiDefaultWinViewportHeight (DISASSEM_WIN,
- DISASSEM_COMMAND) / 2));)
- {
- bfd_byte buffer[4];
-
- newLow -= sizeof (bfd_getb32 (buffer));
- line++;
- }
-
- return newLow;
-}
-
void
strcat_to_buf (char *buf, int buflen, const char *itemToAdd)
{
diff --git a/gdb/tui/tui.h b/gdb/tui/tui.h
index 9cc538d..ed66a4f 100644
--- a/gdb/tui/tui.h
+++ b/gdb/tui/tui.h
@@ -102,6 +102,23 @@ extern void tui_enable (void);
/* Leave the tui mode. */
extern void tui_disable (void);
+enum tui_key_mode
+{
+ /* Plain command mode to enter gdb commands. */
+ tui_command_mode,
+
+ /* SingleKey mode with some keys bound to gdb commands. */
+ tui_single_key_mode,
+
+ /* Read/edit one command and return to SingleKey after it's processed. */
+ tui_one_command_mode
+};
+
+extern enum tui_key_mode tui_current_key_mode;
+
+/* Change the TUI key mode by installing the appropriate readline keymap. */
+extern void tui_set_key_mode (enum tui_key_mode mode);
+
extern void tui_initialize_io (void);
extern void tui_initialize_readline (void);
@@ -115,21 +132,10 @@ extern void tui_show_source (const char *file, int line);
extern struct ui_out *tui_out_new (struct ui_file *stream);
-/* tuiDataWin.c */
-extern void tui_vCheckDataValues (va_list);
-
-/* tuiIO.c */
-extern void tui_vStartNewLines (va_list);
-
/* tuiLayout.c */
extern TuiStatus tui_set_layout (const char *);
/* tuiSourceWin.c */
extern void tuiUpdateAllExecInfos (void);
-extern void tui_vAllSetHasBreakAt (va_list);
-extern void tui_vUpdateSourceWindowsWithAddr (va_list);
-/* tuiStack.c */
-extern void tui_vShowFrameInfo (va_list);
-extern void tui_vUpdateLocatorFilename (va_list);
#endif /* TUI_H */
diff --git a/gdb/tui/tuiData.c b/gdb/tui/tuiData.c
index 45508e0..225583e 100644
--- a/gdb/tui/tuiData.c
+++ b/gdb/tui/tuiData.c
@@ -40,6 +40,7 @@
#endif
#include "defs.h"
+#include "symtab.h"
#include "tui.h"
#include "tuiData.h"
#include "tuiGeneralWin.h"
@@ -50,24 +51,10 @@
TuiWinInfoPtr winList[MAX_MAJOR_WINDOWS];
/***************************
-** Private Definitions
-****************************/
-#define FILE_WIDTH 30
-#define PROC_WIDTH 40
-#define LINE_WIDTH 4
-#define PC_WIDTH 8
-
-/***************************
** Private data
****************************/
-static char *_tuiNullStr = TUI_NULL_STR;
-static char *_tuiBlankStr = " ";
-static char *_tuiLocationStr = " >";
-static char *_tuiBreakStr = " * ";
-static char *_tuiBreakLocationStr = " *>";
static TuiLayoutType _currentLayout = UNDEFINED_LAYOUT;
static int _termHeight, _termWidth;
-static int _historyLimit = DEFAULT_HISTORY_COUNT;
static TuiGenWinInfo _locator;
static TuiGenWinInfo _execInfo[2];
static TuiWinInfoPtr _srcWinList[2];
@@ -286,61 +273,6 @@ clearWinDetail (TuiWinInfoPtr winInfo)
/*
- ** blankStr()
- ** Accessor for the blank string.
- */
-char *
-blankStr (void)
-{
- return _tuiBlankStr;
-} /* blankStr */
-
-
-/*
- ** locationStr()
- ** Accessor for the location string.
- */
-char *
-locationStr (void)
-{
- return _tuiLocationStr;
-} /* locationStr */
-
-
-/*
- ** breakStr()
- ** Accessor for the break string.
- */
-char *
-breakStr (void)
-{
- return _tuiBreakStr;
-} /* breakStr */
-
-
-/*
- ** breakLocationStr()
- ** Accessor for the breakLocation string.
- */
-char *
-breakLocationStr (void)
-{
- return _tuiBreakLocationStr;
-} /* breakLocationStr */
-
-
-/*
- ** nullStr()
- ** Accessor for the null string.
- */
-char *
-nullStr (void)
-{
- return _tuiNullStr;
-} /* nullStr */
-
-
-/*
** sourceExecInfoPtr().
** Accessor for the source execution info ptr.
*/
@@ -375,29 +307,6 @@ locatorWinInfoPtr (void)
/*
- ** historyLimit().
- ** Accessor for the history limit
- */
-int
-historyLimit (void)
-{
- return _historyLimit;
-} /* historyLimit */
-
-
-/*
- ** setHistoryLimitTo().
- ** Mutator for the history limit
- */
-void
-setHistoryLimitTo (int h)
-{
- _historyLimit = h;
-
- return;
-} /* setHistoryLimitTo */
-
-/*
** termHeight().
** Accessor for the termHeight
*/
@@ -549,189 +458,7 @@ tuiPrevWin (TuiWinInfoPtr curWin)
}
return prev;
-} /* tuiPrevWin */
-
-
-/*
- ** displayableWinContentOf().
- ** Answer a the content at the location indicated by index. Note
- ** that if this is a locator window, the string returned should be
- ** freed after use.
- */
-char *
-displayableWinContentOf (TuiGenWinInfoPtr winInfo, TuiWinElementPtr elementPtr)
-{
-
- char *string = nullStr ();
-
- if (elementPtr != (TuiWinElementPtr) NULL || winInfo->type == LOCATOR_WIN)
- {
- /*
- ** Now convert the line to a displayable string
- */
- switch (winInfo->type)
- {
- case SRC_WIN:
- case DISASSEM_WIN:
- string = elementPtr->whichElement.source.line;
- break;
- case CMD_WIN:
- string = elementPtr->whichElement.command.line;
- break;
- case LOCATOR_WIN:
- if ((string = (char *) xmalloc (
- (termWidth () + 1) * sizeof (char))) == (char *) NULL)
- string = nullStr ();
- else
- {
- char lineNo[50], pc[50], buf[50], *fname, *pname;
- register int strSize = termWidth (), i, procWidth, fileWidth;
-
- /*
- ** First determine the amount of file/proc name width
- ** we have available
- */
- i = strSize - (PC_WIDTH + LINE_WIDTH
- + 25 /* pc and line labels */
- + strlen (FILE_PREFIX) + 1 /* file label */
- + 15 /* procedure label */ );
- if (i >= FILE_WIDTH + PROC_WIDTH)
- {
- fileWidth = FILE_WIDTH;
- procWidth = PROC_WIDTH;
- }
- else
- {
- fileWidth = i / 2;
- procWidth = i - fileWidth;
- }
-
- /* Now convert elements to string form */
- if (elementPtr != (TuiWinElementPtr) NULL &&
- *elementPtr->whichElement.locator.fileName != (char) 0 &&
- srcWin->generic.isVisible)
- fname = elementPtr->whichElement.locator.fileName;
- else
- fname = "??";
- if (elementPtr != (TuiWinElementPtr) NULL &&
- *elementPtr->whichElement.locator.procName != (char) 0)
- pname = elementPtr->whichElement.locator.procName;
- else
- pname = "??";
- if (elementPtr != (TuiWinElementPtr) NULL &&
- elementPtr->whichElement.locator.lineNo > 0)
- sprintf (lineNo, "%d",
- elementPtr->whichElement.locator.lineNo);
- else
- strcpy (lineNo, "??");
- if (elementPtr != (TuiWinElementPtr) NULL &&
- elementPtr->whichElement.locator.addr != 0)
- sprintf (pc, "0x%lx",
- (long) elementPtr->whichElement.locator.addr);
- else
- strcpy (pc, "??");
- /*
- ** Now create the locator line from the string version
- ** of the elements. We could use sprintf() here but
- ** that wouldn't ensure that we don't overrun the size
- ** of the allocated buffer. strcat_to_buf() will.
- */
- *string = (char) 0;
- /* Filename */
- strcat_to_buf (string, strSize, " ");
- strcat_to_buf (string, strSize, FILE_PREFIX);
- if (strlen (fname) > fileWidth)
- {
- strncpy (buf, fname, fileWidth - 1);
- buf[fileWidth - 1] = '*';
- buf[fileWidth] = (char) 0;
- }
- else
- strcpy (buf, fname);
- strcat_to_buf (string, strSize, buf);
- /* procedure/class name */
- sprintf (buf, "%15s", PROC_PREFIX);
- strcat_to_buf (string, strSize, buf);
- if (strlen (pname) > procWidth)
- {
- strncpy (buf, pname, procWidth - 1);
- buf[procWidth - 1] = '*';
- buf[procWidth] = (char) 0;
- }
- else
- strcpy (buf, pname);
- strcat_to_buf (string, strSize, buf);
- sprintf (buf, "%10s", LINE_PREFIX);
- strcat_to_buf (string, strSize, buf);
- strcat_to_buf (string, strSize, lineNo);
- sprintf (buf, "%10s", PC_PREFIX);
- strcat_to_buf (string, strSize, buf);
- strcat_to_buf (string, strSize, pc);
- for (i = strlen (string); i < strSize; i++)
- string[i] = ' ';
- string[strSize] = (char) 0;
- }
- break;
- case EXEC_INFO_WIN:
- string = elementPtr->whichElement.simpleString;
- break;
- default:
- break;
- }
- }
- return string;
-} /* displayableWinContentOf */
-
-
-/*
- ** winContentAt().
- ** Answer a the content at the location indicated by index
- */
-char *
-displayableWinContentAt (TuiGenWinInfoPtr winInfo, int index)
-{
- return (displayableWinContentOf (winInfo, (TuiWinElementPtr) winInfo->content[index]));
-} /* winContentAt */
-
-
-/*
- ** winElementHeight().
- ** Answer the height of the element in lines
- */
-int
-winElementHeight (TuiGenWinInfoPtr winInfo, TuiWinElementPtr element)
-{
- int h;
-
- if (winInfo->type == DATA_WIN)
-/* FOR NOW SAY IT IS ONLY ONE LINE HIGH */
- h = 1;
- else
- h = 1;
-
- return h;
-} /* winElementHeight */
-
-
-/*
- ** winByName().
- ** Answer the window represented by name
- */
-TuiWinInfoPtr
-winByName (char *name)
-{
- TuiWinInfoPtr winInfo = (TuiWinInfoPtr) NULL;
- int i = 0;
-
- while (i < MAX_MAJOR_WINDOWS && m_winPtrIsNull (winInfo))
- {
- if (strcmp (name, winName (&(winList[i]->generic))) == 0)
- winInfo = winList[i];
- i++;
- }
-
- return winInfo;
-} /* winByName */
+}
/*
@@ -888,7 +615,8 @@ initContentElement (TuiWinElementPtr element, TuiWinType type)
element->whichElement.locator.addr = 0;
break;
case EXEC_INFO_WIN:
- element->whichElement.simpleString = blankStr ();
+ memset(element->whichElement.simpleString, ' ',
+ sizeof(element->whichElement.simpleString));
break;
default:
break;
@@ -1204,22 +932,6 @@ freeWinContent (TuiGenWinInfoPtr winInfo)
} /* freeWinContent */
-/*
- ** freeAllWindows().
- */
-void
-freeAllWindows (void)
-{
- TuiWinType type = SRC_WIN;
-
- for (; type < MAX_MAJOR_WINDOWS; type++)
- if (m_winPtrNotNull (winList[type]) &&
- winList[type]->generic.type != UNDEFINED_WIN)
- freeWindow (winList[type]);
- return;
-} /* freeAllWindows */
-
-
void
tuiDelDataWindows (TuiWinContent content, int contentSize)
{
diff --git a/gdb/tui/tuiData.h b/gdb/tui/tuiData.h
index 36d7853..8a4eb9f 100644
--- a/gdb/tui/tuiData.h
+++ b/gdb/tui/tuiData.h
@@ -71,10 +71,17 @@ TuiGenWinInfo, *TuiGenWinInfoPtr;
#define MIN_WIN_HEIGHT 3
#define MIN_CMD_WIN_HEIGHT 3
-#define FILE_PREFIX "File: "
-#define PROC_PREFIX "Procedure: "
+/* Strings to display in the TUI status line. */
+#define PROC_PREFIX "In: "
#define LINE_PREFIX "Line: "
-#define PC_PREFIX "pc: "
+#define PC_PREFIX "PC: "
+#define SINGLE_KEY "(SingleKey)"
+
+/* Minimum/Maximum length of some fields displayed in the TUI status line. */
+#define MIN_LINE_WIDTH 4 /* Use at least 4 digits for line numbers. */
+#define MIN_PROC_WIDTH 12
+#define MAX_TARGET_WIDTH 10
+#define MAX_PID_WIDTH 14
#define TUI_FLOAT_REGS_NAME "$FREGS"
#define TUI_FLOAT_REGS_NAME_LOWER "$fregs"
@@ -200,6 +207,20 @@ typedef struct _TuiLocatorElement
}
TuiLocatorElement, *TuiLocatorElementPtr;
+/* Flags to tell what kind of breakpoint is at current line. */
+#define TUI_BP_ENABLED 0x01
+#define TUI_BP_DISABLED 0x02
+#define TUI_BP_HIT 0x04
+#define TUI_BP_CONDITIONAL 0x08
+#define TUI_BP_HARDWARE 0x10
+
+/* Position of breakpoint markers in the exec info string. */
+#define TUI_BP_HIT_POS 0
+#define TUI_BP_BREAK_POS 1
+#define TUI_EXEC_POS 2
+#define TUI_EXECINFO_SIZE 4
+
+typedef char TuiExecInfoContent[TUI_EXECINFO_SIZE];
/* An content element in a window */
typedef union
@@ -209,7 +230,7 @@ typedef union
TuiDataElement data; /* elements of dataWindow */
TuiCommandElement command; /* command elements */
TuiLocatorElement locator; /* locator elements */
- char *simpleString; /* simple char based elements */
+ TuiExecInfoContent simpleString; /* simple char based elements */
}
TuiWhichElement, *TuiWhichElementPtr;
@@ -325,35 +346,23 @@ extern TuiWinContent allocContent (int, TuiWinType);
extern int addContentElements (TuiGenWinInfoPtr, int);
extern void initContentElement (TuiWinElementPtr, TuiWinType);
extern void freeWindow (TuiWinInfoPtr);
-extern void freeAllWindows (void);
extern void freeWinContent (TuiGenWinInfoPtr);
extern void freeDataContent (TuiWinContent, int);
extern void freeAllSourceWinsContent (void);
extern void tuiDelWindow (TuiWinInfoPtr);
extern void tuiDelDataWindows (TuiWinContent, int);
-extern TuiWinInfoPtr winByName (char *);
extern TuiWinInfoPtr partialWinByName (char *);
extern char *winName (TuiGenWinInfoPtr);
-extern char *displayableWinContentOf (TuiGenWinInfoPtr, TuiWinElementPtr);
-extern char *displayableWinContentAt (TuiGenWinInfoPtr, int);
-extern int winElementHeight (TuiGenWinInfoPtr, TuiWinElementPtr);
extern TuiLayoutType currentLayout (void);
extern void setCurrentLayoutTo (TuiLayoutType);
extern int termHeight (void);
extern void setTermHeightTo (int);
extern int termWidth (void);
extern void setTermWidthTo (int);
-extern int historyLimit (void);
-extern void setHistoryLimit (int);
extern void setGenWinOrigin (TuiGenWinInfoPtr, int, int);
extern TuiGenWinInfoPtr locatorWinInfoPtr (void);
extern TuiGenWinInfoPtr sourceExecInfoWinPtr (void);
extern TuiGenWinInfoPtr disassemExecInfoWinPtr (void);
-extern char *nullStr (void);
-extern char *blankStr (void);
-extern char *locationStr (void);
-extern char *breakStr (void);
-extern char *breakLocationStr (void);
extern TuiListPtr sourceWindows (void);
extern void clearSourceWindows (void);
extern void clearSourceWindowsDetail (void);
diff --git a/gdb/tui/tuiDisassem.c b/gdb/tui/tuiDisassem.c
index e3a19b3..50a6d0e 100644
--- a/gdb/tui/tuiDisassem.c
+++ b/gdb/tui/tuiDisassem.c
@@ -53,109 +53,240 @@
#include "tuiStack.h"
#include "tui-file.h"
+struct tui_asm_line
+{
+ CORE_ADDR addr;
+ char* addr_string;
+ char* insn;
+};
+
+/* Function to set the disassembly window's content.
+ Disassemble count lines starting at pc.
+ Return address of the count'th instruction after pc. */
+static CORE_ADDR
+tui_disassemble (struct tui_asm_line* lines, CORE_ADDR pc, int count)
+{
+ struct ui_file *gdb_dis_out;
+ disassemble_info asm_info;
-/*****************************************
-** STATIC LOCAL FUNCTIONS FORWARD DECLS **
-******************************************/
+ /* now init the ui_file structure */
+ gdb_dis_out = tui_sfileopen (256);
-static struct breakpoint *_hasBreak (CORE_ADDR);
+ memcpy (&asm_info, TARGET_PRINT_INSN_INFO, sizeof (asm_info));
+ asm_info.stream = gdb_dis_out;
+ if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
+ asm_info.endian = BFD_ENDIAN_BIG;
+ else
+ asm_info.endian = BFD_ENDIAN_LITTLE;
-/*****************************************
-** PUBLIC FUNCTIONS **
-******************************************/
+ if (TARGET_ARCHITECTURE != NULL)
+ asm_info.mach = TARGET_ARCHITECTURE->mach;
-/*
- ** tuiSetDisassemContent().
- ** Function to set the disassembly window's content.
- */
+ /* Now construct each line */
+ for (; count > 0; count--, lines++)
+ {
+ if (lines->addr_string)
+ xfree (lines->addr_string);
+ if (lines->insn)
+ xfree (lines->insn);
+
+ print_address (pc, gdb_dis_out);
+ lines->addr = pc;
+ lines->addr_string = xstrdup (tui_file_get_strbuf (gdb_dis_out));
+
+ ui_file_rewind (gdb_dis_out);
+
+ pc = pc + TARGET_PRINT_INSN (pc, &asm_info);
+
+ lines->insn = xstrdup (tui_file_get_strbuf (gdb_dis_out));
+
+ /* reset the buffer to empty */
+ ui_file_rewind (gdb_dis_out);
+ }
+ ui_file_delete (gdb_dis_out);
+ return pc;
+}
+
+/* Find the disassembly address that corresponds to FROM lines
+ above or below the PC. Variable sized instructions are taken
+ into account by the algorithm. */
+static CORE_ADDR
+tui_find_disassembly_address (CORE_ADDR pc, int from)
+{
+ register CORE_ADDR newLow;
+ int maxLines;
+ int i;
+ struct tui_asm_line* lines;
+
+ maxLines = (from > 0) ? from : - from;
+ if (maxLines <= 1)
+ return pc;
+
+ lines = (struct tui_asm_line*) alloca (sizeof (struct tui_asm_line)
+ * maxLines);
+ memset (lines, 0, sizeof (struct tui_asm_line) * maxLines);
+
+ newLow = pc;
+ if (from > 0)
+ {
+ tui_disassemble (lines, pc, maxLines);
+ newLow = lines[maxLines - 1].addr;
+ }
+ else
+ {
+ CORE_ADDR last_addr;
+ int pos;
+ struct minimal_symbol* msymbol;
+
+ /* Find backward an address which is a symbol
+ and for which disassembling from that address will fill
+ completely the window. */
+ pos = maxLines - 1;
+ do {
+ newLow -= 1 * maxLines;
+ msymbol = lookup_minimal_symbol_by_pc_section (newLow, 0);
+
+ if (msymbol)
+ newLow = SYMBOL_VALUE_ADDRESS (msymbol);
+ else
+ newLow += 1 * maxLines;
+
+ tui_disassemble (lines, newLow, maxLines);
+ last_addr = lines[pos].addr;
+ } while (last_addr > pc && msymbol);
+
+ /* Scan forward disassembling one instruction at a time
+ until the last visible instruction of the window
+ matches the pc. We keep the disassembled instructions
+ in the 'lines' window and shift it downward (increasing
+ its addresses). */
+ if (last_addr < pc)
+ do
+ {
+ CORE_ADDR next_addr;
+
+ pos++;
+ if (pos >= maxLines)
+ pos = 0;
+
+ next_addr = tui_disassemble (&lines[pos], last_addr, 1);
+
+ /* If there are some problems while disassembling exit. */
+ if (next_addr <= last_addr)
+ break;
+ last_addr = next_addr;
+ } while (last_addr <= pc);
+ pos++;
+ if (pos >= maxLines)
+ pos = 0;
+ newLow = lines[pos].addr;
+ }
+ for (i = 0; i < maxLines; i++)
+ {
+ xfree (lines[i].addr_string);
+ xfree (lines[i].insn);
+ }
+ return newLow;
+}
+
+/* Function to set the disassembly window's content. */
TuiStatus
-tuiSetDisassemContent (struct symtab *s, CORE_ADDR startAddr)
+tuiSetDisassemContent (CORE_ADDR pc)
{
TuiStatus ret = TUI_FAILURE;
- struct ui_file *gdb_dis_out;
-
- if (startAddr != 0)
+ register int i;
+ register int offset = disassemWin->detail.sourceInfo.horizontalOffset;
+ register int lineWidth, maxLines;
+ CORE_ADDR cur_pc;
+ TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
+ int tab_len = tuiDefaultTabLen ();
+ struct tui_asm_line* lines;
+ int insn_pos;
+ int addr_size, max_size;
+ char* line;
+
+ if (pc == 0)
+ return TUI_FAILURE;
+
+ ret = tuiAllocSourceBuffer (disassemWin);
+ if (ret != TUI_SUCCESS)
+ return ret;
+
+ disassemWin->detail.sourceInfo.startLineOrAddr.addr = pc;
+ cur_pc = (CORE_ADDR)
+ (((TuiWinElementPtr) locator->content[0])->whichElement.locator.addr);
+
+ maxLines = disassemWin->generic.height - 2; /* account for hilite */
+
+ /* Get temporary table that will hold all strings (addr & insn). */
+ lines = (struct tui_asm_line*) alloca (sizeof (struct tui_asm_line)
+ * maxLines);
+ memset (lines, 0, sizeof (struct tui_asm_line) * maxLines);
+
+ lineWidth = disassemWin->generic.width - 1;
+
+ tui_disassemble (lines, pc, maxLines);
+
+ /* See what is the maximum length of an address and of a line. */
+ addr_size = 0;
+ max_size = 0;
+ for (i = 0; i < maxLines; i++)
{
- register int i, desc;
+ size_t len = strlen (lines[i].addr_string);
+ if (len > addr_size)
+ addr_size = len;
- if ((ret = tuiAllocSourceBuffer (disassemWin)) == TUI_SUCCESS)
- {
- register int offset = disassemWin->detail.sourceInfo.horizontalOffset;
- register int threshold, curLine = 0, lineWidth, maxLines;
- CORE_ADDR newpc, pc;
- disassemble_info asmInfo;
- TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
-extern void strcat_address (CORE_ADDR, char *, int);
-extern void strcat_address_numeric (CORE_ADDR, int, char *, int);
- int curLen = 0;
- int tab_len = tuiDefaultTabLen ();
-
- maxLines = disassemWin->generic.height - 2; /* account for hilite */
- lineWidth = disassemWin->generic.width - 1;
- threshold = (lineWidth - 1) + offset;
-
- /* now init the ui_file structure */
- gdb_dis_out = tui_sfileopen (threshold);
-
- asmInfo = tm_print_insn_info;
- asmInfo.stream = gdb_dis_out;
-
- disassemWin->detail.sourceInfo.startLineOrAddr.addr = startAddr;
-
- /* Now construct each line */
- for (curLine = 0, pc = startAddr; (curLine < maxLines);)
- {
- TuiWinElementPtr element = (TuiWinElementPtr) disassemWin->generic.content[curLine];
- struct breakpoint *bp;
-
- print_address (pc, gdb_dis_out);
-
- curLen = strlen (tui_file_get_strbuf (gdb_dis_out));
- i = curLen - ((curLen / tab_len) * tab_len);
-
- /* adjust buffer length if necessary */
- tui_file_adjust_strbuf ((tab_len - i > 0) ? (tab_len - i) : 0, gdb_dis_out);
-
- /* Add spaces to make the instructions start onthe same column */
- while (i < tab_len)
- {
- tui_file_get_strbuf (gdb_dis_out)[curLen] = ' ';
- i++;
- curLen++;
- }
- tui_file_get_strbuf (gdb_dis_out)[curLen] = '\0';
-
- newpc = pc + ((*tm_print_insn) (pc, &asmInfo));
-
- /* Now copy the line taking the offset into account */
- if (strlen (tui_file_get_strbuf (gdb_dis_out)) > offset)
- strcpy (element->whichElement.source.line,
- &(tui_file_get_strbuf (gdb_dis_out)[offset]));
- else
- element->whichElement.source.line[0] = '\0';
- element->whichElement.source.lineOrAddr.addr = pc;
- element->whichElement.source.isExecPoint =
- (pc == (CORE_ADDR) ((TuiWinElementPtr) locator->content[0])->whichElement.locator.addr);
- bp = _hasBreak (pc);
- element->whichElement.source.hasBreak =
- (bp != (struct breakpoint *) NULL &&
- (!element->whichElement.source.isExecPoint ||
- (bp->disposition != disp_del || bp->hit_count <= 0)));
- curLine++;
- pc = newpc;
- /* reset the buffer to empty */
- tui_file_get_strbuf (gdb_dis_out)[0] = '\0';
- }
- ui_file_delete (gdb_dis_out);
- gdb_dis_out = NULL;
- disassemWin->generic.contentSize = curLine;
- ret = TUI_SUCCESS;
- }
+ len = strlen (lines[i].insn) + tab_len;
+ if (len > max_size)
+ max_size = len;
}
+ max_size += addr_size + tab_len;
+
+ /* Allocate memory to create each line. */
+ line = (char*) alloca (max_size);
+ insn_pos = (1 + (addr_size / tab_len)) * tab_len;
- return ret;
-} /* tuiSetDisassemContent */
+ /* Now construct each line */
+ for (i = 0; i < maxLines; i++)
+ {
+ TuiWinElementPtr element;
+ TuiSourceElement* src;
+ int curLen;
+
+ element = (TuiWinElementPtr) disassemWin->generic.content[i];
+ src = &element->whichElement.source;
+ strcpy (line, lines[i].addr_string);
+ curLen = strlen (line);
+
+ /* Add spaces to make the instructions start on the same column */
+ while (curLen < insn_pos)
+ {
+ strcat (line, " ");
+ curLen++;
+ }
+
+ strcat (line, lines[i].insn);
+
+ /* Now copy the line taking the offset into account */
+ if (strlen (line) > offset)
+ strcpy (src->line, &line[offset]);
+ else
+ src->line[0] = '\0';
+
+ src->lineOrAddr.addr = lines[i].addr;
+ src->isExecPoint = lines[i].addr == cur_pc;
+
+ /* See whether there is a breakpoint installed. */
+ src->hasBreak = (!src->isExecPoint
+ && breakpoint_here_p (pc) != no_breakpoint_here);
+
+ xfree (lines[i].addr_string);
+ xfree (lines[i].insn);
+ }
+ disassemWin->generic.contentSize = i;
+ return TUI_SUCCESS;
+}
/*
@@ -196,7 +327,7 @@ tuiShowDisassemAndUpdateSource (CORE_ADDR startAddr)
if (currentLayout () == SRC_DISASSEM_COMMAND)
{
TuiLineOrAddress val;
- TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
+
/*
** Update what is in the source window if it is displayed too,
** note that it follows what is in the disassembly window and visa-versa
@@ -249,8 +380,25 @@ tuiGetBeginAsmAddress (void)
addr = element->addr;
return addr;
-}
+} /* tuiGetBeginAsmAddress */
+
+/* Determine what the low address will be to display in the TUI's
+ disassembly window. This may or may not be the same as the
+ low address input. */
+CORE_ADDR
+tuiGetLowDisassemblyAddress (CORE_ADDR low, CORE_ADDR pc)
+{
+ int pos;
+ /* Determine where to start the disassembly so that the pc is about in the
+ middle of the viewport. */
+ pos = tuiDefaultWinViewportHeight (DISASSEM_WIN, DISASSEM_COMMAND) / 2;
+ pc = tui_find_disassembly_address (pc, -pos);
+
+ if (pc < low)
+ pc = low;
+ return pc;
+}
/*
** tuiVerticalDisassemScroll().
@@ -262,9 +410,11 @@ tuiVerticalDisassemScroll (TuiScrollDirection scrollDirection,
{
if (disassemWin->generic.content != (OpaquePtr) NULL)
{
- CORE_ADDR pc, lowAddr;
+ CORE_ADDR pc;
TuiWinContent content;
struct symtab *s;
+ TuiLineOrAddress val;
+ int maxLines, dir;
content = (TuiWinContent) disassemWin->generic.content;
if (current_source_symtab == (struct symtab *) NULL)
@@ -272,60 +422,12 @@ tuiVerticalDisassemScroll (TuiScrollDirection scrollDirection,
else
s = current_source_symtab;
+ /* account for hilite */
+ maxLines = disassemWin->generic.height - 2;
pc = content[0]->whichElement.source.lineOrAddr.addr;
- if (find_pc_partial_function (pc, (char **) NULL, &lowAddr,
- (CORE_ADDR) 0) == 0)
- error ("No function contains program counter for selected frame.\n");
- else
- {
- register int line = 0;
- register CORE_ADDR newLow;
- bfd_byte buffer[4];
- TuiLineOrAddress val;
-
- newLow = pc;
- if (scrollDirection == FORWARD_SCROLL)
- {
- for (; line < numToScroll; line++)
- newLow += sizeof (bfd_getb32 (buffer));
- }
- else
- {
- for (; newLow != 0 && line < numToScroll; line++)
- newLow -= sizeof (bfd_getb32 (buffer));
- }
- val.addr = newLow;
- tuiUpdateSourceWindowAsIs (disassemWin, s, val, FALSE);
- }
- }
-
- return;
-} /* tuiVerticalDisassemScroll */
-
+ dir = (scrollDirection == FORWARD_SCROLL) ? maxLines : - maxLines;
-
-/*****************************************
-** STATIC LOCAL FUNCTIONS **
-******************************************/
-/*
- ** _hasBreak().
- ** Answer whether there is a break point at the input line in the
- ** source file indicated
- */
-static struct breakpoint *
-_hasBreak (CORE_ADDR addr)
-{
- struct breakpoint *bpWithBreak = (struct breakpoint *) NULL;
- struct breakpoint *bp;
- extern struct breakpoint *breakpoint_chain;
-
-
- for (bp = breakpoint_chain;
- (bp != (struct breakpoint *) NULL &&
- bpWithBreak == (struct breakpoint *) NULL);
- bp = bp->next)
- if (addr == bp->address)
- bpWithBreak = bp;
-
- return bpWithBreak;
-} /* _hasBreak */
+ val.addr = tui_find_disassembly_address (pc, dir);
+ tuiUpdateSourceWindowAsIs (disassemWin, s, val, FALSE);
+ }
+}
diff --git a/gdb/tui/tuiDisassem.h b/gdb/tui/tuiDisassem.h
index f0aabdf..6728425 100644
--- a/gdb/tui/tuiDisassem.h
+++ b/gdb/tui/tuiDisassem.h
@@ -31,7 +31,7 @@
/*****************************************
** PUBLIC FUNCTION EXTERNAL DECLS **
******************************************/
-extern TuiStatus tuiSetDisassemContent (struct symtab *, CORE_ADDR);
+extern TuiStatus tuiSetDisassemContent (CORE_ADDR);
extern void tuiShowDisassem (CORE_ADDR);
extern void tuiShowDisassemAndUpdateSource (CORE_ADDR);
extern void tuiVerticalDisassemScroll (TuiScrollDirection, int);
diff --git a/gdb/tui/tuiIO.c b/gdb/tui/tuiIO.c
index d664128..01ebbe6 100644
--- a/gdb/tui/tuiIO.c
+++ b/gdb/tui/tuiIO.c
@@ -44,6 +44,7 @@
#include "terminal.h"
#include "target.h"
#include "event-loop.h"
+#include "event-top.h"
#include "command.h"
#include "top.h"
#include "readline/readline.h"
@@ -59,6 +60,10 @@
#include <fcntl.h>
#include <signal.h>
+/* Use definition from readline 4.3. */
+#undef CTRL_CHAR
+#define CTRL_CHAR(c) ((c) < control_character_threshold && (((c) & 0x80) == 0))
+
/* This file controls the IO interactions between gdb and curses.
When the TUI is enabled, gdb has two modes a curses and a standard
mode.
@@ -75,14 +80,24 @@
is as if TUI is not used. Readline also uses its original getc()
function with stdin.
- Note: the current readline is not clean in its management of the output.
- Even if we install a redisplay handler, it sometimes writes on a stdout
- file. It is important to redirect every output produced by readline,
- otherwise the curses window will be garbled. This is implemented with
- a pipe that TUI reads and readline writes to. A gdb input handler
+ Note SCz/2001-07-21: the current readline is not clean in its management of
+ the output. Even if we install a redisplay handler, it sometimes writes on
+ a stdout file. It is important to redirect every output produced by
+ readline, otherwise the curses window will be garbled. This is implemented
+ with a pipe that TUI reads and readline writes to. A gdb input handler
is created so that reading the pipe is handled automatically.
This will probably not work on non-Unix platforms. The best fix is
- to make readline clean enougth so that is never write on stdout. */
+ to make readline clean enougth so that is never write on stdout.
+
+ Note SCz/2002-09-01: we now use more readline hooks and it seems that
+ with them we don't need the pipe anymore (verified by creating the pipe
+ and closing its end so that write causes a SIGPIPE). The old pipe code
+ is still there and can be conditionally removed by
+ #undef TUI_USE_PIPE_FOR_READLINE. */
+
+/* For gdb 5.3, prefer to continue the pipe hack as a backup wheel. */
+#define TUI_USE_PIPE_FOR_READLINE
+/*#undef TUI_USE_PIPE_FOR_READLINE*/
/* TUI output files. */
static struct ui_file *tui_stdout;
@@ -105,10 +120,21 @@ static int tui_old_readline_echoing_p;
Should be removed when readline is clean. */
static FILE *tui_rl_outstream;
static FILE *tui_old_rl_outstream;
+#ifdef TUI_USE_PIPE_FOR_READLINE
static int tui_readline_pipe[2];
+#endif
static unsigned int _tuiHandleResizeDuringIO (unsigned int);
+static void
+tui_putc (char c)
+{
+ char buf[2];
+
+ buf[0] = c;
+ buf[1] = 0;
+ tui_puts (buf);
+}
/* Print the string in the curses command window. */
void
@@ -147,7 +173,7 @@ tui_puts (const char *string)
/* Readline callback.
Redisplay the command line with its prompt after readline has
changed the edited text. */
-static void
+void
tui_redisplay_readline (void)
{
int prev_col;
@@ -160,7 +186,10 @@ tui_redisplay_readline (void)
char *prompt;
int start_line;
- prompt = get_prompt ();
+ if (tui_current_key_mode == tui_single_key_mode)
+ prompt = "";
+ else
+ prompt = get_prompt ();
c_pos = -1;
c_line = -1;
@@ -235,6 +264,7 @@ tui_deprep_terminal (void)
{
}
+#ifdef TUI_USE_PIPE_FOR_READLINE
/* Read readline output pipe and feed the command window with it.
Should be removed when readline is clean. */
static void
@@ -250,6 +280,193 @@ tui_readline_output (int code, gdb_client_data data)
tui_puts (buf);
}
}
+#endif
+
+/* Return the portion of PATHNAME that should be output when listing
+ possible completions. If we are hacking filename completion, we
+ are only interested in the basename, the portion following the
+ final slash. Otherwise, we return what we were passed.
+
+ Comes from readline/complete.c */
+static char *
+printable_part (pathname)
+ char *pathname;
+{
+ char *temp;
+
+ temp = rl_filename_completion_desired ? strrchr (pathname, '/') : (char *)NULL;
+#if defined (__MSDOS__)
+ if (rl_filename_completion_desired && temp == 0 && isalpha (pathname[0]) && pathname[1] == ':')
+ temp = pathname + 1;
+#endif
+ return (temp ? ++temp : pathname);
+}
+
+/* Output TO_PRINT to rl_outstream. If VISIBLE_STATS is defined and we
+ are using it, check for and output a single character for `special'
+ filenames. Return the number of characters we output. */
+
+#define PUTX(c) \
+ do { \
+ if (CTRL_CHAR (c)) \
+ { \
+ tui_puts ("^"); \
+ tui_putc (UNCTRL (c)); \
+ printed_len += 2; \
+ } \
+ else if (c == RUBOUT) \
+ { \
+ tui_puts ("^?"); \
+ printed_len += 2; \
+ } \
+ else \
+ { \
+ tui_putc (c); \
+ printed_len++; \
+ } \
+ } while (0)
+
+static int
+print_filename (to_print, full_pathname)
+ char *to_print, *full_pathname;
+{
+ int printed_len = 0;
+ char *s;
+
+ for (s = to_print; *s; s++)
+ {
+ PUTX (*s);
+ }
+ return printed_len;
+}
+
+/* The user must press "y" or "n". Non-zero return means "y" pressed.
+ Comes from readline/complete.c */
+static int
+get_y_or_n ()
+{
+ extern int _rl_abort_internal ();
+ int c;
+
+ for (;;)
+ {
+ c = rl_read_key ();
+ if (c == 'y' || c == 'Y' || c == ' ')
+ return (1);
+ if (c == 'n' || c == 'N' || c == RUBOUT)
+ return (0);
+ if (c == ABORT_CHAR)
+ _rl_abort_internal ();
+ beep ();
+ }
+}
+
+/* A convenience function for displaying a list of strings in
+ columnar format on readline's output stream. MATCHES is the list
+ of strings, in argv format, LEN is the number of strings in MATCHES,
+ and MAX is the length of the longest string in MATCHES.
+
+ Comes from readline/complete.c and modified to write in
+ the TUI command window using tui_putc/tui_puts. */
+static void
+tui_rl_display_match_list (matches, len, max)
+ char **matches;
+ int len, max;
+{
+ typedef int QSFUNC (const void *, const void *);
+ extern int _rl_qsort_string_compare (const void*, const void*);
+ extern int _rl_print_completions_horizontally;
+
+ int count, limit, printed_len;
+ int i, j, k, l;
+ char *temp;
+
+ /* Screen dimension correspond to the TUI command window. */
+ int screenwidth = cmdWin->generic.width;
+
+ /* If there are many items, then ask the user if she really wants to
+ see them all. */
+ if (len >= rl_completion_query_items)
+ {
+ char msg[256];
+
+ sprintf (msg, "\nDisplay all %d possibilities? (y or n)", len);
+ tui_puts (msg);
+ if (get_y_or_n () == 0)
+ {
+ tui_puts ("\n");
+ return;
+ }
+ }
+
+ /* How many items of MAX length can we fit in the screen window? */
+ max += 2;
+ limit = screenwidth / max;
+ if (limit != 1 && (limit * max == screenwidth))
+ limit--;
+
+ /* Avoid a possible floating exception. If max > screenwidth,
+ limit will be 0 and a divide-by-zero fault will result. */
+ if (limit == 0)
+ limit = 1;
+
+ /* How many iterations of the printing loop? */
+ count = (len + (limit - 1)) / limit;
+
+ /* Watch out for special case. If LEN is less than LIMIT, then
+ just do the inner printing loop.
+ 0 < len <= limit implies count = 1. */
+
+ /* Sort the items if they are not already sorted. */
+ if (rl_ignore_completion_duplicates == 0)
+ qsort (matches + 1, len, sizeof (char *),
+ (QSFUNC *)_rl_qsort_string_compare);
+
+ tui_putc ('\n');
+
+ if (_rl_print_completions_horizontally == 0)
+ {
+ /* Print the sorted items, up-and-down alphabetically, like ls. */
+ for (i = 1; i <= count; i++)
+ {
+ for (j = 0, l = i; j < limit; j++)
+ {
+ if (l > len || matches[l] == 0)
+ break;
+ else
+ {
+ temp = printable_part (matches[l]);
+ printed_len = print_filename (temp, matches[l]);
+
+ if (j + 1 < limit)
+ for (k = 0; k < max - printed_len; k++)
+ tui_putc (' ');
+ }
+ l += count;
+ }
+ tui_putc ('\n');
+ }
+ }
+ else
+ {
+ /* Print the sorted items, across alphabetically, like ls -x. */
+ for (i = 1; matches[i]; i++)
+ {
+ temp = printable_part (matches[i]);
+ printed_len = print_filename (temp, matches[i]);
+ /* Have we reached the end of this line? */
+ if (matches[i+1])
+ {
+ if (i && (limit > 1) && (i % limit) == 0)
+ tui_putc ('\n');
+ else
+ for (k = 0; k < max - printed_len; k++)
+ tui_putc (' ');
+ }
+ }
+ tui_putc ('\n');
+ }
+}
/* Setup the IO for curses or non-curses mode.
- In non-curses mode, readline and gdb use the standard input and
@@ -280,6 +497,8 @@ tui_setup_io (int mode)
readline_echoing_p = 0;
rl_outstream = tui_rl_outstream;
rl_prompt = 0;
+ rl_completion_display_matches_hook = tui_rl_display_match_list;
+ rl_already_prompted = 0;
/* Keep track of previous gdb output. */
tui_old_stdout = gdb_stdout;
@@ -311,7 +530,9 @@ tui_setup_io (int mode)
rl_prep_term_function = tui_old_rl_prep_terminal;
rl_getc_function = tui_old_rl_getc_function;
rl_outstream = tui_old_rl_outstream;
+ rl_completion_display_matches_hook = 0;
readline_echoing_p = tui_old_readline_echoing_p;
+ rl_already_prompted = 1;
/* Save tty for SIGCONT. */
savetty ();
@@ -359,6 +580,7 @@ tui_initialize_io ()
a init_ui_hook. */
uiout = cli_out_new (gdb_stdout);
+#ifdef TUI_USE_PIPE_FOR_READLINE
/* Temporary solution for readline writing to stdout:
redirect readline output in a pipe, read that pipe and
output the content in the curses command window. */
@@ -382,8 +604,10 @@ tui_initialize_io ()
(void) fcntl (tui_readline_pipe[0], F_SETFL, O_NDELAY);
#endif
#endif
-
add_file_handler (tui_readline_pipe[0], tui_readline_output, 0);
+#else
+ tui_rl_outstream = stdout;
+#endif
}
/* Get a character from the command window. This is called from the readline
@@ -396,9 +620,11 @@ tui_getc (FILE *fp)
w = cmdWin->generic.handle;
+#ifdef TUI_USE_PIPE_FOR_READLINE
/* Flush readline output. */
tui_readline_output (GDB_READABLE, 0);
-
+#endif
+
ch = wgetch (w);
ch = _tuiHandleResizeDuringIO (ch);
diff --git a/gdb/tui/tuiIO.h b/gdb/tui/tuiIO.h
index 2ad92ce..49c26fd 100644
--- a/gdb/tui/tuiIO.h
+++ b/gdb/tui/tuiIO.h
@@ -1,5 +1,5 @@
/* TUI support I/O functions.
- Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+ Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
Contributed by Hewlett-Packard Company.
This file is part of GDB.
@@ -36,6 +36,11 @@ extern void tui_initialize_io (void);
/* Get a character from the command window. */
extern int tui_getc (FILE*);
+/* Readline callback.
+ Redisplay the command line with its prompt after readline has
+ changed the edited text. */
+extern void tui_redisplay_readline (void);
+
#define m_tuiStartNewLine tuiStartNewLines(1)
#define m_isStartSequence(ch) (ch == 27)
diff --git a/gdb/tui/tuiSource.c b/gdb/tui/tuiSource.c
index f844b36..0d59bf0 100644
--- a/gdb/tui/tuiSource.c
+++ b/gdb/tui/tuiSource.c
@@ -54,17 +54,7 @@
#include "tuiSource.h"
-/*****************************************
-** STATIC LOCAL FUNCTIONS FORWARD DECLS **
-******************************************/
-
-static struct breakpoint *_hasBreak (char *, int);
-
-
-/*
- ** tuiSetSourceContent().
- ** Function to display source in the source window.
- */
+/* Function to display source in the source window. */
TuiStatus
tuiSetSourceContent (struct symtab *s, int lineNo, int noerror)
{
@@ -79,10 +69,8 @@ tuiSetSourceContent (struct symtab *s, int lineNo, int noerror)
if ((ret = tuiAllocSourceBuffer (srcWin)) == TUI_SUCCESS)
{
lineWidth = srcWin->generic.width - 1;
- /*
- ** Take hilite (window border) into account, when calculating
- ** the number of lines
- */
+ /* Take hilite (window border) into account, when calculating
+ the number of lines */
nlines = (lineNo + (srcWin->generic.height - 2)) - lineNo;
desc = open_source_file (s);
if (desc < 0)
@@ -141,7 +129,6 @@ tuiSetSourceContent (struct symtab *s, int lineNo, int noerror)
{
TuiWinElementPtr element = (TuiWinElementPtr)
srcWin->generic.content[curLine];
- struct breakpoint *bp;
/* get the first character in the line */
c = fgetc (stream);
@@ -163,10 +150,8 @@ tuiSetSourceContent (struct symtab *s, int lineNo, int noerror)
}
srcLine[curLen] = (char) 0;
- /*
- ** Set whether element is the execution point and
- ** whether there is a break point on it.
- */
+ /* Set whether element is the execution point and
+ whether there is a break point on it. */
element->whichElement.source.lineOrAddr.lineNo =
curLineNo;
element->whichElement.source.isExecPoint =
@@ -175,11 +160,6 @@ tuiSetSourceContent (struct symtab *s, int lineNo, int noerror)
s->filename) == 0
&& curLineNo == ((TuiWinElementPtr)
locator->content[0])->whichElement.locator.lineNo);
- bp = _hasBreak (s->filename, curLineNo);
- element->whichElement.source.hasBreak =
- (bp != (struct breakpoint *) NULL &&
- (!element->whichElement.source.isExecPoint ||
- (bp->disposition != disp_del || bp->hit_count <= 0)));
if (c != EOF)
{
i = strlen (srcLine) - 1;
@@ -199,13 +179,11 @@ tuiSetSourceContent (struct symtab *s, int lineNo, int noerror)
srcLine[i] = '?';
}
else
- { /*
- ** Store the charcter in the line
- ** buffer. If it is a tab, then
- ** translate to the correct number of
- ** chars so we don't overwrite our
- ** buffer.
- */
+ { /* Store the charcter in the line
+ buffer. If it is a tab, then
+ translate to the correct number of
+ chars so we don't overwrite our
+ buffer. */
if (c == '\t')
{
int j, maxTabLen = tuiDefaultTabLen ();
@@ -224,10 +202,8 @@ tuiSetSourceContent (struct symtab *s, int lineNo, int noerror)
srcLine[i + 1] = 0;
}
else
- { /*
- ** if we have not reached EOL, then eat
- ** chars until we do
- */
+ { /* If we have not reached EOL, then eat
+ chars until we do */
while (c != EOF && c != '\n' && c != '\r')
c = fgetc (stream);
}
@@ -257,7 +233,7 @@ tuiSetSourceContent (struct symtab *s, int lineNo, int noerror)
}
}
return ret;
-} /* tuiSetSourceContent */
+}
/* elz: this function sets the contents of the source window to empty
@@ -328,44 +304,30 @@ tuiSetSourceContentNil (TuiWinInfoPtr winInfo, char *warning_string)
curr_line++;
} /* end while */
-
-} /*tuiSetSourceContentNil */
+}
-
-
-/*
- ** tuiShowSource().
- ** Function to display source in the source window. This function
- ** initializes the horizontal scroll to 0.
- */
+/* Function to display source in the source window. This function
+ initializes the horizontal scroll to 0. */
void
tuiShowSource (struct symtab *s, TuiLineOrAddress line, int noerror)
{
srcWin->detail.sourceInfo.horizontalOffset = 0;
tuiUpdateSourceWindowAsIs(srcWin, s, line, noerror);
-
- return;
-} /* tuiShowSource */
+}
-/*
- ** tuiSourceIsDisplayed().
- ** Answer whether the source is currently displayed in the source window.
- */
+/* Answer whether the source is currently displayed in the source window. */
int
tuiSourceIsDisplayed (char *fname)
{
return (srcWin->generic.contentInUse &&
(strcmp (((TuiWinElementPtr) (locatorWinInfoPtr ())->
content[0])->whichElement.locator.fileName, fname) == 0));
-} /* tuiSourceIsDisplayed */
+}
-/*
- ** tuiVerticalSourceScroll().
- ** Scroll the source forward or backward vertically
- */
+/* Scroll the source forward or backward vertically. */
void
tuiVerticalSourceScroll (TuiScrollDirection scrollDirection,
int numToScroll)
@@ -397,39 +359,7 @@ tuiVerticalSourceScroll (TuiScrollDirection scrollDirection,
if (l.lineNo <= 0)
l.lineNo = 1;
}
- if (identify_source_line (s, l.lineNo, 0, -1) == 1)
- tuiUpdateSourceWindowAsIs (srcWin, s, l, FALSE);
- }
-
- return;
-} /* tuiVerticalSourceScroll */
-
-/*****************************************
-** STATIC LOCAL FUNCTIONS **
-******************************************/
-
-/*
- ** _hasBreak().
- ** Answer whether there is a break point at the input line in
- ** the source file indicated
- */
-static struct breakpoint *
-_hasBreak (char *sourceFileName, int lineNo)
-{
- struct breakpoint *bpWithBreak = (struct breakpoint *) NULL;
- struct breakpoint *bp;
- extern struct breakpoint *breakpoint_chain;
-
-
- for (bp = breakpoint_chain;
- (bp != (struct breakpoint *) NULL &&
- bpWithBreak == (struct breakpoint *) NULL);
- bp = bp->next)
- if (bp->source_file
- && (strcmp (sourceFileName, bp->source_file) == 0)
- && (lineNo == bp->line_number))
- bpWithBreak = bp;
-
- return bpWithBreak;
-} /* _hasBreak */
+ print_source_lines (s, l.lineNo, l.lineNo + 1, 0);
+ }
+}
diff --git a/gdb/tui/tuiSourceWin.c b/gdb/tui/tuiSourceWin.c
index 95b6cdf..696b8b2 100644
--- a/gdb/tui/tuiSourceWin.c
+++ b/gdb/tui/tuiSourceWin.c
@@ -111,7 +111,7 @@ tuiUpdateSourceWindowAsIs (TuiWinInfoPtr winInfo, struct symtab *s,
if (winInfo->generic.type == SRC_WIN)
ret = tuiSetSourceContent (s, lineOrAddr.lineNo, noerror);
else
- ret = tuiSetDisassemContent (s, lineOrAddr.addr);
+ ret = tuiSetDisassemContent (lineOrAddr.addr);
if (ret == TUI_FAILURE)
{
@@ -120,7 +120,7 @@ tuiUpdateSourceWindowAsIs (TuiWinInfoPtr winInfo, struct symtab *s,
}
else
{
- tuiEraseSourceContent (winInfo, NO_EMPTY_SOURCE_PROMPT);
+ tui_update_breakpoint_info (winInfo, 0);
tuiShowSourceContent (winInfo);
tuiUpdateExecInfo (winInfo);
if (winInfo->generic.type == SRC_WIN)
@@ -375,90 +375,114 @@ tuiHorizontalSourceScroll (TuiWinInfoPtr winInfo,
} /* tuiHorizontalSourceScroll */
-/*
- ** tuiSetHasExecPointAt().
- ** Set or clear the hasBreak flag in the line whose line is lineNo.
- */
+/* Set or clear the hasBreak flag in the line whose line is lineNo. */
void
tuiSetIsExecPointAt (TuiLineOrAddress l, TuiWinInfoPtr winInfo)
{
+ int changed = 0;
int i;
TuiWinContent content = (TuiWinContent) winInfo->generic.content;
i = 0;
while (i < winInfo->generic.contentSize)
{
+ int newState;
+
if (content[i]->whichElement.source.lineOrAddr.addr == l.addr)
- content[i]->whichElement.source.isExecPoint = TRUE;
+ newState = TRUE;
else
- content[i]->whichElement.source.isExecPoint = FALSE;
+ newState = FALSE;
+ if (newState != content[i]->whichElement.source.isExecPoint)
+ {
+ changed++;
+ content[i]->whichElement.source.isExecPoint = newState;
+ tui_show_source_line (winInfo, i + 1);
+ }
i++;
}
+ if (changed)
+ tuiRefreshWin (&winInfo->generic);
+}
- return;
-} /* tuiSetIsExecPointAt */
-
-/*
- ** tuiSetHasBreakAt().
- ** Set or clear the hasBreak flag in the line whose line is lineNo.
- */
+/* Update the execution windows to show the active breakpoints.
+ This is called whenever a breakpoint is inserted, removed or
+ has its state changed. */
void
-tuiSetHasBreakAt (struct breakpoint *bp, TuiWinInfoPtr winInfo, int hasBreak)
+tui_update_all_breakpoint_info ()
{
+ TuiList* list = sourceWindows ();
int i;
- TuiWinContent content = (TuiWinContent) winInfo->generic.content;
- i = 0;
- while (i < winInfo->generic.contentSize)
+ for (i = 0; i < list->count; i++)
{
- int gotIt;
- TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
+ TuiWinInfoPtr win = (TuiWinInfoPtr) list->list[i];
- if (winInfo == srcWin)
- {
- TuiSourceInfoPtr src = &winInfo->detail.sourceInfo;
-
- gotIt = (src->filename != (char *) NULL &&
- bp->source_file != NULL &&
- (strcmp (bp->source_file, src->filename) == 0) &&
- content[i]->whichElement.source.lineOrAddr.lineNo ==
- bp->line_number);
- }
- else
- gotIt = (content[i]->whichElement.source.lineOrAddr.addr
- == bp->address);
- if (gotIt)
- {
- content[i]->whichElement.source.hasBreak = hasBreak;
- break;
- }
- i++;
+ if (tui_update_breakpoint_info (win, FALSE))
+ {
+ tuiUpdateExecInfo (win);
+ }
}
-
- return;
-} /* tuiSetHasBreakAt */
+}
-/*
- ** tuiAllSetHasBreakAt().
- ** Set or clear the hasBreak flag in all displayed source windows.
- */
-void
-tuiAllSetHasBreakAt (struct breakpoint *bp, int hasBreak)
+/* Scan the source window and the breakpoints to update the
+ hasBreak information for each line.
+ Returns 1 if something changed and the execution window
+ must be refreshed. */
+int
+tui_update_breakpoint_info (TuiWinInfoPtr win, int current_only)
{
int i;
+ int need_refresh = 0;
+ TuiSourceInfoPtr src = &win->detail.sourceInfo;
- for (i = 0; i < (sourceWindows ())->count; i++)
- tuiSetHasBreakAt (bp,
- (TuiWinInfoPtr) (sourceWindows ())->list[i], hasBreak);
-
- return;
-} /* tuiAllSetHasBreakAt */
-
+ for (i = 0; i < win->generic.contentSize; i++)
+ {
+ struct breakpoint *bp;
+ extern struct breakpoint *breakpoint_chain;
+ int mode;
+ TuiSourceElement* line;
+
+ line = &((TuiWinElementPtr) win->generic.content[i])->whichElement.source;
+ if (current_only && !line->isExecPoint)
+ continue;
+
+ /* Scan each breakpoint to see if the current line has something to
+ do with it. Identify enable/disabled breakpoints as well as
+ those that we already hit. */
+ mode = 0;
+ for (bp = breakpoint_chain;
+ bp != (struct breakpoint *) NULL;
+ bp = bp->next)
+ {
+ if ((win == srcWin
+ && bp->source_file
+ && (strcmp (src->filename, bp->source_file) == 0)
+ && bp->line_number == line->lineOrAddr.lineNo)
+ || (win == disassemWin
+ && bp->address == line->lineOrAddr.addr))
+ {
+ if (bp->enable_state == bp_disabled)
+ mode |= TUI_BP_DISABLED;
+ else
+ mode |= TUI_BP_ENABLED;
+ if (bp->hit_count)
+ mode |= TUI_BP_HIT;
+ if (bp->cond)
+ mode |= TUI_BP_CONDITIONAL;
+ if (bp->type == bp_hardware_breakpoint)
+ mode |= TUI_BP_HARDWARE;
+ }
+ }
+ if (line->hasBreak != mode)
+ {
+ line->hasBreak = mode;
+ need_refresh = 1;
+ }
+ }
+ return need_refresh;
+}
-/*********************************
-** EXECUTION INFO FUNCTIONS **
-*********************************/
/*
** tuiSetExecInfoContent().
@@ -483,56 +507,37 @@ tuiSetExecInfoContent (TuiWinInfoPtr winInfo)
{
int i;
+ tui_update_breakpoint_info (winInfo, 1);
for (i = 0; i < winInfo->generic.contentSize; i++)
{
TuiWinElementPtr element;
TuiWinElementPtr srcElement;
+ int mode;
element = (TuiWinElementPtr) execInfoPtr->content[i];
srcElement = (TuiWinElementPtr) winInfo->generic.content[i];
- /*
- ** First check to see if we have a breakpoint that is
- ** temporary. If so, and this is our current execution point,
- ** then clear the break indicator.
- */
- if (srcElement->whichElement.source.hasBreak &&
- srcElement->whichElement.source.isExecPoint)
- {
- struct breakpoint *bp;
- int found = FALSE;
- extern struct breakpoint *breakpoint_chain;
-
- for (bp = breakpoint_chain;
- (bp != (struct breakpoint *) NULL && !found);
- bp = bp->next)
- {
- found =
- (winInfo == srcWin &&
- bp->line_number ==
- srcElement->whichElement.source.lineOrAddr.lineNo) ||
- (winInfo == disassemWin &&
- bp->address == (CORE_ADDR)
- srcElement->whichElement.source.lineOrAddr.addr);
- if (found)
- srcElement->whichElement.source.hasBreak =
- (bp->disposition != disp_del || bp->hit_count <= 0);
- }
- if (!found)
- srcElement->whichElement.source.hasBreak = FALSE;
- }
- /*
- ** Now update the exec info content based upon the state
- ** of each line as indicated by the source content.
- */
- if (srcElement->whichElement.source.hasBreak &&
- srcElement->whichElement.source.isExecPoint)
- element->whichElement.simpleString = breakLocationStr ();
- else if (srcElement->whichElement.source.hasBreak)
- element->whichElement.simpleString = breakStr ();
- else if (srcElement->whichElement.source.isExecPoint)
- element->whichElement.simpleString = locationStr ();
- else
- element->whichElement.simpleString = blankStr ();
+
+ memset(element->whichElement.simpleString, ' ',
+ sizeof(element->whichElement.simpleString));
+ element->whichElement.simpleString[TUI_EXECINFO_SIZE - 1] = 0;
+
+ /* Now update the exec info content based upon the state
+ of each line as indicated by the source content. */
+ mode = srcElement->whichElement.source.hasBreak;
+ if (mode & TUI_BP_HIT)
+ element->whichElement.simpleString[TUI_BP_HIT_POS] =
+ (mode & TUI_BP_HARDWARE) ? 'H' : 'B';
+ else if (mode & (TUI_BP_ENABLED | TUI_BP_DISABLED))
+ element->whichElement.simpleString[TUI_BP_HIT_POS] =
+ (mode & TUI_BP_HARDWARE) ? 'h' : 'b';
+
+ if (mode & TUI_BP_ENABLED)
+ element->whichElement.simpleString[TUI_BP_BREAK_POS] = '+';
+ else if (mode & TUI_BP_DISABLED)
+ element->whichElement.simpleString[TUI_BP_BREAK_POS] = '-';
+
+ if (srcElement->whichElement.source.isExecPoint)
+ element->whichElement.simpleString[TUI_EXEC_POS] = '>';
}
execInfoPtr->contentSize = winInfo->generic.contentSize;
}
@@ -541,7 +546,7 @@ tuiSetExecInfoContent (TuiWinInfoPtr winInfo)
}
return ret;
-} /* tuiSetExecInfoContent */
+}
/*
@@ -605,21 +610,6 @@ tuiUpdateExecInfo (TuiWinInfoPtr winInfo)
tuiShowExecInfoContent (winInfo);
} /* tuiUpdateExecInfo */
-
- /*
- ** tuiUpdateAllExecInfos()
- */
-void
-tuiUpdateAllExecInfos (void)
-{
- int i;
-
- for (i = 0; i < (sourceWindows ())->count; i++)
- tuiUpdateExecInfo ((TuiWinInfoPtr) (sourceWindows ())->list[i]);
-
- return;
-} /* tuiUpdateAllExecInfos */
-
TuiStatus
tuiAllocSourceBuffer (TuiWinInfoPtr winInfo)
{
diff --git a/gdb/tui/tuiSourceWin.h b/gdb/tui/tuiSourceWin.h
index 803cb90..cb00449 100644
--- a/gdb/tui/tuiSourceWin.h
+++ b/gdb/tui/tuiSourceWin.h
@@ -22,6 +22,17 @@
#ifndef _TUI_SOURCEWIN_H
#define _TUI_SOURCEWIN_H
+/* Update the execution windows to show the active breakpoints.
+ This is called whenever a breakpoint is inserted, removed or
+ has its state changed. */
+extern void tui_update_all_breakpoint_info (void);
+
+/* Scan the source window and the breakpoints to update the
+ hasBreak information for each line.
+ Returns 1 if something changed and the execution window
+ must be refreshed. */
+extern int tui_update_breakpoint_info (TuiWinInfoPtr win, int current_only);
+
/* Function to display the "main" routine. */
extern void tui_display_main (void);
extern void tuiUpdateSourceWindow (TuiWinInfoPtr, struct symtab *, TuiLineOrAddress,
@@ -30,7 +41,6 @@ extern void tuiUpdateSourceWindowAsIs (TuiWinInfoPtr, struct symtab *, TuiLineOr
int);
extern void tuiUpdateSourceWindowsWithAddr (CORE_ADDR);
extern void tuiUpdateSourceWindowsWithLine (struct symtab *, int);
-extern void tuiUpdateSourceWindowsFromLocator (void);
extern void tuiClearSourceContent (TuiWinInfoPtr, int);
extern void tuiEraseSourceContent (TuiWinInfoPtr, int);
extern void tuiSetSourceContentNil (TuiWinInfoPtr, char *);
@@ -40,15 +50,10 @@ extern void tuiHorizontalSourceScroll (TuiWinInfoPtr, TuiScrollDirection,
extern TuiStatus tuiSetExecInfoContent (TuiWinInfoPtr);
extern void tuiShowExecInfoContent (TuiWinInfoPtr);
extern void tuiEraseExecInfoContent (TuiWinInfoPtr);
-extern void tuiEraseAllExecInfosContent (void);
extern void tuiClearExecInfoContent (TuiWinInfoPtr);
-extern void tuiClearAllExecInfosContent (void);
extern void tuiUpdateExecInfo (TuiWinInfoPtr);
-extern void tuiUpdateAllExecInfos (void);
extern void tuiSetIsExecPointAt (TuiLineOrAddress, TuiWinInfoPtr);
-extern void tuiSetHasBreakAt (struct breakpoint *, TuiWinInfoPtr, int);
-extern void tuiAllSetHasBreakAt (struct breakpoint *, int);
extern TuiStatus tuiAllocSourceBuffer (TuiWinInfoPtr);
extern int tuiLineIsDisplayed (int, TuiWinInfoPtr, int);
extern int tuiAddrIsDisplayed (CORE_ADDR, TuiWinInfoPtr, int);
diff --git a/gdb/tui/tuiStack.c b/gdb/tui/tuiStack.c
index d3f0404..10bd259 100644
--- a/gdb/tui/tuiStack.c
+++ b/gdb/tui/tuiStack.c
@@ -44,6 +44,8 @@
#include "breakpoint.h"
#include "frame.h"
#include "command.h"
+#include "inferior.h"
+#include "target.h"
#include "top.h"
#include "tui.h"
@@ -70,6 +72,154 @@ static void tui_set_locator_info (const char *filename, const char *procname,
static void tui_update_command (char *, int);
+/* Create the status line to display as much information as we
+ can on this single line: target name, process number, current
+ function, current line, current PC, SingleKey mode. */
+static char*
+tui_make_status_line (TuiLocatorElement* loc)
+{
+ char* string;
+ char line_buf[50], buf[50], *pname;
+ int status_size = termWidth ();
+ int i, proc_width;
+ const char* pid_name;
+ const char* pc_buf;
+ int target_width;
+ int pid_width;
+ int line_width;
+ int pc_width;
+ struct ui_file *pc_out;
+
+ if (ptid_equal (inferior_ptid, null_ptid))
+ pid_name = "No process";
+ else
+ pid_name = target_pid_to_str (inferior_ptid);
+
+ target_width = strlen (target_shortname);
+ if (target_width > MAX_TARGET_WIDTH)
+ target_width = MAX_TARGET_WIDTH;
+
+ pid_width = strlen (pid_name);
+ if (pid_width > MAX_PID_WIDTH)
+ pid_width = MAX_PID_WIDTH;
+
+ string = (char *) xmalloc (status_size + 1);
+
+ /* Translate line number and obtain its size. */
+ if (loc->lineNo > 0)
+ sprintf (line_buf, "%d", loc->lineNo);
+ else
+ strcpy (line_buf, "??");
+ line_width = strlen (line_buf);
+ if (line_width < MIN_LINE_WIDTH)
+ line_width = MIN_LINE_WIDTH;
+
+ /* Translate PC address. */
+ pc_out = tui_sfileopen (128);
+ print_address_numeric (loc->addr, 1, pc_out);
+ pc_buf = tui_file_get_strbuf (pc_out);
+ pc_width = strlen (pc_buf);
+
+ /* First determine the amount of proc name width we have available.
+ The +1 are for a space separator between fields.
+ The -1 are to take into account the \0 counted by sizeof. */
+ proc_width = (status_size
+ - (target_width + 1)
+ - (pid_width + 1)
+ - (sizeof (PROC_PREFIX) - 1 + 1)
+ - (sizeof (LINE_PREFIX) - 1 + line_width + 1)
+ - (sizeof (PC_PREFIX) - 1 + pc_width + 1)
+ - (tui_current_key_mode == tui_single_key_mode
+ ? (sizeof (SINGLE_KEY) - 1 + 1)
+ : 0));
+
+ /* If there is no room to print the function name, try by removing
+ some fields. */
+ if (proc_width < MIN_PROC_WIDTH)
+ {
+ proc_width += target_width + 1;
+ target_width = 0;
+ if (proc_width < MIN_PROC_WIDTH)
+ {
+ proc_width += pid_width + 1;
+ pid_width = 0;
+ if (proc_width <= MIN_PROC_WIDTH)
+ {
+ proc_width += pc_width + sizeof (PC_PREFIX) - 1 + 1;
+ pc_width = 0;
+ if (proc_width < 0)
+ {
+ proc_width += line_width + sizeof (LINE_PREFIX) - 1 + 1;
+ line_width = 0;
+ if (proc_width < 0)
+ proc_width = 0;
+ }
+ }
+ }
+ }
+
+ /* Now convert elements to string form */
+ pname = loc->procName;
+
+ /* Now create the locator line from the string version
+ of the elements. We could use sprintf() here but
+ that wouldn't ensure that we don't overrun the size
+ of the allocated buffer. strcat_to_buf() will. */
+ *string = (char) 0;
+
+ if (target_width > 0)
+ {
+ sprintf (buf, "%*.*s ",
+ -target_width, target_width, target_shortname);
+ strcat_to_buf (string, status_size, buf);
+ }
+ if (pid_width > 0)
+ {
+ sprintf (buf, "%*.*s ",
+ -pid_width, pid_width, pid_name);
+ strcat_to_buf (string, status_size, buf);
+ }
+
+ /* Show whether we are in SingleKey mode. */
+ if (tui_current_key_mode == tui_single_key_mode)
+ {
+ strcat_to_buf (string, status_size, SINGLE_KEY);
+ strcat_to_buf (string, status_size, " ");
+ }
+
+ /* procedure/class name */
+ if (proc_width > 0)
+ {
+ if (strlen (pname) > proc_width)
+ sprintf (buf, "%s%*.*s* ", PROC_PREFIX,
+ 1 - proc_width, proc_width - 1, pname);
+ else
+ sprintf (buf, "%s%*.*s ", PROC_PREFIX,
+ -proc_width, proc_width, pname);
+ strcat_to_buf (string, status_size, buf);
+ }
+
+ if (line_width > 0)
+ {
+ sprintf (buf, "%s%*.*s ", LINE_PREFIX,
+ -line_width, line_width, line_buf);
+ strcat_to_buf (string, status_size, buf);
+ }
+ if (pc_width > 0)
+ {
+ strcat_to_buf (string, status_size, PC_PREFIX);
+ strcat_to_buf (string, status_size, pc_buf);
+ }
+
+
+ for (i = strlen (string); i < status_size; i++)
+ string[i] = ' ';
+ string[status_size] = (char) 0;
+
+ ui_file_delete (pc_out);
+ return string;
+}
+
/* Get a printable name for the function at the address.
The symbol name is demangled if demangling is turned on.
Returns a pointer to a static area holding the result. */
@@ -114,24 +264,23 @@ tuiShowLocatorContent (void)
if (m_genWinPtrNotNull (locator) && locator->handle != (WINDOW *) NULL)
{
- string = displayableWinContentAt (locator, 0);
- if (string != (char *) NULL)
- {
- wmove (locator->handle, 0, 0);
- wstandout (locator->handle);
- waddstr (locator->handle, string);
- wclrtoeol (locator->handle);
- wstandend (locator->handle);
- tuiRefreshWin (locator);
- wmove (locator->handle, 0, 0);
- if (string != nullStr ())
- tuiFree (string);
- locator->contentInUse = TRUE;
- }
+ TuiWinElementPtr element;
+
+ element = (TuiWinElementPtr) locator->content[0];
+
+ string = tui_make_status_line (&element->whichElement.locator);
+ wmove (locator->handle, 0, 0);
+ wstandout (locator->handle);
+ waddstr (locator->handle, string);
+ wclrtoeol (locator->handle);
+ wstandend (locator->handle);
+ tuiRefreshWin (locator);
+ wmove (locator->handle, 0, 0);
+ xfree (string);
+ locator->contentInUse = TRUE;
}
+}
- return;
-} /* tuiShowLocatorContent */
/* Set the filename portion of the locator. */
static void
diff --git a/gdb/tui/tuiWin.c b/gdb/tui/tuiWin.c
index 82c3d49..fe3b8e0 100644
--- a/gdb/tui/tuiWin.c
+++ b/gdb/tui/tuiWin.c
@@ -928,7 +928,7 @@ _tuiAllWindowsInfo (char *arg, int fromTTY)
TuiWinInfoPtr winWithFocus = tuiWinWithFocus ();
for (type = SRC_WIN; (type < MAX_MAJOR_WINDOWS); type++)
- if (winList[type]->generic.isVisible)
+ if (winList[type] && winList[type]->generic.isVisible)
{
if (winWithFocus == winList[type])
printf_filtered (" %s\t(%d lines) <has focus>\n",
@@ -1446,7 +1446,7 @@ _newHeightOk (TuiWinInfoPtr primaryWinInfo, int newHeight)
}
else
{
- int curTotalHeight, totalHeight, minHeight;
+ int curTotalHeight, totalHeight, minHeight = 0;
TuiWinInfoPtr firstWin, secondWin;
if (curLayout == SRC_DISASSEM_COMMAND)
@@ -1465,7 +1465,7 @@ _newHeightOk (TuiWinInfoPtr primaryWinInfo, int newHeight)
** line that the first and second windows share, and add one
** for the locator.
*/
- curTotalHeight =
+ totalHeight = curTotalHeight =
(firstWin->generic.height + secondWin->generic.height - 1)
+ cmdWin->generic.height + 1 /*locator */ ;
if (primaryWinInfo == cmdWin)
diff --git a/gdb/version.in b/gdb/version.in
index 8ea94ca..39cb08d 100644
--- a/gdb/version.in
+++ b/gdb/version.in
@@ -1 +1 @@
-2002-08-25-cvs
+2002-09-03-cvs
diff --git a/gdb/win32-nat.c b/gdb/win32-nat.c
index e0377c5..781a841 100644
--- a/gdb/win32-nat.c
+++ b/gdb/win32-nat.c
@@ -1791,6 +1791,7 @@ init_child_ops (void)
child_ops.to_terminal_inferior = terminal_inferior;
child_ops.to_terminal_ours_for_output = terminal_ours_for_output;
child_ops.to_terminal_ours = terminal_ours;
+ child_ops.to_terminal_save_ours = terminal_save_ours;
child_ops.to_terminal_info = child_terminal_info;
child_ops.to_kill = child_kill_inferior;
child_ops.to_load = 0;
diff --git a/gdb/wince.c b/gdb/wince.c
index a640bea..92c1158 100644
--- a/gdb/wince.c
+++ b/gdb/wince.c
@@ -1910,6 +1910,7 @@ init_child_ops (void)
child_ops.to_terminal_inferior = terminal_inferior;
child_ops.to_terminal_ours_for_output = terminal_ours_for_output;
child_ops.to_terminal_ours = terminal_ours;
+ child_ops.to_terminal_save_ours = terminal_save_ours;
child_ops.to_terminal_info = child_terminal_info;
child_ops.to_kill = child_kill_inferior;
child_ops.to_load = child_load;
diff --git a/gdb/x86-64-linux-nat.c b/gdb/x86-64-linux-nat.c
index 7749b41..1372410 100644
--- a/gdb/x86-64-linux-nat.c
+++ b/gdb/x86-64-linux-nat.c
@@ -26,6 +26,7 @@
#include "gdbcore.h"
#include "regcache.h"
#include "gdb_assert.h"
+#include "gdb_string.h"
#include "x86-64-tdep.h"
#include <sys/ptrace.h>
diff --git a/gdb/x86-64-linux-tdep.c b/gdb/x86-64-linux-tdep.c
index 171ec9c..ac41daa 100644
--- a/gdb/x86-64-linux-tdep.c
+++ b/gdb/x86-64-linux-tdep.c
@@ -24,6 +24,7 @@
#include "defs.h"
#include "inferior.h"
#include "gdbcore.h"
+#include "gdb_string.h"
#include "regcache.h"
#include "x86-64-tdep.h"
#include "dwarf2cfi.h"