1*56bb7041Schristos /* This is the main program for the shared library test.  */
2*56bb7041Schristos 
3*56bb7041Schristos #include <stdio.h>
4*56bb7041Schristos 
5*56bb7041Schristos int mainvar = 1;
6*56bb7041Schristos int overriddenvar = 2;
7*56bb7041Schristos extern int shlibvar1;
8*56bb7041Schristos 
9*56bb7041Schristos extern int shlib_mainvar ();
10*56bb7041Schristos extern int shlib_overriddenvar ();
11*56bb7041Schristos extern int shlib_shlibvar1 ();
12*56bb7041Schristos extern int shlib_shlibvar2 ();
13*56bb7041Schristos extern int shlib_shlibcall ();
14*56bb7041Schristos extern int shlib_maincall ();
15*56bb7041Schristos extern int shlib_checkfunptr1 ();
16*56bb7041Schristos extern int shlib_checkfunptr2 ();
17*56bb7041Schristos extern int (*shlib_getfunptr1 ()) ();
18*56bb7041Schristos extern int (*shlib_getfunptr2 ()) ();
19*56bb7041Schristos extern int shlib_check ();
20*56bb7041Schristos extern int shlib_shlibcall2 ();
21*56bb7041Schristos 
22*56bb7041Schristos /* This function is called by the shared library.  */
23*56bb7041Schristos 
24*56bb7041Schristos int
main_called()25*56bb7041Schristos main_called ()
26*56bb7041Schristos {
27*56bb7041Schristos   return 6;
28*56bb7041Schristos }
29*56bb7041Schristos 
30*56bb7041Schristos /* This function overrides a function in the shared library.  */
31*56bb7041Schristos 
32*56bb7041Schristos int
shlib_overriddencall2()33*56bb7041Schristos shlib_overriddencall2 ()
34*56bb7041Schristos {
35*56bb7041Schristos   return 8;
36*56bb7041Schristos }
37*56bb7041Schristos 
38*56bb7041Schristos int
main()39*56bb7041Schristos main ()
40*56bb7041Schristos {
41*56bb7041Schristos   printf ("mainvar == %d\n", mainvar);
42*56bb7041Schristos   printf ("overriddenvar == %d\n", overriddenvar);
43*56bb7041Schristos   printf ("shlibvar1 == %d\n", shlibvar1);
44*56bb7041Schristos #ifndef XCOFF_TEST
45*56bb7041Schristos   printf ("shlib_mainvar () == %d\n", shlib_mainvar ());
46*56bb7041Schristos   printf ("shlib_overriddenvar () == %d\n", shlib_overriddenvar ());
47*56bb7041Schristos #endif
48*56bb7041Schristos   printf ("shlib_shlibvar1 () == %d\n", shlib_shlibvar1 ());
49*56bb7041Schristos   printf ("shlib_shlibvar2 () == %d\n", shlib_shlibvar2 ());
50*56bb7041Schristos   printf ("shlib_shlibcall () == %d\n", shlib_shlibcall ());
51*56bb7041Schristos #ifndef XCOFF_TEST
52*56bb7041Schristos   printf ("shlib_shlibcall2 () == %d\n", shlib_shlibcall2 ());
53*56bb7041Schristos   printf ("shlib_maincall () == %d\n", shlib_maincall ());
54*56bb7041Schristos #endif
55*56bb7041Schristos   printf ("main_called () == %d\n", main_called ());
56*56bb7041Schristos #ifndef SYMBOLIC_TEST
57*56bb7041Schristos   printf ("shlib_checkfunptr1 (shlib_shlibvar1) == %d\n",
58*56bb7041Schristos 	  shlib_checkfunptr1 (shlib_shlibvar1));
59*56bb7041Schristos #ifndef XCOFF_TEST
60*56bb7041Schristos   printf ("shlib_checkfunptr2 (main_called) == %d\n",
61*56bb7041Schristos 	  shlib_checkfunptr2 (main_called));
62*56bb7041Schristos #endif
63*56bb7041Schristos   {
64*56bb7041Schristos     int (*p) ();
65*56bb7041Schristos 
66*56bb7041Schristos     p = shlib_getfunptr1 ();
67*56bb7041Schristos     printf ("shlib_getfunptr1 () ");
68*56bb7041Schristos     if (p == shlib_shlibvar1)
69*56bb7041Schristos       printf ("==");
70*56bb7041Schristos     else
71*56bb7041Schristos       printf ("!=");
72*56bb7041Schristos     printf (" shlib_shlibvar1\n");
73*56bb7041Schristos   }
74*56bb7041Schristos #ifndef XCOFF_TEST
75*56bb7041Schristos   {
76*56bb7041Schristos     int (*p) ();
77*56bb7041Schristos 
78*56bb7041Schristos     p = shlib_getfunptr2 ();
79*56bb7041Schristos     printf ("shlib_getfunptr2 () ");
80*56bb7041Schristos     if (p == main_called)
81*56bb7041Schristos       printf ("==");
82*56bb7041Schristos     else
83*56bb7041Schristos       printf ("!=");
84*56bb7041Schristos     printf (" main_called\n");
85*56bb7041Schristos   }
86*56bb7041Schristos #endif
87*56bb7041Schristos #endif
88*56bb7041Schristos   printf ("shlib_check () == %d\n", shlib_check ());
89*56bb7041Schristos   return 0;
90*56bb7041Schristos }
91