|  | #include <dlfcn.h> | 
|  | #include <stdio.h> | 
|  | #include <stdlib.h> | 
|  |  | 
|  | extern int bar (void); | 
|  | extern int foo (void); | 
|  |  | 
|  | int | 
|  | foo (void) | 
|  | { | 
|  | void *h; | 
|  | int res; | 
|  |  | 
|  | /* Load ltglobalmod1 in the global namespace.  */ | 
|  | h = dlopen ("ltglobmod1.so", RTLD_GLOBAL | RTLD_LAZY); | 
|  | if (h == NULL) | 
|  | { | 
|  | printf ("%s: cannot open %s: %s", | 
|  | __FUNCTION__, "ltglobmod1.so", dlerror ()); | 
|  | exit (EXIT_FAILURE); | 
|  | } | 
|  |  | 
|  | /* Call bar.  This is undefined in the DSO.  */ | 
|  | puts ("about to call `bar'"); | 
|  | fflush (stdout); | 
|  | res = bar (); | 
|  |  | 
|  | printf ("bar returned %d\n", res); | 
|  |  | 
|  | dlclose (h); | 
|  |  | 
|  | return res != 42; | 
|  | } |