From 1cc9e59a93636be6772ad423f7895e7ab52e4be7 Mon Sep 17 00:00:00 2001 From: Paul Pluzhnikov Date: Wed, 20 Sep 2017 19:37:45 -0700 Subject: Implement xdlopen, xdlsym and xdlclose routines which terminate test program with appropriate message if the corresponding dlfcn.h routine returns an error. Use them in stdlib/tst-tls-atexit.c --- stdlib/tst-tls-atexit.c | 30 +++++++----------------------- 1 file changed, 7 insertions(+), 23 deletions(-) (limited to 'stdlib/tst-tls-atexit.c') diff --git a/stdlib/tst-tls-atexit.c b/stdlib/tst-tls-atexit.c index 6dbf49d..165909a 100644 --- a/stdlib/tst-tls-atexit.c +++ b/stdlib/tst-tls-atexit.c @@ -31,7 +31,6 @@ second handle. In the end, the DSO should remain loaded due to the RTLD_NODELETE flag being set in the second dlopen call. */ -#include #include #include #include @@ -39,6 +38,7 @@ #include #include #include +#include #ifndef NO_DELETE # define LOADED_IS_GOOD false @@ -73,18 +73,12 @@ is_loaded (void) static void * reg_dtor_and_close (void *h) { - void (*reg_dtor) (void) = (void (*) (void)) dlsym (h, "reg_dtor"); - - if (reg_dtor == NULL) - { - printf ("Unable to find symbol: %s\n", dlerror ()); - return (void *) (uintptr_t) 1; - } + void (*reg_dtor) (void) = (void (*) (void)) xdlsym (h, "reg_dtor"); reg_dtor (); #ifndef NO_DELETE - dlclose (h); + xdlclose (h); #endif return NULL; @@ -119,32 +113,22 @@ static int do_test (void) { /* Load the DSO. */ - void *h1 = dlopen (DSO_NAME, RTLD_LAZY); - if (h1 == NULL) - { - printf ("h1: Unable to load DSO: %s\n", dlerror ()); - return 1; - } + void *h1 = xdlopen (DSO_NAME, RTLD_LAZY); #ifndef NO_DELETE if (spawn_thread (h1) != 0) return 1; #endif - void *h2 = dlopen (DSO_NAME, H2_RTLD_FLAGS); - if (h2 == NULL) - { - printf ("h2: Unable to load DSO: %s\n", dlerror ()); - return 1; - } + void *h2 = xdlopen (DSO_NAME, H2_RTLD_FLAGS); #ifdef NO_DELETE if (spawn_thread (h1) != 0) return 1; - dlclose (h1); + xdlclose (h1); #endif - dlclose (h2); + xdlclose (h2); /* Check link maps to ensure that the DSO has unloaded. In the normal case, the DSO should be unloaded if there are no uses. However, if one of the -- cgit v1.1