diff options
author | Andrew Cagney <cagney@redhat.com> | 2004-04-08 20:03:52 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2004-04-08 20:03:52 +0000 |
commit | 6a7d3fd0b5e4f4f71b57e39fb0d1613aca2db72e (patch) | |
tree | b499d533765eb0493060fc7c7735ee6e651564c9 /gdb/frame-unwind.h | |
parent | 104251e4a5fc844b1254b8cdec26cb014a1f00b5 (diff) | |
download | gdb-6a7d3fd0b5e4f4f71b57e39fb0d1613aca2db72e.tar.gz |
2004-04-08 Andrew Cagney <cagney@redhat.com>
* frame-unwind.c (struct frame_unwind_table, frame_unwind_init)
(frame_unwind_prepend_unwinder, frame_unwind_append_sniffer)
(frame_unwind_find_by_frame): Re-implement the unwind code so
that it can both prepend and append sniffers. Replace
frame_unwind_register_unwinder with frame_unwind_prepend_unwinder.
* tramp-frame.c (tramp_frame_append): Use
frame_unwind_prepend_unwinder.
* frame-unwind.h (frame_unwind_prepend_unwinder): Replace
frame_unwind_register_unwinder.
* tramp-frame.h (tramp_frame_prepend_unwinder): Rename
tramp_frame_append.
* tramp-frame.c (tramp_frame_prepend_unwinder): Update.
* mips-linux-tdep.c (mips_linux_init_abi, mips_linux_init_abi)
(mips_linux_init_abi): Update.
Diffstat (limited to 'gdb/frame-unwind.h')
-rw-r--r-- | gdb/frame-unwind.h | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/gdb/frame-unwind.h b/gdb/frame-unwind.h index 49f28896ffe..12d6dd240ed 100644 --- a/gdb/frame-unwind.h +++ b/gdb/frame-unwind.h @@ -131,11 +131,14 @@ struct frame_unwind frame_sniffer_ftype *sniffer; }; -/* Register a frame unwinder, _appending_ it to the end of the search - list. */ -extern void frame_unwind_register_unwinder (struct gdbarch *gdbarch, - const struct frame_unwind *unwinder); - +/* Register a frame unwinder, _prepending_ it to the front of the + search list (so it is sniffed before previously registered + unwinders). By using a prepend, later calls can install unwinders + that override earlier calls. This allows, for instance, an OSABI + to install a a more specific sigtramp unwinder that overrides the + traditional brute-force unwinder. */ +extern void frame_unwind_prepend_unwinder (struct gdbarch *gdbarch, + const struct frame_unwind *unwinder); /* Given the NEXT frame, take a wiff of THIS frame's registers (namely the PC and attributes) and if it is the applicable unwinder return |