public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Tom Tromey <tom@tromey.com>
To: gdb-patches@sourceware.org
Cc: Tom Tromey <tom@tromey.com>
Subject: [PATCH 02/10] Move the rust "{" hack
Date: Wed, 25 Mar 2020 14:07:07 -0600	[thread overview]
Message-ID: <20200325200715.12947-3-tom@tromey.com> (raw)
In-Reply-To: <20200325200715.12947-1-tom@tromey.com>

The DWARF reader has a special case to work around a bug in some
versions of the Rust compiler -- it ignores mangled names that contain
a "{" character.

I noticed that this check should probably be in dw2_linkage_name
rather than only in dwarf2_physname.  The former is called in some
cases that the latter is not.

Also, I noticed that this work is not done for the partial DIE reader,
so this patch adds the check there as well.

gdb/ChangeLog
2020-03-25  Tom Tromey  <tom@tromey.com>

	* dwarf2/read.c (dw2_linkage_name): Move Rust "{" hack here...
	(dwarf2_physname): ... from here.
	(partial_die_info::read): Add Rust "{" hack.
---
 gdb/ChangeLog     |  6 ++++++
 gdb/dwarf2/read.c | 17 +++++++++++------
 2 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
index 69ad352b6a7..d5cdd49a086 100644
--- a/gdb/dwarf2/read.c
+++ b/gdb/dwarf2/read.c
@@ -10020,6 +10020,12 @@ dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
   if (linkage_name == NULL)
     linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
 
+  /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
+     See https://github.com/rust-lang/rust/issues/32925.  */
+  if (cu->language == language_rust && linkage_name != NULL
+      && strchr (linkage_name, '{') != NULL)
+    linkage_name = NULL;
+
   return linkage_name;
 }
 
@@ -10296,12 +10302,6 @@ dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
 
   mangled = dw2_linkage_name (die, cu);
 
-  /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
-     See https://github.com/rust-lang/rust/issues/32925.  */
-  if (cu->language == language_rust && mangled != NULL
-      && strchr (mangled, '{') != NULL)
-    mangled = NULL;
-
   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
      has computed.  */
   gdb::unique_xmalloc_ptr<char> demangled;
@@ -18032,6 +18032,11 @@ partial_die_info::read (const struct die_reader_specs *reader,
 	     assume they will be the same, and we only store the last
 	     one we see.  */
 	  linkage_name = DW_STRING (&attr);
+	  /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
+	     See https://github.com/rust-lang/rust/issues/32925.  */
+	  if (cu->language == language_rust && linkage_name != NULL
+	      && strchr (linkage_name, '{') != NULL)
+	    linkage_name = NULL;
 	  break;
 	case DW_AT_low_pc:
 	  has_low_pc_attr = 1;
-- 
2.17.2


  parent reply	other threads:[~2020-03-25 20:07 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-25 20:07 [PATCH 00/10] Fix two name-related bugs in DWARF reader Tom Tromey
2020-03-25 20:07 ` [PATCH 01/10] Convert symbol_set_demangled_name to a method Tom Tromey
2020-03-25 20:07 ` Tom Tromey [this message]
2020-03-25 20:07 ` [PATCH 03/10] Fix two latent Rust bugs Tom Tromey
2020-03-25 20:07 ` [PATCH 04/10] Add attribute::value_as_string method Tom Tromey
2020-03-25 20:07 ` [PATCH 05/10] Introduce new add_psymbol_to_list overload Tom Tromey
2020-03-25 20:07 ` [PATCH 06/10] Use the " Tom Tromey
2020-03-25 20:07 ` [PATCH 07/10] Don't call compute_and_set_names for partial symbols Tom Tromey
2020-03-25 20:07 ` [PATCH 08/10] Use the linkage name if it exists Tom Tromey
2020-04-24 16:06   ` Tom de Vries
2020-04-24 18:09     ` Tom de Vries
2020-04-24 20:50       ` Tom Tromey
2020-04-24 21:27         ` [committed][gdb/testsuite] Fix language in dw2-bad-mips-linkage-name.exp Tom de Vries
2020-04-24 21:34           ` Tom Tromey
2020-03-25 20:07 ` [PATCH 09/10] Fix Rust test cases Tom Tromey
2020-03-25 20:07 ` [PATCH 10/10] Remove symbol_get_demangled_name Tom Tromey
2020-03-25 22:48 ` [PATCH 00/10] Fix two name-related bugs in DWARF reader Christian Biesinger
2020-03-25 23:50   ` Tom Tromey
2020-04-24 14:18 ` Tom de Vries
2020-04-24 14:45   ` Tom Tromey

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=20200325200715.12947-3-tom@tromey.com \
    --to=tom@tromey.com \
    --cc=gdb-patches@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).