* Makefile.tpl: Clean $(BUILD_SUBDIR).
[deliverable/binutils-gdb.git] / ld / testsuite / ld-elfvsb / main.c
CommitLineData
08c44e65
L
1#ifdef PROTECTED_CHECK
2#include <features.h>
1566ad5d 3#include <stdio.h>
08c44e65
L
4
5int
1566ad5d 6main (void)
08c44e65
L
7{
8#if defined (__GLIBC__) && (__GLIBC__ > 2 \
9 || (__GLIBC__ == 2 \
10 && __GLIBC_MINOR__ >= 2))
11 puts ("yes");
12#else
13 puts ("no");
14#endif
15 return 0;
16}
17#else
6fc49d28
L
18/* This is the main program for the shared library test. */
19
20#include <stdio.h>
21
22int mainvar = 1;
23int overriddenvar = 2;
24extern int shlibvar1;
25
26extern int shlib_mainvar ();
27extern int shlib_overriddenvar ();
28extern int shlib_shlibvar1 ();
29extern int shlib_shlibvar2 ();
30extern int shlib_shlibcall ();
31extern int shlib_maincall ();
32extern int shlib_checkfunptr1 ();
33extern int shlib_checkfunptr2 ();
34extern int (*shlib_getfunptr1 ()) ();
35extern int (*shlib_getfunptr2 ()) ();
36extern int shlib_check ();
37extern int shlib_shlibcall2 ();
6fc49d28
L
38extern int visibility_check ();
39extern int visibility_checkfunptr ();
40extern void *visibility_funptr ();
7cda33a1
L
41extern int visibility_checkvar ();
42extern int visibility_checkvarptr ();
43extern int visibility_varval ();
44extern void *visibility_varptr ();
45
46#ifdef HIDDEN_WEAK_TEST
7cda33a1
L
47#define WEAK_TEST
48#endif
49
50#ifdef PROTECTED_WEAK_TEST
7cda33a1
L
51#define WEAK_TEST
52#endif
53
1345a0c0
L
54#ifdef PROTECTED_UNDEF_TEST
55#define PROTECTED_TEST
56#endif
57
7cda33a1
L
58#ifndef WEAK_TEST
59extern int visibility ();
60extern int visibility_var;
61#endif
6fc49d28
L
62
63#if !defined (HIDDEN_TEST) && defined (PROTECTED_TEST)
64int
65visibility ()
66{
67 return 1;
68}
6fc49d28 69
e80778cf
L
70static int
71main_visibility_check ()
72{
73 return visibility_funptr () != visibility;
74}
7cda33a1
L
75
76int visibility_var = 1;
77
78static int
79main_visibility_checkvar ()
80{
81 return visibility_varval () != visibility_var
82 && visibility_varptr () != &visibility_var;
83}
e80778cf 84#else
6fc49d28
L
85static int
86main_visibility_check ()
87{
7cda33a1
L
88#ifdef WEAK_TEST
89 return visibility_funptr () == NULL;
90#else
6fc49d28 91 return visibility_funptr () == visibility;
7cda33a1
L
92#endif
93}
94
95static int
96main_visibility_checkvar ()
97{
98#ifdef WEAK_TEST
99 return visibility_varval () == 0
100 && visibility_varptr () == NULL;
101#else
102 return visibility_varval () == visibility_var
103 && visibility_varptr () == &visibility_var;
104#endif
6fc49d28 105}
e80778cf 106#endif
6fc49d28
L
107
108/* This function is called by the shared library. */
109
110int
111main_called ()
112{
113 return 6;
114}
115
116/* This function overrides a function in the shared library. */
117
118int
119shlib_overriddencall2 ()
120{
121 return 8;
122}
123
124int
125main ()
126{
127 int (*p) ();
128
129 printf ("mainvar == %d\n", mainvar);
130 printf ("overriddenvar == %d\n", overriddenvar);
131 printf ("shlibvar1 == %d\n", shlibvar1);
132#ifndef XCOFF_TEST
133 printf ("shlib_mainvar () == %d\n", shlib_mainvar ());
134 printf ("shlib_overriddenvar () == %d\n", shlib_overriddenvar ());
135#endif
136 printf ("shlib_shlibvar1 () == %d\n", shlib_shlibvar1 ());
137 printf ("shlib_shlibvar2 () == %d\n", shlib_shlibvar2 ());
138 printf ("shlib_shlibcall () == %d\n", shlib_shlibcall ());
139#ifndef XCOFF_TEST
140 printf ("shlib_shlibcall2 () == %d\n", shlib_shlibcall2 ());
141 printf ("shlib_maincall () == %d\n", shlib_maincall ());
142#endif
143 printf ("main_called () == %d\n", main_called ());
144 printf ("shlib_checkfunptr1 (shlib_shlibvar1) == %d\n",
145 shlib_checkfunptr1 (shlib_shlibvar1));
146#ifndef XCOFF_TEST
147 printf ("shlib_checkfunptr2 (main_called) == %d\n",
148 shlib_checkfunptr2 (main_called));
149#endif
150 p = shlib_getfunptr1 ();
151 printf ("shlib_getfunptr1 () ");
152 if (p == shlib_shlibvar1)
153 printf ("==");
154 else
155 printf ("!=");
156 printf (" shlib_shlibvar1\n");
157#ifndef XCOFF_TEST
158 p = shlib_getfunptr2 ();
159 printf ("shlib_getfunptr2 () ");
160 if (p == main_called)
161 printf ("==");
162 else
163 printf ("!=");
164 printf (" main_called\n");
165#endif
166 printf ("shlib_check () == %d\n", shlib_check ());
167 printf ("visibility_check () == %d\n", visibility_check ());
168 printf ("visibility_checkfunptr () == %d\n",
169 visibility_checkfunptr ());
170 printf ("main_visibility_check () == %d\n", main_visibility_check ());
7cda33a1
L
171 printf ("visibility_checkvar () == %d\n", visibility_checkvar ());
172 printf ("visibility_checkvarptr () == %d\n",
173 visibility_checkvarptr ());
174 printf ("main_visibility_checkvar () == %d\n",
175 main_visibility_checkvar ());
6fc49d28
L
176 return 0;
177}
08c44e65 178#endif
This page took 0.143744 seconds and 4 git commands to generate.