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

Reply via email to