about summary refs log tree commit diff
path: root/dlfcn
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 /dlfcn
parentbfb0deb3554204cbba10d61d96cad355e4ca5623 (diff)
downloadglibc-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 'dlfcn')
-rw-r--r--dlfcn/modatexit.c2
-rw-r--r--dlfcn/modcxaatexit.c2
-rw-r--r--dlfcn/tstatexit.c8
-rw-r--r--dlfcn/tstcxaatexit.c8
4 files changed, 1 insertions, 19 deletions
diff --git a/dlfcn/modatexit.c b/dlfcn/modatexit.c
index e620d10c70..95c18dcbac 100644
--- a/dlfcn/modatexit.c
+++ b/dlfcn/modatexit.c
@@ -35,9 +35,7 @@ dummy (void)
 void
 foo (void *p)
 {
-  extern void *__dso_handle __attribute__ ((__weak__));
   printf ("This is %s\n", __FUNCTION__);
   atexit (dummy);
-  if (&__dso_handle) puts ("have dso handle"); else puts ("no dso handle");
   ip = p;
 }
diff --git a/dlfcn/modcxaatexit.c b/dlfcn/modcxaatexit.c
index fbda2f3c9f..917a97d813 100644
--- a/dlfcn/modcxaatexit.c
+++ b/dlfcn/modcxaatexit.c
@@ -17,6 +17,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <dso_handle.h>
 
 extern void fluffy (void *p);
 extern void bar (void *p);
@@ -34,7 +35,6 @@ fluffy (void *p)
 void
 bar (void *p)
 {
-  extern void *__dso_handle;
   printf ("This is %s\n", __FUNCTION__);
   __cxa_atexit (fluffy, p, __dso_handle);
 }
diff --git a/dlfcn/tstatexit.c b/dlfcn/tstatexit.c
index 2073843b8f..e25a3f8000 100644
--- a/dlfcn/tstatexit.c
+++ b/dlfcn/tstatexit.c
@@ -20,8 +20,6 @@
 #include <stdlib.h>
 
 
-extern void *__dso_handle __attribute__ ((__weak__));
-
 int
 main (void)
 {
@@ -30,12 +28,6 @@ main (void)
   void (*fp) (void *);
   int v = 0;
 
-  if (&__dso_handle == NULL)
-    {
-      puts ("__dso_handle not available, cannot perform the test");
-      exit (0);
-    }
-
   h = dlopen (fname, RTLD_NOW);
   if (h == NULL)
     {
diff --git a/dlfcn/tstcxaatexit.c b/dlfcn/tstcxaatexit.c
index fde645c16b..37f25d63d4 100644
--- a/dlfcn/tstcxaatexit.c
+++ b/dlfcn/tstcxaatexit.c
@@ -19,8 +19,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-extern void *__dso_handle __attribute__ ((__weak__));
-
 int
 main (void)
 {
@@ -29,12 +27,6 @@ main (void)
   void (*fp) (void *);
   int v = 0;
 
-  if (&__dso_handle == NULL)
-    {
-      puts ("__dso_handle not available, cannot perform the test");
-      exit (0);
-    }
-
   h = dlopen (fname, RTLD_LAZY);
   if (h == NULL)
     {