mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-18 12:24:38 +08:00
gdb: add names to unwinders, add debug messages when looking for unwinder
I wrote this while debugging a problem where the expected unwinder for a frame wasn't used. It adds messages to show which unwinders are considered for a frame, why they are not selected (if an exception is thrown), and finally which unwinder is selected in the end. To be able to show a meaningful, human-readable name for the unwinders, add a "name" field to struct frame_unwind, and update all instances to include a name. Here's an example of the output: [frame] frame_unwind_find_by_frame: this_frame=0 [frame] frame_unwind_try_unwinder: trying unwinder "dummy" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "dwarf2 tailcall" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "inline" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "jit" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "python" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "amd64 epilogue" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "i386 epilogue" [frame] frame_unwind_try_unwinder: no [frame] frame_unwind_try_unwinder: trying unwinder "dwarf2" [frame] frame_unwind_try_unwinder: yes gdb/ChangeLog: * frame-unwind.h (struct frame_unwind) <name>: New. Update instances everywhere to include this field. * frame-unwind.c (frame_unwind_try_unwinder, frame_unwind_find_by_frame): Add debug messages. Change-Id: I813f17777422425f0d08b22499817b23922e8ddb
This commit is contained in:
parent
a05a883fba
commit
a154d838a7
@ -1,3 +1,10 @@
|
||||
2021-06-29 Simon Marchi <simon.marchi@polymtl.ca>
|
||||
|
||||
* frame-unwind.h (struct frame_unwind) <name>: New. Update
|
||||
instances everywhere to include this field.
|
||||
* frame-unwind.c (frame_unwind_try_unwinder,
|
||||
frame_unwind_find_by_frame): Add debug messages.
|
||||
|
||||
2021-06-29 Simon Marchi <simon.marchi@polymtl.ca>
|
||||
|
||||
* frame.h (frame_debug_printf): New.
|
||||
|
@ -1116,6 +1116,7 @@ aarch64_prologue_prev_register (struct frame_info *this_frame,
|
||||
/* AArch64 prologue unwinder. */
|
||||
static frame_unwind aarch64_prologue_unwind =
|
||||
{
|
||||
"aarch64 prologue",
|
||||
NORMAL_FRAME,
|
||||
aarch64_prologue_frame_unwind_stop_reason,
|
||||
aarch64_prologue_this_id,
|
||||
@ -1210,6 +1211,7 @@ aarch64_stub_unwind_sniffer (const struct frame_unwind *self,
|
||||
/* AArch64 stub unwinder. */
|
||||
static frame_unwind aarch64_stub_unwind =
|
||||
{
|
||||
"aarch64 stub",
|
||||
NORMAL_FRAME,
|
||||
aarch64_stub_frame_unwind_stop_reason,
|
||||
aarch64_stub_this_id,
|
||||
|
@ -333,7 +333,9 @@ alpha_mdebug_frame_sniffer (const struct frame_unwind *self,
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const struct frame_unwind alpha_mdebug_frame_unwind = {
|
||||
static const struct frame_unwind alpha_mdebug_frame_unwind =
|
||||
{
|
||||
"alpha mdebug",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
alpha_mdebug_frame_this_id,
|
||||
|
@ -1012,7 +1012,9 @@ alpha_sigtramp_frame_sniffer (const struct frame_unwind *self,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct frame_unwind alpha_sigtramp_frame_unwind = {
|
||||
static const struct frame_unwind alpha_sigtramp_frame_unwind =
|
||||
{
|
||||
"alpha sigtramp",
|
||||
SIGTRAMP_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
alpha_sigtramp_frame_this_id,
|
||||
@ -1429,7 +1431,9 @@ alpha_heuristic_frame_prev_register (struct frame_info *this_frame,
|
||||
return trad_frame_get_prev_register (this_frame, info->saved_regs, regnum);
|
||||
}
|
||||
|
||||
static const struct frame_unwind alpha_heuristic_frame_unwind = {
|
||||
static const struct frame_unwind alpha_heuristic_frame_unwind =
|
||||
{
|
||||
"alpha prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
alpha_heuristic_frame_this_id,
|
||||
|
@ -402,10 +402,12 @@ amd64obsd_trapframe_sniffer (const struct frame_unwind *self,
|
||||
|| (startswith (name, "Xintr"))));
|
||||
}
|
||||
|
||||
static const struct frame_unwind amd64obsd_trapframe_unwind = {
|
||||
static const struct frame_unwind amd64obsd_trapframe_unwind =
|
||||
{
|
||||
/* FIXME: kettenis/20051219: This really is more like an interrupt
|
||||
frame, but SIGTRAMP_FRAME would print <signal handler called>,
|
||||
which really is not what we want here. */
|
||||
"amd64 openbsd trap",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
amd64obsd_trapframe_this_id,
|
||||
|
@ -2702,6 +2702,7 @@ amd64_frame_prev_register (struct frame_info *this_frame, void **this_cache,
|
||||
|
||||
static const struct frame_unwind amd64_frame_unwind =
|
||||
{
|
||||
"amd64 prologue",
|
||||
NORMAL_FRAME,
|
||||
amd64_frame_unwind_stop_reason,
|
||||
amd64_frame_this_id,
|
||||
@ -2846,6 +2847,7 @@ amd64_sigtramp_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind amd64_sigtramp_frame_unwind =
|
||||
{
|
||||
"amd64 sigtramp",
|
||||
SIGTRAMP_FRAME,
|
||||
amd64_sigtramp_frame_unwind_stop_reason,
|
||||
amd64_sigtramp_frame_this_id,
|
||||
@ -2981,6 +2983,7 @@ amd64_epilogue_frame_this_id (struct frame_info *this_frame,
|
||||
|
||||
static const struct frame_unwind amd64_epilogue_frame_unwind =
|
||||
{
|
||||
"amd64 epilogue",
|
||||
NORMAL_FRAME,
|
||||
amd64_epilogue_frame_unwind_stop_reason,
|
||||
amd64_epilogue_frame_this_id,
|
||||
|
@ -1178,6 +1178,7 @@ amd64_windows_frame_this_id (struct frame_info *this_frame, void **this_cache,
|
||||
|
||||
static const struct frame_unwind amd64_windows_frame_unwind =
|
||||
{
|
||||
"amd64 windows",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
&amd64_windows_frame_this_id,
|
||||
|
@ -1922,6 +1922,7 @@ arc_sigtramp_frame_sniffer (const struct frame_unwind *self,
|
||||
accepts the frame. */
|
||||
|
||||
static const struct frame_unwind arc_frame_unwind = {
|
||||
"arc prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
arc_frame_this_id,
|
||||
@ -1937,6 +1938,7 @@ static const struct frame_unwind arc_frame_unwind = {
|
||||
context. */
|
||||
|
||||
static const struct frame_unwind arc_sigtramp_frame_unwind = {
|
||||
"arc sigtramp",
|
||||
SIGTRAMP_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
arc_sigtramp_frame_this_id,
|
||||
|
@ -2027,6 +2027,7 @@ arm_prologue_prev_register (struct frame_info *this_frame,
|
||||
}
|
||||
|
||||
static frame_unwind arm_prologue_unwind = {
|
||||
"arm prologue",
|
||||
NORMAL_FRAME,
|
||||
arm_prologue_unwind_stop_reason,
|
||||
arm_prologue_this_id,
|
||||
@ -2736,6 +2737,7 @@ arm_exidx_unwind_sniffer (const struct frame_unwind *self,
|
||||
}
|
||||
|
||||
struct frame_unwind arm_exidx_unwind = {
|
||||
"arm exidx",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
arm_prologue_this_id,
|
||||
@ -2839,6 +2841,7 @@ arm_epilogue_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind arm_epilogue_frame_unwind =
|
||||
{
|
||||
"arm epilogue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
arm_epilogue_frame_this_id,
|
||||
@ -2960,6 +2963,7 @@ arm_stub_unwind_sniffer (const struct frame_unwind *self,
|
||||
}
|
||||
|
||||
struct frame_unwind arm_stub_unwind = {
|
||||
"arm stub",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
arm_stub_this_id,
|
||||
@ -3171,6 +3175,7 @@ arm_m_exception_unwind_sniffer (const struct frame_unwind *self,
|
||||
|
||||
struct frame_unwind arm_m_exception_unwind =
|
||||
{
|
||||
"arm m exception",
|
||||
SIGTRAMP_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
arm_m_exception_this_id,
|
||||
|
@ -1154,6 +1154,7 @@ avr_frame_prev_register (struct frame_info *this_frame,
|
||||
}
|
||||
|
||||
static const struct frame_unwind avr_frame_unwind = {
|
||||
"avr prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
avr_frame_this_id,
|
||||
|
@ -374,6 +374,7 @@ bfin_frame_prev_register (struct frame_info *this_frame,
|
||||
|
||||
static const struct frame_unwind bfin_frame_unwind =
|
||||
{
|
||||
"bfin prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
bfin_frame_this_id,
|
||||
|
@ -184,6 +184,7 @@ bpf_frame_prev_register (struct frame_info *this_frame,
|
||||
|
||||
static const struct frame_unwind bpf_frame_unwind =
|
||||
{
|
||||
"bpf prologue",
|
||||
NORMAL_FRAME,
|
||||
bpf_frame_unwind_stop_reason,
|
||||
bpf_frame_this_id,
|
||||
|
@ -437,6 +437,7 @@ cris_sigtramp_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind cris_sigtramp_frame_unwind =
|
||||
{
|
||||
"cris sigtramp",
|
||||
SIGTRAMP_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
cris_sigtramp_frame_this_id,
|
||||
@ -900,6 +901,7 @@ cris_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
|
||||
|
||||
static const struct frame_unwind cris_frame_unwind =
|
||||
{
|
||||
"cris prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
cris_frame_this_id,
|
||||
|
@ -1916,6 +1916,7 @@ csky_frame_prev_register (struct frame_info *this_frame,
|
||||
unwinder. */
|
||||
|
||||
static const struct frame_unwind csky_unwind_cache = {
|
||||
"cski prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
csky_frame_this_id,
|
||||
@ -1999,6 +2000,7 @@ csky_stub_prev_register (struct frame_info *this_frame,
|
||||
}
|
||||
|
||||
static frame_unwind csky_stub_unwind = {
|
||||
"csky stub",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
csky_stub_this_id,
|
||||
|
@ -378,6 +378,7 @@ dummy_frame_this_id (struct frame_info *this_frame,
|
||||
|
||||
const struct frame_unwind dummy_frame_unwind =
|
||||
{
|
||||
"dummy",
|
||||
DUMMY_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
dummy_frame_this_id,
|
||||
|
@ -468,6 +468,7 @@ tailcall_frame_prev_arch (struct frame_info *this_frame,
|
||||
|
||||
const struct frame_unwind dwarf2_tailcall_frame_unwind =
|
||||
{
|
||||
"dwarf2 tailcall",
|
||||
TAILCALL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
tailcall_frame_this_id,
|
||||
|
@ -1380,6 +1380,7 @@ dwarf2_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind dwarf2_frame_unwind =
|
||||
{
|
||||
"dwarf2",
|
||||
NORMAL_FRAME,
|
||||
dwarf2_frame_unwind_stop_reason,
|
||||
dwarf2_frame_this_id,
|
||||
@ -1391,6 +1392,7 @@ static const struct frame_unwind dwarf2_frame_unwind =
|
||||
|
||||
static const struct frame_unwind dwarf2_signal_frame_unwind =
|
||||
{
|
||||
"dwarf2 signal",
|
||||
SIGTRAMP_FRAME,
|
||||
dwarf2_frame_unwind_stop_reason,
|
||||
dwarf2_frame_this_id,
|
||||
|
@ -127,10 +127,13 @@ frame_unwind_try_unwinder (struct frame_info *this_frame, void **this_cache,
|
||||
|
||||
try
|
||||
{
|
||||
frame_debug_printf ("trying unwinder \"%s\"", unwinder->name);
|
||||
res = unwinder->sniffer (unwinder, this_frame, this_cache);
|
||||
}
|
||||
catch (const gdb_exception &ex)
|
||||
{
|
||||
frame_debug_printf ("caught exception: %s", ex.message->c_str ());
|
||||
|
||||
/* Catch all exceptions, caused by either interrupt or error.
|
||||
Reset *THIS_CACHE, unless something reinitialized the frame
|
||||
cache meanwhile, in which case THIS_FRAME/THIS_CACHE are now
|
||||
@ -153,9 +156,13 @@ frame_unwind_try_unwinder (struct frame_info *this_frame, void **this_cache,
|
||||
}
|
||||
|
||||
if (res)
|
||||
return 1;
|
||||
{
|
||||
frame_debug_printf ("yes");
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
frame_debug_printf ("no");
|
||||
/* Don't set *THIS_CACHE to NULL here, because sniffer has to do
|
||||
so. */
|
||||
frame_cleanup_after_sniffer (this_frame);
|
||||
@ -171,6 +178,8 @@ frame_unwind_try_unwinder (struct frame_info *this_frame, void **this_cache,
|
||||
void
|
||||
frame_unwind_find_by_frame (struct frame_info *this_frame, void **this_cache)
|
||||
{
|
||||
frame_debug_printf ("this_frame=%d", frame_relative_level (this_frame));
|
||||
|
||||
struct gdbarch *gdbarch = get_frame_arch (this_frame);
|
||||
struct frame_unwind_table *table
|
||||
= (struct frame_unwind_table *) gdbarch_data (gdbarch, frame_unwind_data);
|
||||
|
@ -158,6 +158,7 @@ typedef struct gdbarch *(frame_prev_arch_ftype) (struct frame_info *this_frame,
|
||||
|
||||
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;
|
||||
|
@ -334,6 +334,7 @@ frv_linux_sigtramp_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind frv_linux_sigtramp_frame_unwind =
|
||||
{
|
||||
"frv linux sigtramp",
|
||||
SIGTRAMP_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
frv_linux_sigtramp_frame_this_id,
|
||||
|
@ -1411,6 +1411,7 @@ frv_frame_prev_register (struct frame_info *this_frame,
|
||||
}
|
||||
|
||||
static const struct frame_unwind frv_frame_unwind = {
|
||||
"frv prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
frv_frame_this_id,
|
||||
|
@ -525,6 +525,7 @@ ft32_frame_prev_register (struct frame_info *this_frame,
|
||||
|
||||
static const struct frame_unwind ft32_frame_unwind =
|
||||
{
|
||||
"ft32 prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
ft32_frame_this_id,
|
||||
|
@ -501,6 +501,7 @@ h8300_frame_prev_register (struct frame_info *this_frame, void **this_cache,
|
||||
}
|
||||
|
||||
static const struct frame_unwind h8300_frame_unwind = {
|
||||
"h8300 prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
h8300_frame_this_id,
|
||||
|
@ -309,6 +309,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,
|
||||
default_frame_unwind_stop_reason,
|
||||
hppa_linux_sigtramp_frame_this_id,
|
||||
|
@ -2302,6 +2302,7 @@ hppa_frame_unwind_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind hppa_frame_unwind =
|
||||
{
|
||||
"hppa unwind table",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
hppa_frame_this_id,
|
||||
@ -2414,6 +2415,7 @@ hppa_fallback_frame_prev_register (struct frame_info *this_frame,
|
||||
|
||||
static const struct frame_unwind hppa_fallback_frame_unwind =
|
||||
{
|
||||
"hppa prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
hppa_fallback_frame_this_id,
|
||||
@ -2494,6 +2496,7 @@ hppa_stub_unwind_sniffer (const struct frame_unwind *self,
|
||||
}
|
||||
|
||||
static const struct frame_unwind hppa_stub_frame_unwind = {
|
||||
"hppa stub",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
hppa_stub_frame_this_id,
|
||||
|
@ -391,6 +391,7 @@ i386obsd_trapframe_sniffer (const struct frame_unwind *self,
|
||||
}
|
||||
|
||||
static const struct frame_unwind i386obsd_trapframe_unwind = {
|
||||
"i386 openbsd trap",
|
||||
/* FIXME: kettenis/20051219: This really is more like an interrupt
|
||||
frame, but SIGTRAMP_FRAME would print <signal handler called>,
|
||||
which really is not what we want here. */
|
||||
|
@ -2196,6 +2196,7 @@ i386_frame_prev_register (struct frame_info *this_frame, void **this_cache,
|
||||
|
||||
static const struct frame_unwind i386_frame_unwind =
|
||||
{
|
||||
"i386 prologue",
|
||||
NORMAL_FRAME,
|
||||
i386_frame_unwind_stop_reason,
|
||||
i386_frame_this_id,
|
||||
@ -2317,6 +2318,7 @@ i386_epilogue_frame_prev_register (struct frame_info *this_frame,
|
||||
|
||||
static const struct frame_unwind i386_epilogue_frame_unwind =
|
||||
{
|
||||
"i386 epilogue",
|
||||
NORMAL_FRAME,
|
||||
i386_epilogue_frame_unwind_stop_reason,
|
||||
i386_epilogue_frame_this_id,
|
||||
@ -2398,6 +2400,7 @@ i386_stack_tramp_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind i386_stack_tramp_frame_unwind =
|
||||
{
|
||||
"i386 stack tramp",
|
||||
NORMAL_FRAME,
|
||||
i386_epilogue_frame_unwind_stop_reason,
|
||||
i386_epilogue_frame_this_id,
|
||||
@ -2545,6 +2548,7 @@ i386_sigtramp_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind i386_sigtramp_frame_unwind =
|
||||
{
|
||||
"i386 sigtramp",
|
||||
SIGTRAMP_FRAME,
|
||||
i386_sigtramp_frame_unwind_stop_reason,
|
||||
i386_sigtramp_frame_this_id,
|
||||
|
@ -2161,6 +2161,7 @@ ia64_frame_prev_register (struct frame_info *this_frame, void **this_cache,
|
||||
|
||||
static const struct frame_unwind ia64_frame_unwind =
|
||||
{
|
||||
"ia64 prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
&ia64_frame_this_id,
|
||||
@ -2348,6 +2349,7 @@ ia64_sigtramp_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind ia64_sigtramp_frame_unwind =
|
||||
{
|
||||
"ia64 sigtramp",
|
||||
SIGTRAMP_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
ia64_sigtramp_frame_this_id,
|
||||
@ -3006,6 +3008,7 @@ ia64_libunwind_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind ia64_libunwind_frame_unwind =
|
||||
{
|
||||
"ia64 libunwind",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
ia64_libunwind_frame_this_id,
|
||||
@ -3094,6 +3097,7 @@ ia64_libunwind_sigtramp_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind ia64_libunwind_sigtramp_frame_unwind =
|
||||
{
|
||||
"ia64 libunwind sigtramp",
|
||||
SIGTRAMP_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
ia64_libunwind_sigtramp_frame_this_id,
|
||||
|
@ -263,6 +263,7 @@ inline_frame_sniffer (const struct frame_unwind *self,
|
||||
}
|
||||
|
||||
const struct frame_unwind inline_frame_unwind = {
|
||||
"inline",
|
||||
INLINE_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
inline_frame_this_id,
|
||||
|
@ -426,6 +426,7 @@ iq2000_frame_this_id (struct frame_info *this_frame, void **this_cache,
|
||||
}
|
||||
|
||||
static const struct frame_unwind iq2000_frame_unwind = {
|
||||
"iq2000 prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
iq2000_frame_this_id,
|
||||
|
@ -1048,6 +1048,7 @@ jit_frame_prev_register (struct frame_info *this_frame, void **cache, int reg)
|
||||
|
||||
static const struct frame_unwind jit_frame_unwind =
|
||||
{
|
||||
"jit",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
jit_frame_this_id,
|
||||
|
@ -455,6 +455,7 @@ lm32_frame_prev_register (struct frame_info *this_frame,
|
||||
}
|
||||
|
||||
static const struct frame_unwind lm32_frame_unwind = {
|
||||
"lm32 prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
lm32_frame_this_id,
|
||||
|
@ -1935,6 +1935,7 @@ m32c_prev_register (struct frame_info *this_frame,
|
||||
|
||||
|
||||
static const struct frame_unwind m32c_unwind = {
|
||||
"m32c prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
m32c_this_id,
|
||||
|
@ -302,6 +302,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,
|
||||
default_frame_unwind_stop_reason,
|
||||
m32r_linux_sigtramp_frame_this_id,
|
||||
|
@ -835,6 +835,7 @@ m32r_frame_prev_register (struct frame_info *this_frame,
|
||||
}
|
||||
|
||||
static const struct frame_unwind m32r_frame_unwind = {
|
||||
"m32r prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
m32r_frame_this_id,
|
||||
|
@ -924,6 +924,7 @@ m68hc11_frame_prev_register (struct frame_info *this_frame,
|
||||
}
|
||||
|
||||
static const struct frame_unwind m68hc11_frame_unwind = {
|
||||
"m68hc11 prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
m68hc11_frame_this_id,
|
||||
|
@ -316,6 +316,7 @@ m68k_linux_sigtramp_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind m68k_linux_sigtramp_frame_unwind =
|
||||
{
|
||||
"m68k linux sigtramp",
|
||||
SIGTRAMP_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
m68k_linux_sigtramp_frame_this_id,
|
||||
|
@ -1003,6 +1003,7 @@ m68k_frame_prev_register (struct frame_info *this_frame, void **this_cache,
|
||||
|
||||
static const struct frame_unwind m68k_frame_unwind =
|
||||
{
|
||||
"m68k prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
m68k_frame_this_id,
|
||||
|
@ -2053,6 +2053,7 @@ mep_frame_prev_register (struct frame_info *this_frame,
|
||||
|
||||
|
||||
static const struct frame_unwind mep_frame_unwind = {
|
||||
"mep prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
mep_frame_this_id,
|
||||
|
@ -492,6 +492,7 @@ microblaze_frame_prev_register (struct frame_info *this_frame,
|
||||
|
||||
static const struct frame_unwind microblaze_frame_unwind =
|
||||
{
|
||||
"microblaze prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
microblaze_frame_this_id,
|
||||
|
@ -164,6 +164,7 @@ mips_sde_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind mips_sde_frame_unwind =
|
||||
{
|
||||
"mips sde sigtramp",
|
||||
SIGTRAMP_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
mips_sde_frame_this_id,
|
||||
|
@ -2901,6 +2901,7 @@ mips_insn16_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind mips_insn16_frame_unwind =
|
||||
{
|
||||
"mips insn16 prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
mips_insn16_frame_this_id,
|
||||
@ -3336,6 +3337,7 @@ mips_micro_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind mips_micro_frame_unwind =
|
||||
{
|
||||
"mips micro prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
mips_micro_frame_this_id,
|
||||
@ -3711,6 +3713,7 @@ mips_insn32_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind mips_insn32_frame_unwind =
|
||||
{
|
||||
"mips insn32 prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
mips_insn32_frame_this_id,
|
||||
@ -3827,6 +3830,7 @@ mips_stub_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind mips_stub_frame_unwind =
|
||||
{
|
||||
"mips stub",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
mips_stub_frame_this_id,
|
||||
|
@ -1132,6 +1132,7 @@ mn10300_frame_prev_register (struct frame_info *this_frame,
|
||||
}
|
||||
|
||||
static const struct frame_unwind mn10300_frame_unwind = {
|
||||
"mn10300 prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
mn10300_frame_this_id,
|
||||
|
@ -587,6 +587,7 @@ moxie_frame_prev_register (struct frame_info *this_frame,
|
||||
}
|
||||
|
||||
static const struct frame_unwind moxie_frame_unwind = {
|
||||
"moxie prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
moxie_frame_this_id,
|
||||
|
@ -538,6 +538,7 @@ msp430_prev_register (struct frame_info *this_frame,
|
||||
}
|
||||
|
||||
static const struct frame_unwind msp430_unwind = {
|
||||
"msp430 prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
msp430_this_id,
|
||||
|
@ -997,6 +997,7 @@ nds32_frame_prev_register (struct frame_info *this_frame, void **this_cache,
|
||||
|
||||
static const struct frame_unwind nds32_frame_unwind =
|
||||
{
|
||||
"nds32 prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
nds32_frame_this_id,
|
||||
@ -1380,6 +1381,7 @@ nds32_epilogue_frame_prev_register (struct frame_info *this_frame,
|
||||
|
||||
static const struct frame_unwind nds32_epilogue_frame_unwind =
|
||||
{
|
||||
"nds32 epilogue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
nds32_epilogue_frame_this_id,
|
||||
|
@ -1979,6 +1979,7 @@ nios2_frame_base_address (struct frame_info *this_frame, void **this_cache)
|
||||
|
||||
static const struct frame_unwind nios2_frame_unwind =
|
||||
{
|
||||
"nios2 prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
nios2_frame_this_id,
|
||||
@ -2079,6 +2080,7 @@ nios2_stub_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind nios2_stub_frame_unwind =
|
||||
{
|
||||
"nios2 stub",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
nios2_stub_frame_this_id,
|
||||
|
@ -1096,6 +1096,7 @@ or1k_frame_prev_register (struct frame_info *this_frame,
|
||||
/* Data structures for the normal prologue-analysis-based unwinder. */
|
||||
|
||||
static const struct frame_unwind or1k_frame_unwind = {
|
||||
"or1k prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
or1k_frame_this_id,
|
||||
|
@ -263,6 +263,7 @@ ppcfbsd_sigtramp_frame_prev_register (struct frame_info *this_frame,
|
||||
}
|
||||
|
||||
static const struct frame_unwind ppcfbsd_sigtramp_frame_unwind = {
|
||||
"ppc freebsd sigtramp",
|
||||
SIGTRAMP_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
ppcfbsd_sigtramp_frame_this_id,
|
||||
|
@ -232,6 +232,7 @@ ppcobsd_sigtramp_frame_prev_register (struct frame_info *this_frame,
|
||||
}
|
||||
|
||||
static const struct frame_unwind ppcobsd_sigtramp_frame_unwind = {
|
||||
"ppc openbsd sigtramp",
|
||||
SIGTRAMP_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
ppcobsd_sigtramp_frame_this_id,
|
||||
|
@ -680,6 +680,7 @@ pyuw_on_new_gdbarch (struct gdbarch *newarch)
|
||||
struct frame_unwind *unwinder
|
||||
= GDBARCH_OBSTACK_ZALLOC (newarch, struct frame_unwind);
|
||||
|
||||
unwinder->name = "python";
|
||||
unwinder->type = NORMAL_FRAME;
|
||||
unwinder->stop_reason = default_frame_unwind_stop_reason;
|
||||
unwinder->this_id = pyuw_this_id;
|
||||
|
@ -1889,6 +1889,7 @@ record_btrace_frame_dealloc_cache (struct frame_info *self, void *this_cache)
|
||||
|
||||
const struct frame_unwind record_btrace_frame_unwind =
|
||||
{
|
||||
"record-btrace",
|
||||
NORMAL_FRAME,
|
||||
record_btrace_frame_unwind_stop_reason,
|
||||
record_btrace_frame_this_id,
|
||||
@ -1900,6 +1901,7 @@ const struct frame_unwind record_btrace_frame_unwind =
|
||||
|
||||
const struct frame_unwind record_btrace_tailcall_frame_unwind =
|
||||
{
|
||||
"record-btrace tailcall",
|
||||
TAILCALL_FRAME,
|
||||
record_btrace_frame_unwind_stop_reason,
|
||||
record_btrace_frame_this_id,
|
||||
|
@ -3320,6 +3320,7 @@ riscv_frame_prev_register (struct frame_info *this_frame,
|
||||
|
||||
static const struct frame_unwind riscv_frame_unwind =
|
||||
{
|
||||
/*.name =*/ "riscv prologue",
|
||||
/*.type =*/ NORMAL_FRAME,
|
||||
/*.stop_reason =*/ default_frame_unwind_stop_reason,
|
||||
/*.this_id =*/ riscv_frame_this_id,
|
||||
|
@ -1183,6 +1183,7 @@ rl78_prev_register (struct frame_info *this_frame,
|
||||
|
||||
static const struct frame_unwind rl78_unwind =
|
||||
{
|
||||
"rl78 prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
rl78_this_id,
|
||||
|
@ -156,6 +156,7 @@ aix_sighandle_frame_sniffer (const struct frame_unwind *self,
|
||||
/* AIX signal handler frame unwinder */
|
||||
|
||||
static const struct frame_unwind aix_sighandle_frame_unwind = {
|
||||
"rs6000 aix sighandle",
|
||||
SIGTRAMP_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
aix_sighandle_frame_this_id,
|
||||
|
@ -3783,6 +3783,7 @@ rs6000_frame_prev_register (struct frame_info *this_frame,
|
||||
|
||||
static const struct frame_unwind rs6000_frame_unwind =
|
||||
{
|
||||
"rs6000 prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
rs6000_frame_this_id,
|
||||
@ -3882,6 +3883,7 @@ rs6000_epilogue_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind rs6000_epilogue_frame_unwind =
|
||||
{
|
||||
"rs6000 epilogue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
rs6000_epilogue_frame_this_id, rs6000_epilogue_frame_prev_register,
|
||||
|
@ -630,6 +630,7 @@ rx_exception_sniffer (const struct frame_unwind *self,
|
||||
analyzer. */
|
||||
|
||||
static const struct frame_unwind rx_frame_unwind = {
|
||||
"rx prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
rx_frame_this_id,
|
||||
@ -642,6 +643,7 @@ static const struct frame_unwind rx_frame_unwind = {
|
||||
analyzer. */
|
||||
|
||||
static const struct frame_unwind rx_exception_unwind = {
|
||||
"rx exception",
|
||||
/* SIGTRAMP_FRAME could be used here, but backtraces are less informative. */
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
|
@ -467,6 +467,7 @@ s12z_frame_prev_register (struct frame_info *this_frame,
|
||||
|
||||
/* Data structures for the normal prologue-analysis-based unwinder. */
|
||||
static const struct frame_unwind s12z_frame_unwind = {
|
||||
"s12z prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
s12z_frame_this_id,
|
||||
|
@ -542,6 +542,7 @@ s390_sigtramp_frame_sniffer (const struct frame_unwind *self,
|
||||
/* S390 sigtramp frame unwinder. */
|
||||
|
||||
static const struct frame_unwind s390_sigtramp_frame_unwind = {
|
||||
"s390 linux sigtramp",
|
||||
SIGTRAMP_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
s390_sigtramp_frame_this_id,
|
||||
|
@ -2634,6 +2634,7 @@ s390_frame_prev_register (struct frame_info *this_frame,
|
||||
/* Default S390 frame unwinder. */
|
||||
|
||||
static const struct frame_unwind s390_frame_unwind = {
|
||||
"s390 prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
s390_frame_this_id,
|
||||
@ -2727,6 +2728,7 @@ s390_stub_frame_sniffer (const struct frame_unwind *self,
|
||||
/* S390 stub frame unwinder. */
|
||||
|
||||
static const struct frame_unwind s390_stub_frame_unwind = {
|
||||
"s390 stub",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
s390_stub_frame_this_id,
|
||||
|
@ -1351,6 +1351,7 @@ score_prologue_prev_register (struct frame_info *this_frame,
|
||||
|
||||
static const struct frame_unwind score_prologue_unwind =
|
||||
{
|
||||
"score prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
score_prologue_this_id,
|
||||
|
@ -79,6 +79,7 @@ sentinel_frame_prev_arch (struct frame_info *this_frame,
|
||||
|
||||
const struct frame_unwind sentinel_frame_unwind =
|
||||
{
|
||||
"sentinel",
|
||||
SENTINEL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
sentinel_frame_this_id,
|
||||
|
@ -1968,6 +1968,7 @@ sh_frame_this_id (struct frame_info *this_frame, void **this_cache,
|
||||
}
|
||||
|
||||
static const struct frame_unwind sh_frame_unwind = {
|
||||
"sh prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
sh_frame_this_id,
|
||||
@ -2034,6 +2035,7 @@ sh_stub_unwind_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind sh_stub_unwind =
|
||||
{
|
||||
"sh stub",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
sh_stub_this_id,
|
||||
|
@ -251,6 +251,7 @@ sparc32nbsd_sigcontext_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind sparc32nbsd_sigcontext_frame_unwind =
|
||||
{
|
||||
"sparc32 netbsd sigcontext",
|
||||
SIGTRAMP_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
sparc32nbsd_sigcontext_frame_this_id,
|
||||
|
@ -136,6 +136,7 @@ sparc32obsd_sigtramp_frame_sniffer (const struct frame_unwind *self,
|
||||
}
|
||||
static const struct frame_unwind sparc32obsd_sigtramp_frame_unwind =
|
||||
{
|
||||
"sparc32 openbsd sigtramp",
|
||||
SIGTRAMP_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
sparc32obsd_sigtramp_frame_this_id,
|
||||
|
@ -182,6 +182,7 @@ sparc32_sol2_sigtramp_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind sparc32_sol2_sigtramp_frame_unwind =
|
||||
{
|
||||
"sparc32 solaris sigtramp",
|
||||
SIGTRAMP_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
sparc32_sol2_sigtramp_frame_this_id,
|
||||
|
@ -1358,6 +1358,7 @@ sparc32_frame_prev_register (struct frame_info *this_frame,
|
||||
|
||||
static const struct frame_unwind sparc32_frame_unwind =
|
||||
{
|
||||
"sparc32 prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
sparc32_frame_this_id,
|
||||
|
@ -199,6 +199,7 @@ sparc64fbsd_sigtramp_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind sparc64fbsd_sigtramp_frame_unwind =
|
||||
{
|
||||
"sparc64 freebsd sigtramp",
|
||||
SIGTRAMP_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
sparc64fbsd_sigtramp_frame_this_id,
|
||||
|
@ -225,6 +225,7 @@ sparc64nbsd_sigtramp_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind sparc64nbsd_sigcontext_frame_unwind =
|
||||
{
|
||||
"sparc64 netbsd sigcontext",
|
||||
SIGTRAMP_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
sparc64nbsd_sigcontext_frame_this_id,
|
||||
|
@ -222,6 +222,7 @@ sparc64obsd_sigtramp_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind sparc64obsd_frame_unwind =
|
||||
{
|
||||
"sparc64 openbsd sigtramp",
|
||||
SIGTRAMP_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
sparc64obsd_frame_this_id,
|
||||
@ -305,6 +306,7 @@ sparc64obsd_trapframe_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind sparc64obsd_trapframe_unwind =
|
||||
{
|
||||
"sparc64 openbsd trap",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
sparc64obsd_trapframe_this_id,
|
||||
|
@ -185,6 +185,7 @@ sparc64_sol2_sigtramp_frame_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind sparc64_sol2_sigtramp_frame_unwind =
|
||||
{
|
||||
"sparc64 solaris sigtramp",
|
||||
SIGTRAMP_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
sparc64_sol2_sigtramp_frame_this_id,
|
||||
|
@ -1141,6 +1141,7 @@ sparc64_frame_prev_register (struct frame_info *this_frame, void **this_cache,
|
||||
|
||||
static const struct frame_unwind sparc64_frame_unwind =
|
||||
{
|
||||
"sparc64 prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
sparc64_frame_this_id,
|
||||
|
@ -457,6 +457,7 @@ tic6x_frame_base_address (struct frame_info *this_frame, void **this_cache)
|
||||
|
||||
static const struct frame_unwind tic6x_frame_unwind =
|
||||
{
|
||||
"tic6x prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
tic6x_frame_this_id,
|
||||
@ -519,6 +520,7 @@ tic6x_stub_unwind_sniffer (const struct frame_unwind *self,
|
||||
|
||||
static const struct frame_unwind tic6x_stub_unwind =
|
||||
{
|
||||
"tic6x stub",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
tic6x_stub_this_id,
|
||||
|
@ -905,6 +905,7 @@ tilegx_frame_base_address (struct frame_info *this_frame, void **this_cache)
|
||||
}
|
||||
|
||||
static const struct frame_unwind tilegx_frame_unwind = {
|
||||
"tilegx prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
tilegx_frame_this_id,
|
||||
|
@ -1320,6 +1320,7 @@ v850_frame_this_id (struct frame_info *this_frame, void **this_cache,
|
||||
}
|
||||
|
||||
static const struct frame_unwind v850_frame_unwind = {
|
||||
"v850 prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
v850_frame_this_id,
|
||||
|
@ -390,6 +390,7 @@ vax_frame_prev_register (struct frame_info *this_frame,
|
||||
|
||||
static const struct frame_unwind vax_frame_unwind =
|
||||
{
|
||||
"vax prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
vax_frame_this_id,
|
||||
|
@ -736,6 +736,7 @@ xstormy16_frame_base_address (struct frame_info *this_frame, void **this_cache)
|
||||
}
|
||||
|
||||
static const struct frame_unwind xstormy16_frame_unwind = {
|
||||
"xstormy16 prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
xstormy16_frame_this_id,
|
||||
|
@ -1499,6 +1499,7 @@ xtensa_frame_prev_register (struct frame_info *this_frame,
|
||||
static const struct frame_unwind
|
||||
xtensa_unwind =
|
||||
{
|
||||
"xtensa prologue",
|
||||
NORMAL_FRAME,
|
||||
default_frame_unwind_stop_reason,
|
||||
xtensa_frame_this_id,
|
||||
|
Loading…
Reference in New Issue
Block a user