X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fi386-tdep.c;h=9d508795e8b9c051f2f650dee5d12009c41c2202;hb=5cdfdecc379b81979f7813e919eec45561d2bf1e;hp=becb79562270e4c9d24d1124c868934a0b53ce45;hpb=c193f6ac9cadbfcaf4bae1a46d01b6c2a4f66bb4;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index becb795622..9d508795e8 100644 --- a/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c @@ -38,6 +38,7 @@ #include "value.h" #include "gdb_assert.h" #include "reggroups.h" +#include "dummy-frame.h" #include "i386-tdep.h" #include "i387-tdep.h" @@ -509,7 +510,7 @@ i386_frameless_signal_p (struct frame_info *frame) static CORE_ADDR i386_frame_chain (struct frame_info *frame) { - if (PC_IN_CALL_DUMMY (frame->pc, 0, 0)) + if (pc_in_dummy_frame (frame->pc)) return frame->frame; if (get_frame_type (frame) == SIGTRAMP_FRAME @@ -566,7 +567,7 @@ i386_sigtramp_saved_sp (struct frame_info *frame) static CORE_ADDR i386_frame_saved_pc (struct frame_info *frame) { - if (PC_IN_CALL_DUMMY (frame->pc, 0, 0)) + if (pc_in_dummy_frame (frame->pc)) { ULONGEST pc; @@ -1519,6 +1520,10 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) tdep = XMALLOC (struct gdbarch_tdep); gdbarch = gdbarch_alloc (&info, tdep); + /* NOTE: cagney/2002-12-06: This can be deleted when this arch is + ready to unwind the PC first (see frame.c:get_prev_frame()). */ + set_gdbarch_deprecated_init_frame_pc (gdbarch, init_frame_pc_default); + tdep->osabi = osabi; /* The i386 default settings don't include the SSE registers. @@ -1577,10 +1582,7 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_get_longjmp_target (gdbarch, i386_get_longjmp_target); - set_gdbarch_use_generic_dummy_frames (gdbarch, 1); - /* Call dummy code. */ - set_gdbarch_call_dummy_location (gdbarch, AT_ENTRY_POINT); set_gdbarch_call_dummy_address (gdbarch, entry_point_address); set_gdbarch_call_dummy_start_offset (gdbarch, 0); set_gdbarch_call_dummy_breakpoint_offset (gdbarch, 0); @@ -1597,8 +1599,6 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) i386_register_convert_to_virtual); set_gdbarch_register_convert_to_raw (gdbarch, i386_register_convert_to_raw); - set_gdbarch_pc_in_call_dummy (gdbarch, pc_in_call_dummy_at_entry_point); - /* "An argument's size is increased, if necessary, to make it a multiple of [32-bit] words. This may require tail padding, depending on the size of the argument" -- from the x86 ABI. */ @@ -1715,11 +1715,11 @@ are \"default\", \"pcc\" and \"reg\", and the default value is \"default\".", gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_nlm_flavour, i386_nlm_osabi_sniffer); - gdbarch_register_osabi (bfd_arch_i386, GDB_OSABI_SVR4, + gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_SVR4, i386_svr4_init_abi); - gdbarch_register_osabi (bfd_arch_i386, GDB_OSABI_GO32, + gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_GO32, i386_go32_init_abi); - gdbarch_register_osabi (bfd_arch_i386, GDB_OSABI_NETWARE, + gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_NETWARE, i386_nw_init_abi); /* Initialize the i386 specific register groups. */