diff options
author | Waldemar Brodkorb <wbx@uclibc-ng.org> | 2016-10-28 20:29:21 +0200 |
---|---|---|
committer | Waldemar Brodkorb <wbx@uclibc-ng.org> | 2016-10-28 20:31:55 +0200 |
commit | 99ef2719fb3d703fe38c4113cd7f5adec516dd3a (patch) | |
tree | 2c1f77cb41b60ccbf8faa77a3640491a3546b546 /test/dlopen/nodelete.c | |
parent | 543308f6c46cf2edf8a524bc9c631e472570fe72 (diff) |
test: remove test suite
The test suite is now a developed in a separate git repository.
See here:
http://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng-test.git
The test suite should be just like every other software compiled
with the cross-toolchain. In the past strange problems where found
when the test suite got build in the toolchain creation step.
Diffstat (limited to 'test/dlopen/nodelete.c')
-rw-r--r-- | test/dlopen/nodelete.c | 205 |
1 files changed, 0 insertions, 205 deletions
diff --git a/test/dlopen/nodelete.c b/test/dlopen/nodelete.c deleted file mode 100644 index 07ff96136..000000000 --- a/test/dlopen/nodelete.c +++ /dev/null @@ -1,205 +0,0 @@ -#include <dlfcn.h> -#include <setjmp.h> -#include <signal.h> -#include <stdio.h> -#include <stdlib.h> - - -static sigjmp_buf jmpbuf; - - -int fini_ran; - - -static void -__attribute__ ((noreturn)) -handler (int sig) -{ - siglongjmp (jmpbuf, 1); -} - - -#define TEST_FUNCTION do_test () -static int -do_test (void) -{ - /* We are testing the two possibilities to mark an object as not deletable: - - marked on the linker commandline with `-z nodelete' - - with the RTLD_NODELETE flag at dlopen()-time. - - The test we are performing should be safe. We are loading the objects, - get the address of variables in the respective object, unload the object - and then try to read the variable. If the object is unloaded this - should lead to an segmentation fault. */ - void *p; - struct sigaction sa; - - sa.sa_handler = handler; - sigfillset (&sa.sa_mask); - sa.sa_flags = SA_RESTART; - - if (sigaction (SIGSEGV, &sa, NULL) == -1) - puts ("cannot install signal handler: %m"); - - p = dlopen ("nodelmod1.so", RTLD_LAZY); - if (p == NULL) - { - printf ("failed to load \"nodelmod1.so\": %s\n", dlerror ()); - exit (1); - } - else - { - int *varp; - - varp = dlsym (p, "var1"); - if (varp == NULL) - { - puts ("failed to get address of \"var1\" in \"nodelmod1.so\""); - exit (1); - } - else - { - *varp = 20000720; - - /* Now close the object. */ - fini_ran = 0; - if (dlclose (p) != 0) - { - puts ("failed to close \"nodelmod1.so\""); - exit (1); - } - else if (! sigsetjmp (jmpbuf, 1)) - { - /* Access the variable again. */ - if (*varp != 20000720) - { - puts ("\"var1\" value not correct"); - exit (1); - } - else if (fini_ran != 0) - { - puts ("destructor of \"nodelmod1.so\" ran"); - exit (1); - } - else - puts ("-z nodelete test succeeded"); - } - else - { - /* We caught an segmentation fault. */ - puts ("\"nodelmod1.so\" got deleted!"); - exit (1); - } - } - } - - p = dlopen ("nodelmod2.so", RTLD_LAZY | RTLD_NODELETE); - if (p == NULL) - { - printf ("failed to load \"nodelmod2.so\": %s\n", dlerror ()); - exit (1); - } - else - { - int *varp; - - varp = dlsym (p, "var2"); - if (varp == NULL) - { - puts ("failed to get address of \"var2\" in \"nodelmod2.so\""); - exit (1); - } - else - { - *varp = 42; - - /* Now close the object. */ - fini_ran = 0; - if (dlclose (p) != 0) - { - puts ("failed to close \"nodelmod2.so\""); - exit (1); - } - else if (! sigsetjmp (jmpbuf, 1)) - { - /* Access the variable again. */ - if (*varp != 42) - { - puts ("\"var2\" value not correct"); - exit (1); - } - else if (fini_ran != 0) - { - puts ("destructor of \"nodelmod2.so\" ran"); - exit (1); - } - else - puts ("RTLD_NODELETE test succeeded"); - } - else - { - /* We caught an segmentation fault. */ - puts ("\"nodelmod2.so\" got deleted!"); - exit (1); - } - } - } - - p = dlopen ("nodelmod3.so", RTLD_LAZY); - if (p == NULL) - { - printf ("failed to load \"nodelmod3.so\": %s\n", dlerror ()); - exit (1); - } - else - { - int *(*fctp) (void); - - fctp = dlsym (p, "addr"); - if (fctp == NULL) - { - puts ("failed to get address of \"addr\" in \"nodelmod3.so\""); - exit (1); - } - else - { - int *varp = fctp (); - - *varp = -1; - - /* Now close the object. */ - fini_ran = 0; - if (dlclose (p) != 0) - { - puts ("failed to close \"nodelmod3.so\""); - exit (1); - } - else if (! sigsetjmp (jmpbuf, 1)) - { - /* Access the variable again. */ - if (*varp != -1) - { - puts ("\"var_in_mod4\" value not correct"); - exit (1); - } - else if (fini_ran != 0) - { - puts ("destructor of \"nodelmod4.so\" ran"); - exit (1); - } - else - puts ("-z nodelete in dependency succeeded"); - } - else - { - /* We caught an segmentation fault. */ - puts ("\"nodelmod4.so\" got deleted!"); - exit (1); - } - } - } - - return 0; -} - -#include "../test-skeleton.c" |