i686-w64-mingw32-objdump -WL returns incorrect file paths
authorNick Clifton <nickc@redhat.com>
Thu, 8 Sep 2022 08:56:39 +0000 (09:56 +0100)
committerNick Clifton <nickc@redhat.com>
Thu, 8 Sep 2022 08:56:39 +0000 (09:56 +0100)
PR 29523
* dwarf.c (display_debug_lines_decoded): Correctly handle DWARF-5
directory and filename tables.

binutils/ChangeLog
binutils/dwarf.c

index cfb6417b55eee3540e76a4c8d6422e05bcb453fe..5f8403b158b7b17c81576fed751a0c411a0d44fe 100644 (file)
@@ -1,3 +1,9 @@
+2022-09-08  Nick Clifton  <nickc@redhat.com>
+
+       PR 29523
+       * dwarf.c (display_debug_lines_decoded): Correctly handle DWARF-5
+       directory and filename tables.
+
 2022-09-02  Aaron Merey  <amerey@redhat.com>
 
        PR 29075
index 71d8bc9ed5c86cce851a2726ae672c63215b8135..f90f4efac5b96f9fa2ed8317304a139cd0beb29d 100644 (file)
@@ -5215,6 +5215,8 @@ display_debug_lines_decoded (struct dwarf_section *  section,
                        ix, n_directories);
                  directory = _("<corrupt>");
                }
+             else if (linfo.li_version >= 5)
+               directory = (char *) directory_table[ix];
              else
                directory = (char *) directory_table[ix - 1];
 
@@ -5385,6 +5387,7 @@ display_debug_lines_decoded (struct dwarf_section *  section,
 
                  if (linfo.li_version < 5)
                    --file;
+
                  if (file_table == NULL || n_files == 0)
                    printf (_("\n [Use file table entry %d]\n"), file);
                  /* PR 20439 */
@@ -5406,6 +5409,10 @@ display_debug_lines_decoded (struct dwarf_section *  section,
                            dir, n_directories);
                      printf (_("\n <over large directory table entry %u>\n"), dir);
                    }
+                 else if (linfo.li_version >= 5)
+                   printf ("\n%s/%s:\n",
+                           /* The directory index starts counting at 0.  */
+                           directory_table[dir], file_table[file].name);
                  else
                    printf ("\n%s/%s:\n",
                            /* The directory index starts counting at 1.  */