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

glibc/2.7/elf/dblload.c

    1: #include <dlfcn.h>
    2: #include <mcheck.h>
    3: #include <stdio.h>
    4: #include <stdlib.h>
    5: 
    6: 
    7: int
    8: main (void)
    9: {
   10:   void *p1;
   11:   void *p2;
   12:   int (*fp) (void);
   13:   int result;
   14: 
   15:   mtrace ();
   16: 
   17:   p1 = dlopen ("dblloadmod1.so", RTLD_LAZY);
   18:   if (p1 == NULL)
   19:     {
   20:       printf ("cannot open dblloadmod1.so: %s\n", dlerror ());
   21:       exit (EXIT_FAILURE);
   22:     }
   23: 
   24:   p2 = dlopen ("dblloadmod2.so", RTLD_LAZY);
   25:   if (p1 == NULL)
   26:     {
   27:       printf ("cannot open dblloadmod2.so: %s\n", dlerror ());
   28:       exit (EXIT_FAILURE);
   29:     }
   30: 
   31:   fp = dlsym (p1, "foo");
   32:   if (fp == NULL)
   33:     {
   34:       printf ("cannot get function \"foo\": %s\n", dlerror ());
   35:       exit (EXIT_FAILURE);
   36:     }
   37: 
   38:   result = fp ();
   39: 
   40:   if (dlclose (p1) != 0)
   41:     {
   42:       printf ("error while closing dblloadmod1.so: %s\n", dlerror ());
   43:       exit (EXIT_FAILURE);
   44:     }
   45: 
   46:   if (dlclose (p2) != 0)
   47:     {
   48:       printf ("error while closing dblloadmod2.so: %s\n", dlerror ());
   49:       exit (EXIT_FAILURE);
   50:     }
   51: 
   52:   return result;
   53: }
Syntax (Markdown)