(root)/
binutils-2.41/
ld/
testsuite/
ld-ifunc/
prog.c
       1  extern int printf (const char *, ...);
       2  
       3  extern int library_func1 (void);
       4  extern int library_func2 (void);
       5  extern int global;
       6  
       7  int
       8  main (void)
       9  {
      10    int res = -1;
      11  
      12    res += library_func1 ();
      13    res += library_func2 ();
      14  
      15    switch (res)
      16      {
      17      case 0:
      18        if (global)
      19  	printf ("ifunc working correctly\n");
      20        else
      21  	{
      22  	  printf ("wrong value returned by library_func2\n");
      23  	  res = -1;
      24  	}
      25        break;
      26  
      27      case 1:
      28        if (global)
      29  	printf ("wrong value returned by library_func2\n");
      30        else
      31  	{
      32  	  printf ("ifunc working correctly\n");
      33  	  res = 0;
      34  	}
      35        break;
      36  
      37      case 4:
      38        printf ("non-ifunc testcase\n");
      39        break;
      40  
      41      default:
      42        printf ("ifunc function not evaluated at run-time, res = %x\n", res);
      43        break;
      44      }
      45    return res;
      46  }