aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuinevere Larsen <blarsen@redhat.com>2024-01-19 09:46:46 +0100
committerGuinevere Larsen <blarsen@redhat.com>2024-02-16 18:30:24 +0100
commit840e48cd7c9a6245fe0f910317060b25b408e81e (patch)
tree240b01920c5729f07f75f28d13fcac3d0a745f9f
parentfb054b5e08a3ec871ae5e91f7335e56147250519 (diff)
downloadgdb-users/gwen/try-frame-unwind-c++-ification.zip
gdb-users/gwen/try-frame-unwind-c++-ification.tar.gz
gdb-users/gwen/try-frame-unwind-c++-ification.tar.bz2
gdb: add "unwinder class" to frame unwindersusers/gwen/try-frame-unwind-c++-ification
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.
-rw-r--r--gdb/aarch64-tdep.c2
-rw-r--r--gdb/alpha-mdebug-tdep.c1
-rw-r--r--gdb/alpha-tdep.c2
-rw-r--r--gdb/amd64-obsd-tdep.c1
-rw-r--r--gdb/amd64-tdep.c4
-rw-r--r--gdb/amd64-windows-tdep.c1
-rw-r--r--gdb/amdgpu-tdep.c1
-rw-r--r--gdb/arc-tdep.c2
-rw-r--r--gdb/arm-tdep.c5
-rw-r--r--gdb/avr-tdep.c1
-rw-r--r--gdb/bfin-tdep.c1
-rw-r--r--gdb/bpf-tdep.c1
-rw-r--r--gdb/cris-tdep.c2
-rw-r--r--gdb/csky-tdep.c2
-rw-r--r--gdb/dummy-frame.c1
-rw-r--r--gdb/dwarf2/frame-tailcall.c1
-rw-r--r--gdb/dwarf2/frame.c2
-rw-r--r--gdb/frame-unwind.c27
-rw-r--r--gdb/frame-unwind.h11
-rw-r--r--gdb/frv-linux-tdep.c1
-rw-r--r--gdb/frv-tdep.c1
-rw-r--r--gdb/ft32-tdep.c1
-rw-r--r--gdb/h8300-tdep.c1
-rw-r--r--gdb/hppa-linux-tdep.c1
-rw-r--r--gdb/hppa-tdep.c3
-rw-r--r--gdb/i386-obsd-tdep.c1
-rw-r--r--gdb/i386-tdep.c5
-rw-r--r--gdb/ia64-tdep.c4
-rw-r--r--gdb/inline-frame.c1
-rw-r--r--gdb/iq2000-tdep.c1
-rw-r--r--gdb/jit.c1
-rw-r--r--gdb/lm32-tdep.c1
-rw-r--r--gdb/loongarch-tdep.c1
-rw-r--r--gdb/m32c-tdep.c1
-rw-r--r--gdb/m32r-linux-tdep.c1
-rw-r--r--gdb/m32r-tdep.c1
-rw-r--r--gdb/m68hc11-tdep.c1
-rw-r--r--gdb/m68k-linux-tdep.c1
-rw-r--r--gdb/m68k-tdep.c1
-rw-r--r--gdb/mep-tdep.c1
-rw-r--r--gdb/microblaze-tdep.c1
-rw-r--r--gdb/mips-sde-tdep.c1
-rw-r--r--gdb/mips-tdep.c4
-rw-r--r--gdb/mn10300-tdep.c1
-rw-r--r--gdb/moxie-tdep.c1
-rw-r--r--gdb/msp430-tdep.c1
-rw-r--r--gdb/nds32-tdep.c2
-rw-r--r--gdb/nios2-tdep.c2
-rw-r--r--gdb/or1k-tdep.c1
-rw-r--r--gdb/ppc-fbsd-tdep.c1
-rw-r--r--gdb/ppc-obsd-tdep.c1
-rw-r--r--gdb/python/py-unwind.c1
-rw-r--r--gdb/record-btrace.c2
-rw-r--r--gdb/riscv-tdep.c1
-rw-r--r--gdb/rl78-tdep.c1
-rw-r--r--gdb/rs6000-aix-tdep.c1
-rw-r--r--gdb/rs6000-tdep.c2
-rw-r--r--gdb/rx-tdep.c2
-rw-r--r--gdb/s12z-tdep.c1
-rw-r--r--gdb/s390-linux-tdep.c1
-rw-r--r--gdb/s390-tdep.c2
-rw-r--r--gdb/sentinel-frame.c1
-rw-r--r--gdb/sh-tdep.c2
-rw-r--r--gdb/sparc-netbsd-tdep.c1
-rw-r--r--gdb/sparc-obsd-tdep.c1
-rw-r--r--gdb/sparc-sol2-tdep.c1
-rw-r--r--gdb/sparc-tdep.c1
-rw-r--r--gdb/sparc64-fbsd-tdep.c1
-rw-r--r--gdb/sparc64-netbsd-tdep.c1
-rw-r--r--gdb/sparc64-obsd-tdep.c1
-rw-r--r--gdb/sparc64-sol2-tdep.c1
-rw-r--r--gdb/sparc64-tdep.c1
-rw-r--r--gdb/tic6x-tdep.c1
-rw-r--r--gdb/tilegx-tdep.c1
-rw-r--r--gdb/tramp-frame.c1
-rw-r--r--gdb/v850-tdep.c1
-rw-r--r--gdb/vax-tdep.c1
-rw-r--r--gdb/xstormy16-tdep.c1
-rw-r--r--gdb/z80-tdep.c1
79 files changed, 146 insertions, 1 deletions
diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c
index b97e215..abbf8dc 100644
--- a/gdb/aarch64-tdep.c
+++ b/gdb/aarch64-tdep.c
@@ -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,
diff --git a/gdb/alpha-mdebug-tdep.c b/gdb/alpha-mdebug-tdep.c
index 7691a53..f7323a4 100644
--- a/gdb/alpha-mdebug-tdep.c
+++ b/gdb/alpha-mdebug-tdep.c
@@ -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,
diff --git a/gdb/alpha-tdep.c b/gdb/alpha-tdep.c
index cafadae..1d07fe2 100644
--- a/gdb/alpha-tdep.c
+++ b/gdb/alpha-tdep.c
@@ -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,
diff --git a/gdb/amd64-obsd-tdep.c b/gdb/amd64-obsd-tdep.c
index 9cca6b1..a359802 100644
--- a/gdb/amd64-obsd-tdep.c
+++ b/gdb/amd64-obsd-tdep.c
@@ -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,
diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
index baca309..6b868c2 100644
--- a/gdb/amd64-tdep.c
+++ b/gdb/amd64-tdep.c
@@ -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,
diff --git a/gdb/amd64-windows-tdep.c b/gdb/amd64-windows-tdep.c
index 50304e1..d423f2b 100644
--- a/gdb/amd64-windows-tdep.c
+++ b/gdb/amd64-windows-tdep.c
@@ -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,
diff --git a/gdb/amdgpu-tdep.c b/gdb/amdgpu-tdep.c
index 44252e5..ac0ed0c 100644
--- a/gdb/amdgpu-tdep.c
+++ b/gdb/amdgpu-tdep.c
@@ -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,
diff --git a/gdb/arc-tdep.c b/gdb/arc-tdep.c
index 84e211c..fa52ad0 100644
--- a/gdb/arc-tdep.c
+++ b/gdb/arc-tdep.c
@@ -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,
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index 081e934..086fa56 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -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,
diff --git a/gdb/avr-tdep.c b/gdb/avr-tdep.c
index 63b45be..701cec8 100644
--- a/gdb/avr-tdep.c
+++ b/gdb/avr-tdep.c
@@ -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,
diff --git a/gdb/bfin-tdep.c b/gdb/bfin-tdep.c
index 877fd94..3194296 100644
--- a/gdb/bfin-tdep.c
+++ b/gdb/bfin-tdep.c
@@ -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,
diff --git a/gdb/bpf-tdep.c b/gdb/bpf-tdep.c
index 4409a1e..603d0cc 100644
--- a/gdb/bpf-tdep.c
+++ b/gdb/bpf-tdep.c
@@ -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,
diff --git a/gdb/cris-tdep.c b/gdb/cris-tdep.c
index 1f10874..aa70a17 100644
--- a/gdb/cris-tdep.c
+++ b/gdb/cris-tdep.c
@@ -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,
diff --git a/gdb/csky-tdep.c b/gdb/csky-tdep.c
index 2aa6c0a..4fcc707 100644
--- a/gdb/csky-tdep.c
+++ b/gdb/csky-tdep.c
@@ -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,
diff --git a/gdb/dummy-frame.c b/gdb/dummy-frame.c
index 309483d..dd0a466 100644
--- a/gdb/dummy-frame.c
+++ b/gdb/dummy-frame.c
@@ -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,
diff --git a/gdb/dwarf2/frame-tailcall.c b/gdb/dwarf2/frame-tailcall.c
index 27a820a..18abd2a 100644
--- a/gdb/dwarf2/frame-tailcall.c
+++ b/gdb/dwarf2/frame-tailcall.c
@@ -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,
diff --git a/gdb/dwarf2/frame.c b/gdb/dwarf2/frame.c
index fc6704f..f747b9b 100644
--- a/gdb/dwarf2/frame.c
+++ b/gdb/dwarf2/frame.c
@@ -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,
diff --git a/gdb/frame-unwind.c b/gdb/frame-unwind.c
index 877f1e5..86e330d 100644
--- a/gdb/frame-unwind.c
+++ b/gdb/frame-unwind.c
@@ -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");
}
}
diff --git a/gdb/frame-unwind.h b/gdb/frame-unwind.h
index 9e97889..86bb092 100644
--- a/gdb/frame-unwind.h
+++ b/gdb/frame-unwind.h
@@ -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;
diff --git a/gdb/frv-linux-tdep.c b/gdb/frv-linux-tdep.c
index e02d339..657377c 100644
--- a/gdb/frv-linux-tdep.c
+++ b/gdb/frv-linux-tdep.c
@@ -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,
diff --git a/gdb/frv-tdep.c b/gdb/frv-tdep.c
index 1994dd7..b1dc0a2 100644
--- a/gdb/frv-tdep.c
+++ b/gdb/frv-tdep.c
@@ -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,
diff --git a/gdb/ft32-tdep.c b/gdb/ft32-tdep.c
index 069d40f..22a0fbf 100644
--- a/gdb/ft32-tdep.c
+++ b/gdb/ft32-tdep.c
@@ -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,
diff --git a/gdb/h8300-tdep.c b/gdb/h8300-tdep.c
index da5b105..ef73e78 100644
--- a/gdb/h8300-tdep.c
+++ b/gdb/h8300-tdep.c
@@ -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,
diff --git a/gdb/hppa-linux-tdep.c b/gdb/hppa-linux-tdep.c
index 4f94b41..c187ff1 100644
--- a/gdb/hppa-linux-tdep.c
+++ b/gdb/hppa-linux-tdep.c
@@ -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,
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c
index 32e46b8..d5c41db 100644
--- a/gdb/hppa-tdep.c
+++ b/gdb/hppa-tdep.c
@@ -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,
diff --git a/gdb/i386-obsd-tdep.c b/gdb/i386-obsd-tdep.c
index 38ba280..4b790ee 100644
--- a/gdb/i386-obsd-tdep.c
+++ b/gdb/i386-obsd-tdep.c
@@ -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,
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
index d8691f0..d98b332 100644
--- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c
@@ -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,
diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c
index afff210..53bac38 100644
--- a/gdb/ia64-tdep.c
+++ b/gdb/ia64-tdep.c
@@ -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,
diff --git a/gdb/inline-frame.c b/gdb/inline-frame.c
index 02dbcd1..575fab6 100644
--- a/gdb/inline-frame.c
+++ b/gdb/inline-frame.c
@@ -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,
diff --git a/gdb/iq2000-tdep.c b/gdb/iq2000-tdep.c
index 937a351..0cf0737 100644
--- a/gdb/iq2000-tdep.c
+++ b/gdb/iq2000-tdep.c
@@ -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,
diff --git a/gdb/jit.c b/gdb/jit.c
index f1dbf39..c2d8a2b 100644
--- 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,
diff --git a/gdb/lm32-tdep.c b/gdb/lm32-tdep.c
index 12e9b5a..a132dec 100644
--- a/gdb/lm32-tdep.c
+++ b/gdb/lm32-tdep.c
@@ -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,
diff --git a/gdb/loongarch-tdep.c b/gdb/loongarch-tdep.c
index 0f4622a..3e017c4 100644
--- a/gdb/loongarch-tdep.c
+++ b/gdb/loongarch-tdep.c
@@ -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,
diff --git a/gdb/m32c-tdep.c b/gdb/m32c-tdep.c
index 8da15fe..5a91160 100644
--- a/gdb/m32c-tdep.c
+++ b/gdb/m32c-tdep.c
@@ -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,
diff --git a/gdb/m32r-linux-tdep.c b/gdb/m32r-linux-tdep.c
index ec054fa..4287c81 100644
--- a/gdb/m32r-linux-tdep.c
+++ b/gdb/m32r-linux-tdep.c
@@ -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,
diff --git a/gdb/m32r-tdep.c b/gdb/m32r-tdep.c
index 7385594..8210662 100644
--- a/gdb/m32r-tdep.c
+++ b/gdb/m32r-tdep.c
@@ -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,
diff --git a/gdb/m68hc11-tdep.c b/gdb/m68hc11-tdep.c
index a8466e3..bbb2976 100644
--- a/gdb/m68hc11-tdep.c
+++ b/gdb/m68hc11-tdep.c
@@ -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,
diff --git a/gdb/m68k-linux-tdep.c b/gdb/m68k-linux-tdep.c
index 9004b2e..f2b6905 100644
--- a/gdb/m68k-linux-tdep.c
+++ b/gdb/m68k-linux-tdep.c
@@ -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,
diff --git a/gdb/m68k-tdep.c b/gdb/m68k-tdep.c
index 1ae5c33..3f7e89a 100644
--- a/gdb/m68k-tdep.c
+++ b/gdb/m68k-tdep.c
@@ -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,
diff --git a/gdb/mep-tdep.c b/gdb/mep-tdep.c
index 573711e..a0c648a 100644
--- a/gdb/mep-tdep.c
+++ b/gdb/mep-tdep.c
@@ -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,
diff --git a/gdb/microblaze-tdep.c b/gdb/microblaze-tdep.c
index fc83634..ced8b75 100644
--- a/gdb/microblaze-tdep.c
+++ b/gdb/microblaze-tdep.c
@@ -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,
diff --git a/gdb/mips-sde-tdep.c b/gdb/mips-sde-tdep.c
index e54440e..07a43d0 100644
--- a/gdb/mips-sde-tdep.c
+++ b/gdb/mips-sde-tdep.c
@@ -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,
diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
index bf0b66c..457b875 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -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,
diff --git a/gdb/mn10300-tdep.c b/gdb/mn10300-tdep.c
index 4d65fed..307f199 100644
--- a/gdb/mn10300-tdep.c
+++ b/gdb/mn10300-tdep.c
@@ -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,
diff --git a/gdb/moxie-tdep.c b/gdb/moxie-tdep.c
index 4a80355..1eeec7d 100644
--- a/gdb/moxie-tdep.c
+++ b/gdb/moxie-tdep.c
@@ -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,
diff --git a/gdb/msp430-tdep.c b/gdb/msp430-tdep.c
index 6bbb1d4..6bbcc1e 100644
--- a/gdb/msp430-tdep.c
+++ b/gdb/msp430-tdep.c
@@ -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,
diff --git a/gdb/nds32-tdep.c b/gdb/nds32-tdep.c
index d4be42c..d816b9a 100644
--- a/gdb/nds32-tdep.c
+++ b/gdb/nds32-tdep.c
@@ -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,
diff --git a/gdb/nios2-tdep.c b/gdb/nios2-tdep.c
index 196f50b..5f4aa44 100644
--- a/gdb/nios2-tdep.c
+++ b/gdb/nios2-tdep.c
@@ -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,
diff --git a/gdb/or1k-tdep.c b/gdb/or1k-tdep.c
index c8365dc..a1dfbf6 100644
--- a/gdb/or1k-tdep.c
+++ b/gdb/or1k-tdep.c
@@ -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,
diff --git a/gdb/ppc-fbsd-tdep.c b/gdb/ppc-fbsd-tdep.c
index e70056a..03c3e28 100644
--- a/gdb/ppc-fbsd-tdep.c
+++ b/gdb/ppc-fbsd-tdep.c
@@ -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,
diff --git a/gdb/ppc-obsd-tdep.c b/gdb/ppc-obsd-tdep.c
index d9e21e3..4985bf8 100644
--- a/gdb/ppc-obsd-tdep.c
+++ b/gdb/ppc-obsd-tdep.c
@@ -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,
diff --git a/gdb/python/py-unwind.c b/gdb/python/py-unwind.c
index c55b5aa..e669295 100644
--- a/gdb/python/py-unwind.c
+++ b/gdb/python/py-unwind.c
@@ -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;
diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c
index 030547a..6b1415d 100644
--- a/gdb/record-btrace.c
+++ b/gdb/record-btrace.c
@@ -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,
diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c
index 9a7cfa3..4ecc761 100644
--- a/gdb/riscv-tdep.c
+++ b/gdb/riscv-tdep.c
@@ -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,
diff --git a/gdb/rl78-tdep.c b/gdb/rl78-tdep.c
index aecda0e..88a96cb 100644
--- a/gdb/rl78-tdep.c
+++ b/gdb/rl78-tdep.c
@@ -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,
diff --git a/gdb/rs6000-aix-tdep.c b/gdb/rs6000-aix-tdep.c
index 6fdbf63..39ef09f 100644
--- a/gdb/rs6000-aix-tdep.c
+++ b/gdb/rs6000-aix-tdep.c
@@ -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,
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
index f61e084..92e2746 100644
--- a/gdb/rs6000-tdep.c
+++ b/gdb/rs6000-tdep.c
@@ -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,
diff --git a/gdb/rx-tdep.c b/gdb/rx-tdep.c
index 5ea01e7..18b0030 100644
--- a/gdb/rx-tdep.c
+++ b/gdb/rx-tdep.c
@@ -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,
diff --git a/gdb/s12z-tdep.c b/gdb/s12z-tdep.c
index 4b2ed85..887d473 100644
--- a/gdb/s12z-tdep.c
+++ b/gdb/s12z-tdep.c
@@ -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,
diff --git a/gdb/s390-linux-tdep.c b/gdb/s390-linux-tdep.c
index 4f73d5a..9c49bb8 100644
--- a/gdb/s390-linux-tdep.c
+++ b/gdb/s390-linux-tdep.c
@@ -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,
diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c
index 134bf98..c3eacf6 100644
--- a/gdb/s390-tdep.c
+++ b/gdb/s390-tdep.c
@@ -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,
diff --git a/gdb/sentinel-frame.c b/gdb/sentinel-frame.c
index 6b6cbeb..3f2f1f1 100644
--- a/gdb/sentinel-frame.c
+++ b/gdb/sentinel-frame.c
@@ -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,
diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c
index 3a4ff96..b0ff92d 100644
--- a/gdb/sh-tdep.c
+++ b/gdb/sh-tdep.c
@@ -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,
diff --git a/gdb/sparc-netbsd-tdep.c b/gdb/sparc-netbsd-tdep.c
index 486381f..3c1add9 100644
--- a/gdb/sparc-netbsd-tdep.c
+++ b/gdb/sparc-netbsd-tdep.c
@@ -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,
diff --git a/gdb/sparc-obsd-tdep.c b/gdb/sparc-obsd-tdep.c
index 2155a30..e56ddf2 100644
--- a/gdb/sparc-obsd-tdep.c
+++ b/gdb/sparc-obsd-tdep.c
@@ -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,
diff --git a/gdb/sparc-sol2-tdep.c b/gdb/sparc-sol2-tdep.c
index a0a6c4c..3fe8263 100644
--- a/gdb/sparc-sol2-tdep.c
+++ b/gdb/sparc-sol2-tdep.c
@@ -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,
diff --git a/gdb/sparc-tdep.c b/gdb/sparc-tdep.c
index f84e168..36dd7bd 100644
--- a/gdb/sparc-tdep.c
+++ b/gdb/sparc-tdep.c
@@ -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,
diff --git a/gdb/sparc64-fbsd-tdep.c b/gdb/sparc64-fbsd-tdep.c
index 8c97ce8..b30c1edb 100644
--- a/gdb/sparc64-fbsd-tdep.c
+++ b/gdb/sparc64-fbsd-tdep.c
@@ -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,
diff --git a/gdb/sparc64-netbsd-tdep.c b/gdb/sparc64-netbsd-tdep.c
index 82405f8..3f61410 100644
--- a/gdb/sparc64-netbsd-tdep.c
+++ b/gdb/sparc64-netbsd-tdep.c
@@ -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,
diff --git a/gdb/sparc64-obsd-tdep.c b/gdb/sparc64-obsd-tdep.c
index 7f22c4b..f1983c1 100644
--- a/gdb/sparc64-obsd-tdep.c
+++ b/gdb/sparc64-obsd-tdep.c
@@ -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,
diff --git a/gdb/sparc64-sol2-tdep.c b/gdb/sparc64-sol2-tdep.c
index 95db72b..3cdc7a7 100644
--- a/gdb/sparc64-sol2-tdep.c
+++ b/gdb/sparc64-sol2-tdep.c
@@ -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,
diff --git a/gdb/sparc64-tdep.c b/gdb/sparc64-tdep.c
index 39ad976..cf37d0a 100644
--- a/gdb/sparc64-tdep.c
+++ b/gdb/sparc64-tdep.c
@@ -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,
diff --git a/gdb/tic6x-tdep.c b/gdb/tic6x-tdep.c
index c81f010..f6c8d7f 100644
--- a/gdb/tic6x-tdep.c
+++ b/gdb/tic6x-tdep.c
@@ -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,
diff --git a/gdb/tilegx-tdep.c b/gdb/tilegx-tdep.c
index 8264937..690159f 100644
--- a/gdb/tilegx-tdep.c
+++ b/gdb/tilegx-tdep.c
@@ -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,
diff --git a/gdb/tramp-frame.c b/gdb/tramp-frame.c
index 51abd34..d2513fc 100644
--- a/gdb/tramp-frame.c
+++ b/gdb/tramp-frame.c
@@ -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;
diff --git a/gdb/v850-tdep.c b/gdb/v850-tdep.c
index 5b22ee2..43475ca 100644
--- a/gdb/v850-tdep.c
+++ b/gdb/v850-tdep.c
@@ -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,
diff --git a/gdb/vax-tdep.c b/gdb/vax-tdep.c
index 979dc17..8283120 100644
--- a/gdb/vax-tdep.c
+++ b/gdb/vax-tdep.c
@@ -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,
diff --git a/gdb/xstormy16-tdep.c b/gdb/xstormy16-tdep.c
index b19c949..1495829 100644
--- a/gdb/xstormy16-tdep.c
+++ b/gdb/xstormy16-tdep.c
@@ -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,
diff --git a/gdb/z80-tdep.c b/gdb/z80-tdep.c
index f03eafd..6c9d51c 100644
--- a/gdb/z80-tdep.c
+++ b/gdb/z80-tdep.c
@@ -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,