aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBernd Edlinger <bernd.edlinger@hotmail.de>2021-07-24 12:53:39 +0200
committerBernd Edlinger <bernd.edlinger@hotmail.de>2021-08-04 16:18:07 +0200
commit96c82a16b2076891a9974d0f0e96a0b85fbc2df4 (patch)
treea99f13d6210d676eee99b0c461eb1f3c3c424f9e /gcc
parent9fcb8ec60302f5f110f94a885b618993c28d18d3 (diff)
downloadgcc-96c82a16b2076891a9974d0f0e96a0b85fbc2df4.zip
gcc-96c82a16b2076891a9974d0f0e96a0b85fbc2df4.tar.gz
gcc-96c82a16b2076891a9974d0f0e96a0b85fbc2df4.tar.bz2
Fix debug info for ignored decls at start of assembly
Ignored functions decls that are compiled at the start of the assembly have bogus line numbers until the first .file directive, as reported in PR101575. The corresponding binutils bug report is https://sourceware.org/bugzilla/show_bug.cgi?id=28149 The work around for this issue is to emit a dummy .file directive before the first function is compiled, unless another .file directive was already emitted previously. 2021-08-04 Bernd Edlinger <bernd.edlinger@hotmail.de> PR ada/101575 * dwarf2out.c (dwarf2out_assembly_start): Emit a dummy .file statement when needed.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/dwarf2out.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 884f1e1..b91a9b5 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -29389,7 +29389,18 @@ dwarf2out_assembly_start (void)
output_quoted_string (asm_out_file, remap_debug_filename (filename0));
fputc ('\n', asm_out_file);
}
+ else
#endif
+ /* Work around for PR101575: output a dummy .file directive. */
+ if (!last_emitted_file && dwarf_debuginfo_p ()
+ && debug_info_level >= DINFO_LEVEL_TERSE)
+ {
+ const char *filename0 = get_AT_string (comp_unit_die (), DW_AT_name);
+
+ if (filename0 == NULL)
+ filename0 = "<dummy>";
+ maybe_emit_file (lookup_filename (filename0));
+ }
}
/* A helper function for dwarf2out_finish called through