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 | |
8 | int 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(file: "bug-dlsym1-lib1.so" , RTLD_NOW)) == NULL) { |
16 | printf(format: "dlopen(\"bug-dlsym1-lib1.so\"): %s\n" , dlerror()); |
17 | abort(); |
18 | } |
19 | |
20 | if ((c = dlsym(handle: handle, name: "dlopen_test_variable" )) == NULL) { |
21 | printf(format: "dlsym(handle, \"dlopen_test_variable\"): %s\n" , dlerror()); |
22 | abort(); |
23 | } |
24 | |
25 | (void) dlclose(handle: handle); |
26 | |
27 | return 0; |
28 | } |
29 | |