From dec4be8f3e9e1e7430e5c65d6aaa13526ebc77e2 Mon Sep 17 00:00:00 2001 From: Bernd Edlinger Date: Sat, 24 Jul 2021 12:53:39 +0200 Subject: [PATCH 1/2] 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-07-24 Bernd Edlinger PR ada/101575 * dwarf2out.c (dwarf2out_assembly_start): Emit a dummy .file statement when needed. --- gcc/dwarf2out.c | 11 +++++++++++ 1 file changed, 11 insertions(+) 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 = ""; + maybe_emit_file (lookup_filename (filename0)); + } } /* A helper function for dwarf2out_finish called through -- 1.9.1