PROVIDE(__start___libc_subfreeres = .);\
__libc_subfreeres : { *(__libc_subfreeres) }\
PROVIDE(__stop___libc_subfreeres = .);\
- PROVIDE(__start___libc_atexit = .);\
- __libc_atexit : { *(__libc_atexit) }\
- PROVIDE(__stop___libc_atexit = .);\
PROVIDE(__start___libc_IO_vtables = .);\
__libc_IO_vtables : { *(__libc_IO_vtables) }\
PROVIDE(__stop___libc_IO_vtables = .);\
#endif
}
libc_hidden_def (_IO_list_resetlock)
-
-text_set_element(__libc_atexit, _IO_cleanup);
#include <unistd.h>
#include <pointer_guard.h>
#include <libc-lock.h>
+#include <libio/libioP.h>
#include "exit.h"
-#include "set-hooks.h"
-DEFINE_HOOK (__libc_atexit, (void))
-
/* Initialize the flag that indicates exit function processing
is complete. See concurrency notes in stdlib/exit.h where
__exit_funcs_lock is declared. */
__libc_lock_unlock (__exit_funcs_lock);
if (run_list_atexit)
- RUN_HOOK (__libc_atexit, ());
+ call_function_static_weak (_IO_cleanup);
_exit (status);
}