On Tue, Feb 4, 2025 at 10:19 PM Tao Liu <ltao(a)redhat.com> wrote:
From: Lianbo Jiang <lijiang(a)redhat.com>
This issue was caused by commit 0f39e33d3504 with the following
compilation error:
frame.c: In function ‘CORE_ADDR frame_unwind_pc(frame_info*)’:
frame.c:982:35: error: cannot convert ‘CORE_ADDR*’ {aka ‘long long unsigned int*’} to
‘ulong*’ {aka ‘long unsigned int*’}
982 | crash_decode_ptrauth_pc(&pc);
| ^~~
| |
| CORE_ADDR* {aka long long unsigned int*}
frame.c:948:48: note: initializing argument 1 of ‘void
crash_decode_ptrauth_pc(ulong*)’
948 | extern "C" void crash_decode_ptrauth_pc(ulong* pc);
| ~~~~~~~^~
Fixes: 0f39e33d3504 ("arm64: add pac mask to better support gdb stack unwind")
Reported-by: Guanyou.Chen <chenguanyou(a)xiaomi.com>
Signed-off-by: Lianbo Jiang <lijiang(a)redhat.com>
---
gdb-16.2.patch | 6 +++---
gdb_interface.c | 4 ++--
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/gdb-16.2.patch b/gdb-16.2.patch
index 7fdde45..03919fc 100644
--- a/gdb-16.2.patch
+++ b/gdb-16.2.patch
@@ -53,7 +53,7 @@ exit 0
# your system doesn't have fcntl.h in /usr/include (which is where it
# should be according to Posix).
-DEFS = @DEFS@
-+DEFS = -DCRASH_MERGE @DEFS@
++DEFS = -DCRASH_MERGE -DTARGET_${CRASH_TARGET} @DEFS@
^^^^ sorry for the same correction as [1].
[1]:
https://www.mail-archive.com/devel@lists.crash-utility.osci.io/msg01336.html
GDB_INCLUDED_HEADER = -include $(srcdir)/defs.h
GDB_CFLAGS = \
-I. \
@@ -2215,7 +2215,7 @@ exit 0
return NULL;
}
-+#ifdef CRASH_MERGE
++#if defined(CRASH_MERGE) && defined(ARM64)
+extern "C" void crash_decode_ptrauth_pc(ulong* pc);
+#endif
+
@@ -2226,7 +2226,7 @@ exit 0
try
{
pc = gdbarch_unwind_pc (prev_gdbarch, this_frame);
-+#ifdef CRASH_MERGE
++#if defined(CRASH_MERGE) && defined(ARM64)
+ crash_decode_ptrauth_pc(&pc);
+#endif
pc_p = true;
diff --git a/gdb_interface.c b/gdb_interface.c
index de62bc2..fa2e85b 100644
--- a/gdb_interface.c
+++ b/gdb_interface.c
@@ -1086,12 +1086,12 @@ int crash_get_current_task_reg (int regno, const char *regname,
}
/* arm64 kernel lr maybe has patuh */
+#ifdef ARM64
void crash_decode_ptrauth_pc(ulong *pc);
void crash_decode_ptrauth_pc(ulong *pc)
{
-#ifdef ARM64
struct machine_specific *ms = machdep->machspec;
if (is_kernel_text(*pc | ms->CONFIG_ARM64_KERNELPACMASK))
*pc |= ms->CONFIG_ARM64_KERNELPACMASK;
-#endif /* !ARM64 */
}
+#endif /* !ARM64 */
--
2.47.0