]>
Commit | Line | Data |
---|---|---|
415ac3df UD |
1 | #include <config.h> |
2 | #include <dlfcn.h> | |
3 | #include <stdio.h> | |
802fe9a1 | 4 | #include <sys/mman.h> |
415ac3df UD |
5 | |
6 | static int | |
7 | do_test (void) | |
8 | { | |
415ac3df UD |
9 | void *h1 = dlopen ("tst-unique1mod1.so", RTLD_LAZY); |
10 | if (h1 == NULL) | |
11 | { | |
12 | puts ("cannot load tst-unique1mod1"); | |
13 | return 1; | |
14 | } | |
15 | int *(*f1) (void) = dlsym (h1, "f"); | |
16 | if (f1 == NULL) | |
17 | { | |
18 | puts ("cannot locate f in tst-unique1mod1"); | |
19 | return 1; | |
20 | } | |
21 | void *h2 = dlopen ("tst-unique1mod2.so", RTLD_LAZY); | |
22 | if (h2 == NULL) | |
23 | { | |
24 | puts ("cannot load tst-unique1mod2"); | |
25 | return 1; | |
26 | } | |
27 | int (*f2) (int *) = dlsym (h2, "f"); | |
28 | if (f2 == NULL) | |
29 | { | |
30 | puts ("cannot locate f in tst-unique1mod2"); | |
31 | return 1; | |
32 | } | |
802fe9a1 UD |
33 | if (f2 (f1 ())) |
34 | { | |
35 | puts ("f from tst-unique1mod2 failed"); | |
36 | return 1; | |
37 | } | |
38 | dlclose (h2); | |
39 | dlclose (h1); | |
40 | mmap (NULL, 1024 * 1024 * 16, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); | |
41 | h2 = dlopen ("tst-unique1mod2.so", RTLD_LAZY); | |
42 | if (h2 == NULL) | |
43 | { | |
44 | puts ("cannot load tst-unique1mod2"); | |
45 | return 1; | |
46 | } | |
47 | f2 = dlsym (h2, "f"); | |
48 | if (f2 == NULL) | |
49 | { | |
50 | puts ("cannot locate f in tst-unique1mod2"); | |
51 | return 1; | |
52 | } | |
53 | h1 = dlopen ("tst-unique1mod1.so", RTLD_LAZY); | |
54 | if (h1 == NULL) | |
55 | { | |
56 | puts ("cannot load tst-unique1mod1"); | |
57 | return 1; | |
58 | } | |
59 | f1 = dlsym (h1, "f"); | |
60 | if (f1 == NULL) | |
61 | { | |
62 | puts ("cannot locate f in tst-unique1mod1"); | |
63 | return 1; | |
64 | } | |
65 | if (f2 (f1 ())) | |
66 | { | |
67 | puts ("f from tst-unique1mod2 failed"); | |
68 | return 1; | |
69 | } | |
802fe9a1 | 70 | return 0; |
415ac3df UD |
71 | } |
72 | ||
36fe25fd | 73 | #include <support/test-driver.c> |