(root)/
glibc-2.38/
dlfcn/
defaultmod2.c
       1  #include <dlfcn.h>
       2  #include <stdio.h>
       3  
       4  extern int found_in_mod1 (void);
       5  int
       6  found_in_mod1 (void)
       7  {
       8    return 1;
       9  }
      10  
      11  extern int found_in_mod2 (void);
      12  int
      13  found_in_mod2 (void)
      14  {
      15    return 2;
      16  }
      17  
      18  
      19  extern int test_in_mod2 (int (*mainp)(int, char **));
      20  int
      21  test_in_mod2 (int (*mainp)(int, char **))
      22  {
      23    int (*ifp) (void);
      24    void *p;
      25    int result = 0;
      26  
      27    /* Find function `main'.  */
      28    p = dlsym (RTLD_DEFAULT, "main");
      29    if (p == NULL)
      30      {
      31        printf ("%s: main not found\n", __FILE__);
      32        result = 1;
      33      }
      34    else if ((int (*)(int, char **))p != mainp)
      35      {
      36        printf ("%s: wrong address returned for main\n", __FILE__);
      37        result = 1;
      38      }
      39    else
      40      printf ("%s: main correctly found\n", __FILE__);
      41  
      42    ifp = dlsym (RTLD_DEFAULT, "found_in_mod1");
      43    if ((void *) ifp == NULL)
      44      {
      45        printf ("%s: found_in_mod1 not found\n", __FILE__);
      46        result = 1;
      47      }
      48    else if (ifp () != 1)
      49      {
      50        printf ("%s: wrong address returned for found_in_mod1\n", __FILE__);
      51        result = 1;
      52      }
      53    else
      54      printf ("%s: found_in_mod1 correctly found\n", __FILE__);
      55  
      56    ifp = dlsym (RTLD_DEFAULT, "found_in_mod2");
      57    if ((void *) ifp == NULL)
      58      {
      59        printf ("%s: found_in_mod2 not found\n", __FILE__);
      60        result = 1;
      61      }
      62    else if (ifp () != 2)
      63      {
      64        printf ("%s: wrong address returned for found_in_mod2\n", __FILE__);
      65        result = 1;
      66      }
      67    else
      68      printf ("%s: found_in_mod2 correctly found\n", __FILE__);
      69  
      70    return result;
      71  }