Back to index

glibc  2.9
constload2.c
Go to the documentation of this file.
00001 #include <dlfcn.h>
00002 #include <stdio.h>
00003 #include <stdlib.h>
00004 
00005 extern int bar (void);
00006 extern int baz (void);
00007 extern int foo (void);
00008 extern void __attribute__ ((__constructor__)) init (void);
00009 
00010 void *h;
00011 
00012 int
00013 foo (void)
00014 {
00015   return 42 + bar ();
00016 }
00017 
00018 int
00019 baz (void)
00020 {
00021   return -21;
00022 }
00023 
00024 
00025 void
00026 __attribute__ ((__constructor__))
00027 init (void)
00028 {
00029   h = dlopen ("constload3.so", RTLD_GLOBAL | RTLD_LAZY);
00030   if (h == NULL)
00031     {
00032       puts ("failed to load constload3");
00033       exit (1);
00034     }
00035   else
00036     puts ("succeeded loading constload3");
00037 }
00038 
00039 static void
00040 __attribute__ ((__destructor__))
00041 fini (void)
00042 {
00043   if (dlclose (h) != 0)
00044     {
00045       puts ("failed to unload constload3");
00046       exit (1);
00047     }
00048   else
00049     puts ("succeeded unloading constload3");
00050 }