]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdb: add "unwinder class" to frame unwinders users/gwen/try-frame-unwind-c++-ification
authorGuinevere Larsen <blarsen@redhat.com>
Fri, 19 Jan 2024 08:46:46 +0000 (09:46 +0100)
committerGuinevere Larsen <blarsen@redhat.com>
Fri, 16 Feb 2024 17:30:24 +0000 (18:30 +0100)
A future patch will add a way to disable certain unwinders based on
different characteristics. This patch aims done to make it more
convenient to disable related unwinders in bulk, such as architecture
specific ones, by indentifying all unwinders by which part of the code
adds it. The classes, and explanations, are as follows:

* GDB: An internal unwinder, added by GDB core, such as the unwinder
  for dummy frames;
* EXTENSION: Unwinders added by extension languages;
* DEBUGINFO: Unwinders installed by the debug info reader;
* ARCH: Unwinders installed by the architecture specific code.

79 files changed:
gdb/aarch64-tdep.c
gdb/alpha-mdebug-tdep.c
gdb/alpha-tdep.c
gdb/amd64-obsd-tdep.c
gdb/amd64-tdep.c
gdb/amd64-windows-tdep.c
gdb/amdgpu-tdep.c
gdb/arc-tdep.c
gdb/arm-tdep.c
gdb/avr-tdep.c
gdb/bfin-tdep.c
gdb/bpf-tdep.c
gdb/cris-tdep.c
gdb/csky-tdep.c
gdb/dummy-frame.c
gdb/dwarf2/frame-tailcall.c
gdb/dwarf2/frame.c
gdb/frame-unwind.c
gdb/frame-unwind.h
gdb/frv-linux-tdep.c
gdb/frv-tdep.c
gdb/ft32-tdep.c
gdb/h8300-tdep.c
gdb/hppa-linux-tdep.c
gdb/hppa-tdep.c
gdb/i386-obsd-tdep.c
gdb/i386-tdep.c
gdb/ia64-tdep.c
gdb/inline-frame.c
gdb/iq2000-tdep.c
gdb/jit.c
gdb/lm32-tdep.c
gdb/loongarch-tdep.c
gdb/m32c-tdep.c
gdb/m32r-linux-tdep.c
gdb/m32r-tdep.c
gdb/m68hc11-tdep.c
gdb/m68k-linux-tdep.c
gdb/m68k-tdep.c
gdb/mep-tdep.c
gdb/microblaze-tdep.c
gdb/mips-sde-tdep.c
gdb/mips-tdep.c
gdb/mn10300-tdep.c
gdb/moxie-tdep.c
gdb/msp430-tdep.c
gdb/nds32-tdep.c
gdb/nios2-tdep.c
gdb/or1k-tdep.c
gdb/ppc-fbsd-tdep.c
gdb/ppc-obsd-tdep.c
gdb/python/py-unwind.c
gdb/record-btrace.c
gdb/riscv-tdep.c
gdb/rl78-tdep.c
gdb/rs6000-aix-tdep.c
gdb/rs6000-tdep.c
gdb/rx-tdep.c
gdb/s12z-tdep.c
gdb/s390-linux-tdep.c
gdb/s390-tdep.c
gdb/sentinel-frame.c
gdb/sh-tdep.c
gdb/sparc-netbsd-tdep.c
gdb/sparc-obsd-tdep.c
gdb/sparc-sol2-tdep.c
gdb/sparc-tdep.c
gdb/sparc64-fbsd-tdep.c
gdb/sparc64-netbsd-tdep.c
gdb/sparc64-obsd-tdep.c
gdb/sparc64-sol2-tdep.c
gdb/sparc64-tdep.c
gdb/tic6x-tdep.c
gdb/tilegx-tdep.c
gdb/tramp-frame.c
gdb/v850-tdep.c
gdb/vax-tdep.c
gdb/xstormy16-tdep.c
gdb/z80-tdep.c

index b97e2153e14f364fd3a90e6927ac60c439b84db3..abbf8dcbb44cdc9f513300c0208f9c2ff7b7ac02 100644 (file)
@@ -1208,6 +1208,7 @@ static frame_unwind aarch64_prologue_unwind =
 {
   "aarch64 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   aarch64_prologue_frame_unwind_stop_reason,
   aarch64_prologue_this_id,
   aarch64_prologue_prev_register,
@@ -1303,6 +1304,7 @@ static frame_unwind aarch64_stub_unwind =
 {
   "aarch64 stub",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   aarch64_stub_frame_unwind_stop_reason,
   aarch64_stub_this_id,
   aarch64_prologue_prev_register,
index 7691a53148ae77ec5b4b24c6657d2620bbc0b0ed..f7323a4dda9d0a109ea4557818d45514e63ece78 100644 (file)
@@ -335,6 +335,7 @@ static const struct frame_unwind alpha_mdebug_frame_unwind =
 {
   "alpha mdebug",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   alpha_mdebug_frame_this_id,
   alpha_mdebug_frame_prev_register,
index cafadae45c74f4f668383f447cecdb8c673e9d82..1d07fe2d578e0036700f512d8cd9b096e56442d6 100644 (file)
@@ -1011,6 +1011,7 @@ static const struct frame_unwind alpha_sigtramp_frame_unwind =
 {
   "alpha sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   alpha_sigtramp_frame_this_id,
   alpha_sigtramp_frame_prev_register,
@@ -1430,6 +1431,7 @@ static const struct frame_unwind alpha_heuristic_frame_unwind =
 {
   "alpha prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   alpha_heuristic_frame_this_id,
   alpha_heuristic_frame_prev_register,
index 9cca6b12c84e3cb6aba6633a4a5386370c376cc4..a3598025d6cb9057b0b96583c832c3a246e935eb 100644 (file)
@@ -409,6 +409,7 @@ static const struct frame_unwind amd64obsd_trapframe_unwind =
      which really is not what we want here.  */
   "amd64 openbsd trap",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   amd64obsd_trapframe_this_id,
   amd64obsd_trapframe_prev_register,
index baca3099b697515559f7edd9346967489e60884d..6b868c20e0cc6d517f69cfcd41e2ba49168dbe33 100644 (file)
@@ -2662,6 +2662,7 @@ static const struct frame_unwind amd64_frame_unwind =
 {
   "amd64 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   amd64_frame_unwind_stop_reason,
   amd64_frame_this_id,
   amd64_frame_prev_register,
@@ -2808,6 +2809,7 @@ static const struct frame_unwind amd64_sigtramp_frame_unwind =
 {
   "amd64 sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   amd64_sigtramp_frame_unwind_stop_reason,
   amd64_sigtramp_frame_this_id,
   amd64_sigtramp_frame_prev_register,
@@ -3000,6 +3002,7 @@ static const struct frame_unwind amd64_epilogue_override_frame_unwind =
 {
   "amd64 epilogue override",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   amd64_epilogue_frame_unwind_stop_reason,
   amd64_epilogue_frame_this_id,
   amd64_frame_prev_register,
@@ -3011,6 +3014,7 @@ static const struct frame_unwind amd64_epilogue_frame_unwind =
 {
   "amd64 epilogue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   amd64_epilogue_frame_unwind_stop_reason,
   amd64_epilogue_frame_this_id,
   amd64_frame_prev_register,
index 50304e15cb8ac7c3d25f90e80fac4a9c665f9b3e..d423f2b17daee393ede81143c2f181a74bbc6ae8 100644 (file)
@@ -1185,6 +1185,7 @@ static const struct frame_unwind amd64_windows_frame_unwind =
 {
   "amd64 windows",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   &amd64_windows_frame_this_id,
   &amd64_windows_frame_prev_register,
index 44252e559cdc9fac934f434ec98d934ddc26a8d1..ac0ed0c58fe5d9c8fc4ae867bca9e459957534f0 100644 (file)
@@ -895,6 +895,7 @@ amdgpu_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
 static const frame_unwind amdgpu_frame_unwind = {
   "amdgpu",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   amdgpu_frame_this_id,
   amdgpu_frame_prev_register,
index 84e211ce9ad5154555179937b3ff3d4e29e01324..fa52ad03a898273df6bfcf72499887d6340f3667 100644 (file)
@@ -1903,6 +1903,7 @@ arc_sigtramp_frame_sniffer (const struct frame_unwind *self,
 static const struct frame_unwind arc_frame_unwind = {
   "arc prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   arc_frame_this_id,
   arc_frame_prev_register,
@@ -1919,6 +1920,7 @@ static const struct frame_unwind arc_frame_unwind = {
 static const struct frame_unwind arc_sigtramp_frame_unwind = {
   "arc sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   arc_sigtramp_frame_this_id,
   arc_sigtramp_frame_prev_register,
index 081e934cf8625536d774a8a4ed6c7002fdfbb0a0..086fa56f4aa670175eee433f436148dcfb682e03 100644 (file)
@@ -2472,6 +2472,7 @@ arm_prologue_prev_register (frame_info_ptr this_frame,
 static frame_unwind arm_prologue_unwind = {
   "arm prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   arm_prologue_unwind_stop_reason,
   arm_prologue_this_id,
   arm_prologue_prev_register,
@@ -3191,6 +3192,7 @@ arm_exidx_unwind_sniffer (const struct frame_unwind *self,
 struct frame_unwind arm_exidx_unwind = {
   "arm exidx",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   arm_prologue_this_id,
   arm_prologue_prev_register,
@@ -3301,6 +3303,7 @@ static const struct frame_unwind arm_epilogue_frame_unwind =
 {
   "arm epilogue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   arm_epilogue_frame_this_id,
   arm_epilogue_frame_prev_register,
@@ -3430,6 +3433,7 @@ arm_stub_unwind_sniffer (const struct frame_unwind *self,
 struct frame_unwind arm_stub_unwind = {
   "arm stub",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   arm_stub_this_id,
   arm_prologue_prev_register,
@@ -3956,6 +3960,7 @@ struct frame_unwind arm_m_exception_unwind =
 {
   "arm m exception lockup sec_fnc",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   arm_m_exception_frame_unwind_stop_reason,
   arm_m_exception_this_id,
   arm_m_exception_prev_register,
index 63b45be7563d709e1edef694e7242b1784609636..701cec851e4514df6b07a1e958bd619c12e7bfe1 100644 (file)
@@ -1158,6 +1158,7 @@ avr_frame_prev_register (frame_info_ptr this_frame,
 static const struct frame_unwind avr_frame_unwind = {
   "avr prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   avr_frame_this_id,
   avr_frame_prev_register,
index 877fd94d7df0953e948080e191ce4b46efb18fe5..3194296003b4962392fc4297a3b0938292318594 100644 (file)
@@ -376,6 +376,7 @@ static const struct frame_unwind bfin_frame_unwind =
 {
   "bfin prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   bfin_frame_this_id,
   bfin_frame_prev_register,
index 4409a1e696c9fba1382922c93ade9f968ce8b665..603d0cc73fc88ca882976ccb7cf551d52ad0ee2b 100644 (file)
@@ -186,6 +186,7 @@ static const struct frame_unwind bpf_frame_unwind =
 {
   "bpf prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   bpf_frame_unwind_stop_reason,
   bpf_frame_this_id,
   bpf_frame_prev_register,
index 1f108740ad21593442a36fe72df73561269109f0..aa70a17e703f4ddff2dfef69c113412d918b0db9 100644 (file)
@@ -439,6 +439,7 @@ static const struct frame_unwind cris_sigtramp_frame_unwind =
 {
   "cris sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   cris_sigtramp_frame_this_id,
   cris_sigtramp_frame_prev_register,
@@ -904,6 +905,7 @@ static const struct frame_unwind cris_frame_unwind =
 {
   "cris prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   cris_frame_this_id,
   cris_frame_prev_register,
index 2aa6c0abcb857dd6e65e02b8ec992539fec7af53..4fcc707ad09f4a2df011bc9b166e69c6ac7ae989 100644 (file)
@@ -2162,6 +2162,7 @@ csky_frame_prev_register (frame_info_ptr this_frame,
 static const struct frame_unwind csky_unwind_cache = {
   "cski prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   csky_frame_this_id,
   csky_frame_prev_register,
@@ -2296,6 +2297,7 @@ csky_stub_prev_register (frame_info_ptr this_frame,
 static frame_unwind csky_stub_unwind = {
   "csky stub",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   csky_stub_this_id,
   csky_stub_prev_register,
index 309483d95d418ab07c3ad0d60412539e25b07fd3..dd0a46627640cb340dd38ad1ef6378cd662aed18 100644 (file)
@@ -380,6 +380,7 @@ const struct frame_unwind dummy_frame_unwind =
 {
   "dummy",
   DUMMY_FRAME,
+  FRAME_UNWIND_GDB,
   default_frame_unwind_stop_reason,
   dummy_frame_this_id,
   dummy_frame_prev_register,
index 27a820a6168f03e9e0ab4190d3720e0bf9bd2b9e..18abd2a2f39d6979124b9ad6dfe9eccfc08fe80b 100644 (file)
@@ -473,6 +473,7 @@ const struct frame_unwind dwarf2_tailcall_frame_unwind =
 {
   "dwarf2 tailcall",
   TAILCALL_FRAME,
+  FRAME_UNWIND_DEBUGINFO,
   default_frame_unwind_stop_reason,
   tailcall_frame_this_id,
   tailcall_frame_prev_register,
index fc6704f434ee5f805ce05927ebf6c3d4ccf7d342..f747b9b43eca15a589d0aac530f1d795bd7ce7e6 100644 (file)
@@ -1344,6 +1344,7 @@ static const struct frame_unwind dwarf2_frame_unwind =
 {
   "dwarf2",
   NORMAL_FRAME,
+  FRAME_UNWIND_DEBUGINFO,
   dwarf2_frame_unwind_stop_reason,
   dwarf2_frame_this_id,
   dwarf2_frame_prev_register,
@@ -1356,6 +1357,7 @@ static const struct frame_unwind dwarf2_signal_frame_unwind =
 {
   "dwarf2 signal",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_DEBUGINFO,
   dwarf2_frame_unwind_stop_reason,
   dwarf2_frame_this_id,
   dwarf2_frame_prev_register,
index 877f1e513095698497c9d8007701a4d45c05afec..86e330dfcff93577f74eb45ff226a2de983da302 100644 (file)
@@ -68,6 +68,28 @@ get_frame_unwind_table (struct gdbarch *gdbarch)
   return table;
 }
 
+static const char *
+frame_unwinder_class_str (frame_unwind_class uclass)
+{
+  switch (uclass)
+    {
+      case FRAME_UNWIND_GDB:
+       return "FRAME_UNWIND_GDB";
+
+      case FRAME_UNWIND_EXTENSION:
+       return "FRAME_UNWIND_EXTENSION";
+
+      case FRAME_UNWIND_DEBUGINFO:
+       return "FRAME_UNWIND_DEBUGINFOD";
+
+      case FRAME_UNWIND_ARCH:
+       return "FRAME_UNWIND_ARCH";
+
+      default:
+       return "<unknown class>";
+    };
+}
+
 void
 frame_unwind_prepend_unwinder (struct gdbarch *gdbarch,
                                const struct frame_unwind *unwinder)
@@ -324,19 +346,22 @@ maintenance_info_frame_unwinders (const char *args, int from_tty)
   std::vector<const frame_unwind*> table = get_frame_unwind_table (gdbarch);
 
   ui_out *uiout = current_uiout;
-  ui_out_emit_table table_emitter (uiout, 2, -1, "FrameUnwinders");
+  ui_out_emit_table table_emitter (uiout, 3, -1, "FrameUnwinders");
   uiout->table_header (27, ui_left, "name", "Name");
   uiout->table_header (25, ui_left, "type", "Type");
+  uiout->table_header (25, ui_left, "class", "Class");
   uiout->table_body ();
 
   for (const struct frame_unwind* unwinder: table)
     {
       const char *name = unwinder->name;
       const char *type = frame_type_str (unwinder->type);
+      const char *uclass = frame_unwinder_class_str (unwinder->unwinder_class);
 
       ui_out_emit_list tuple_emitter (uiout, nullptr);
       uiout->field_string ("name", name);
       uiout->field_string ("type", type);
+      uiout->field_string ("class", uclass);
       uiout->text ("\n");
     }
 }
index 9e978890e8432a32974447d86c8a5bb48f76c4d9..86bb0925d2fc728ee1096c42ca530235c1548ff7 100644 (file)
@@ -156,12 +156,23 @@ typedef void (frame_dealloc_cache_ftype) (frame_info *self,
 typedef struct gdbarch *(frame_prev_arch_ftype) (frame_info_ptr this_frame,
                                                 void **this_prologue_cache);
 
+enum frame_unwind_class {
+  FRAME_UNWIND_GDB,
+  FRAME_UNWIND_EXTENSION,
+  FRAME_UNWIND_DEBUGINFO,
+  FRAME_UNWIND_ARCH,
+};
+
 struct frame_unwind
 {
   const char *name;
   /* The frame's type.  Should this instead be a collection of
      predicates that test the frame for various attributes?  */
   enum frame_type type;
+  /* What kind of unwinder is this.  It generally follows from where
+     the unwinder was added or where it looks for information to do the
+     unwinding.  */
+  enum frame_unwind_class unwinder_class;
   /* Should an attribute indicating the frame's address-in-block go
      here?  */
   frame_unwind_stop_reason_ftype *stop_reason;
index e02d3390a33d98aa60a4480c474dd3653955aa7f..657377c0bb63775f53a6c3ce77cfd966e6ef523e 100644 (file)
@@ -336,6 +336,7 @@ static const struct frame_unwind frv_linux_sigtramp_frame_unwind =
 {
   "frv linux sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   frv_linux_sigtramp_frame_this_id,
   frv_linux_sigtramp_frame_prev_register,
index 1994dd782ad569855bbd1380eb5fff72a84eef4b..b1dc0a2d40ffcab80996334d40f1be7f06303e9a 100644 (file)
@@ -1408,6 +1408,7 @@ frv_frame_prev_register (frame_info_ptr this_frame,
 static const struct frame_unwind frv_frame_unwind = {
   "frv prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   frv_frame_this_id,
   frv_frame_prev_register,
index 069d40f56fb200d94eebdcc001a913f99f497da0..22a0fbf8b24ba20c1c6961b205999130a79894d5 100644 (file)
@@ -528,6 +528,7 @@ static const struct frame_unwind ft32_frame_unwind =
 {
   "ft32 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   ft32_frame_this_id,
   ft32_frame_prev_register,
index da5b10517ada310dc375ec1c481d8c4f6a138397..ef73e7802c032f3bbcddbcff39522c9630efe96b 100644 (file)
@@ -503,6 +503,7 @@ h8300_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
 static const struct frame_unwind h8300_frame_unwind = {
   "h8300 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   h8300_frame_this_id,
   h8300_frame_prev_register,
index 4f94b4168107d041a4b3ca5aa97061849fb83380..c187ff1800f48f36279d23f1225dabb5f3e1ffd1 100644 (file)
@@ -311,6 +311,7 @@ hppa_linux_sigtramp_frame_sniffer (const struct frame_unwind *self,
 static const struct frame_unwind hppa_linux_sigtramp_frame_unwind = {
   "hppa linux sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   hppa_linux_sigtramp_frame_this_id,
   hppa_linux_sigtramp_frame_prev_register,
index 32e46b831cbc55217e99ccb06362f32c9ce72995..d5c41db94053923853c5f60b2ab302f7f32e0229 100644 (file)
@@ -2287,6 +2287,7 @@ static const struct frame_unwind hppa_frame_unwind =
 {
   "hppa unwind table",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   hppa_frame_this_id,
   hppa_frame_prev_register,
@@ -2400,6 +2401,7 @@ static const struct frame_unwind hppa_fallback_frame_unwind =
 {
   "hppa prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   hppa_fallback_frame_this_id,
   hppa_fallback_frame_prev_register,
@@ -2481,6 +2483,7 @@ hppa_stub_unwind_sniffer (const struct frame_unwind *self,
 static const struct frame_unwind hppa_stub_frame_unwind = {
   "hppa stub",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   hppa_stub_frame_this_id,
   hppa_stub_frame_prev_register,
index 38ba280e4056951db390e38f20a8825d35c30b75..4b790eea9e62e111a2d635a4c422db3767fac250 100644 (file)
@@ -396,6 +396,7 @@ static const struct frame_unwind i386obsd_trapframe_unwind = {
      frame, but SIGTRAMP_FRAME would print <signal handler called>,
      which really is not what we want here.  */
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   i386obsd_trapframe_this_id,
   i386obsd_trapframe_prev_register,
index d8691f038454235f65355ef5dc647d2506b20b10..d98b3324e195b5440f2c4858ce7b1cf614627182 100644 (file)
@@ -2200,6 +2200,7 @@ static const struct frame_unwind i386_frame_unwind =
 {
   "i386 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   i386_frame_unwind_stop_reason,
   i386_frame_this_id,
   i386_frame_prev_register,
@@ -2355,6 +2356,7 @@ static const struct frame_unwind i386_epilogue_override_frame_unwind =
 {
   "i386 epilogue override",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   i386_epilogue_frame_unwind_stop_reason,
   i386_epilogue_frame_this_id,
   i386_epilogue_frame_prev_register,
@@ -2366,6 +2368,7 @@ static const struct frame_unwind i386_epilogue_frame_unwind =
 {
   "i386 epilogue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   i386_epilogue_frame_unwind_stop_reason,
   i386_epilogue_frame_this_id,
   i386_epilogue_frame_prev_register,
@@ -2448,6 +2451,7 @@ static const struct frame_unwind i386_stack_tramp_frame_unwind =
 {
   "i386 stack tramp",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   i386_epilogue_frame_unwind_stop_reason,
   i386_epilogue_frame_this_id,
   i386_epilogue_frame_prev_register,
@@ -2597,6 +2601,7 @@ static const struct frame_unwind i386_sigtramp_frame_unwind =
 {
   "i386 sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   i386_sigtramp_frame_unwind_stop_reason,
   i386_sigtramp_frame_this_id,
   i386_sigtramp_frame_prev_register,
index afff210986baf3112aed167032adf6f470ad3391..53bac38f538764b850f10f87e5122536569b2fc1 100644 (file)
@@ -2166,6 +2166,7 @@ static const struct frame_unwind ia64_frame_unwind =
 {
   "ia64 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   &ia64_frame_this_id,
   &ia64_frame_prev_register,
@@ -2355,6 +2356,7 @@ static const struct frame_unwind ia64_sigtramp_frame_unwind =
 {
   "ia64 sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   ia64_sigtramp_frame_this_id,
   ia64_sigtramp_frame_prev_register,
@@ -3015,6 +3017,7 @@ static const struct frame_unwind ia64_libunwind_frame_unwind =
 {
   "ia64 libunwind",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   ia64_libunwind_frame_this_id,
   ia64_libunwind_frame_prev_register,
@@ -3104,6 +3107,7 @@ static const struct frame_unwind ia64_libunwind_sigtramp_frame_unwind =
 {
   "ia64 libunwind sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   ia64_libunwind_sigtramp_frame_this_id,
   ia64_libunwind_sigtramp_frame_prev_register,
index 02dbcd12af1fc2e420e8953c4ad7f06612b320e7..575fab6479c64033dbdab435e9dd2fed1af89fc5 100644 (file)
@@ -268,6 +268,7 @@ inline_frame_sniffer (const struct frame_unwind *self,
 const struct frame_unwind inline_frame_unwind = {
   "inline",
   INLINE_FRAME,
+  FRAME_UNWIND_GDB,
   default_frame_unwind_stop_reason,
   inline_frame_this_id,
   inline_frame_prev_register,
index 937a3513df444cfe6fa44692510544732a874aed..0cf0737caa964e4ff1077030c1907202dda582a8 100644 (file)
@@ -427,6 +427,7 @@ iq2000_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 static const struct frame_unwind iq2000_frame_unwind = {
   "iq2000 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   iq2000_frame_this_id,
   iq2000_frame_prev_register,
index f1dbf39f73fda82052012d222c12ced10738042b..c2d8a2b95a8c19bbe41f91a4ba23db78d9b3da3f 100644 (file)
--- a/gdb/jit.c
+++ b/gdb/jit.c
@@ -1108,6 +1108,7 @@ static const struct frame_unwind jit_frame_unwind =
 {
   "jit",
   NORMAL_FRAME,
+  FRAME_UNWIND_EXTENSION,
   default_frame_unwind_stop_reason,
   jit_frame_this_id,
   jit_frame_prev_register,
index 12e9b5ad4fd6607fcfdf9a068c6018509a25704a..a132dec78b3bf284d8248d1409aa61e9ddbdc3cd 100644 (file)
@@ -450,6 +450,7 @@ lm32_frame_prev_register (frame_info_ptr this_frame,
 static const struct frame_unwind lm32_frame_unwind = {
   "lm32 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   lm32_frame_this_id,
   lm32_frame_prev_register,
index 0f4622a55be315f781d7c2594650fd6ea8cd3e7e..3e017c45c9be7612d8888848784b296bfc8319b6 100644 (file)
@@ -453,6 +453,7 @@ loongarch_frame_prev_register (frame_info_ptr this_frame,
 static const struct frame_unwind loongarch_frame_unwind = {
   "loongarch prologue",
   /*.type         =*/NORMAL_FRAME,
+  /*.unwinder_class=*/FRAME_UNWIND_ARCH,
   /*.stop_reason   =*/default_frame_unwind_stop_reason,
   /*.this_id      =*/loongarch_frame_this_id,
   /*.prev_register =*/loongarch_frame_prev_register,
index 8da15fefe800c4013c0f26a378f9a8c3870d2dd3..5a91160e723ccfa816e1bb066e5e08d3303b292f 100644 (file)
@@ -1958,6 +1958,7 @@ m32c_prev_register (frame_info_ptr this_frame,
 static const struct frame_unwind m32c_unwind = {
   "m32c prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   m32c_this_id,
   m32c_prev_register,
index ec054fa263ef4686d84931e8ad7bd38e7ecb9eec..4287c81be69628fa8365834de74efc7d7a7e370a 100644 (file)
@@ -304,6 +304,7 @@ m32r_linux_sigtramp_frame_sniffer (const struct frame_unwind *self,
 static const struct frame_unwind m32r_linux_sigtramp_frame_unwind = {
   "m32r linux sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   m32r_linux_sigtramp_frame_this_id,
   m32r_linux_sigtramp_frame_prev_register,
index 73855947e6320d2b860403f50796e68b0e711739..8210662d14d0b260031ad9c2ad558e5ab7989913 100644 (file)
@@ -834,6 +834,7 @@ m32r_frame_prev_register (frame_info_ptr this_frame,
 static const struct frame_unwind m32r_frame_unwind = {
   "m32r prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   m32r_frame_this_id,
   m32r_frame_prev_register,
index a8466e31b58e141bca9c1c2dcf9c8bfba0f61ec5..bbb2976abc628dd71259589c46ac70d8449a6043 100644 (file)
@@ -939,6 +939,7 @@ m68hc11_frame_prev_register (frame_info_ptr this_frame,
 static const struct frame_unwind m68hc11_frame_unwind = {
   "m68hc11 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   m68hc11_frame_this_id,
   m68hc11_frame_prev_register,
index 9004b2e55b447fce0ca01a24ae6717de2c5ad0ad..f2b6905ef7c92d551abd5368e072c812998c356d 100644 (file)
@@ -318,6 +318,7 @@ static const struct frame_unwind m68k_linux_sigtramp_frame_unwind =
 {
   "m68k linux sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   m68k_linux_sigtramp_frame_this_id,
   m68k_linux_sigtramp_frame_prev_register,
index 1ae5c33e84200c0d07fd67d028e0b2ccff96222c..3f7e89a9a7b86c82a94867724638af746e4e7a95 100644 (file)
@@ -1011,6 +1011,7 @@ static const struct frame_unwind m68k_frame_unwind =
 {
   "m68k prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   m68k_frame_this_id,
   m68k_frame_prev_register,
index 573711e8ba4381a8795c87dad867fd82124466c9..a0c648ac6f399d5ec48dd82f7ea8bb83c279ce14 100644 (file)
@@ -2064,6 +2064,7 @@ mep_frame_prev_register (frame_info_ptr this_frame,
 static const struct frame_unwind mep_frame_unwind = {
   "mep prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   mep_frame_this_id,
   mep_frame_prev_register,
index fc83634d1e677a505270d769a67d95a32497bb8f..ced8b75a29a632fa01a0091decdc364903aba888 100644 (file)
@@ -482,6 +482,7 @@ static const struct frame_unwind microblaze_frame_unwind =
 {
   "microblaze prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   microblaze_frame_this_id,
   microblaze_frame_prev_register,
index e54440e20b5d0146047d36a99b10a1c24e72a50b..07a43d01e8d6a0a491e0127875e7bbea63b01b64 100644 (file)
@@ -165,6 +165,7 @@ static const struct frame_unwind mips_sde_frame_unwind =
 {
   "mips sde sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   mips_sde_frame_this_id,
   mips_sde_frame_prev_register,
index bf0b66c4b0024bfa21cb99dcd1d5ef7c01dc449a..457b875d0995425d050f6b09d6140e662e7db9b3 100644 (file)
@@ -2933,6 +2933,7 @@ static const struct frame_unwind mips_insn16_frame_unwind =
 {
   "mips insn16 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   mips_insn16_frame_this_id,
   mips_insn16_frame_prev_register,
@@ -3369,6 +3370,7 @@ static const struct frame_unwind mips_micro_frame_unwind =
 {
   "mips micro prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   mips_micro_frame_this_id,
   mips_micro_frame_prev_register,
@@ -3748,6 +3750,7 @@ static const struct frame_unwind mips_insn32_frame_unwind =
 {
   "mips insn32 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   mips_insn32_frame_this_id,
   mips_insn32_frame_prev_register,
@@ -3865,6 +3868,7 @@ static const struct frame_unwind mips_stub_frame_unwind =
 {
   "mips stub",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   mips_stub_frame_this_id,
   mips_stub_frame_prev_register,
index 4d65fed38e76779514725bee1544be8a28f618e1..307f199d46c23b51c2bb881ce6ecc14b749e4948 100644 (file)
@@ -1130,6 +1130,7 @@ mn10300_frame_prev_register (frame_info_ptr this_frame,
 static const struct frame_unwind mn10300_frame_unwind = {
   "mn10300 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   mn10300_frame_this_id, 
   mn10300_frame_prev_register,
index 4a80355ada55484d3551852da1465247054df64a..1eeec7dc646a1e35860c081e603ae5c840ca4e27 100644 (file)
@@ -588,6 +588,7 @@ moxie_frame_prev_register (frame_info_ptr this_frame,
 static const struct frame_unwind moxie_frame_unwind = {
   "moxie prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   moxie_frame_this_id,
   moxie_frame_prev_register,
index 6bbb1d43300f918a99a55ef82d46a69c2f99beaa..6bbcc1e1f283252098d274bdaacb714c5a43d82b 100644 (file)
@@ -545,6 +545,7 @@ msp430_prev_register (frame_info_ptr this_frame,
 static const struct frame_unwind msp430_unwind = {
   "msp430 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   msp430_this_id,
   msp430_prev_register,
index d4be42ce777ec903d030300f8edf2ee25983bbf4..d816b9a7edb463e0233df3c3d6d5f73a282f6cc9 100644 (file)
@@ -992,6 +992,7 @@ static const struct frame_unwind nds32_frame_unwind =
 {
   "nds32 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   nds32_frame_this_id,
   nds32_frame_prev_register,
@@ -1376,6 +1377,7 @@ static const struct frame_unwind nds32_epilogue_frame_unwind =
 {
   "nds32 epilogue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   nds32_epilogue_frame_this_id,
   nds32_epilogue_frame_prev_register,
index 196f50bc8694271000a3a2b3b87b85521ced60d4..5f4aa440bc6d82646cd2b8df245e20c42305a94b 100644 (file)
@@ -1981,6 +1981,7 @@ static const struct frame_unwind nios2_frame_unwind =
 {
   "nios2 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   nios2_frame_this_id,
   nios2_frame_prev_register,
@@ -2082,6 +2083,7 @@ static const struct frame_unwind nios2_stub_frame_unwind =
 {
   "nios2 stub",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   nios2_stub_frame_this_id,
   nios2_stub_frame_prev_register,
index c8365dc9d7218727a8ae42a386c01fc85ac58a50..a1dfbf63abf18fca60140b51829da9c5c3bd0e42 100644 (file)
@@ -1128,6 +1128,7 @@ or1k_frame_prev_register (frame_info_ptr this_frame,
 static const struct frame_unwind or1k_frame_unwind = {
   "or1k prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   or1k_frame_this_id,
   or1k_frame_prev_register,
index e70056a2ac80a89c7c4fec79b18edfaf66975bb4..03c3e28945914bed9af63a427b43e9cf6fe99398 100644 (file)
@@ -265,6 +265,7 @@ ppcfbsd_sigtramp_frame_prev_register (frame_info_ptr this_frame,
 static const struct frame_unwind ppcfbsd_sigtramp_frame_unwind = {
   "ppc freebsd sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   ppcfbsd_sigtramp_frame_this_id,
   ppcfbsd_sigtramp_frame_prev_register,
index d9e21e3a3269cf536ccac55b13e6dd9ef5e56699..4985bf8b618a7afdacf421c1159db2123d42a057 100644 (file)
@@ -234,6 +234,7 @@ ppcobsd_sigtramp_frame_prev_register (frame_info_ptr this_frame,
 static const struct frame_unwind ppcobsd_sigtramp_frame_unwind = {
   "ppc openbsd sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   ppcobsd_sigtramp_frame_this_id,
   ppcobsd_sigtramp_frame_prev_register,
index c55b5aa85ec8ef2c538916c7e4316bf638d17926..e66929508cd19672fcfbfd9a4159e75f79023147 100644 (file)
@@ -965,6 +965,7 @@ pyuw_on_new_gdbarch (gdbarch *newarch)
 
       unwinder->name = "python";
       unwinder->type = NORMAL_FRAME;
+      unwinder->unwinder_class = FRAME_UNWIND_EXTENSION;
       unwinder->stop_reason = default_frame_unwind_stop_reason;
       unwinder->this_id = pyuw_this_id;
       unwinder->prev_register = pyuw_prev_register;
index 030547ad51fda85c951e79b2db6e16e95e9909ca..6b1415d5096294fdca4c338e694bf14296dc1078 100644 (file)
@@ -1898,6 +1898,7 @@ const struct frame_unwind record_btrace_frame_unwind =
 {
   "record-btrace",
   NORMAL_FRAME,
+  FRAME_UNWIND_GDB,
   record_btrace_frame_unwind_stop_reason,
   record_btrace_frame_this_id,
   record_btrace_frame_prev_register,
@@ -1910,6 +1911,7 @@ const struct frame_unwind record_btrace_tailcall_frame_unwind =
 {
   "record-btrace tailcall",
   TAILCALL_FRAME,
+  FRAME_UNWIND_GDB,
   record_btrace_frame_unwind_stop_reason,
   record_btrace_frame_this_id,
   record_btrace_frame_prev_register,
index 9a7cfa35afd91df604772e691836f74f45b1ccec..4ecc7614c633261be0462cda0e87d4483cfc591d 100644 (file)
@@ -3905,6 +3905,7 @@ static const struct frame_unwind riscv_frame_unwind =
 {
   /*.name          =*/ "riscv prologue",
   /*.type          =*/ NORMAL_FRAME,
+  /*.unwinder_class=*/FRAME_UNWIND_ARCH,
   /*.stop_reason   =*/ default_frame_unwind_stop_reason,
   /*.this_id       =*/ riscv_frame_this_id,
   /*.prev_register =*/ riscv_frame_prev_register,
index aecda0ed2cc19999ea829b04fa7dbaa4b0fd0f80..88a96cbcade0e38596b5bbeaf4824e7acb76f75c 100644 (file)
@@ -1187,6 +1187,7 @@ static const struct frame_unwind rl78_unwind =
 {
   "rl78 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   rl78_this_id,
   rl78_prev_register,
index 6fdbf63d6a86cb96fcb832f2aa9392fa565650f4..39ef09f1ff85f8fdaf5b3674011cf3ff6b0f1e7e 100644 (file)
@@ -331,6 +331,7 @@ aix_sighandle_frame_sniffer (const struct frame_unwind *self,
 static const struct frame_unwind aix_sighandle_frame_unwind = {
   "rs6000 aix sighandle",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   aix_sighandle_frame_this_id,
   aix_sighandle_frame_prev_register,
index f61e0843c1c79aab8bf3bf01ec26043e1db4e66a..92e274687f19219c98c91d460afb78c5db493e74 100644 (file)
@@ -3842,6 +3842,7 @@ static const struct frame_unwind rs6000_frame_unwind =
 {
   "rs6000 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   rs6000_frame_this_id,
   rs6000_frame_prev_register,
@@ -3983,6 +3984,7 @@ static const struct frame_unwind rs6000_epilogue_frame_unwind =
 {
   "rs6000 epilogue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   rs6000_epilogue_frame_this_id, rs6000_epilogue_frame_prev_register,
   NULL,
index 5ea01e79bb5b8136172abe75e9d47d566e867d2f..18b00305e2a983cacd9ed088790730f58393f0b3 100644 (file)
@@ -634,6 +634,7 @@ rx_exception_sniffer (const struct frame_unwind *self,
 static const struct frame_unwind rx_frame_unwind = {
   "rx prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   rx_frame_this_id,
   rx_frame_prev_register,
@@ -648,6 +649,7 @@ static const struct frame_unwind rx_exception_unwind = {
   "rx exception",
   /* SIGTRAMP_FRAME could be used here, but backtraces are less informative.  */
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   rx_frame_this_id,
   rx_frame_prev_register,
index 4b2ed85c1670a85cf65561c008bf3404bb0ef52a..887d47353196196086f06da8619020c4cb722d58 100644 (file)
@@ -445,6 +445,7 @@ s12z_frame_prev_register (frame_info_ptr this_frame,
 static const struct frame_unwind s12z_frame_unwind = {
   "s12z prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   s12z_frame_this_id,
   s12z_frame_prev_register,
index 4f73d5a4c017429bd9c974dd661a38a0ef05737c..9c49bb853ec1c44d3f9e502712b162f5dcd1e32e 100644 (file)
@@ -545,6 +545,7 @@ s390_sigtramp_frame_sniffer (const struct frame_unwind *self,
 static const struct frame_unwind s390_sigtramp_frame_unwind = {
   "s390 linux sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   s390_sigtramp_frame_this_id,
   s390_sigtramp_frame_prev_register,
index 134bf984e5b6d10093bdef7a066abb1aff8c4328..c3eacf6935c1ec7e990b60b78536487ac4502319 100644 (file)
@@ -2649,6 +2649,7 @@ s390_frame_prev_register (frame_info_ptr this_frame,
 static const struct frame_unwind s390_frame_unwind = {
   "s390 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   s390_frame_this_id,
   s390_frame_prev_register,
@@ -2743,6 +2744,7 @@ s390_stub_frame_sniffer (const struct frame_unwind *self,
 static const struct frame_unwind s390_stub_frame_unwind = {
   "s390 stub",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   s390_stub_frame_this_id,
   s390_stub_frame_prev_register,
index 6b6cbeb3a3f27636cbcafbdf71cb992e3743b018..3f2f1f132113c54335dd1b6128e3ee8c36f6d5f5 100644 (file)
@@ -83,6 +83,7 @@ const struct frame_unwind sentinel_frame_unwind =
 {
   "sentinel",
   SENTINEL_FRAME,
+  FRAME_UNWIND_GDB,
   default_frame_unwind_stop_reason,
   sentinel_frame_this_id,
   sentinel_frame_prev_register,
index 3a4ff96428a6cf81d261b19d255743098408370a..b0ff92d4ceee87a670392c255f36c805b1fc59f0 100644 (file)
@@ -1932,6 +1932,7 @@ sh_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 static const struct frame_unwind sh_frame_unwind = {
   "sh prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   sh_frame_this_id,
   sh_frame_prev_register,
@@ -1999,6 +2000,7 @@ static const struct frame_unwind sh_stub_unwind =
 {
   "sh stub",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   sh_stub_this_id,
   sh_frame_prev_register,
index 486381f497b4abad011e1bc8cd869790f628eed2..3c1add9fa88e171319558063bbbcd2c152c52446 100644 (file)
@@ -253,6 +253,7 @@ static const struct frame_unwind sparc32nbsd_sigcontext_frame_unwind =
 {
   "sparc32 netbsd sigcontext",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   sparc32nbsd_sigcontext_frame_this_id,
   sparc32nbsd_sigcontext_frame_prev_register,
index 2155a30e20b16bcea363859d89d91ed91a8685c0..e56ddf2dfaf183b1270ad93058bd67dd44a95332 100644 (file)
@@ -138,6 +138,7 @@ static const struct frame_unwind sparc32obsd_sigtramp_frame_unwind =
 {
   "sparc32 openbsd sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   sparc32obsd_sigtramp_frame_this_id,
   sparc32obsd_sigtramp_frame_prev_register,
index a0a6c4cd71772592121e1c5248bd2b00b1db9c67..3fe8263534fd2e3bd253adc799a4a92a0970ce90 100644 (file)
@@ -184,6 +184,7 @@ static const struct frame_unwind sparc32_sol2_sigtramp_frame_unwind =
 {
   "sparc32 solaris sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   sparc32_sol2_sigtramp_frame_this_id,
   sparc32_sol2_sigtramp_frame_prev_register,
index f84e168ab9fd4adcfb68b701a34298f3af5b16ea..36dd7bd4312186dd0cfbf96c73ab3e625c58eedc 100644 (file)
@@ -1350,6 +1350,7 @@ static const struct frame_unwind sparc32_frame_unwind =
 {
   "sparc32 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   sparc32_frame_this_id,
   sparc32_frame_prev_register,
index 8c97ce87209f3816ef83c3cb449c2d1af4dd3d9e..b30c1edb39f0e8a6ca8b75b98e2250aa5ca8a72d 100644 (file)
@@ -201,6 +201,7 @@ static const struct frame_unwind sparc64fbsd_sigtramp_frame_unwind =
 {
   "sparc64 freebsd sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   sparc64fbsd_sigtramp_frame_this_id,
   sparc64fbsd_sigtramp_frame_prev_register,
index 82405f8b62bad7b7338c07652ad59b3d6ba47a4f..3f61410f9717aebba61858ddb4de1d153a5cb969 100644 (file)
@@ -227,6 +227,7 @@ static const struct frame_unwind sparc64nbsd_sigcontext_frame_unwind =
 {
   "sparc64 netbsd sigcontext",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   sparc64nbsd_sigcontext_frame_this_id,
   sparc64nbsd_sigcontext_frame_prev_register,
index 7f22c4b0fc0f85f28e0e8d58128265d7af4041cb..f1983c1f1d5dfad027dd2cec75cbe78bb9d96841 100644 (file)
@@ -224,6 +224,7 @@ static const struct frame_unwind sparc64obsd_frame_unwind =
 {
   "sparc64 openbsd sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   sparc64obsd_frame_this_id,
   sparc64obsd_frame_prev_register,
index 95db72bcbe722e1fab86845a61976eccc14dee85..3cdc7a72f2df547c7daca6212b2714dbb5ff306c 100644 (file)
@@ -187,6 +187,7 @@ static const struct frame_unwind sparc64_sol2_sigtramp_frame_unwind =
 {
   "sparc64 solaris sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   sparc64_sol2_sigtramp_frame_this_id,
   sparc64_sol2_sigtramp_frame_prev_register,
index 39ad976eaaeb9aba5a9c9bf66a2153510e29b21b..cf37d0a37ee08b3a10565166c238717e01c2b85e 100644 (file)
@@ -1138,6 +1138,7 @@ static const struct frame_unwind sparc64_frame_unwind =
 {
   "sparc64 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   sparc64_frame_this_id,
   sparc64_frame_prev_register,
index c81f0100a27aa91ba9b71d17468c940b99823cf2..f6c8d7f6cd2c1ef854657307e69d69d6364e1b89 100644 (file)
@@ -456,6 +456,7 @@ static const struct frame_unwind tic6x_frame_unwind =
 {
   "tic6x prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   tic6x_frame_this_id,
   tic6x_frame_prev_register,
index 8264937788f0b265566d45f2f817a5aa3f5ca0f3..690159f3c19f2881d8d4ccb75d1ddd703b4721bb 100644 (file)
@@ -903,6 +903,7 @@ tilegx_frame_base_address (frame_info_ptr this_frame, void **this_cache)
 static const struct frame_unwind tilegx_frame_unwind = {
   "tilegx prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   tilegx_frame_this_id,
   tilegx_frame_prev_register,
index 51abd347db425587c0cff8a1d280725591d8da06..d2513fc6eaaf2e378eb949c1402640b521cb8e2e 100644 (file)
@@ -166,6 +166,7 @@ tramp_frame_prepend_unwinder (struct gdbarch *gdbarch,
   data->tramp_frame = tramp_frame;
   unwinder->type = tramp_frame->frame_type;
   unwinder->unwind_data = data;
+  unwinder->unwinder_class = FRAME_UNWIND_GDB;
   unwinder->sniffer = tramp_frame_sniffer;
   unwinder->stop_reason = default_frame_unwind_stop_reason;
   unwinder->this_id = tramp_frame_this_id;
index 5b22ee2f4c421a8cffbd4f9b3721405cd15a7249..43475ca35413dd72b46dda1edb80de3e8bcb6ae9 100644 (file)
@@ -1323,6 +1323,7 @@ v850_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 static const struct frame_unwind v850_frame_unwind = {
   "v850 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   v850_frame_this_id,
   v850_frame_prev_register,
index 979dc1786e0ab2f6bf96810ecbf0caa720bd7498..8283120b52fffba9e6ba9d31bb0204277bbd65f2 100644 (file)
@@ -390,6 +390,7 @@ static const struct frame_unwind vax_frame_unwind =
 {
   "vax prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   vax_frame_this_id,
   vax_frame_prev_register,
index b19c9491fd0fc52ad1101d5abf66baa28e27cede..149582948721d5f299d0ac05c201a2c068b92e27 100644 (file)
@@ -731,6 +731,7 @@ xstormy16_frame_base_address (frame_info_ptr this_frame, void **this_cache)
 static const struct frame_unwind xstormy16_frame_unwind = {
   "xstormy16 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   xstormy16_frame_this_id,
   xstormy16_frame_prev_register,
index f03eafdc6f726bf02cd861f058ed04e154ebfb8f..6c9d51cb64b2e6096644ce63abd45a189b0fd40b 100644 (file)
@@ -1068,6 +1068,7 @@ z80_frame_unwind =
 {
   "z80",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   z80_frame_this_id,
   z80_frame_prev_register,