(linenum→info "unix/slp.c:2238")

glibc/2.7/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: }
Syntax (Markdown)