+2020-03-06 Nick Clifton <nickc@redhat.com>
+
+ PR 25614
+ * dwarf2dbg.c (dwarf2_directive_filename): Allow a file number of
+ 0 if the dwarf_level is 5 or more. Complain if a filename follows
+ a file 0.
+ * testsuite/gas/elf/dwarf-5-file0.s: New test.
+ * testsuite/gas/elf/dwarf-5-file0.d: New test driver.
+ * testsuite/gas/elf/elf.exp: Run the new test.
+
+ PR 25612
+ * config/tc-ia64.h (DWARF2_VERISION): Fix typo.
+ * doc/as.texi: Fix another typo.
+
2020-03-06 Nick Clifton <nickc@redhat.com>
PR 25612
/* VMS backtraces expect dwarf version 3. */
#ifdef TE_VMS
-#define DWARF2_VERSION (dwarf_level < 3 ? 3 : debug_level)
+#define DWARF2_VERSION (dwarf_level < 3 ? 3 : dwarf_level)
#endif
@item --gdwarf-5
This option is the same as the @option{--gdwarf-2} option, except that it
allows for the possibility of the generation of extra debug information as per
-version 4 of the DWARF specification. Note - enabling this option does not
+version 5 of the DWARF specification. Note - enabling this option does not
guarantee the generation of any extra infortmation, the choice to do so is on a
per target basis.
}
num = get_absolute_expression ();
- filename = demand_copy_C_string (&filename_len);
- if (filename == NULL)
- return NULL;
- demand_empty_rest_of_line ();
- if ((offsetT) num < 1)
+ if ((offsetT) num < 1 && dwarf_level < 5)
{
as_bad (_("file number less than one"));
+ ignore_rest_of_line ();
return NULL;
}
+ if (num == 0)
+ {
+ demand_empty_rest_of_line ();
+ return NULL;
+ }
+
+ filename = demand_copy_C_string (&filename_len);
+ if (filename == NULL)
+ /* demand_copy_C_string will have already generated an error message. */
+ return NULL;
+
+ demand_empty_rest_of_line ();
+
/* A .file directive implies compiler generated debug information is
being supplied. Turn off gas generated debug info. */
debug_type = DEBUG_NONE;
return NULL;
}
- get_filenum (filename, (unsigned int) num);
+ (void) get_filenum (filename, (unsigned int) num);
return filename;
}
--- /dev/null
+#as: --gdwarf-5
+#name: DWARF5 .line 0
+#readelf: -wl
+
+#pass
+
--- /dev/null
+ .text
+
+.file 0
+.line 1
+ .long 3
+
+.file 1 "asdf"
+.line 2
+ .long 5
+
+.file 0
+.line 4
+ .long 3
+
+.file 2 "def"
+.line 5
+ .long 3
+
run_dump_test "dwarf2-17" $dump_opts
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 "bss"
run_dump_test "bad-bss"
run_dump_test "bad-section-flag"