aboutsummaryrefslogtreecommitdiff
path: root/newlib/libc/stdlib/cxa_atexit.c
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2013-07-02 21:30:57 +0000
committerJeff Johnston <jjohnstn@redhat.com>2013-07-02 21:30:57 +0000
commite2ac49d3d7c6445c07467e2a4d271d5664f83830 (patch)
tree02ccae3e9d54922004de57e02338c1f4b77098b8 /newlib/libc/stdlib/cxa_atexit.c
parenta838011d07bd7a1408619b68646d3ced78a4f25e (diff)
downloadnewlib-e2ac49d3d7c6445c07467e2a4d271d5664f83830.zip
newlib-e2ac49d3d7c6445c07467e2a4d271d5664f83830.tar.gz
newlib-e2ac49d3d7c6445c07467e2a4d271d5664f83830.tar.bz2
2013-07-02 Joey Ye <joey.ye@arm.com>
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.
Diffstat (limited to 'newlib/libc/stdlib/cxa_atexit.c')
-rw-r--r--newlib/libc/stdlib/cxa_atexit.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/newlib/libc/stdlib/cxa_atexit.c b/newlib/libc/stdlib/cxa_atexit.c
index 8c39236..c3c0d2a 100644
--- a/newlib/libc/stdlib/cxa_atexit.c
+++ b/newlib/libc/stdlib/cxa_atexit.c
@@ -19,5 +19,14 @@ _DEFUN (__cxa_atexit,
void *arg _AND
void *d)
{
- return __register_exitproc (__et_cxa, (void (*)(void)) fn, arg, d);
+#ifdef _LITE_EXIT
+ /* Refer to comments in __atexit.c for more details of lite exit. */
+ int __register_exitproc _PARAMS ((int, void (*fn) (void), _PTR, _PTR))
+ __attribute__ ((weak));
+
+ if (!__register_exitproc)
+ return 0;
+ else
+#endif
+ return __register_exitproc (__et_cxa, (void (*)(void)) fn, arg, d);
}