Generate more debugging output.
authordrepper <drepper>
Mon, 23 Oct 2000 22:56:50 +0000 (22:56 +0000)
committerdrepper <drepper>
Mon, 23 Oct 2000 22:56:50 +0000 (22:56 +0000)
elf/unload.c

index 2789abd..4fd82b7 100644 (file)
@@ -4,10 +4,18 @@
    require it for glibc.  */
 
 #include <dlfcn.h>
+#include <link.h>
 #include <mcheck.h>
 #include <stdio.h>
 #include <stdlib.h>
 
+#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;
 }