]> sourceware.org Git - newlib-cygwin.git/commitdiff
2013-05-07 Sebastian Huber <sebastian.huber@embedded-brains.de>
authorJeff Johnston <jjohnstn@redhat.com>
Tue, 7 May 2013 21:40:10 +0000 (21:40 +0000)
committerJeff Johnston <jjohnstn@redhat.com>
Tue, 7 May 2013 21:40:10 +0000 (21:40 +0000)
* libc/include/sys/reent.h (_ATEXIT_INIT): Define.
(_ATEXIT_INIT_PTR): Likewise.
(_REENT_INIT_ATEXIT): Likewise.
(_REENT_INIT_ATEXIT_PTR): Likewise.
(_GLOBAL_ATEXIT): Likewise.
* libc/stdlib/__atexit.c (_GLOBAL_ATEXIT0): Define.
(__register_exitproc): Use _GLOBAL_ATEXIT and _GLOBAL_ATEXIT0.
* libc/stdlib/__call_atexit.c (__call_exitprocs): Likewise.
-

newlib/ChangeLog
newlib/libc/include/sys/reent.h
newlib/libc/stdlib/__atexit.c
newlib/libc/stdlib/__call_atexit.c

index 35dd7da8892bd50526b5bf0bbc4c11bca100a21e..aa0a03d24ce1f9c49bcf5f5e8b64df7a30a6aa02 100644 (file)
@@ -1,3 +1,14 @@
+2013-05-07  Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+       * libc/include/sys/reent.h (_ATEXIT_INIT): Define.
+       (_ATEXIT_INIT_PTR): Likewise.
+       (_REENT_INIT_ATEXIT): Likewise.
+       (_REENT_INIT_ATEXIT_PTR): Likewise.
+       (_GLOBAL_ATEXIT): Likewise.
+       * libc/stdlib/__atexit.c (_GLOBAL_ATEXIT0): Define.
+       (__register_exitproc): Use _GLOBAL_ATEXIT and _GLOBAL_ATEXIT0.
+       * libc/stdlib/__call_atexit.c (__call_exitprocs): Likewise.
+
 2013-05-07  Sebastian Huber <sebastian.huber@embedded-brains.de>
 
        * libc/stdlib/__atexit.c (__atexit_lock): Declare.
index ff0242eae2d4614417b5a23350863f81348f5a91..8b78f5bc853131cf17193882696917086f896ad6 100644 (file)
@@ -85,6 +85,12 @@ struct _atexit {
        void    (*_fns[_ATEXIT_SIZE])(void);    /* the table itself */
         struct _on_exit_args * _on_exit_args_ptr;
 };
+# define _ATEXIT_INIT {_NULL, 0, {_NULL}, _NULL}
+# define _ATEXIT_INIT_PTR(var) \
+  (var)->_next = _NULL; \
+  (var)->_ind = 0; \
+  (var)->_fns[0] = _NULL; \
+  (var)->_on_exit_args_ptr = _NULL
 #else
 struct _atexit {
        struct  _atexit *_next;                 /* next in list */
@@ -93,8 +99,20 @@ struct _atexit {
        void    (*_fns[_ATEXIT_SIZE])(void);    /* the table itself */
         struct _on_exit_args _on_exit_args;
 };
+# define _ATEXIT_INIT {_NULL, 0, {_NULL}, {{_NULL}, {_NULL}, 0, 0}}
+# define _ATEXIT_INIT_PTR(var) \
+  (var)->_next = _NULL; \
+  (var)->_ind = 0; \
+  (var)->_fns[0] = _NULL; \
+  (var)->_on_exit_args._fntypes = 0; \
+  (var)->_on_exit_args._fnargs[0] = _NULL
 #endif
 
+#define _REENT_INIT_ATEXIT \
+  _NULL, _ATEXIT_INIT,
+#define _REENT_INIT_ATEXIT_PTR(var, var0) \
+  (var)->_atexit = _NULL; _ATEXIT_INIT_PTR(var0);
+
 /*
  * Stdio buffers.
  *
@@ -425,8 +443,7 @@ extern const struct __sFILE_fake __sf_fake_stderr;
     _NULL, \
     _NULL, \
     _NULL, \
-    _NULL, \
-    {_NULL, 0, {_NULL}, _NULL}, \
+    _REENT_INIT_ATEXIT \
     {_NULL, 0, _NULL}, \
     _NULL, \
     _NULL, \
@@ -452,11 +469,7 @@ extern const struct __sFILE_fake __sf_fake_stderr;
     (var)->_localtime_buf = _NULL; \
     (var)->_asctime_buf = _NULL; \
     (var)->_sig_func = _NULL; \
-    (var)->_atexit = _NULL; \
-    (var)->_atexit0._next = _NULL; \
-    (var)->_atexit0._ind = 0; \
-    (var)->_atexit0._fns[0] = _NULL; \
-    (var)->_atexit0._on_exit_args_ptr = _NULL; \
+    _REENT_INIT_ATEXIT_PTR(var, &(var)->_atexit0) \
     (var)->__sglue._next = _NULL; \
     (var)->__sglue._niobs = 0; \
     (var)->__sglue._iobs = _NULL; \
@@ -698,8 +711,7 @@ struct _reent
         {0, {0}} \
       } \
     }, \
-    _NULL, \
-    {_NULL, 0, {_NULL}, {{_NULL}, {_NULL}, 0, 0}}, \
+    _REENT_INIT_ATEXIT \
     _NULL, \
     {_NULL, 0, _NULL} \
   }
@@ -791,6 +803,8 @@ void _reclaim_reent _PARAMS ((struct _reent *));
 
 #define _GLOBAL_REENT _global_impure_ptr
 
+#define _GLOBAL_ATEXIT (_GLOBAL_REENT->_atexit)
+
 #ifdef __cplusplus
 }
 #endif
index 1caf2e56b9af70763ebd76abd35dfee8aa3d46c3..a095313d32f16b88f793d99f229109d0f14c0428 100644 (file)
@@ -15,6 +15,8 @@ void * malloc(size_t) _ATTRIBUTE((__weak__));
 extern _LOCK_RECURSIVE_T __atexit_lock;
 #endif
 
+#define _GLOBAL_ATEXIT0 (&_GLOBAL_REENT->_atexit0)
+
 /*
  * Register a function to be performed at exit or on shared library unload.
  */
@@ -34,9 +36,9 @@ _DEFUN (__register_exitproc,
   __lock_acquire_recursive(__atexit_lock);
 #endif
 
-  p = _GLOBAL_REENT->_atexit;
+  p = _GLOBAL_ATEXIT;
   if (p == NULL)
-    _GLOBAL_REENT->_atexit = p = &_GLOBAL_REENT->_atexit0;
+    _GLOBAL_ATEXIT = p = _GLOBAL_ATEXIT0;
   if (p->_ind >= _ATEXIT_SIZE)
     {
 #ifndef _ATEXIT_DYNAMIC_ALLOC
@@ -56,8 +58,8 @@ _DEFUN (__register_exitproc,
          return -1;
        }
       p->_ind = 0;
-      p->_next = _GLOBAL_REENT->_atexit;
-      _GLOBAL_REENT->_atexit = p;
+      p->_next = _GLOBAL_ATEXIT;
+      _GLOBAL_ATEXIT = p;
 #ifndef _REENT_SMALL
       p->_on_exit_args._fntypes = 0;
       p->_on_exit_args._is_cxa = 0;
index a21dd57336cf613668240669086e749013d7dc87..76d3f1223ea6967e3b0587c5a1bf80a901e80b6f 100644 (file)
@@ -76,8 +76,8 @@ _DEFUN (__call_exitprocs, (code, d),
 
  restart:
 
-  p = _GLOBAL_REENT->_atexit;
-  lastp = &_GLOBAL_REENT->_atexit;
+  p = _GLOBAL_ATEXIT;
+  lastp = &_GLOBAL_ATEXIT;
   while (p)
     {
 #ifdef _REENT_SMALL
This page took 0.057431 seconds and 5 git commands to generate.