Upload Tizen:Base source
[external/binutils.git] / ld / testsuite / ld-auto-import / client.c
1 #include <stdio.h>\r
2 \r
3 extern int var;\r
4 extern void (*func_ptr)(void);\r
5 extern void print_var (void);\r
6 extern void print_foo (void);\r
7 extern int foo;\r
8 extern int var2[2];\r
9 \r
10 typedef struct\r
11 {\r
12   int *   var;\r
13   void (* func_ptr)(void);\r
14   int *   var_with_offset;\r
15 }\r
16 TEST;\r
17 \r
18 TEST xyz = { & var, print_var, & var };\r
19 \r
20 const TEST const_xyz = { & var, print_var, & var };\r
21 \r
22 int\r
23 main (void)\r
24 {\r
25   print_var ();\r
26 \r
27   printf ("We see var = %d\n", var);\r
28   printf ("Setting var = 456\n");\r
29 \r
30   var = 456;\r
31 \r
32   print_var ();\r
33   printf ("We see var = %d\n\n", var);\r
34 \r
35   var = 90;\r
36   print_var ();\r
37   printf ("We see var = %d\n\n", var);\r
38 \r
39   print_foo ();\r
40   printf ("We see foo = %d\n", foo);\r
41   printf ("Setting foo = 19\n");\r
42   foo = 19;\r
43   print_foo ();\r
44   printf ("We see foo = %d\n\n", foo);\r
45   fflush (stdout);\r
46 \r
47   printf ("Calling dllimported function pointer\n");\r
48   func_ptr ();\r
49 \r
50   printf ("Calling functions using global structure\n"); \r
51   xyz.func_ptr ();\r
52   * xyz.var = 40;\r
53   xyz.func_ptr ();\r
54 \r
55   printf ("We see var2[0] = %d\n\n", var2[0]);\r
56 \r
57   printf ("We see const xyz %x %x\n", const_xyz.var, const_xyz.var_with_offset);\r
58 \r
59   return 0;\r
60 }\r