Have readelf and objdump display the contents of the DWARF augmentation data as a...
authorTom de Vries <vries@gcc.gnu.org>
Thu, 25 Jul 2019 16:24:22 +0000 (17:24 +0100)
committerNick Clifton <nickc@redhat.com>
Thu, 25 Jul 2019 16:24:22 +0000 (17:24 +0100)
PR 24809
* dwarf.c (display_debug_names): Display the contents of the
augmentation string, if it is printable.

binutils/ChangeLog
binutils/dwarf.c

index 635f221..84db140 100644 (file)
@@ -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
index 519f9cc..94c8a03 100644 (file)
@@ -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"));