From 9807e5408bf1d7f879216f0000c1f220beb89d93 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 23 Oct 2000 22:58:40 +0000 Subject: Update. * elf/unload.c: Generate more debugging output. * elf/neededtest.c: Make it more complicated. * elf/neededtest2.c: New file. * elf/Makefile: Add rules to build and run neededtest2. --- elf/neededtest.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'elf/neededtest.c') diff --git a/elf/neededtest.c b/elf/neededtest.c index 98f69a3185..a33d243651 100644 --- a/elf/neededtest.c +++ b/elf/neededtest.c @@ -64,7 +64,7 @@ check_loaded_objects (const char **loaded) int main (void) { - void *obj2; + void *obj2[2]; void *obj3; const char *loaded[] = { NULL, NULL, NULL, NULL }; int errors = 0; @@ -84,7 +84,16 @@ main (void) loaded[2] = "neededobj3.so"; errors += check_loaded_objects (loaded); printf ("Now loading shared object neededobj2.so\n"); - obj2 = dlopen ("neededobj2.so", RTLD_LAZY); + obj2[0] = dlopen ("neededobj2.so", RTLD_LAZY); + if (obj2 == NULL) + { + printf ("%s\n", dlerror ()); + exit (1); + } + printf ("After loading neededobj2.so once\n"); + errors += check_loaded_objects (loaded); + printf ("And loading shared object neededobj2.so again\n"); + obj2[1] = dlopen ("neededobj2.so", RTLD_LAZY); if (obj2 == NULL) { printf ("%s\n", dlerror ()); @@ -92,12 +101,17 @@ main (void) } printf ("Again, this is what is in memory\n"); errors += check_loaded_objects (loaded); - printf ("Closing neededobj2.so\n"); - dlclose (obj2); + printf ("Closing neededobj2.so for the first time\n"); + dlclose (obj2[0]); errors += check_loaded_objects (loaded); printf ("Closing neededobj3.so\n"); dlclose (obj3); + loaded[2] = NULL; + errors += check_loaded_objects (loaded); + printf ("Closing neededobj2.so for the second time\n"); + dlclose (obj2[1]); loaded[0] = NULL; + loaded[1] = NULL; errors += check_loaded_objects (loaded); if (errors != 0) printf ("%d errors found\n", errors); -- cgit v1.2.3