https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114679
Bug ID: 114679 Summary: .file directive missing on MIPS ports when debug symbols are enabled. Product: gcc Version: 12.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: jan.smets at nokia dot com Target Milestone: --- I noticed that the .file directive prints differently on targets (mips vs x86) when (dwarf) debug symbols are enabled. output_file_directive() strips the directories and calls output_source_filename() For most targets (that do not define a TARGET_ASM_OUTPUT_SOURCE_FILENAME) that is default_asm_output_source_filename(), which prints the directory stripped filename. (.file X.c , without a number) For MIPS, TARGET_ASM_OUTPUT_SOURCE_FILENAME is mips_output_filename(). mips_output_filename() defers the writing of .file to dwarf2out when debug symbols are enabled, otherwise it prints the directory stripped file as ".file N X.c" Essentially we're missing the ".file" on MIPS when debug symbols are enabled. gcc version 12.2.0 (Debian 12.2.0-14) mkdir -p /tmp/a/b/c echo 'void test(void){}' > /tmp/a/b/c/test.c $GCC \ -o /tmp/out -S \ -g0 (or -g) \ -ffile-prefix-map=/tmp/a/= \ -c /tmp/a/b/c/test.c \ head -n1 /tmp/out X86 vs MIPS , -g0 < .file "test.c" --- > .file 1 "test.c" X86 vs MIPS, -g < .file "test.c" --- > <MISSING> Can we have MIPS behave similar to other targets? Ideally I would like .file to have "b/c/test.c" instead of just "test.c", but that's perhaps a different discussion. diff --git a/gcc/config/mips/mips.cc b/gcc/config/mips/mips.cc index ce764a5cb35..210b87a85d8 100644 --- a/gcc/config/mips/mips.cc +++ b/gcc/config/mips/mips.cc @@ -9756,11 +9756,7 @@ mips_output_external (FILE *file, tree decl, const char *name) static void mips_output_filename (FILE *stream, const char *name) { - /* If we are emitting DWARF-2, let dwarf2out handle the ".file" - directives. */ - if (dwarf_debuginfo_p ()) - return; - else if (mips_output_filename_first_time) + if (mips_output_filename_first_time) { mips_output_filename_first_time = 0; num_source_filenames += 1;