summaryrefslogtreecommitdiffstats
path: root/newlib/libc/stdlib/__atexit.c
Commit message (Collapse)AuthorAgeFilesLines
* Fix atexit logic to honor _ATEXIT_DYNAMIC_ALLOC setting.Jeff Johnston2015-12-211-0/+7
| | | | | | | | | | | | | If small reent is enabled (_REENT_SMALL is defined) then malloc() was used in __register_exitproc() even if user requested it to be disabled (_ATEXIT_DYNAMIC_ALLOC is defined). With this fix, function fails when _ATEXIT_DYNAMIC_ALLOC is defined and whole static storage is already used. 2015-12-21 Freddie Chopin <freddie.chopin@gmail.com> * libc/stdlib/__atexit.c (__register_exitproc): Fix for _ATEXIT_DYNAMIC_ALLOC.
* Add static instance of _on_exit_args for _REENT_SMALL platforms.Jeff Johnston2015-12-211-1/+8
| | | | | | | | | | | | | 2015-12-21 Freddie Chopin <freddie.chopin@gmail.com> * libc/stdlib/on_exit_args.{c,h}: New files. * libc/stdlib/Makefile.am: Add new source file. * libc/stdlib/Makefile.in: Regenerate. * libc/stdlib/__atexit.c (__register_exitproc): Initialize _on_exit_args_ptr field of _GLOBAL_ATEXIT on first run. * libc/stdlib/on_exit.c: Force linking of static instance of _on_exit_args. * libc/stdlib/cxa_atexit.c: Likewise.
* Add missing lock releases in __register_exitproc().Freddie Chopin2015-12-141-1/+9
| | | | | | | | In some code paths the __atexit_lock held by this function was not released when returning with an error. * libc/stdlib/__atexit.c (__register_exitproc): Always release lock before return.
* * libc/stdlib/__atexit.c (__register_exitproc): NULL-ifyCorinna Vinschen2013-08-191-0/+2
| | | | | _on_exit_args_ptr when creating a new _atexit structure while _REENT_SMALL is defined.
* 2013-07-02 Joey Ye <joey.ye@arm.com>Jeff Johnston2013-07-021-0/+36
| | | | | | | | | | | | | | | | Lite exit support. * README: Add information about lite-exit. * acconfig.h (_LITE_EXIT): New macro. * configure.in (enable-lite-exit): New option. (_LITE_EXIT): Define new macro. * configure: Regenerated. * newlib.hin (_LITE_EXIT): New macro. * libc/stdlib/__atexit.c [_LITE_EXIT]: Add dummy explicit reference to __call_exitprocs. * libc/stdlib/cxa_atexit.c [_LITE_EXIT]: Make __register_exitproc a weak reference. * libc/stdlib/exit.c (exit)[_LITE_EXIT]: Remove TWS and weakly reference __call_exitprocs.
* 2013-05-07 Sebastian Huber <sebastian.huber@embedded-brains.de>Jeff Johnston2013-05-081-1/+6
| | | | | | | | | | | | | | | * libc/include/sys/config.h (_REENT_GLOBAL_ATEXIT): Define for RTEMS. * libc/include/sys/reent.h (_reent): Use _REENT_GLOBAL_ATEXIT. (_global_atexit): Declare if _REENT_GLOBAL_ATEXIT is defined. * libc/reent/reent.c (_reclaim_reent): Remove atexit cleanup if _REENT_GLOBAL_ATEXIT is defined. (_wrapup_reent): Remove atexit handling if _REENT_GLOBAL_ATEXIT is defined. * libc/stdlib/__atexit.c (_global_atexit0): Define if _REENT_GLOBAL_ATEXIT is defined. * libc/stdlib/__call_atexit.c (_global_atexit): Define if _REENT_GLOBAL_ATEXIT is defined.
* 2013-05-07 Sebastian Huber <sebastian.huber@embedded-brains.de>Jeff Johnston2013-05-071-4/+6
| | | | | | | | | | | | * 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>Jeff Johnston2013-05-071-1/+4
| | | | | * libc/stdlib/__atexit.c (__atexit_lock): Declare. * libc/stdlib/__call_atexit.c (__atexit_lock): Define.
* 2012-01-03 Viachaslau Kulakouski <Viachaslau.Kulakouski@oracle.com>Jeff Johnston2012-01-031-1/+1
| | | | * libc/stdlib/__atexit.c: Refer to __atexit_lock instead of lock.
* 2010-04-06 Dave Korn <dave.korn.cygwin@googlemail.com>Jeff Johnston2010-04-061-4/+4
| | | | | | | * libc/stdlib/__atexit.c (__atexit_lock): Initialise as recursive rather than non-recursive lock type. (__register_exitproc): Use recursive locking APIs on it. * libc/stdlib/__call_atexit.c (__call_exitprocs): Likewise.
* * libc/stdlib/__atexit.c (__atexit_lock): Define a global lock for atexitChristopher Faylor2010-02-041-5/+4
| | | | | | functions. (__register_exitproc): Use __atexit_lock rather than a local static lock. * libc/stdlib/__call_atexit.c: Ditto.
* 2009-04-23 Paul Brook <paul@codesourcery.com>Jeff Johnston2009-04-231-1/+10
| | | | | | | | | Kazu Hirata <kazu@codesourcery.com> * libc/stdlib/__atexit.c (__register_exitproc): Use weak reference to malloc. Allocate dynamically only if it is present. * libc/stdlib/__call_atexit.c (__call_exitprocs): Use weak reference to free. Call free only if it is present.
* * acconfig.h (_ATEXIT_DYNAMIC_ALLOC): Undef.Mark Mitchell2006-03-211-0/+4
| | | | | | | | | | | * configure.in (--disable-newlib-atexit-dynamic-alloc): New option. * configure: Regenerated. * newlib.hin: Regenerated. * libc/stdlib/__atexit.c (__register_exitproc): Don't call malloc if _ATEXIT_DYNAMIC_ALLOC is undefined. * libc/stdlib/__call_atexit.c (__call_exitprocs): Don't call free if _ATEXIT_DYNAMIC_ALLOC is undefined.
* 2004-09-15 Jeff Johnston <jjohnstn@redhat.com>Jeff Johnston2004-09-151-6/+0
| | | | | | | | | | | | | | | | | | | | | | | * configure.host: Reverting 2004-09-14 change as fix has occurred on Cygwin side. * configure.in: Ditto. * libc/configure.in: Ditto. * libc/sys/configure.in: Ditto. * configure: Ditto. * libc/configure: Ditto. * libc/sys/configure: Ditto. * libc/include/sys/reent.h: Ditto. * libc/stdlib/__atexit.c: Ditto. * libc/stdlib/__call_atexit.c: Ditto. * libc/stdlib/cxa_atexit.c: Ditto. * libc/stdlib/cxa_finalize.c: Ditto. * libc/sys/cygwin/Makefile.am: Removed again. * libc/sys/cygwin/Makefile.in: Ditto. * libc/sys/cygwin/aclocal.m4: Ditto. * libc/sys/cygwin/configure: Ditto. * libc/sys/cygwin/configure.in: Ditto. * libc/sys/cygwin/dummy.c: Ditto. * libc/sys/cygwin/sys/reent.h: Ditto.
* 2004-09-14 Jeff Johnston <jjohnstn@redhat.com>Jeff Johnston2004-09-141-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | * configure.host: Add Cygwin sys directory. * configure.in: Do not set CRT0 for cygwin. * libc/configure.in: Ditto. * libc/sys/configure.in: Ditto. * configure: Regenerated. * libc/configure: Ditto. * libc/sys/configure: Ditto. * libc/include/sys/reent.h: Add __REENT_HAS_CXA_SUPPORT flag. * libc/stdlib/__atexit.c: Keep cxa support protected by new __REENT_HAS_CXA_SUPPORT flag. * libc/stdlib/__call_atexit.c: Ditto. * libc/stdlib/cxa_atexit.c: Ditto. * libc/stdlib/cxa_finalize.c: Ditto. * libc/sys/cygwin/Makefile.am: New file. * libc/sys/cygwin/Makefile.in: Ditto. * libc/sys/cygwin/aclocal.m4: Ditto. * libc/sys/cygwin/configure: Ditto. * libc/sys/cygwin/configure.in: Ditto. * libc/sys/cygwin/dummy.c: Ditto. * libc/sys/cygwin/sys/reent.h: Ditto. This file is stabilized version of reent.h.
* 2004-09-09 Paul Brook <paul@codesourcery.com>Jeff Johnston2004-09-091-0/+86
* libc/include/sys/reent.h (struct _on_exit_args): Add _dso_handle and _is_cxa. (struct _atexit): Add _next when _REENT_SMALL. (struct _reent): Add _atexit0 when _REENT_SMALL. (_REENT_INIT_PTR): Adjust. * libc/stdlib/Makefile.am (GENERAL_SOURCES): Add __atexit.c and __call_exit.c. (EXTENDED_SOURCES): Add cxa_atexit.c and cxa_finalize.c. * libc/stdlib/Makefile.in: Regenerate. * libc/stdlib/__atexit.c: New file. * libc/stdlib/__call_atexit.c: New file. * libc/stdlib/atexit.h: Remove old definitions. Add new. * libc/stdlib/atexit.c (atexit): Use __register_exitproc. * libc/stdlib/cxa_atexit.c: New file. * libc/stdlib/cxa_finalize.c: New file. * libc/stdlib/exit.c (exit): Use __call_exitprocs. * libc/stdlib/on_exit.c (on_exit): Use __register_exitproc. 2004-09-09 Jeff Johnston <jjohnstn@redhat.com> * libc/reent/reent.c [_REENT_SMALL]: Fix reference to _on_exit_args_ptr.