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