Upload Tizen:Base source
[external/eglibc.git] / elf / constload2.c
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
13 foo (void)
14 {
15   return 42 + bar ();
16 }
17
18 int
19 baz (void)
20 {
21   return -21;
22 }
23
24
25 void
26 __attribute__ ((__constructor__))
27 init (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__))
41 fini (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 }