diff options
| -rw-r--r-- | libc/stdlib/atexit.c | 7 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/_exit.c | 6 | 
2 files changed, 9 insertions, 4 deletions
| diff --git a/libc/stdlib/atexit.c b/libc/stdlib/atexit.c index 4cec3f320..3a8a7be14 100644 --- a/libc/stdlib/atexit.c +++ b/libc/stdlib/atexit.c @@ -320,7 +320,9 @@ extern void (*__rtld_fini)(void);  /*   * Normal program termination   */ -void exit(int rv) +#undef exit +#undef __exit +void attribute_hidden __exit(int rv)  {  	/* Perform exit-specific cleanup (atexit and on_exit) */  	LOCK; @@ -343,6 +345,7 @@ void exit(int rv)  	if (_stdio_term)   	    _stdio_term(); -	_exit(rv); +	_exit_internal(rv);  } +strong_alias(__exit,exit)  #endif diff --git a/libc/sysdeps/linux/common/_exit.c b/libc/sysdeps/linux/common/_exit.c index d0a4ee1d6..a36f5a128 100644 --- a/libc/sysdeps/linux/common/_exit.c +++ b/libc/sysdeps/linux/common/_exit.c @@ -32,10 +32,12 @@  static inline _syscall1(void, __syscall_exit, int, status);  #endif -void attribute_noreturn _exit(int status) +#undef _exit +#undef _exit_internal +void attribute_noreturn _exit_internal(int status)  {  	/* The loop is added only to keep gcc happy. */  	while(1)  		INLINE_SYSCALL(exit, 1, status);  } - +strong_alias(_exit_internal,_exit) | 
