This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug driver/57652] [4.7/4.8/4.9 Regression] collect2 does not clean up temporary files
- From: "dje at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 19 Jun 2013 17:37:48 +0000
- Subject: [Bug driver/57652] [4.7/4.8/4.9 Regression] collect2 does not clean up temporary files
- Auto-submitted: auto-generated
- References: <bug-57652-4 at http dot gcc dot gnu dot org/bugzilla/>
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 ();