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 /nptl | |
parent | bfb0deb3554204cbba10d61d96cad355e4ca5623 (diff) | |
download | glibc-825adeeed1e95990fd1efb70d9ac3eb7f1ea802a.tar glibc-825adeeed1e95990fd1efb70d9ac3eb7f1ea802a.tar.gz glibc-825adeeed1e95990fd1efb70d9ac3eb7f1ea802a.tar.bz2 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 'nptl')
-rw-r--r-- | nptl/pthread_atfork.c | 8 | ||||
-rw-r--r-- | nptl/tst-atfork2mod.c | 2 |
2 files changed, 3 insertions, 7 deletions
diff --git a/nptl/pthread_atfork.c b/nptl/pthread_atfork.c index dc2ea07887..f1aa2b3cf1 100644 --- a/nptl/pthread_atfork.c +++ b/nptl/pthread_atfork.c @@ -35,10 +35,7 @@ #include "pthreadP.h" #include <fork.h> - -/* This is defined by newer gcc version unique for each module. */ -extern void *__dso_handle __attribute__ ((__weak__, - __visibility__ ("hidden"))); +#include <dso_handle.h> /* Hide the symbol so that no definition but the one locally in the @@ -51,8 +48,7 @@ attribute_hidden __pthread_atfork (void (*prepare) (void), void (*parent) (void), void (*child) (void)) { - return __register_atfork (prepare, parent, child, - &__dso_handle == NULL ? NULL : __dso_handle); + return __register_atfork (prepare, parent, child, __dso_handle); } #ifndef __pthread_atfork extern int pthread_atfork (void (*prepare) (void), void (*parent) (void), diff --git a/nptl/tst-atfork2mod.c b/nptl/tst-atfork2mod.c index fe64046d3c..ea47d5825a 100644 --- a/nptl/tst-atfork2mod.c +++ b/nptl/tst-atfork2mod.c @@ -19,6 +19,7 @@ #include <pthread.h> #include <stdio.h> #include <stdlib.h> +#include <dso_handle.h> extern int val; @@ -46,7 +47,6 @@ static void __attribute__ ((constructor)) init (void) { - extern void *__dso_handle; printf ("dsohandle = %p\n", __dso_handle); if (pthread_atfork (prepare, parent, child) != 0) |