1 #include <dlfcn.h> 2 #include <stdio.h> 3 4 int main(void)5main (void) 6 { 7 void *h = dlopen ("$ORIGIN/unload7mod1.so", RTLD_LAZY); 8 if (h == NULL) 9 { 10 puts ("dlopen unload7mod1.so failed"); 11 return 1; 12 } 13 14 int (*fn) (void); 15 fn = dlsym (h, "foo"); 16 if (fn == NULL) 17 { 18 puts ("dlsym failed"); 19 return 1; 20 } 21 22 int ret = 0; 23 if (fn () == 0) 24 ++ret; 25 26 void *h2 = dlopen ("$ORIGIN/unload7mod2.so", RTLD_LAZY); 27 if (h2 == NULL) 28 { 29 puts ("dlopen unload7mod2.so failed"); 30 return 1; 31 } 32 dlclose (h2); 33 34 if (fn () == 0) 35 ++ret; 36 37 dlclose (h); 38 return ret; 39 } 40