about summary refs log tree commit diff
path: root/stdlib/tst-tls-atexit-lib.c
diff options
context:
space:
mode:
authorSiddhesh Poyarekar <siddhesh@redhat.com>2015-07-21 07:14:16 +0530
committerSiddhesh Poyarekar <siddhesh@redhat.com>2015-07-21 07:14:17 +0530
commitd72c2763056b9c0de69886f8f3e6c3ed0aaa6dd4 (patch)
treea947c3e64ac3c37cc01dbea0140174ca8e9e5298 /stdlib/tst-tls-atexit-lib.c
parent530deb962fb9c6ccbcf773051ab89569ae1b7d7e (diff)
downloadglibc-d72c2763056b9c0de69886f8f3e6c3ed0aaa6dd4.tar.gz
glibc-d72c2763056b9c0de69886f8f3e6c3ed0aaa6dd4.tar.xz
glibc-d72c2763056b9c0de69886f8f3e6c3ed0aaa6dd4.zip
Remove Linuxism from tst-tls-atexit
The tst-tls-atexit test case searches for its module in /proc/PID/maps
to verify that it is unloaded, which is a Linux-specific test.  This
patch makes the test generic by looking for the library in the link
map list in the _r_debug structure.

Verified that the test continues to succeed on x86_64.  There is a bug
in the test case where it calls dlclose once again, which is actually
incorrect but still manages to unload the DSO thanks to an existing
bug in __tls_call_dtors.  This will be fixed in a later patch which
also fixes up the __cxa_thread_atexit_impl implementation.  I have
added a FIXME comment to that call momentarily, which I will remove
when I fix the problem.

	* stdlib/tst-tls-atexit-lib.c (do_foo): Rename to reg_dtor.
	* stdlib/tst-tls-atexit.c: (is_loaded): New function.
	(spawn_thread): New function.
	(load): Rename to reg_dtor_and_close.  Move dlopen to...
	(do_test): ... here.  Use IS_LOADED to test for its
	availability.
Diffstat (limited to 'stdlib/tst-tls-atexit-lib.c')
-rw-r--r--stdlib/tst-tls-atexit-lib.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/stdlib/tst-tls-atexit-lib.c b/stdlib/tst-tls-atexit-lib.c
index 2945379eed..2478d80f72 100644
--- a/stdlib/tst-tls-atexit-lib.c
+++ b/stdlib/tst-tls-atexit-lib.c
@@ -31,7 +31,7 @@ void A_dtor (void *obj)
   ((A *)obj)->val = obj;
 }
 
-void do_foo (void)
+void reg_dtor (void)
 {
   static __thread A b;
   __cxa_thread_atexit_impl (A_dtor, &b, __dso_handle);