From 2a08860a08cdae22f9b2da61540ddffa9f3a0b67 Mon Sep 17 00:00:00 2001 From: hujun5 Date: Thu, 24 Apr 2025 08:26:35 +0800 Subject: [PATCH] arch/arm64: fix backtrace register access and gdbstub config guard Fix arm64_backtrace to access TCB register context directly instead of using running_regs(), which may not reflect the actual context being backtraced. Add CONFIG_ARCH_HAVE_DEBUG guard to prevent undefined references in non-debug builds. Signed-off-by: hujun5 --- arch/arm64/src/common/arm64_backtrace.c | 4 ++-- libs/libc/gdbstub/lib_gdbstub.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/arm64/src/common/arm64_backtrace.c b/arch/arm64/src/common/arm64_backtrace.c index ee908fee736..828a16aecd5 100644 --- a/arch/arm64/src/common/arm64_backtrace.c +++ b/arch/arm64/src/common/arm64_backtrace.c @@ -162,8 +162,8 @@ int up_backtrace(struct tcb_s *tcb, { ret = backtrace(tcb->stack_base_ptr, tcb->stack_base_ptr + tcb->adj_stack_size, - running_regs()[REG_X29], - running_regs()[REG_ELR], + (void *)(tcb->xcp.regs)[REG_X29], + (void *)(tcb->xcp.regs)[REG_ELR], buffer, size, &skip); } diff --git a/libs/libc/gdbstub/lib_gdbstub.c b/libs/libc/gdbstub/lib_gdbstub.c index c34bd7f1daf..4467ee00b09 100644 --- a/libs/libc/gdbstub/lib_gdbstub.c +++ b/libs/libc/gdbstub/lib_gdbstub.c @@ -116,7 +116,7 @@ static const struct memory_region_s g_memory_region[] = }; #endif -#ifdef CONFIG_SMP +#if defined(CONFIG_SMP) && defined(CONFIG_ARCH_HAVE_DEBUG) static struct smp_call_data_s g_call_data; #endif