Fix an illegal memory access in the assembler when generating a DWARF5 file/directory...
authorNick Clifton <nickc@redhat.com>
Mon, 4 May 2020 09:19:38 +0000 (10:19 +0100)
committerNick Clifton <nickc@redhat.com>
Mon, 4 May 2020 09:19:38 +0000 (10:19 +0100)
PR 25917
* dwarf2dbg.c (out_dir_and_file_list): Check for the directory
table's existence before looking at its entries.
* testsuite/gas/elf/pr25917.s: New test source file.
* testsuite/gas/elf/pr25917.d: New test driver.
* testsuite/gas/elf/elf.exp (run_elf_list_test): Run the new test.

gas/ChangeLog
gas/dwarf2dbg.c
gas/testsuite/gas/elf/elf.exp
gas/testsuite/gas/elf/pr25917.d [new file with mode: 0644]
gas/testsuite/gas/elf/pr25917.s [new file with mode: 0644]

index 1b973f584d170dae2e28cbb8eb3f93dcd894580b..630289cb67b2ea748f1862aaf5a606861db8d58c 100644 (file)
@@ -1,3 +1,12 @@
+2020-05-04  Nick Clifton  <nickc@redhat.com>
+
+       PR 25917
+       * dwarf2dbg.c (out_dir_and_file_list): Check for the directory
+       table's existence before looking at its entries.
+       * testsuite/gas/elf/pr25917.s: New test source file.
+       * testsuite/gas/elf/pr25917.d: New test driver.
+       * testsuite/gas/elf/elf.exp (run_elf_list_test): Run the new test.
+
 2020-04-30  Alex Coplan  <alex.coplan@arm.com>
 
        * config/tc-aarch64.c (fix_insn): Implement for
index 9fdb34f209b918a1436fff6ec0916598904b8e73..213f382887714c573af157481f33f57438dffae9 100644 (file)
@@ -1995,7 +1995,7 @@ out_dir_and_file_list (void)
   /* Emit directory list.  */
   if (DWARF2_LINE_VERSION >= 5)
     {
-      if (dirs[0] == NULL)
+      if (dirs == NULL || dirs[0] == NULL)
        dir = remap_debug_filename (".");
       else
        dir = remap_debug_filename (dirs[0]);
index 31026e4148e229d2996cf03b68e0fed51140432e..86b304ae34fc106fb1ff962cc7a25558510d2f61 100644 (file)
@@ -274,6 +274,7 @@ if { [is_elf_format] } then {
     run_dump_test "dwarf2-18" $dump_opts
     run_dump_test "dwarf2-19" $dump_opts
     run_dump_test "dwarf-5-file0" $dump_opts
+    run_dump_test "pr25917"
     run_dump_test "bss"
     run_dump_test "bad-bss"
     run_dump_test "bad-section-flag"
diff --git a/gas/testsuite/gas/elf/pr25917.d b/gas/testsuite/gas/elf/pr25917.d
new file mode 100644 (file)
index 0000000..6f83bbb
--- /dev/null
@@ -0,0 +1,9 @@
+#as: --gdwarf-5
+#name: DWARF5: no files or directories
+#readelf: -wl
+
+#...
+ The Directory Table is empty.
+
+ No Line Number Statements.
+#pass
diff --git a/gas/testsuite/gas/elf/pr25917.s b/gas/testsuite/gas/elf/pr25917.s
new file mode 100644 (file)
index 0000000..ec8d5a9
--- /dev/null
@@ -0,0 +1,4 @@
+      .section        .debug_info,"",%progbits
+.Ldebug_info0:
+        .dc.l   0x30
+        .dc.l   0x5