aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite/reloc7.c
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/reloc7.c')
-rw-r--r--testsuite/reloc7.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/testsuite/reloc7.c b/testsuite/reloc7.c
new file mode 100644
index 0000000..c1f6dc8
--- /dev/null
+++ b/testsuite/reloc7.c
@@ -0,0 +1,38 @@
+#include "reloc1.h"
+#include <stdlib.h>
+#include <stdio.h>
+
+int i;
+int j __attribute__((aligned (32)));
+int k[2048];
+int l = 26;
+int m[3] = { 28, 29, 30 };
+extern int baz[3];
+
+struct A n __attribute__((section("nsec"))) = { 1, &n, &m[2] };
+static struct A o __attribute__((section("osec"))) = { 2, &o, &baz[1] };
+
+void f5 (FILE *f)
+{
+ fprintf (stdout, "OK");
+}
+
+int main()
+{
+ struct A *x;
+ foo.c -= 2;
+ if (foo.a != 1 || foo.b != &foo || foo.c[0] != 28 || foo.c[1] != 29
+ || foo.c[2] != 30)
+ abort ();
+ if (f1 () != 11 || f2 () != 12)
+ abort ();
+ x = f3 ();
+ if (x->a != 2 || x->b != x || x->c != foo.c + 1)
+ abort ();
+ if (n.a != 1 || n.b != &n || n.c != m + 2)
+ abort ();
+ if (o.a != 2 || o.b != &o || o.c != baz + 1)
+ abort ();
+ f5 (stdout);
+ exit (0);
+}