1  #include <dlfcn.h>
       2  #include <stdio.h>
       3  
       4  extern int foo1 (void);
       5  
       6  int main()
       7  {
       8    void *dl;
       9    void *sym;
      10    int (*func) (void);
      11  
      12    if (foo1 () != 0)
      13      return 1;
      14  
      15    dl = dlopen("pr21964-2b.so", RTLD_LAZY);
      16    if (!dl)
      17      return 2;
      18  
      19    sym = dlsym(dl, "__start___verbose");
      20    if (!sym)
      21      return 3;
      22  
      23    func = dlsym(dl, "foo2");
      24    if (!func)
      25      return 4;
      26    if (func () == 0)
      27      printf ("PASS\n");
      28  
      29    dlclose(dl);
      30  
      31    return 0;
      32  }