[gdb/tdep] Simplify ARM_LINUX_JB_PC_EABI
In commit1a7d840a21
("[gdb/tdep] Fix ARM_LINUX_JB_PC_EABI"), in absense of osabi settings for newlib and uclibc for arm, I chose a best-effort approach using ifdefs. Post-commit review [1] pointed out that this may be causing more problems than it's worth. Fix this by removing the ifdefs and simply defining ARM_LINUX_JB_PC_EABI to 1. Rebuild on x86_64-linux with --enable-targets=all. Fixes:1a7d840a21
("[gdb/tdep] Fix ARM_LINUX_JB_PC_EABI") [1] https://sourceware.org/pipermail/gdb-patches/2024-June/209779.html
This commit is contained in:
parent
9c39329d1c
commit
be23e44263
2 changed files with 13 additions and 21 deletions
5
gdb/NEWS
5
gdb/NEWS
|
@ -8,6 +8,11 @@
|
||||||
** The "scopes" request will now return a scope holding global
|
** The "scopes" request will now return a scope holding global
|
||||||
variables from the stack frame's compilation unit.
|
variables from the stack frame's compilation unit.
|
||||||
|
|
||||||
|
* For ARM targets, the offset of the pc in the jmp_buf has been fixed to match
|
||||||
|
glibc 2.20 and later. This should only matter when not using libc probes.
|
||||||
|
This may cause breakage when using an incompatible libc, like uclibc or
|
||||||
|
newlib, or an older glibc.
|
||||||
|
|
||||||
*** Changes in GDB 15
|
*** Changes in GDB 15
|
||||||
|
|
||||||
* The MPX commands "show/set mpx bound" have been deprecated, as Intel
|
* The MPX commands "show/set mpx bound" have been deprecated, as Intel
|
||||||
|
|
|
@ -98,29 +98,16 @@ static const gdb_byte arm_linux_thumb2_le_breakpoint[] = { 0xf0, 0xf7, 0x00, 0xa
|
||||||
|
|
||||||
The location of saved registers in this buffer (in particular the PC
|
The location of saved registers in this buffer (in particular the PC
|
||||||
to use after longjmp is called) varies depending on the ABI (in
|
to use after longjmp is called) varies depending on the ABI (in
|
||||||
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
|
|
||||||
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_ELEMENT_SIZE ARM_INT_REGISTER_SIZE
|
||||||
|
/* For the FPA model the PC is at offset 21 in the buffer. */
|
||||||
#define ARM_LINUX_JB_PC_FPA 21
|
#define ARM_LINUX_JB_PC_FPA 21
|
||||||
#ifdef __UCLIBC__
|
/* For glibc 2.20 and later the PC is at offset 1, see glibc commit 80a56cc3ee
|
||||||
# define ARM_LINUX_JB_PC_EABI 9
|
("ARM: Add SystemTap probes to longjmp and setjmp.").
|
||||||
#else
|
For newlib and uclibc, this is not correct, we need osabi settings to deal
|
||||||
# ifdef __GLIBC__
|
with those, see PR31854 and PR31856. Likewise for older versions of
|
||||||
# if __GLIBC_PREREQ(2, 20)
|
glibc. */
|
||||||
/* This has been 1 since glibc 2.20, see glibc commit 80a56cc3ee ("ARM: Add
|
#define ARM_LINUX_JB_PC_EABI 1
|
||||||
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
|
||||||
|
|
Loading…
Add table
Reference in a new issue