[PATCH 1/3] Move __atexit_lock definition

Sebastian Huber sebastian.huber@embedded-brains.de
Sat May 4 14:12:00 GMT 2013


Interchange declaration and definition of __atexit_lock.  If someone
calls exit() there is no need to pull in atexit().  If someone calls
atexit() he expects that someone also uses exit() to invoke the
registered handler.

newlib/ChangeLog
2013-05-04  Sebastian Huber <sebastian.huber@embedded-brains.de>

	* libc/stdlib/__atexit.c (__atexit_lock): Declare.
	* libc/stdlib/__call_atexit.c (__atexit_lock): Define.
---
 newlib/libc/stdlib/__atexit.c      |    5 ++++-
 newlib/libc/stdlib/__call_atexit.c |    4 +---
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/newlib/libc/stdlib/__atexit.c b/newlib/libc/stdlib/__atexit.c
index 4687d00..1caf2e5 100644
--- a/newlib/libc/stdlib/__atexit.c
+++ b/newlib/libc/stdlib/__atexit.c
@@ -10,7 +10,10 @@
 
 /* Make this a weak reference to avoid pulling in malloc.  */
 void * malloc(size_t) _ATTRIBUTE((__weak__));
-__LOCK_INIT_RECURSIVE(, __atexit_lock);
+
+#ifndef __SINGLE_THREAD__
+extern _LOCK_RECURSIVE_T __atexit_lock;
+#endif
 
 /*
  * Register a function to be performed at exit or on shared library unload.
diff --git a/newlib/libc/stdlib/__call_atexit.c b/newlib/libc/stdlib/__call_atexit.c
index 4c45063..a21dd57 100644
--- a/newlib/libc/stdlib/__call_atexit.c
+++ b/newlib/libc/stdlib/__call_atexit.c
@@ -11,9 +11,7 @@
 /* Make this a weak reference to avoid pulling in free.  */
 void free(void *) _ATTRIBUTE((__weak__));
 
-#ifndef __SINGLE_THREAD__
-extern _LOCK_RECURSIVE_T __atexit_lock;
-#endif
+__LOCK_INIT_RECURSIVE(, __atexit_lock);
 
 #ifdef _WANT_REGISTER_FINI
 
-- 
1.7.10.4



More information about the Newlib mailing list