On Mon, Feb 16, 2015 at 6:25 AM, Richard Biener <rguent...@suse.de> wrote: > > 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.
FWIW, ld.bfd will be fixed in 2.26. But it is still a good idea to support older links. > 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 -- H.J.