From: Bernd Edlinger Date: Sat, 24 Jul 2021 10:53:39 +0000 (+0200) Subject: Fix debug info for ignored decls at start of assembly X-Git-Tag: basepoints/gcc-13~5578 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=96c82a16b2076891a9974d0f0e96a0b85fbc2df4;p=thirdparty%2Fgcc.git 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 PR ada/101575 * dwarf2out.c (dwarf2out_assembly_start): Emit a dummy .file statement when needed. --- diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 884f1e191c65..b91a9b5abaac 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 = ""; + maybe_emit_file (lookup_filename (filename0)); + } } /* A helper function for dwarf2out_finish called through