This fixes another leakage of random LTO temporary filenames into executables, this time via .symtab FILE entries. Removing it doesn't work (GNU ld adds it back) and is said to be incorrect. So the following patch, similar to the dwarf CU DW_AT_name uses <artificial>.
Bootstrapped on x86_64-unknown-linux-gnu, testing in progress. Richard. 2015-02-16 Richard Biener <rguent...@suse.de> PR lto/65015 * varasm.c (default_file_start): For LTO produced units emit <artificial> as file directive. Index: gcc/varasm.c =================================================================== --- gcc/varasm.c (revision 220677) +++ gcc/varasm.c (working copy) @@ -7043,7 +7047,13 @@ default_file_start (void) fputs (ASM_APP_OFF, asm_out_file); if (targetm.asm_file_start_file_directive) - output_file_directive (asm_out_file, main_input_filename); + { + /* LTO produced units have no meaningful main_input_filename. */ + if (in_lto_p) + output_file_directive (asm_out_file, "<artificial>"); + else + output_file_directive (asm_out_file, main_input_filename); + } } /* This is a generic routine suitable for use as TARGET_ASM_FILE_END