1 | #include <dlfcn.h> |
---|---|
2 | #include <stdio.h> |
3 | #include <stdlib.h> |
4 | |
5 | extern int bar (void); |
6 | extern int foo (void); |
7 | |
8 | int |
9 | foo (void) |
10 | { |
11 | void *h; |
12 | int res; |
13 | |
14 | /* Load ltglobalmod1 in the global namespace. */ |
15 | h = dlopen (file: "ltglobmod1.so", RTLD_GLOBAL | RTLD_LAZY); |
16 | if (h == NULL) |
17 | { |
18 | printf (format: "%s: cannot open %s: %s", |
19 | __FUNCTION__, "ltglobmod1.so", dlerror ()); |
20 | exit (EXIT_FAILURE); |
21 | } |
22 | |
23 | /* Call bar. This is undefined in the DSO. */ |
24 | puts (s: "about to call `bar'"); |
25 | fflush (stdout); |
26 | res = bar (); |
27 | |
28 | printf (format: "bar returned %d\n", res); |
29 | |
30 | dlclose (handle: h); |
31 | |
32 | return res != 42; |
33 | } |
34 |