This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Have readelf and objdump display the contents of the DWARF augmentation data as a string, if it is p


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

commit 48467cb99b04c9d908ce2dd74422c9c3f322ccc3
Author: Tom de Vries <vries@gcc.gnu.org>
Date:   Thu Jul 25 17:24:22 2019 +0100

    Have readelf and objdump display the contents of the DWARF augmentation data as a string, if it is printable.
    
    	PR 24809
    	* dwarf.c (display_debug_names): Display the contents of the
    	augmentation string, if it is printable.

Diff:
---
 binutils/ChangeLog |  6 ++++++
 binutils/dwarf.c   | 22 +++++++++++++++++++++-
 2 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 635f221..84db140 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,9 @@
+2019-07-25  Tom de Vries  <vries@gcc.gnu.org>
+
+	PR 24809
+	* dwarf.c (display_debug_names): Display the contents of the
+	augmentation string, if it is printable.
+
 2019-07-25  Nick Clifton  <nickc@redhat.com>
 
 	PR 24837
diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index 519f9cc..94c8a03 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -29,6 +29,7 @@
 #include "dwarf.h"
 #include "gdb/gdb-index.h"
 #include "filenames.h"
+#include "safe-ctype.h"
 #include <assert.h>
 
 #undef MAX
@@ -8543,6 +8544,8 @@ display_debug_names (struct dwarf_section *section, void *file)
       uint32_t augmentation_string_size;
       unsigned int i;
       unsigned long sec_off;
+      bfd_boolean augmentation_printable;
+      const char *augmentation_string;
 
       unit_start = hdrptr;
 
@@ -8606,15 +8609,32 @@ display_debug_names (struct dwarf_section *section, void *file)
 		augmentation_string_size);
 	  augmentation_string_size += (-augmentation_string_size) & 3;
 	}
+
       printf (_("Augmentation string:"));
+
+      augmentation_printable = TRUE;
+      augmentation_string = (const char *) hdrptr;
+
       for (i = 0; i < augmentation_string_size; i++)
 	{
 	  unsigned char uc;
 
 	  SAFE_BYTE_GET_AND_INC (uc, hdrptr, 1, unit_end);
 	  printf (" %02x", uc);
+
+	  if (uc != 0 && !ISPRINT (uc))
+	    augmentation_printable = FALSE;
+	}
+
+      if (augmentation_printable)
+	{
+	  printf ("  (\"");
+	  for (i = 0;
+	       i < augmentation_string_size && augmentation_string[i];
+	       ++i)
+	    putchar (augmentation_string[i]);
+	  printf ("\")");
 	}
-      putchar ('\n');
       putchar ('\n');
 
       printf (_("CU table:\n"));


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]