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