[binutils-gdb] 2020-02-19 Jordan Rupprecht <rupprecht@google.com>

Eric Christopher echristo@sourceware.org
Wed Feb 19 21:57:00 GMT 2020


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

commit 741cb83912fffbc65784168204ce1a597e0fbd26
Author: Eric Christopher <echristo@gmail.com>
Date:   Wed Feb 19 13:55:25 2020 -0800

    2020-02-19  Jordan Rupprecht  <rupprecht@google.com>
    
    	* objdump.c (show_line): call bfd_demangle when using do_demangle.

Diff:
---
 binutils/ChangeLog |  4 ++++
 binutils/objdump.c | 16 +++++++++++++++-
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 6d8c95f..bb39cea 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,7 @@
+2020-02-19  Jordan Rupprecht  <rupprecht@google.com>
+
+	* objdump.c (show_line): call bfd_demangle when using do_demangle.
+
 2020-02-19  Andrew Burgess  <andrew.burgess@embecosm.com>
 
 	* configure: Regenerate.
diff --git a/binutils/objdump.c b/binutils/objdump.c
index 8182dcc..6eef38f 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -1734,8 +1734,22 @@ show_line (bfd *abfd, asection *section, bfd_vma addr_offset)
 	  && (prev_functionname == NULL
 	      || strcmp (functionname, prev_functionname) != 0))
 	{
-	  printf ("%s():\n", sanitize_string (functionname));
+	  char *demangle_alloc = NULL;
+	  if (do_demangle && functionname[0] != '\0')
+	    {
+	      /* Demangle the name.  */
+	      demangle_alloc = bfd_demangle (abfd, functionname,
+	                                          demangle_flags);
+	    }
+
+	  /* Demangling adds trailing parens, so don't print those.  */
+	  if (demangle_alloc != NULL)
+	    printf ("%s:\n", sanitize_string (demangle_alloc));
+	  else
+	    printf ("%s():\n", sanitize_string (functionname));
+
 	  prev_line = -1;
+	  free (demangle_alloc);
 	}
       if (linenumber > 0
 	  && (linenumber != prev_line



More information about the Binutils-cvs mailing list