diff options
author | Mark Kettenis <kettenis@gnu.org> | 2003-05-10 23:18:22 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@gnu.org> | 2003-05-10 23:18:22 +0000 |
commit | 27a386989ea37ab896c8fa78f8f11873153eb36f (patch) | |
tree | 445a2bdabfac981bcd26dca9be5fea149ac089ef | |
parent | dea2576ef38bc88bbd68525081c983af2f8211c7 (diff) | |
download | gdb-27a386989ea37ab896c8fa78f8f11873153eb36f.tar.gz |
* i386-tdep.c (i386_frame_p): Move signal trampoline unwinder...
(i386_sigtramp_frame_p): ...here. Make both functions static.
(i386_gdbarch_init): Register signal trampoline unwinder. Change
order in which frame unwinders and frame baase methods are
registered to make overriding them easier.
-rw-r--r-- | gdb/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/i386-tdep.c | 26 |
2 files changed, 25 insertions, 9 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index aa1ca3ce07d..5de7d26884b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2003-05-11 Mark Kettenis <kettenis@gnu.org> + + * i386-tdep.c (i386_frame_p): Move signal trampoline unwinder... + (i386_sigtramp_frame_p): ...here. Make both functions static. + (i386_gdbarch_init): Register signal trampoline unwinder. Change + order in which frame unwinders and frame baase methods are + registered to make overriding them easier. + 2003-05-10 Mark Kettenis <kettenis@gnu.org> * i386-tdep.c (i386_analyze_struct_return): Correctly indent diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index 2da228a3039..c7bd91920d3 100644 --- a/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c @@ -862,6 +862,12 @@ static const struct frame_unwind i386_frame_unwind = i386_frame_this_id, i386_frame_prev_register }; + +static const struct frame_unwind * +i386_frame_p (CORE_ADDR pc) +{ + return &i386_frame_unwind; +} /* Signal trampolines. */ @@ -920,10 +926,9 @@ static const struct frame_unwind i386_sigtramp_frame_unwind = i386_sigtramp_frame_this_id, i386_sigtramp_frame_prev_register }; - -const struct frame_unwind * -i386_frame_p (CORE_ADDR pc) +static const struct frame_unwind * +i386_sigtramp_frame_p (CORE_ADDR pc) { char *name; @@ -931,8 +936,9 @@ i386_frame_p (CORE_ADDR pc) if (PC_IN_SIGTRAMP (pc, name)) return &i386_sigtramp_frame_unwind; - return &i386_frame_unwind; + return NULL; } + static CORE_ADDR i386_frame_base_address (struct frame_info *next_frame, void **this_cache) @@ -1707,16 +1713,18 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) i386_add_reggroups (gdbarch); set_gdbarch_register_reggroup_p (gdbarch, i386_register_reggroup_p); - /* Hook in ABI-specific overrides, if they have been registered. */ - gdbarch_init_osabi (info, gdbarch); - /* Hook in the DWARF CFI frame unwinder. */ frame_unwind_append_predicate (gdbarch, dwarf_frame_p); set_gdbarch_dwarf2_build_frame_info (gdbarch, dwarf2_build_frame_info); - - frame_unwind_append_predicate (gdbarch, i386_frame_p); + frame_base_set_default (gdbarch, &i386_frame_base); + /* Hook in ABI-specific overrides, if they have been registered. */ + gdbarch_init_osabi (info, gdbarch); + + frame_unwind_append_predicate (gdbarch, i386_sigtramp_frame_p); + frame_unwind_append_predicate (gdbarch, i386_frame_p); + return gdbarch; } |