diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2017-09-26 16:53:25 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2017-09-26 16:53:44 -0700 |
commit | 825adeeed1e95990fd1efb70d9ac3eb7f1ea802a (patch) | |
tree | 4002af56c7bd48974db937cdc3fbe7c2d7ecc290 /stdlib | |
parent | bfb0deb3554204cbba10d61d96cad355e4ca5623 (diff) | |
download | glibc-825adeeed1e95990fd1efb70d9ac3eb7f1ea802a.tar.gz glibc-825adeeed1e95990fd1efb70d9ac3eb7f1ea802a.tar.xz glibc-825adeeed1e95990fd1efb70d9ac3eb7f1ea802a.zip |
Mark __dso_handle as hidden [BZ #18822]
Since __dso_handle is always defined by either crtbegin.o from GCC or dso_handle.c, it should be marked as hidden and be passed directly. [BZ #18822] * dlfcn/modatexit.c (foo): Remove __dso_handle check. * dlfcn/modcxaatexit.c: Include <dso_handle.h>. (__dso_handle): Remove declaration. * dlfcn/tstatexit.c (__dso_handle): Removed. (main): Don't check __dso_handle. * dlfcn/tstcxaatexit.c (__dso_handle): Removed. (main): Don't check __dso_handle. * include/dso_handle.h: New file. * malloc/mtrace.c: Include <dso_handle.h>. (mtrace): Pass __dso_handle directly. * nptl/pthread_atfork.c: Include <dso_handle.h>. (__dso_handle): Remove declaration. (__pthread_atfork): Pass __dso_handle directly. * nptl/tst-atfork2mod.c: Include <dso_handle.h>. (__dso_handle): Removed. * posix/wordexp-test.c: Include <dso_handle.h>. (__dso_handle): Remove declaration. (__app_register_atfork): Pass __dso_handle directly. * stdlib/at_quick_exit.c: Include <dso_handle.h>. (__dso_handle): Remove declaration. (at_quick_exit): Pass __dso_handle directly. * stdlib/atexit.c: Include <dso_handle.h>. (__dso_handle): Remove declaration. (atexit): Pass __dso_handle directly. * stdlib/tst-tls-atexit-lib.c: Include <dso_handle.h>. (__dso_handle): Removed.
Diffstat (limited to 'stdlib')
-rw-r--r-- | stdlib/at_quick_exit.c | 8 | ||||
-rw-r--r-- | stdlib/atexit.c | 9 | ||||
-rw-r--r-- | stdlib/tst-tls-atexit-lib.c | 3 |
3 files changed, 5 insertions, 15 deletions
diff --git a/stdlib/at_quick_exit.c b/stdlib/at_quick_exit.c index 3b74d0a688..0f1c1fde9e 100644 --- a/stdlib/at_quick_exit.c +++ b/stdlib/at_quick_exit.c @@ -33,18 +33,14 @@ <http://www.gnu.org/licenses/>. */ #include <stdlib.h> +#include <dso_handle.h> #include "exit.h" -/* This is defined by newer gcc version unique for each module. */ -extern void *__dso_handle __attribute__ ((__weak__)); - - /* Register FUNC to be executed by `quick_exit'. */ int attribute_hidden at_quick_exit (void (*func) (void)) { - return __cxa_at_quick_exit ((void (*) (void *)) func, - &__dso_handle == NULL ? NULL : __dso_handle); + return __cxa_at_quick_exit ((void (*) (void *)) func, __dso_handle); } diff --git a/stdlib/atexit.c b/stdlib/atexit.c index f28b6ba1b7..aaecb4a503 100644 --- a/stdlib/atexit.c +++ b/stdlib/atexit.c @@ -33,13 +33,9 @@ <http://www.gnu.org/licenses/>. */ #include <stdlib.h> +#include <dso_handle.h> #include "exit.h" - -/* This is defined by newer gcc version unique for each module. */ -extern void *__dso_handle __attribute__ ((__weak__)); - - /* Register FUNC to be executed by `exit'. */ int #ifndef atexit @@ -47,6 +43,5 @@ attribute_hidden #endif atexit (void (*func) (void)) { - return __cxa_atexit ((void (*) (void *)) func, NULL, - &__dso_handle == NULL ? NULL : __dso_handle); + return __cxa_atexit ((void (*) (void *)) func, NULL, __dso_handle); } diff --git a/stdlib/tst-tls-atexit-lib.c b/stdlib/tst-tls-atexit-lib.c index a227e4653c..06ec02f4ee 100644 --- a/stdlib/tst-tls-atexit-lib.c +++ b/stdlib/tst-tls-atexit-lib.c @@ -17,8 +17,7 @@ <http://www.gnu.org/licenses/>. */ #include <stdlib.h> - -extern void *__dso_handle; +#include <dso_handle.h> typedef struct { |