$(objpfx)unload6mod3.so: $(libdl)
$(objpfx)unload7mod1.so: $(libdl)
$(objpfx)unload7mod2.so: $(objpfx)unload7mod1.so
-$(objpfx)unload8mod1.so: $(objpfx)unload8mod2.so
+$(objpfx)unload8mod1.so: $(objpfx)unload8mod2.so $(libdl)
$(objpfx)unload8mod2.so: $(objpfx)unload8mod3.so
$(objpfx)unload8mod3.so: $(libdl)
$(objpfx)tst-initordera2.so: $(objpfx)tst-initordera1.so
}
mod1 ();
+
+ // Additional test to detect when the fastload hash table has bad pointers to
+ // names of unloaded libraries hanging around in it.
+
+ int (*mod1b) (void) = dlsym (h, "mod1b");
+ if (mod1b == NULL)
+ {
+ puts ("dlsym failed");
+ return 1;
+ }
+
+ mod1b ();
+
dlclose (h);
+ void *h2x = dlopen ("$ORIGIN/unload8mod2.so", RTLD_LAZY);
+ if (h2x == NULL)
+ {
+ puts ("dlopen unload8mod2.so failed");
+ return 1;
+ }
+
+
+ void *h2xx = dlopen ("$ORIGIN/unload8mod1x.so", RTLD_LAZY);
+ if (h2xx == NULL)
+ {
+ puts ("dlopen unload8mod1x.so failed");
+ return 1;
+ }
+
+ dlclose (h);
+ dlclose (h2x);
+ dlclose (h2xx);
+
+ void *h3xx = dlopen ("$ORIGIN/unload8mod3.so", RTLD_LAZY);
+ if (h3xx == NULL)
+ {
+ puts ("dlopen unload8mod3.so failed");
+ return 1;
+ }
+
+ dlclose (h3xx);
+
return 0;
}