display_debug_macro
authorAlan Modra <amodra@gmail.com>
Sat, 15 May 2021 05:39:20 +0000 (15:09 +0930)
committerAlan Modra <amodra@gmail.com>
Sat, 15 May 2021 05:40:29 +0000 (15:10 +0930)
* dwarf.c (display_debug_macro): Print strings that might not
be zero terminated with %*s.  Don't bump curr if unterminated.

binutils/ChangeLog
binutils/dwarf.c

index ecf389af9fd32c1549007eeee6ac44b65fd6dc08..1926afbdcf76a5123d365084cd179a9703437af3 100644 (file)
@@ -1,3 +1,8 @@
+2021-05-15  Alan Modra  <amodra@gmail.com>
+
+       * dwarf.c (display_debug_macro): Print strings that might not
+       be zero terminated with %*s.  Don't bump curr if unterminated.
+
 2021-05-15  Alan Modra  <amodra@gmail.com>
 
        * dwarf.c (get_line_filename_and_dirname): Delete initial_length_size.
index 9d7829122087cdbb28019a0fcfc81af5d2cddea6..68732cf491b7852285d590344f4535f1ea3fc036 100644 (file)
@@ -6042,17 +6042,21 @@ display_debug_macro (struct dwarf_section *section,
            case DW_MACRO_define:
              READ_ULEB (lineno, curr, end);
              string = curr;
-             curr += strnlen ((char *) string, end - string) + 1;
-             printf (_(" DW_MACRO_define - lineno : %d macro : %s\n"),
-                     lineno, string);
+             curr += strnlen ((char *) string, end - string);
+             printf (_(" DW_MACRO_define - lineno : %d macro : %*s\n"),
+                     lineno, (int) (curr - string), string);
+             if (curr < end)
+               curr++;
              break;
 
            case DW_MACRO_undef:
              READ_ULEB (lineno, curr, end);
              string = curr;
-             curr += strnlen ((char *) string, end - string) + 1;
-             printf (_(" DW_MACRO_undef - lineno : %d macro : %s\n"),
-                     lineno, string);
+             curr += strnlen ((char *) string, end - string);
+             printf (_(" DW_MACRO_undef - lineno : %d macro : %*s\n"),
+                     lineno, (int) (curr - string), string);
+             if (curr < end)
+               curr++;
              break;
 
            case DW_MACRO_start_file: