as: Automatically enable DWARF5 support
Currently $ as -o x.o x.s fails when x.s contains DWARF5 ".file 0" or ".loc 0" directives. Update assembler to automatically enable DWARF5 support so that $ gcc -S -g -c x.c $ gcc -c x.s works. PR gas/27195 * dwarf2dbg.c (dwarf2_gen_line_info): Set dwarf_level to 5 if needed. (dwarf2_directive_filename): Likewise. (dwarf2_directive_loc): Likewise. * testsuite/gas/elf/dwarf-5-file0.d: Pass --gdwarf-3. * testsuite/gas/lns/lns-diag-1.l: Remove the "Error: file number less than one" errors.
This commit is contained in:
parent
6a9ad81c44
commit
705989f19a
@ -1,3 +1,14 @@
|
|||||||
|
2021-01-18 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
PR gas/27195
|
||||||
|
* dwarf2dbg.c (dwarf2_gen_line_info): Set dwarf_level to 5 if
|
||||||
|
needed.
|
||||||
|
(dwarf2_directive_filename): Likewise.
|
||||||
|
(dwarf2_directive_loc): Likewise.
|
||||||
|
* testsuite/gas/elf/dwarf-5-file0.d: Pass --gdwarf-3.
|
||||||
|
* testsuite/gas/lns/lns-diag-1.l: Remove the
|
||||||
|
"Error: file number less than one" errors.
|
||||||
|
|
||||||
2021-01-18 Alan Modra <amodra@gmail.com>
|
2021-01-18 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
PR 27198
|
PR 27198
|
||||||
|
@ -551,7 +551,11 @@ dwarf2_gen_line_info (addressT ofs, struct dwarf2_line_info *loc)
|
|||||||
if (loc->line == 0)
|
if (loc->line == 0)
|
||||||
return;
|
return;
|
||||||
if (loc->filenum == 0 && DWARF2_LINE_VERSION < 5)
|
if (loc->filenum == 0 && DWARF2_LINE_VERSION < 5)
|
||||||
return;
|
{
|
||||||
|
dwarf_level = 5;
|
||||||
|
if (DWARF2_LINE_VERSION < 5)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Don't emit sequences of line symbols for the same line when the
|
/* Don't emit sequences of line symbols for the same line when the
|
||||||
symbols apply to assembler code. It is necessary to emit
|
symbols apply to assembler code. It is necessary to emit
|
||||||
@ -1044,9 +1048,13 @@ dwarf2_directive_filename (void)
|
|||||||
|
|
||||||
if ((offsetT) num < 1 && DWARF2_LINE_VERSION < 5)
|
if ((offsetT) num < 1 && DWARF2_LINE_VERSION < 5)
|
||||||
{
|
{
|
||||||
as_bad (_("file number less than one"));
|
dwarf_level = 5;
|
||||||
ignore_rest_of_line ();
|
if (DWARF2_LINE_VERSION < 5)
|
||||||
return NULL;
|
{
|
||||||
|
as_bad (_("file number less than one"));
|
||||||
|
ignore_rest_of_line ();
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME: Should we allow ".file <N>\n" as an expression meaning
|
/* FIXME: Should we allow ".file <N>\n" as an expression meaning
|
||||||
@ -1143,8 +1151,12 @@ dwarf2_directive_loc (int dummy ATTRIBUTE_UNUSED)
|
|||||||
{
|
{
|
||||||
if (filenum != 0 || DWARF2_LINE_VERSION < 5)
|
if (filenum != 0 || DWARF2_LINE_VERSION < 5)
|
||||||
{
|
{
|
||||||
as_bad (_("file number less than one"));
|
dwarf_level = 5;
|
||||||
return;
|
if (DWARF2_LINE_VERSION < 5)
|
||||||
|
{
|
||||||
|
as_bad (_("file number less than one"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#as: --gdwarf-5
|
#as: --gdwarf-3
|
||||||
#name: DWARF5 .line 0
|
#name: DWARF5 .line 0
|
||||||
#readelf: -wl
|
#readelf: -wl
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
.*: Assembler messages:
|
.*: Assembler messages:
|
||||||
.*:2: Error: file number less than one
|
|
||||||
.*:3: Error: missing string
|
.*:3: Error: missing string
|
||||||
.*:4: Error: file table slot 1 is already occupied.*
|
.*:4: Error: file table slot 1 is already occupied.*
|
||||||
.*:8: Error: unassigned file number 3
|
.*:8: Error: unassigned file number 3
|
||||||
@ -9,7 +8,6 @@
|
|||||||
.*:19: Error: bad or irreducible absolute expression
|
.*:19: Error: bad or irreducible absolute expression
|
||||||
.*:23: Error: isa number less than zero
|
.*:23: Error: isa number less than zero
|
||||||
.*:26: Error: bad or irreducible absolute expression
|
.*:26: Error: bad or irreducible absolute expression
|
||||||
.*:26: Error: file number less than one
|
|
||||||
.*:27: Error: bad or irreducible absolute expression
|
.*:27: Error: bad or irreducible absolute expression
|
||||||
.*:28: Error: unknown .loc sub-directive `frobnitz'
|
.*:28: Error: unknown .loc sub-directive `frobnitz'
|
||||||
.*:29: Error: unknown .loc sub-directive `frobnitz'
|
.*:29: Error: unknown .loc sub-directive `frobnitz'
|
||||||
|
Loading…
Reference in New Issue
Block a user