public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Tom de Vries <tdevries@suse.de>
To: Luis Machado <luis.machado@arm.com>, gdb-patches@sourceware.org
Subject: Re: [PATCH] [gdb/tdep] Simplify ARM_LINUX_JB_PC_EABI
Date: Wed, 12 Jun 2024 19:08:40 +0200	[thread overview]
Message-ID: <14feedac-744e-4457-8d0d-13e609e25903@suse.de> (raw)
In-Reply-To: <df325300-e8da-4049-a1a5-1d65bad608a8@arm.com>

On 6/11/24 14:33, Luis Machado wrote:
> On 6/11/24 13:25, Tom de Vries wrote:
>> On 6/11/24 12:29, Luis Machado wrote:
>>> On 6/11/24 10:57, Tom de Vries wrote:
>>>> 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
>>>> ---
>>>>    gdb/arm-linux-tdep.c | 29 ++++++++---------------------
>>>>    1 file changed, 8 insertions(+), 21 deletions(-)
>>>>
>>>> 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
>>>>
>>>> base-commit: 60e221e9b7fae5ff40b79b93bdbff909989c2bae
>>>
>>> Should we document somewhere that we dropped support for
>>> the old pre 2.20 glibc buffer offset though? This is a minor
>>> but breaking change after all.
>>
>> Fine by me.  How about this, in NEWS:
>> ...
>> * 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.
>> ...
>>
>> Thanks,
>> - Tom
>>
> 
> Excellent. Thanks Tom.

I've sent a v2 with that bit included ( 
https://sourceware.org/pipermail/gdb-patches/2024-June/209918.html ).

Thanks,
- Tom

      reply	other threads:[~2024-06-12 17:08 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-11  9:57 Tom de Vries
2024-06-11 10:29 ` Luis Machado
2024-06-11 12:25   ` Tom de Vries
2024-06-11 12:33     ` Luis Machado
2024-06-12 17:08       ` Tom de Vries [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=14feedac-744e-4457-8d0d-13e609e25903@suse.de \
    --to=tdevries@suse.de \
    --cc=gdb-patches@sourceware.org \
    --cc=luis.machado@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).