[gdb/tdep] Fix ARM_LINUX_JB_PC_EABI

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
This commit is contained in:
Tom de Vries 2024-06-07 13:59:46 +02:00
parent d89cd643c5
commit 1a7d840a21

View 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. particular the FP model) and also (possibly) the C Library.
For glibc, eglibc, and uclibc the following holds: If the FP model is 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 buffer. This is also true for the SoftFPA model. However, for the FPA
model the PC is at offset 21 in the buffer. */ model the PC is at offset 21 in the buffer. */
#define ARM_LINUX_JB_ELEMENT_SIZE ARM_INT_REGISTER_SIZE #define ARM_LINUX_JB_ELEMENT_SIZE ARM_INT_REGISTER_SIZE
#define ARM_LINUX_JB_PC_FPA 21 #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 Dynamic Linking on ARM GNU/Linux