public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
From: Tom Tromey <tromey@sourceware.org>
To: gdb-cvs@sourceware.org
Subject: [binutils-gdb] Defer minimal symbol name-setting
Date: Tue, 26 Nov 2019 21:11:00 -0000	[thread overview]
Message-ID: <20191126211150.105755.qmail@sourceware.org> (raw)

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

commit 5a79c10755d00b71b33b8715e5a665bfd78c9222
Author: Tom Tromey <tom@tromey.com>
Date:   Sat Mar 2 13:19:44 2019 -0700

    Defer minimal symbol name-setting
    
    Currently the demangled name of a minimal symbol is set when creating
    the symbol.  However, there is no intrinsic need to do this.  This
    patch instead arranges for the demangling to be done just before the
    minsym hash tables are filled.  This will be useful in a later patch.
    
    gdb/ChangeLog
    2019-11-26  Tom Tromey  <tom@tromey.com>
    
    	* symtab.h (struct minimal_symbol) <name_set>: New member.
    	* minsyms.c (minimal_symbol_reader::record_full): Copy name.
    	Don't call symbol_set_names.
    	(minimal_symbol_reader::install): Call symbol_set_names.
    
    Change-Id: I4fe3993b99fb3a43968067806e294d48e377fd76

Diff:
---
 gdb/ChangeLog |  7 +++++++
 gdb/minsyms.c | 18 +++++++++++++++++-
 gdb/symtab.h  |  4 ++++
 3 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b061e88..dc684be 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2019-11-26  Tom Tromey  <tom@tromey.com>
+
+	* symtab.h (struct minimal_symbol) <name_set>: New member.
+	* minsyms.c (minimal_symbol_reader::record_full): Copy name.
+	Don't call symbol_set_names.
+	(minimal_symbol_reader::install): Call symbol_set_names.
+
 2019-11-26  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
 
 	* python/python.c (gdbpy_enter::~gdbpy_enter): Release GIL after
diff --git a/gdb/minsyms.c b/gdb/minsyms.c
index a9ba66b..6e7021a 100644
--- a/gdb/minsyms.c
+++ b/gdb/minsyms.c
@@ -1127,7 +1127,12 @@ minimal_symbol_reader::record_full (gdb::string_view name,
   msymbol = &m_msym_bunch->contents[m_msym_bunch_index];
   symbol_set_language (msymbol, language_auto,
 		       &m_objfile->per_bfd->storage_obstack);
-  symbol_set_names (msymbol, name, copy_name, m_objfile->per_bfd);
+
+  if (copy_name)
+    msymbol->name = obstack_strndup (&m_objfile->per_bfd->storage_obstack,
+				     name.data (), name.size ());
+  else
+    msymbol->name = name.data ();
 
   SET_MSYMBOL_VALUE_ADDRESS (msymbol, address);
   MSYMBOL_SECTION (msymbol) = section;
@@ -1354,6 +1359,17 @@ minimal_symbol_reader::install ()
       m_objfile->per_bfd->minimal_symbol_count = mcount;
       m_objfile->per_bfd->msymbols = std::move (msym_holder);
 
+      msymbols = m_objfile->per_bfd->msymbols.get ();
+      for (int i = 0; i < mcount; ++i)
+	{
+	  if (!msymbols[i].name_set)
+	    {
+	      symbol_set_names (&msymbols[i], msymbols[i].name,
+				false, m_objfile->per_bfd);
+	      msymbols[i].name_set = 1;
+	    }
+	}
+
       build_minimal_symbol_hash_tables (m_objfile);
     }
 }
diff --git a/gdb/symtab.h b/gdb/symtab.h
index 897ffda..bcbc9c8 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -668,6 +668,10 @@ struct minimal_symbol : public general_symbol_info
 
   unsigned maybe_copied : 1;
 
+  /* Non-zero if this symbol ever had its demangled name set (even if
+     it was set to NULL).  */
+  unsigned int name_set : 1;
+
   /* Minimal symbols with the same hash key are kept on a linked
      list.  This is the link.  */


                 reply	other threads:[~2019-11-26 21:11 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20191126211150.105755.qmail@sourceware.org \
    --to=tromey@sourceware.org \
    --cc=gdb-cvs@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).