debug: Make sure to output .file 0 when generating DWARF5.
When gas outputs DWARF5 .debug_line[_str] then we have to tell it the comp_dir and main file name for the zero entry line table. Otherwise gas has to guess at the CU compilation directory and file. Before a gcc -gdwarf-5 ../src/hello.c line table looked like: Directory table: 0 ../src (24) 1 ../src (24) 2 /usr/include (31) File name table: 0 hello.c (16), 0 1 hello.c (16), 1 2 stdio.h (44), 2 With this patch it looks like: Directory table: 0 /tmp/obj (0) 1 ../src (24) 2 /usr/include (31) File name table: 0 ../src/hello.c (9), 0 1 hello.c (16), 1 2 stdio.h (44), 2 gcc/ChangeLog: * dwarf2out.c (dwarf2out_finish): Emit .file 0 entry when generating DWARF5 .debug_line table through gas.
This commit is contained in:
parent
baf4750fea
commit
3a9e6ee42a
1 changed files with 21 additions and 0 deletions
|
@ -31768,6 +31768,27 @@ dwarf2out_finish (const char *filename)
|
|||
ASM_OUTPUT_LABEL (asm_out_file, debug_line_section_label);
|
||||
if (! output_asm_line_debug_info ())
|
||||
output_line_info (false);
|
||||
else if (asm_outputs_debug_line_str ())
|
||||
{
|
||||
/* When gas outputs DWARF5 .debug_line[_str] then we have to
|
||||
tell it the comp_dir and main file name for the zero entry
|
||||
line table. */
|
||||
const char *comp_dir, *filename0;
|
||||
|
||||
comp_dir = comp_dir_string ();
|
||||
if (comp_dir == NULL)
|
||||
comp_dir = "";
|
||||
|
||||
filename0 = get_AT_string (comp_unit_die (), DW_AT_name);
|
||||
if (filename0 == NULL)
|
||||
filename0 = "";
|
||||
|
||||
fprintf (asm_out_file, "\t.file 0 ");
|
||||
output_quoted_string (asm_out_file, remap_debug_filename (comp_dir));
|
||||
fputc (' ', asm_out_file);
|
||||
output_quoted_string (asm_out_file, remap_debug_filename (filename0));
|
||||
fputc ('\n', asm_out_file);
|
||||
}
|
||||
|
||||
if (dwarf_split_debug_info && info_section_emitted)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue