Test module for RTLD_DEFAULT tests.
[kopensolaris-gnu/glibc.git] / dlfcn / defaultmod2.c
1 #include <dlfcn.h>
2 #include <stdio.h>
3
4 int
5 found_in_mod1 (void)
6 {
7   return 1;
8 }
9
10 int
11 found_in_mod2 (void)
12 {
13   return 2;
14 }
15
16
17 int
18 test_in_mod2 (void *mainp)
19 {
20   int (*ifp) (void);
21   void *p;
22   int result = 0;
23
24   /* Find function `main'.  */
25   p = dlsym (RTLD_DEFAULT, "main");
26   if (p == NULL)
27     {
28       printf ("%s: main not found\n", __FILE__);
29       result = 1;
30     }
31   else if (p != mainp)
32     {
33       printf ("%s: wrong address returned for main\n", __FILE__);
34       result = 1;
35     }
36   else
37     printf ("%s: main correctly found\n", __FILE__);
38
39   ifp = dlsym (RTLD_DEFAULT, "found_in_mod1");
40   if ((void *) ifp == NULL)
41     {
42       printf ("%s: found_in_mod1 not found\n", __FILE__);
43       result = 1;
44     }
45   else if (ifp () != 1)
46     {
47       printf ("%s: wrong address returned for found_in_mod1\n", __FILE__);
48       result = 1;
49     }
50   else
51     printf ("%s: found_in_mod1 correctly found\n", __FILE__);
52
53   ifp = dlsym (RTLD_DEFAULT, "found_in_mod2");
54   if ((void *) ifp == NULL)
55     {
56       printf ("%s: found_in_mod2 not found\n", __FILE__);
57       result = 1;
58     }
59   else if (ifp () != 2)
60     {
61       printf ("%s: wrong address returned for found_in_mod2\n", __FILE__);
62       result = 1;
63     }
64   else
65     printf ("%s: found_in_mod2 correctly found\n", __FILE__);
66
67   return result;
68 }