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