1 | #include <dlfcn.h> |
2 | #include <stdio.h> |
3 | |
4 | |
5 | int call_puts; |
6 | |
7 | static int |
8 | do_test (void) |
9 | { |
10 | call_puts = 1; |
11 | |
12 | void *h1 = dlopen (file: "$ORIGIN/order2mod1.so" , RTLD_LAZY | RTLD_GLOBAL); |
13 | if (h1 == NULL) |
14 | { |
15 | puts (s: "cannot load order2mod1" ); |
16 | return 1; |
17 | } |
18 | void *h2 = dlopen (file: "$ORIGIN/order2mod2.so" , RTLD_LAZY); |
19 | if (h2 == NULL) |
20 | { |
21 | puts (s: "cannot load order2mod2" ); |
22 | return 1; |
23 | } |
24 | if (dlclose (handle: h1) != 0) |
25 | { |
26 | puts (s: "dlclose order2mod1 failed" ); |
27 | return 1; |
28 | } |
29 | if (dlclose (handle: h2) != 0) |
30 | { |
31 | puts (s: "dlclose order2mod2 failed" ); |
32 | return 1; |
33 | } |
34 | return 0; |
35 | } |
36 | |
37 | #include <support/test-driver.c> |
38 | |
39 | static void |
40 | __attribute__ ((destructor)) |
41 | fini (void) |
42 | { |
43 | if (call_puts) |
44 | puts (s: "5" ); |
45 | } |
46 | |