Add support for a ".file 0" directive if supporting DWARF 5 or higher.
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.
This commit is contained in:
parent
436b5e99c8
commit
84d9ab33f3
|
@ -1,3 +1,17 @@
|
|||
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
|
||||
|
|
|
@ -325,5 +325,5 @@ typedef struct unwind_record
|
|||
|
||||
/* 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
|
||||
|
|
|
@ -780,7 +780,7 @@ per target basis.
|
|||
@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.
|
||||
|
||||
|
|
|
@ -794,17 +794,27 @@ dwarf2_directive_filename (void)
|
|||
}
|
||||
|
||||
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;
|
||||
|
@ -821,7 +831,7 @@ dwarf2_directive_filename (void)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
get_filenum (filename, (unsigned int) num);
|
||||
(void) get_filenum (filename, (unsigned int) num);
|
||||
|
||||
return filename;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
#as: --gdwarf-5
|
||||
#name: DWARF5 .line 0
|
||||
#readelf: -wl
|
||||
|
||||
#pass
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
.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
|
||||
|
|
@ -272,6 +272,7 @@ if { [is_elf_format] } then {
|
|||
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"
|
||||
|
|
Loading…
Reference in New Issue