1 #include <dlfcn.h> 2 #include <stdio.h> 3 4 static int do_test(void)5do_test (void) 6 { 7 void *h1 = dlopen ("$ORIGIN/testobj6.so", RTLD_GLOBAL|RTLD_LAZY); 8 if (h1 == NULL) 9 { 10 puts ("cannot open testobj6"); 11 return 1; 12 } 13 14 void *h2 = dlopen ("$ORIGIN/testobj2.so", 15 RTLD_GLOBAL|RTLD_DEEPBIND|RTLD_LAZY); 16 if (h2 == NULL) 17 { 18 puts ("cannot open testobj2"); 19 return 1; 20 } 21 22 dlclose (h1); 23 24 void (*f) (void) = dlsym (h2, "p"); 25 if (f == NULL) 26 { 27 puts ("cannot find p"); 28 return 1; 29 } 30 31 f (); 32 33 dlclose (h2); 34 35 return 0; 36 } 37 38 #include <support/test-driver.c> 39