]>
Commit | Line | Data |
---|---|---|
917fd061 UD |
1 | #include <stdio.h> |
2 | ||
3 | ||
4 | extern int successful_rtld_next_test (void); | |
5 | extern void *failing_rtld_next_use (void); | |
6 | ||
7 | ||
a850e77f | 8 | static int |
917fd061 UD |
9 | do_test (void) |
10 | { | |
11 | int result; | |
12 | void *addr; | |
13 | ||
14 | /* First try call a function which uses RTLD_NEXT and calls that | |
15 | function. */ | |
16 | result = successful_rtld_next_test (); | |
17 | if (result == 42) | |
18 | { | |
19 | puts ("RTLD_NEXT seems to work for existing functions"); | |
20 | result = 0; | |
21 | } | |
22 | else | |
23 | { | |
24 | printf ("Heh? `successful_rtld_next_test' returned %d\n", result); | |
25 | result = 1; | |
26 | } | |
27 | ||
28 | /* Next try a function which tries to get a function with RTLD_NEXT | |
29 | but that fails. This dlsym() call should return a NULL pointer | |
30 | and do nothing else. */ | |
31 | addr = failing_rtld_next_use (); | |
32 | if (addr == NULL) | |
33 | puts ("dlsym returned NULL for non-existing function. Good"); | |
34 | else | |
35 | { | |
36 | puts ("dlsym found something !?"); | |
37 | result = 1; | |
38 | } | |
39 | ||
40 | return result; | |
41 | } | |
42 | ||
36fe25fd | 43 | #include <support/test-driver.c> |