[binutils-gdb] display_debug_macro

Alan Modra amodra@sourceware.org
Sat May 15 08:12:54 GMT 2021


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

commit b0d461ec373e35fd380a060e6027d781f8a3f752
Author: Alan Modra <amodra@gmail.com>
Date:   Sat May 15 15:09:20 2021 +0930

    display_debug_macro
    
            * dwarf.c (display_debug_macro): Print strings that might not
            be zero terminated with %*s.  Don't bump curr if unterminated.

Diff:
---
 binutils/ChangeLog |  5 +++++
 binutils/dwarf.c   | 16 ++++++++++------
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index ecf389af9fd..1926afbdcf7 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -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.
diff --git a/binutils/dwarf.c b/binutils/dwarf.c
index 9d782912208..68732cf491b 100644
--- a/binutils/dwarf.c
+++ b/binutils/dwarf.c
@@ -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:


More information about the Binutils-cvs mailing list