2000-05-21 H.J. Lu (hjl@gnu.org)
[external/binutils.git] / ld / testsuite / ld-elfvsb / main.c
1 /* This is the main program for the shared library test.  */
2
3 #include <stdio.h>
4
5 int mainvar = 1;
6 int overriddenvar = 2;
7 extern int shlibvar1;
8
9 extern int shlib_mainvar ();
10 extern int shlib_overriddenvar ();
11 extern int shlib_shlibvar1 ();
12 extern int shlib_shlibvar2 ();
13 extern int shlib_shlibcall ();
14 extern int shlib_maincall ();
15 extern int shlib_checkfunptr1 ();
16 extern int shlib_checkfunptr2 ();
17 extern int (*shlib_getfunptr1 ()) ();
18 extern int (*shlib_getfunptr2 ()) ();
19 extern int shlib_check ();
20 extern int shlib_shlibcall2 ();
21 extern int visibility ();
22 extern int visibility_check ();
23 extern int visibility_checkfunptr ();
24 extern void *visibility_funptr ();
25
26 #if !defined (HIDDEN_TEST) && defined (PROTECTED_TEST)
27 int
28 visibility ()
29 {
30   return 1;
31 }
32
33 static int
34 main_visibility_check ()
35 {
36   return visibility_funptr () != visibility;
37 }
38 #else
39 static int
40 main_visibility_check ()
41 {
42   return visibility_funptr () == visibility;
43 }
44 #endif
45
46 /* This function is called by the shared library.  */
47
48 int
49 main_called ()
50 {
51   return 6;
52 }
53
54 /* This function overrides a function in the shared library.  */
55
56 int
57 shlib_overriddencall2 ()
58 {
59   return 8;
60 }
61
62 int
63 main ()
64 {
65   int (*p) ();
66
67   printf ("mainvar == %d\n", mainvar);
68   printf ("overriddenvar == %d\n", overriddenvar);
69   printf ("shlibvar1 == %d\n", shlibvar1);
70 #ifndef XCOFF_TEST
71   printf ("shlib_mainvar () == %d\n", shlib_mainvar ());
72   printf ("shlib_overriddenvar () == %d\n", shlib_overriddenvar ());
73 #endif
74   printf ("shlib_shlibvar1 () == %d\n", shlib_shlibvar1 ());
75   printf ("shlib_shlibvar2 () == %d\n", shlib_shlibvar2 ());
76   printf ("shlib_shlibcall () == %d\n", shlib_shlibcall ());
77 #ifndef XCOFF_TEST
78   printf ("shlib_shlibcall2 () == %d\n", shlib_shlibcall2 ());
79   printf ("shlib_maincall () == %d\n", shlib_maincall ());
80 #endif
81   printf ("main_called () == %d\n", main_called ());
82   printf ("shlib_checkfunptr1 (shlib_shlibvar1) == %d\n",
83           shlib_checkfunptr1 (shlib_shlibvar1));
84 #ifndef XCOFF_TEST
85   printf ("shlib_checkfunptr2 (main_called) == %d\n",
86           shlib_checkfunptr2 (main_called));
87 #endif
88   p = shlib_getfunptr1 ();
89   printf ("shlib_getfunptr1 () ");
90   if (p == shlib_shlibvar1)
91     printf ("==");
92   else
93     printf ("!=");
94   printf (" shlib_shlibvar1\n");
95 #ifndef XCOFF_TEST
96   p = shlib_getfunptr2 ();
97   printf ("shlib_getfunptr2 () ");
98   if (p == main_called)
99     printf ("==");
100   else
101     printf ("!=");
102   printf (" main_called\n");
103 #endif
104   printf ("shlib_check () == %d\n", shlib_check ());
105   printf ("visibility_check () == %d\n", visibility_check ());
106   printf ("visibility_checkfunptr () == %d\n",
107           visibility_checkfunptr ());
108   printf ("main_visibility_check () == %d\n", main_visibility_check ());
109   return 0;
110 }