This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug driver/57652] [4.7/4.8/4.9 Regression] collect2 does not clean up temporary files


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57652

--- Comment #2 from David Edelsohn <dje at gcc dot gnu.org> ---
Prototype patch to use atexit.

        PR driver/57652
        * collect2.c (collect_atexit): New.
        (collect_exit): Directly call exit.
        (main): Register collect_atexit with atexit.

Index: collect2.c
===================================================================
--- collect2.c  (revision 200203)
+++ collect2.c  (working copy)
@@ -367,7 +367,7 @@
 /* Delete tempfiles and exit function.  */

 void
-collect_exit (int status)
+collect_atexit (void)
 {
   if (c_file != 0 && c_file[0])
     maybe_unlink (c_file);
@@ -395,12 +395,13 @@
       maybe_unlink (lderrout);
     }

-  if (status != 0 && output_file != 0 && output_file[0])
-    maybe_unlink (output_file);
-
   if (response_file)
     maybe_unlink (response_file);
+}

+void
+collect_exit (int status)
+{
   exit (status);
 }

@@ -970,6 +971,9 @@
   signal (SIGCHLD, SIG_DFL);
 #endif

+  if (atexit (collect_atexit) != 0)
+    fatal_error ("atexit failed");
+
   /* Unlock the stdio streams.  */
   unlock_std_streams ();


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]