public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Simon Marchi <simon.marchi@polymtl.ca>
To: Tom Tromey <tom@tromey.com>, Joel Brobecker <brobecker@adacore.com>
Cc: Simon Marchi <simark@simark.ca>, gdb-patches@sourceware.org
Subject: Re: GDB 10.2 Release: Proposing Mar 13-14 for official GDB 10.2 release
Date: Tue, 30 Mar 2021 11:14:13 -0400	[thread overview]
Message-ID: <9697bf68-3e20-364e-6fed-3195d38dc00a@polymtl.ca> (raw)
In-Reply-To: <875z19dyju.fsf@tromey.com>

On 2021-03-30 1:02 a.m., Tom Tromey wrote:
>>> diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
>>> index 704ba9f36655..5d9256bece1e 100644
>>> --- a/gdb/dwarf2/read.c
>>> +++ b/gdb/dwarf2/read.c
>>> @@ -1954,7 +1954,8 @@ dwarf2_has_info (struct objfile *objfile,
>>> doesn't require relocations and if there aren't partial symbols
>>> from some other reader.  */
>>> if (!objfile_has_partial_symbols (objfile)
>>> -         && !gdb_bfd_requires_relocations (objfile->obfd))
>>> +         && !gdb_bfd_requires_relocations (objfile->obfd)
>>> +         && 0)
>>> {
>>> /* See if one has been created for this BFD yet.  */
>>> per_bfd = dwarf2_per_bfd_bfd_data_key.get (objfile->obfd);
>>>
>>> We can then take our time to look at a proper fix for master.
> 
> Joel> It's quite nice to see that this feature could be disabled with
> Joel> a one-liner like this.
> 
> Joel> Unless Tom has other ideas, this seems like the way to go for me.
> 
> Sorry I didn't respond to this earlier.
> I think it's fine for the branch.
>
> I came up with a complicated plan for the trunk, but after some
> reflection, I think a better plan is to notice OBJF_READNOW and refuse
> to do any sharing in this case.  That is, it's your patch, but replacing
> "0" with a check of OBJF_READNOW.  The appended probably has the wrong
> line numbers but it shows the idea.
> 
> This -readnow stuff is an optimization, which in retrospect is kind of
> silly, because on the whole I'd rather people not use -readnow anyway,
> so why bother optimizing.  But when I added the gdb-index code, I
> noticed the possibility and I guess I couldn't resist.
> 
> Tom
> 
> diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
> index 11cdcd02d0a..ec044ab66e5 100644
> --- a/gdb/dwarf2/read.c
> +++ b/gdb/dwarf2/read.c
> @@ -1883,9 +1883,11 @@ dwarf2_has_info (struct objfile *objfile,
>      {
>        dwarf2_per_bfd *per_bfd;
>  
> -      /* We can share a "dwarf2_per_bfd" with other objfiles if the BFD
> -	 doesn't require relocations.  */
> -      if (!gdb_bfd_requires_relocations (objfile->obfd))G
> +      /* We can share a "dwarf2_per_bfd" with other objfiles if the
> +	 BFD doesn't require relocations, and if -readnow was never
> +	 requested.  */
> +      if (!gdb_bfd_requires_relocations (objfile->obfd)
> +	  && (objfile->flags & OBJF_READNOW) == 0)
>  	{
>  	  /* See if one has been created for this BFD yet.  */
>  	  per_bfd = dwarf2_per_bfd_bfd_data_key.get (objfile->obfd);

This is fine with me, and I think it's sufficient for now.  It passes
the test I wrote, so I'll adjust my patch to use this and post a v2.

In the general case, I'm not convinced that there aren't more problems
like this, where you load the same BFD with two different "quick"
methods (as mentioned in my commit message).

We currently handle the psymtabs -> index case (commit efb763a5ea35),
necessary for when the index-cache is on.  In that case, we just keep
using the already-created psymtabs the second time around, the index is
just not used.

But imagine an index -> psymtabs case.  I imagine we could eventually
have a "-no-index" switch to the file command and/or a "set use-index
on/off" parameter, to tell GDB to not use any index.  That could be
useful in case the index gives you some trouble and you would like to
read the file without it.  So you could do "file bin" first and "file
-no-index bin" second.  The dwarf2_per_bfd is created using the index
the first time, but we wouldn't want to re-use that dwarf2_per_bfd the
second time.

Only sharing the dwarf2_per_bfd between objfiles that use the same
"quick" method would make me more confident that we won't hit other such
problematic cases.

Simon

      parent reply	other threads:[~2021-03-30 15:14 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-06  6:46 Joel Brobecker
2021-03-06 18:13 ` Kevin Buettner
2021-03-07  5:45   ` Joel Brobecker
2021-03-07  6:25     ` Kevin Buettner
2021-03-09  5:08 ` Simon Marchi
2021-03-10  2:48   ` Joel Brobecker
2021-03-15  3:43     ` Simon Marchi
2021-03-16  3:45       ` Joel Brobecker
2021-03-30  5:02         ` Tom Tromey
2021-03-30  7:59           ` Joel Brobecker
2021-03-30 17:40             ` Simon Marchi
2021-03-30 15:14           ` Simon Marchi [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=9697bf68-3e20-364e-6fed-3195d38dc00a@polymtl.ca \
    --to=simon.marchi@polymtl.ca \
    --cc=brobecker@adacore.com \
    --cc=gdb-patches@sourceware.org \
    --cc=simark@simark.ca \
    --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).