|  | #include <dlfcn.h> | 
|  | #include <stdio.h> | 
|  | #include <stdlib.h> | 
|  |  | 
|  | extern int bar (void); | 
|  | extern int baz (void); | 
|  | extern int foo (void); | 
|  | extern void __attribute__ ((__constructor__)) init (void); | 
|  |  | 
|  | void *h; | 
|  |  | 
|  | int | 
|  | foo (void) | 
|  | { | 
|  | return 42 + bar (); | 
|  | } | 
|  |  | 
|  | int | 
|  | baz (void) | 
|  | { | 
|  | return -21; | 
|  | } | 
|  |  | 
|  |  | 
|  | void | 
|  | __attribute__ ((__constructor__)) | 
|  | init (void) | 
|  | { | 
|  | h = dlopen ("constload3.so", RTLD_GLOBAL | RTLD_LAZY); | 
|  | if (h == NULL) | 
|  | { | 
|  | puts ("failed to load constload3"); | 
|  | exit (1); | 
|  | } | 
|  | else | 
|  | puts ("succeeded loading constload3"); | 
|  | } | 
|  |  | 
|  | static void | 
|  | __attribute__ ((__destructor__)) | 
|  | fini (void) | 
|  | { | 
|  | if (dlclose (h) != 0) | 
|  | { | 
|  | puts ("failed to unload constload3"); | 
|  | exit (1); | 
|  | } | 
|  | else | 
|  | puts ("succeeded unloading constload3"); | 
|  | } |