public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] [gdb/tdep] Simplify ARM_LINUX_JB_PC_EABI
@ 2024-06-19  7:51 Tom de Vries
  0 siblings, 0 replies; only message in thread
From: Tom de Vries @ 2024-06-19  7:51 UTC (permalink / raw)
  To: gdb-cvs

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=be23e44263d7ee05a7044fe8371c2f921d91262d

commit be23e44263d7ee05a7044fe8371c2f921d91262d
Author: Tom de Vries <tdevries@suse.de>
Date:   Wed Jun 19 09:52:01 2024 +0200

    [gdb/tdep] Simplify ARM_LINUX_JB_PC_EABI
    
    In commit 1a7d840a216 ("[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: 1a7d840a216 ("[gdb/tdep] Fix ARM_LINUX_JB_PC_EABI")
    
    [1] https://sourceware.org/pipermail/gdb-patches/2024-June/209779.html

Diff:
---
 gdb/NEWS             |  5 +++++
 gdb/arm-linux-tdep.c | 29 ++++++++---------------------
 2 files changed, 13 insertions(+), 21 deletions(-)

diff --git a/gdb/NEWS b/gdb/NEWS
index bb7c4a6a6a6..47677cb773a 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -8,6 +8,11 @@
   ** The "scopes" request will now return a scope holding global
      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
 
 * The MPX commands "show/set mpx bound" have been deprecated, as Intel
diff --git a/gdb/arm-linux-tdep.c b/gdb/arm-linux-tdep.c
index b0b6f3646f1..c8a9936b5c1 100644
--- a/gdb/arm-linux-tdep.c
+++ b/gdb/arm-linux-tdep.c
@@ -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
    to use after longjmp is called) varies depending on the ABI (in 
-   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.  */
+   particular the FP model) and also (possibly) the C Library.  */
 #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
-#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
+/* For glibc 2.20 and later the PC is at offset 1, see glibc commit 80a56cc3ee
+   ("ARM: Add SystemTap probes to longjmp and setjmp.").
+   For newlib and uclibc, this is not correct, we need osabi settings to deal
+   with those, see PR31854 and PR31856.  Likewise for older versions of
+   glibc.  */
+#define ARM_LINUX_JB_PC_EABI		1
 
 /*
    Dynamic Linking on ARM GNU/Linux

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-06-19  7:51 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-06-19  7:51 [binutils-gdb] [gdb/tdep] Simplify ARM_LINUX_JB_PC_EABI Tom de Vries

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).