⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 640-debian_dwarf2-frame-signal-unwinder.patch

📁 這是一個實時嵌入式作業系統 實作了MCS51 ARM等MCU
💻 PATCH
字号:
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,vretrieving revision 1.41diff -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,vretrieving revision 1.6diff -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.  */ 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -