mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
* stdlib/Makefile (routines): Add quick_exit, at_quick_exit, and
cxa_at_quick_exit. (static-only-routines): Add at_quick_exit. * stdlib/Versions: Export quick_exit and __cxa_at_quick_exit for GLIBC_2.10. * stdlib/quick_exit.c: New file. * stdlib/at_quick_exit.c: New file. * stdlib/cxa_at_quick_exit.c: New file. * stdlib/cxa_atexit.c (__cxa_atexit): Move body to new function. Call it appropriately. (__internal_atexit): New function. (__new_exitfn): Now takes parameter to point to the list to use. * stdlib/cxa_finalize.c: Remove quick_exit handlers, don't call them. * stdlib/exit.c (__run_exit_handlers): New function. Split from... (exit): ...here. Just call __run_exit_handlers appropriately. * stdlib/exit.h: Declare __quick_exit_funcs, __run_exit_handlers, __internal_atexit, __cxa_at_quick_exit. Adjust __new_exitfn. * stdlib/on_exit.c: Adjust call to __new_exitfn. * stdlib/stdlib.h: Declare at_quick_exit and quick_exit.
This commit is contained in:
@ -515,6 +515,18 @@ extern void abort (void) __THROW __attribute__ ((__noreturn__));
|
||||
|
||||
/* Register a function to be called when `exit' is called. */
|
||||
extern int atexit (void (*__func) (void)) __THROW __nonnull ((1));
|
||||
|
||||
#ifdef __USE_GNU
|
||||
// XXX There should be a macro to signal with C++ revision is used.
|
||||
// XXX This function is in the C++1x revision.
|
||||
/* Register a function to be called when `quick_exit' is called. */
|
||||
# ifdef __cplusplus
|
||||
extern "C++" int at_quick_exit (void (*__func) (void))
|
||||
__THROW __asm ("at_quick_exit") __nonnull ((1));
|
||||
# else
|
||||
extern int at_quick_exit (void (*__func) (void)) __THROW __nonnull ((1));
|
||||
# endif
|
||||
#endif
|
||||
__END_NAMESPACE_STD
|
||||
|
||||
#ifdef __USE_MISC
|
||||
@ -526,9 +538,18 @@ extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
|
||||
|
||||
__BEGIN_NAMESPACE_STD
|
||||
/* Call all functions registered with `atexit' and `on_exit',
|
||||
in the reverse of the order in which they were registered
|
||||
in the reverse of the order in which they were registered,
|
||||
perform stdio cleanup, and terminate program execution with STATUS. */
|
||||
extern void exit (int __status) __THROW __attribute__ ((__noreturn__));
|
||||
|
||||
#ifdef __USE_GNU
|
||||
// XXX There should be a macro to signal with C++ revision is used.
|
||||
// XXX This function is in the C++1x revision.
|
||||
/* Call all functions registered with `at_quick_exit' in the reverse
|
||||
of the order in which they were registered and terminate program
|
||||
execution with STATUS. */
|
||||
extern void quick_exit (int __status) __THROW __attribute__ ((__noreturn__));
|
||||
#endif
|
||||
__END_NAMESPACE_STD
|
||||
|
||||
#ifdef __USE_ISOC99
|
||||
|
Reference in New Issue
Block a user