From: drepper Date: Mon, 23 Oct 2000 22:56:50 +0000 (+0000) Subject: Generate more debugging output. X-Git-Tag: glibc-2_1_96~148 X-Git-Url: http://git.csclub.uwaterloo.ca/?p=kopensolaris-gnu%2Fglibc.git;a=commitdiff_plain;h=7ec70992d8cd113d49e1000c0858935ce52292cc Generate more debugging output. --- diff --git a/elf/unload.c b/elf/unload.c index 2789abd5bb..4fd82b7e3a 100644 --- a/elf/unload.c +++ b/elf/unload.c @@ -4,10 +4,18 @@ require it for glibc. */ #include +#include #include #include #include +#define OUT \ + for (map = _r_debug.r_map; map != NULL; map = map->l_next) \ + if (map->l_type == lt_loaded) \ + printf ("name = \"%s\", opencount = %d\n", \ + map->l_name, (int) map->l_opencount); \ + fflush (stdout) + typedef struct { void *next; @@ -20,46 +28,62 @@ main (void) strct *testdat; int ret; int result = 0; + struct link_map *map; mtrace (); + puts ("\nBefore"); + OUT; + sohandle = dlopen ("unloadmod.so", RTLD_NOW | RTLD_GLOBAL); if (sohandle == NULL) { - printf ("first dlopen failed: %s\n", dlerror ()); + printf ("*** first dlopen failed: %s\n", dlerror ()); exit (1); } + puts ("\nAfter loading unloadmod.so"); + OUT; + testdat = dlsym (sohandle, "testdat"); testdat->next = (void *) -1; ret = dlclose (sohandle); if (ret != 0) { - puts ("first dlclose failed"); + puts ("*** first dlclose failed"); result = 1; } + puts ("\nAfter closing unloadmod.so"); + OUT; + sohandle = dlopen ("unloadmod.so", RTLD_NOW | RTLD_GLOBAL); if (sohandle == NULL) { - printf ("second dlopen failed: %s\n", dlerror ()); + printf ("*** second dlopen failed: %s\n", dlerror ()); exit (1); } + puts ("\nAfter loading unloadmod.so the second time"); + OUT; + testdat = dlsym (sohandle, "testdat"); if (testdat->next == (void *) -1) { - puts ("testdat->next == (void *) -1"); + puts ("*** testdat->next == (void *) -1"); result = 1; } ret = dlclose (sohandle); if (ret != 0) { - puts ("second dlclose failed"); + puts ("*** second dlclose failed"); result = 1; } + puts ("\nAfter closing unloadmod.so again"); + OUT; + return result; }