Remove Linuxism from tst-tls-atexit
authorSiddhesh Poyarekar <siddhesh@redhat.com>
Tue, 21 Jul 2015 01:44:16 +0000 (07:14 +0530)
committerSiddhesh Poyarekar <siddhesh@redhat.com>
Tue, 21 Jul 2015 01:44:17 +0000 (07:14 +0530)
commitd72c2763056b9c0de69886f8f3e6c3ed0aaa6dd4
treea947c3e64ac3c37cc01dbea0140174ca8e9e5298
parent530deb962fb9c6ccbcf773051ab89569ae1b7d7e
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.
ChangeLog
stdlib/tst-tls-atexit-lib.c
stdlib/tst-tls-atexit.c