public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: "Christian Biesinger (Code Review)" <gerrit@gnutoolchain-gerrit.osci.io>
To: Christian Biesinger <cbiesinger@google.com>,	gdb-patches@sourceware.org
Cc: Tom Tromey <tromey@sourceware.org>
Subject: [review] [RFC] Don't block on finishing demangling msymbols
Date: Wed, 27 Nov 2019 23:07:00 -0000	[thread overview]
Message-ID: <20191127230713.6F6CE20AF6@gnutoolchain-gerrit.osci.io> (raw)
In-Reply-To: <gerrit.1572481416000.I9d871917459ece0b41d31670b3c56600757aea66@gnutoolchain-gerrit.osci.io>

Christian Biesinger has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/463
......................................................................


Patch Set 1:

(1 comment)

| --- gdb/minsyms.c
| +++ gdb/minsyms.c
| @@ -335,18 +335,19 @@ lookup_minimal_symbol (const char *name, const char *sfile,
|  	{
|  	  if (symbol_lookup_debug)
|  	    {
|  	      fprintf_unfiltered (gdb_stdlog,
|  				  "lookup_minimal_symbol (%s, %s, %s)\n",
|  				  name, sfile != NULL ? sfile : "NULL",
|  				  objfile_debug_name (objfile));
|  	    }
|  
| +	  objfile->per_bfd->wait_for_msymbols ();

PS1, Line 344:

So the problem here is that the hash tables, at least
demangled_names_hash, isn't just an output, it's really an inout
parameter when you have multiple minsym readers installed for the same
bfd. There's also the issue that with the future you have to be
careful to std::move everywhere so as not to introduce extra copies.

I was thinking something like this:

 class BlockedOnFuture<T> {
   T contents;
   std::future<void> future;

   T& get() { if (future.valid()) future.wait(); return contents; }
   T& operator->() { return get(); }

   void set_future(std::future<void>& f) { future = f; }
 };

And T here would be a struct with the hashtables.

That way we'll set the future when we start the symbol reading and
everything will work in a straightforward way.

WDYT?

|  	  /* Do two passes: the first over the ordinary hash table,
|  	     and the second over the demangled hash table.  */
|  	  lookup_minimal_symbol_mangled (name, sfile, objfile,
|  					 objfile->per_bfd->msymbol_hash,
|  					 mangled_hash, mangled_cmp, found);
|  
|  	  /* If not found, try the demangled hash table.  */
|  	  if (found.external_symbol.minsym == NULL)
|  	    {

-- 
Gerrit-Project: binutils-gdb
Gerrit-Branch: master
Gerrit-Change-Id: I9d871917459ece0b41d31670b3c56600757aea66
Gerrit-Change-Number: 463
Gerrit-PatchSet: 1
Gerrit-Owner: Christian Biesinger <cbiesinger@google.com>
Gerrit-Reviewer: Christian Biesinger <cbiesinger@google.com>
Gerrit-CC: Tom Tromey <tromey@sourceware.org>
Gerrit-Comment-Date: Wed, 27 Nov 2019 23:07:13 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Christian Biesinger <cbiesinger@google.com>
Comment-In-Reply-To: Tom Tromey <tromey@sourceware.org>
Gerrit-MessageType: comment

  parent reply	other threads:[~2019-11-27 23:07 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-31  0:23 Christian Biesinger (Code Review)
2019-10-31 21:24 ` Tom Tromey (Code Review)
2019-10-31 22:42 ` Tom Tromey (Code Review)
2019-11-04  5:52 ` Christian Biesinger (Code Review)
2019-11-26 21:50 ` Tom Tromey (Code Review)
2019-11-27 23:07 ` Christian Biesinger (Code Review) [this message]
2019-12-13 21:46 ` Tom Tromey (Code Review)

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=20191127230713.6F6CE20AF6@gnutoolchain-gerrit.osci.io \
    --to=gerrit@gnutoolchain-gerrit.osci.io \
    --cc=cbiesinger@google.com \
    --cc=gdb-patches@sourceware.org \
    --cc=gnutoolchain-gerrit@osci.io \
    --cc=tromey@sourceware.org \
    /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).