1 #include <dlfcn.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 5 extern int bar (void); 6 extern int baz (void); 7 extern int foo (void); 8 extern void __attribute__ ((__constructor__)) init (void); 9 10 void *h; 11 12 int foo(void)13foo (void) 14 { 15 return 42 + bar (); 16 } 17 18 int baz(void)19baz (void) 20 { 21 return -21; 22 } 23 24 25 void 26 __attribute__ ((__constructor__)) init(void)27init (void) 28 { 29 h = dlopen ("constload3.so", RTLD_GLOBAL | RTLD_LAZY); 30 if (h == NULL) 31 { 32 puts ("failed to load constload3"); 33 exit (1); 34 } 35 else 36 puts ("succeeded loading constload3"); 37 } 38 39 static void 40 __attribute__ ((__destructor__)) fini(void)41fini (void) 42 { 43 if (dlclose (h) != 0) 44 { 45 puts ("failed to unload constload3"); 46 exit (1); 47 } 48 else 49 puts ("succeeded unloading constload3"); 50 } 51