---- exit.c.orig Mon Apr 28 16:37:26 2003
-+++ exit.c Sat May 3 14:28:31 2003
-@@ -46,15 +46,6 @@
- void (*__cleanup)();
+--- exit.c.orig 2006-08-08 16:13:56.000000000 -0700
++++ exit.c 2006-08-11 22:12:56.000000000 -0700
+@@ -44,15 +44,7 @@
+ #include "atexit.h"
- /*
+ void (*__cleanup)();
+-
+-/*
- * This variable is zero until a process has created a thread.
- * It is used to avoid calling locking functions in libc when they
- * are not required. By default, libc is intended to be(come)
- * processes.
- */
-int __isthreaded = 0;
--
--/*
++extern void __exit(int);
+
+ /*
* Exit, flushing stdio buffers if necessary.
- */
- void
-@@ -63,11 +54,6 @@
+@@ -61,13 +53,8 @@
+ exit(status)
+ int status;
{
- struct atexit *p;
- int n;
--
- /* Ensure that the auto-initialization routine is linked in: */
- extern int _thread_autoinit_dummy_decl;
-
- _thread_autoinit_dummy_decl = 1;
-
- for (p = __atexit; p; p = p->next)
- for (n = p->ind; --n >= 0;)
+-
+ __cxa_finalize(NULL);
+ if (__cleanup)
+ (*__cleanup)();
+- _exit(status);
++ __exit(status);
+ }