diff options
Diffstat (limited to 'toolchain/gdb/patches/640-debian_dwarf2-frame-signal-unwinder.patch')
-rw-r--r-- | toolchain/gdb/patches/640-debian_dwarf2-frame-signal-unwinder.patch | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/toolchain/gdb/patches/640-debian_dwarf2-frame-signal-unwinder.patch b/toolchain/gdb/patches/640-debian_dwarf2-frame-signal-unwinder.patch deleted file mode 100644 index 246427ee6f..0000000000 --- a/toolchain/gdb/patches/640-debian_dwarf2-frame-signal-unwinder.patch +++ /dev/null @@ -1,120 +0,0 @@ -Status: Checked in to HEAD after 6.3. - -2004-11-07 Daniel Jacobowitz <dan@debian.org> - - * dwarf2-frame.c (struct dwarf2_frame_ops): Add signal_frame_p. - (dwarf2_frame_set_signal_frame_p, dwarf2_frame_signal_frame_p) - (dwarf2_signal_frame_unwind): New. - (dwarf2_frame_sniffer): Use dwarf2_frame_signal_frame_p. - * dwarf2-frame.h (dwarf2_frame_set_signal_frame_p): New prototype. - -Index: src/gdb/dwarf2-frame.c -=================================================================== -RCS file: /big/fsf/rsync/src-cvs/src/gdb/dwarf2-frame.c,v -retrieving revision 1.41 -diff -u -p -r1.41 dwarf2-frame.c ---- src/gdb/dwarf2-frame.c 4 Nov 2004 21:15:15 -0000 1.41 -+++ src/gdb/dwarf2-frame.c 7 Nov 2004 17:41:58 -0000 -@@ -471,6 +471,10 @@ struct dwarf2_frame_ops - { - /* Pre-initialize the register state REG for register REGNUM. */ - void (*init_reg) (struct gdbarch *, int, struct dwarf2_frame_state_reg *); -+ -+ /* Check whether the frame preceding NEXT_FRAME will be a signal -+ trampoline. */ -+ int (*signal_frame_p) (struct gdbarch *, struct frame_info *); - }; - - /* Default architecture-specific register state initialization -@@ -547,6 +551,33 @@ dwarf2_frame_init_reg (struct gdbarch *g - - ops->init_reg (gdbarch, regnum, reg); - } -+ -+/* Set the architecture-specific signal trampoline recognition -+ function for GDBARCH to SIGNAL_FRAME_P. */ -+ -+void -+dwarf2_frame_set_signal_frame_p (struct gdbarch *gdbarch, -+ int (*signal_frame_p) (struct gdbarch *, -+ struct frame_info *)) -+{ -+ struct dwarf2_frame_ops *ops = gdbarch_data (gdbarch, dwarf2_frame_data); -+ -+ ops->signal_frame_p = signal_frame_p; -+} -+ -+/* Query the architecture-specific signal frame recognizer for -+ NEXT_FRAME. */ -+ -+static int -+dwarf2_frame_signal_frame_p (struct gdbarch *gdbarch, -+ struct frame_info *next_frame) -+{ -+ struct dwarf2_frame_ops *ops = gdbarch_data (gdbarch, dwarf2_frame_data); -+ -+ if (ops->signal_frame_p == NULL) -+ return 0; -+ return ops->signal_frame_p (gdbarch, next_frame); -+} - - - struct dwarf2_frame_cache -@@ -841,6 +872,13 @@ static const struct frame_unwind dwarf2_ - dwarf2_frame_prev_register - }; - -+static const struct frame_unwind dwarf2_signal_frame_unwind = -+{ -+ SIGTRAMP_FRAME, -+ dwarf2_frame_this_id, -+ dwarf2_frame_prev_register -+}; -+ - const struct frame_unwind * - dwarf2_frame_sniffer (struct frame_info *next_frame) - { -@@ -848,10 +886,18 @@ dwarf2_frame_sniffer (struct frame_info - function. frame_pc_unwind(), for a no-return next function, can - end up returning something past the end of this function's body. */ - CORE_ADDR block_addr = frame_unwind_address_in_block (next_frame); -- if (dwarf2_frame_find_fde (&block_addr)) -- return &dwarf2_frame_unwind; -+ if (!dwarf2_frame_find_fde (&block_addr)) -+ return NULL; - -- return NULL; -+ /* On some targets, signal trampolines may have unwind information. -+ We need to recognize them so that we set the frame type -+ correctly. */ -+ -+ if (dwarf2_frame_signal_frame_p (get_frame_arch (next_frame), -+ next_frame)) -+ return &dwarf2_signal_frame_unwind; -+ -+ return &dwarf2_frame_unwind; - } - - -Index: src/gdb/dwarf2-frame.h -=================================================================== -RCS file: /big/fsf/rsync/src-cvs/src/gdb/dwarf2-frame.h,v -retrieving revision 1.6 -diff -u -p -r1.6 dwarf2-frame.h ---- src/gdb/dwarf2-frame.h 28 Feb 2004 16:59:32 -0000 1.6 -+++ src/gdb/dwarf2-frame.h 7 Nov 2004 17:40:41 -0000 -@@ -79,6 +79,14 @@ extern void dwarf2_frame_set_init_reg (s - void (*init_reg) (struct gdbarch *, int, - struct dwarf2_frame_state_reg *)); - -+/* Set the architecture-specific signal trampoline recognition -+ function for GDBARCH to SIGNAL_FRAME_P. */ -+ -+extern void -+ dwarf2_frame_set_signal_frame_p (struct gdbarch *gdbarch, -+ int (*signal_frame_p) (struct gdbarch *, -+ struct frame_info *)); -+ - /* Return the frame unwind methods for the function that contains PC, - or NULL if it can't be handled by DWARF CFI frame unwinder. */ - |