summaryrefslogtreecommitdiffstats
path: root/newlib/libc/stdlib/__call_atexit.c
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/stdlib/__call_atexit.c')
-rw-r--r--newlib/libc/stdlib/__call_atexit.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/newlib/libc/stdlib/__call_atexit.c b/newlib/libc/stdlib/__call_atexit.c
index cea569ff4..8e91770c2 100644
--- a/newlib/libc/stdlib/__call_atexit.c
+++ b/newlib/libc/stdlib/__call_atexit.c
@@ -36,9 +36,11 @@ _DEFUN (__call_exitprocs, (code, d),
{
i = 1 << n;
+#ifdef __REENT_HAS_CXA_SUPPORT
/* Skip functions not from this dso. */
if (d && (!args || args->_dso_handle[n] != d))
continue;
+#endif
/* Remove the function now to protect against the
function calling exit recursively. */
@@ -55,8 +57,10 @@ _DEFUN (__call_exitprocs, (code, d),
/* Call the function. */
if (!args || (args->_fntypes & i) == 0)
fn ();
+#ifdef __REENT_HAS_CXA_SUPPORT
else if ((args->_is_cxa & i) == 0)
(*((void (*)(int, _PTR)) fn))(code, args->_fnargs[n]);
+#endif
else
(*((void (*)(_PTR)) fn))(args->_fnargs[n]);
}