aboutsummaryrefslogtreecommitdiff
path: root/nptl
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2017-09-26 16:53:25 -0700
committerH.J. Lu <hjl.tools@gmail.com>2017-09-26 16:53:44 -0700
commit825adeeed1e95990fd1efb70d9ac3eb7f1ea802a (patch)
tree4002af56c7bd48974db937cdc3fbe7c2d7ecc290 /nptl
parentbfb0deb3554204cbba10d61d96cad355e4ca5623 (diff)
downloadglibc-825adeeed1e95990fd1efb70d9ac3eb7f1ea802a.zip
glibc-825adeeed1e95990fd1efb70d9ac3eb7f1ea802a.tar.gz
glibc-825adeeed1e95990fd1efb70d9ac3eb7f1ea802a.tar.bz2
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.c8
-rw-r--r--nptl/tst-atfork2mod.c2
2 files changed, 3 insertions, 7 deletions
diff --git a/nptl/pthread_atfork.c b/nptl/pthread_atfork.c
index dc2ea07..f1aa2b3 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 fe64046..ea47d58 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)