public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Tom de Vries <tdevries@suse.de>
To: Tom Tromey <tom@tromey.com>
Cc: gdb-patches@sourceware.org,
	Thiago Jung Bauermann <thiago.bauermann@linaro.org>
Subject: Re: [PATCH] [gdb/symtab] Workaround PR gas/31115
Date: Thu, 7 Mar 2024 22:09:20 +0100	[thread overview]
Message-ID: <3c788bd8-df7d-418b-8042-167e3c3ae5d7@suse.de> (raw)
In-Reply-To: <87r0glsvwz.fsf@tromey.com>

On 3/7/24 20:07, Tom Tromey wrote:
>>>>>> "Tom" == Tom de Vries <tdevries@suse.de> writes:
> 
> Tom> This is a regression due to PR gas/31115, which makes gas produce a low_pc
> Tom> with the thumb bit set (0x4d8 & 0x1):
> Tom> ...
> Tom>  <1><24>: Abbrev Number: 2 (DW_TAG_subprogram)
> Tom>     <25>   DW_AT_name        : main
> Tom>     <29>   DW_AT_external    : 1
> Tom>     <29>   DW_AT_type        : <0x2f>
> Tom>     <2a>   DW_AT_low_pc      : 0x4d9
> Tom>     <2e>   DW_AT_high_pc     : 12
> Tom> ...
> 
> Tom> The regression was introduced in 2.39, and is also present in 2.40 and 2.41,
> Tom> and hasn't been fixed yet.
> 
> Tom> Work around this in read_func_scope, by using gdbarch_addr_bits_remove on
> Tom> low_pc and high_pc.
> 
> Are there ever cases where this bit ought to be set here?
> 

I don't know.  The only information I have is that it never should be 
the case for arm, which is info I got out of the PR.

The target hook is present for other archs though (hppa, mips, rl78, 
s390, sparc64), and I don't know what the requirements for those are.

Which is why I limited the scope of the fix to the arm architecture.

I also limited the scope of the fix to the known wrong producer, that 
might not be necessary, it's just defensive programming.

> Tom>    lowpc = per_objfile->relocate (unrel_low);
> Tom>    highpc = per_objfile->relocate (unrel_high);
>   
> Tom> +  if (gdbarch_bfd_arch_info (gdbarch)->arch == bfd_arch_arm
> Tom> +      && producer_is_gas_ge_2_39 (cu))
> Tom> +    {
> Tom> +      /* Gas version 2.39 produces DWARF for a Thumb subprogram with a low_pc
> Tom> +	 attribute with the thumb bit set (PR gas/31115).  Work around this.  */
> Tom> +      lowpc = gdbarch_addr_bits_remove (gdbarch, lowpc);
> Tom> +      highpc = gdbarch_addr_bits_remove (gdbarch, highpc);
> 
> 'relocate' calls gdbarch_adjust_dwarf2_addr.  I wonder if that's a
> better approach.
> 

The only arch implementing that is mips, and looking at the 
implementation, it filters out the ISA bit (bit 0) and then sets back it 
if appropriate.

Which is not the thing we want to be doing here for arm.

> Right now there are a few gdbarch methods here and it's never been clear
> to me why they are different or when one should be used or not.  That
> is, there's also adjust_dwarf2_line, which is used in several other
> spots -- except dwarf_record_line_1 which for some reason calls
> gdbarch_addr_bits_remove.

As for adjust_dwarf2_line, well, the mips implementation (its only 
implementor) is a thin wrapper around adjust_dwarf2_addr that is 
stateful.  To me this looks like a candidate for removal.

Thanks,
- Tom


  reply	other threads:[~2024-03-08  2:52 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-06 15:53 Tom de Vries
2024-03-07 19:07 ` Tom Tromey
2024-03-07 21:09   ` Tom de Vries [this message]
2024-03-19  9:39     ` Tom de Vries
2024-03-19 10:48       ` Luis Machado

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=3c788bd8-df7d-418b-8042-167e3c3ae5d7@suse.de \
    --to=tdevries@suse.de \
    --cc=gdb-patches@sourceware.org \
    --cc=thiago.bauermann@linaro.org \
    --cc=tom@tromey.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).