summaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-auto-import/client.c
diff options
context:
space:
mode:
Diffstat (limited to 'ld/testsuite/ld-auto-import/client.c')
-rw-r--r--ld/testsuite/ld-auto-import/client.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/ld/testsuite/ld-auto-import/client.c b/ld/testsuite/ld-auto-import/client.c
new file mode 100644
index 0000000..b883fdb
--- /dev/null
+++ b/ld/testsuite/ld-auto-import/client.c
@@ -0,0 +1,60 @@
+#include <stdio.h>
+
+extern int var;
+extern void (*func_ptr)(void);
+extern void print_var (void);
+extern void print_foo (void);
+extern int foo;
+extern int var2[2];
+
+typedef struct
+{
+ int * var;
+ void (* func_ptr)(void);
+ int * var_with_offset;
+}
+TEST;
+
+TEST xyz = { & var, print_var, & var };
+
+const TEST const_xyz = { & var, print_var, & var };
+
+int
+main (void)
+{
+ print_var ();
+
+ printf ("We see var = %d\n", var);
+ printf ("Setting var = 456\n");
+
+ var = 456;
+
+ print_var ();
+ printf ("We see var = %d\n\n", var);
+
+ var = 90;
+ print_var ();
+ printf ("We see var = %d\n\n", var);
+
+ print_foo ();
+ printf ("We see foo = %d\n", foo);
+ printf ("Setting foo = 19\n");
+ foo = 19;
+ print_foo ();
+ printf ("We see foo = %d\n\n", foo);
+ fflush (stdout);
+
+ printf ("Calling dllimported function pointer\n");
+ func_ptr ();
+
+ printf ("Calling functions using global structure\n");
+ xyz.func_ptr ();
+ * xyz.var = 40;
+ xyz.func_ptr ();
+
+ printf ("We see var2[0] = %d\n\n", var2[0]);
+
+ printf ("We see const xyz %x %x\n", const_xyz.var, const_xyz.var_with_offset);
+
+ return 0;
+}