]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[gdb/tdep] Fix ARM_LINUX_JB_PC_EABI
authorTom de Vries <tdevries@suse.de>
Fri, 7 Jun 2024 11:59:46 +0000 (13:59 +0200)
committerTom de Vries <tdevries@suse.de>
Fri, 7 Jun 2024 11:59:46 +0000 (13:59 +0200)
In arm-linux-tdep.c, ARM_LINUX_JB_PC_EABI is defined as 9, but it's been 1
since glibc 2.20.

See glibc commit 80a56cc3ee ("ARM: Add SystemTap probes to longjmp and
setjmp.").

Update it, allowing us to run into the gdb/26967 kfail.

Tested on arm-linux.

Approved-By: Luis Machado <luis.machado@arm.com>
PR arm/tdep
Bug: https://www.sourceware.org/bugzilla/show_bug.cgi?id=31089

gdb/arm-linux-tdep.c

index 43869e4fcfe262aea0c9ff04a4e9808e4b922b62..b0b6f3646f1a8019c5fb4b6d53e6424648cd6fb6 100644 (file)
@@ -101,12 +101,26 @@ static const gdb_byte arm_linux_thumb2_le_breakpoint[] = { 0xf0, 0xf7, 0x00, 0xa
    particular the FP model) and also (possibly) the C Library.
 
    For glibc, eglibc, and uclibc the following holds:  If the FP model is 
-   SoftVFP or VFP (which implies EABI) then the PC is at offset 9 in the 
+   SoftVFP or VFP (which implies EABI) then the PC is at offset 1 or 9 in the
    buffer.  This is also true for the SoftFPA model.  However, for the FPA 
    model the PC is at offset 21 in the buffer.  */
 #define ARM_LINUX_JB_ELEMENT_SIZE      ARM_INT_REGISTER_SIZE
 #define ARM_LINUX_JB_PC_FPA            21
-#define ARM_LINUX_JB_PC_EABI           9
+#ifdef __UCLIBC__
+# define ARM_LINUX_JB_PC_EABI          9
+#else
+# ifdef __GLIBC__
+#  if __GLIBC_PREREQ(2, 20)
+/* This has been 1 since glibc 2.20, see glibc commit 80a56cc3ee ("ARM: Add
+   SystemTap probes to longjmp and setjmp.").  */
+#   define ARM_LINUX_JB_PC_EABI                1
+#  else
+#   define ARM_LINUX_JB_PC_EABI                9
+#  endif
+# else
+#  define ARM_LINUX_JB_PC_EABI         9
+# endif
+#endif
 
 /*
    Dynamic Linking on ARM GNU/Linux