1 /* Test case for bug in dlsym accessing dependency objects' symbols. */ 2 3 #include <stdlib.h> 4 #include <stdio.h> 5 #include <unistd.h> 6 #include <dlfcn.h> 7 main(void)8int main(void) 9 { 10 void *handle; 11 char *c; 12 13 /* open lib1.so, which has the unresolved test symbol and a DT_NEEDED 14 on lib2.so, which provides the symbol */ 15 if ((handle = dlopen("bug-dlsym1-lib1.so", RTLD_NOW)) == NULL) { 16 printf("dlopen(\"bug-dlsym1-lib1.so\"): %s\n", dlerror()); 17 abort(); 18 } 19 20 if ((c = dlsym(handle, "dlopen_test_variable")) == NULL) { 21 printf("dlsym(handle, \"dlopen_test_variable\"): %s\n", dlerror()); 22 abort(); 23 } 24 25 (void) dlclose(handle); 26 27 return 0; 28 } 29