diff options
author | Pedro Alves <palves@redhat.com> | 2008-07-07 22:05:45 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2008-07-07 22:05:45 +0000 |
commit | 42f0bc8eaf33eb991a9cbe9a42a0738d948fc65e (patch) | |
tree | 657d2ca43ea03fbca27a047c557ff4df2ca78dae | |
parent | a6d8f55bfd14a16835ce7ed05b700e57cf08ead1 (diff) | |
download | gdb-42f0bc8eaf33eb991a9cbe9a42a0738d948fc65e.zip gdb-42f0bc8eaf33eb991a9cbe9a42a0738d948fc65e.tar.gz gdb-42f0bc8eaf33eb991a9cbe9a42a0738d948fc65e.tar.bz2 |
* i386-dicos-tdep.c: Include "inferior.h".
(i386_dicos_frame_align): New.
(i386_dicos_init_abi): Register i386_dicos_frame_align. Set call
dummy location ON_STACK.
* Makefile.in (i386-dicos-tdep.o): Depend on $(inferior_h).
-rw-r--r-- | gdb/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/Makefile.in | 2 | ||||
-rw-r--r-- | gdb/i386-dicos-tdep.c | 18 |
3 files changed, 27 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ba05c7b..0942165 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2008-07-07 Pedro Alves <pedro@codesourcery.com> + + * i386-dicos-tdep.c: Include "inferior.h". + (i386_dicos_frame_align): New. + (i386_dicos_init_abi): Register i386_dicos_frame_align. Set call + dummy location ON_STACK. + * Makefile.in (i386-dicos-tdep.o): Depend on $(inferior_h). + 2008-07-07 Joel Brobecker <brobecker@adacore.com> * gstdint.h: New file. diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 36186a9..055a759 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -2236,7 +2236,7 @@ i386-cygwin-tdep.o: i386-cygwin-tdep.c $(defs_h) $(osabi_h) $(gdb_string_h) \ $(i386_tdep_h) $(regset_h) $(gdb_obstack_h) $(xml_support_h) \ $(gdbcore_h) $(solib_h) $(solib_target_h) $(i386_cygwin_tdep_h) i386-dicos-tdep.o: i386-dicos-tdep.c $(defs_h) $(osabi_h) $(gdb_string_h) \ - $(solib_h) $(solib_target_h) + $(solib_h) $(solib_target_h) $(inferior_h) i386fbsd-nat.o: i386fbsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \ $(target_h) $(fbsd_nat_h) $(i386_tdep_h) $(i386bsd_nat_h) \ $(bsd_kvm_h) diff --git a/gdb/i386-dicos-tdep.c b/gdb/i386-dicos-tdep.c index e92313a..5fdaaba 100644 --- a/gdb/i386-dicos-tdep.c +++ b/gdb/i386-dicos-tdep.c @@ -22,6 +22,18 @@ #include "gdb_string.h" #include "solib.h" #include "solib-target.h" +#include "inferior.h" + +static CORE_ADDR +i386_dicos_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp) +{ + /* Having a call dummy on the stack requires a gdbarch_frame_align + method to align the breakpoint instruction in the stack. + Strictly speaking, we could just return SP pristine on x86. But, + as long as we're providing a frame align method, might as well + align for efficiency. */ + return sp & -(CORE_ADDR)16; +} static void i386_dicos_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) @@ -29,6 +41,12 @@ i386_dicos_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); set_solib_ops (gdbarch, &solib_target_so_ops); + + /* There's no (standard definition of) entry point or a guaranteed + text location we could find with a symbol where to place the call + dummy, so we put it on the stack. */ + set_gdbarch_call_dummy_location (gdbarch, ON_STACK); + set_gdbarch_frame_align (gdbarch, i386_dicos_frame_align); } /* Look in the elf symbol table of ABFD for a symbol named WANTED. |