]> oss.titaniummirror.com Git - msp430-binutils.git/blobdiff - ld/testsuite/ld-ifunc/prog.c
Merge commit 'upstream/2.20'
[msp430-binutils.git] / ld / testsuite / ld-ifunc / prog.c
diff --git a/ld/testsuite/ld-ifunc/prog.c b/ld/testsuite/ld-ifunc/prog.c
new file mode 100644 (file)
index 0000000..da786a5
--- /dev/null
@@ -0,0 +1,46 @@
+extern int printf (const char *, ...);
+
+extern int library_func1 (void);
+extern int library_func2 (void);
+extern int global;
+
+int
+main (void)
+{
+  int res = -1;
+
+  res += library_func1 ();
+  res += library_func2 ();
+
+  switch (res)
+    {
+    case 0:
+      if (global)
+       printf ("ifunc working correctly\n");
+      else
+       {
+         printf ("wrong value returned by library_func2\n");
+         res = -1;
+       }
+      break;
+
+    case 1:
+      if (global)
+       printf ("wrong value returned by library_func2\n");
+      else
+       {
+         printf ("ifunc working correctly\n");
+         res = 0;
+       }
+      break;
+
+    case 4:
+      printf ("non-ifunc testcase\n");
+      break;
+
+    default:
+      printf ("ifunc function not evaluated at run-time, res = %x\n", res);
+      break;
+    }
+  return res;
+}