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