summaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-elfvers/vers6.c
diff options
context:
space:
mode:
Diffstat (limited to 'ld/testsuite/ld-elfvers/vers6.c')
-rw-r--r--ld/testsuite/ld-elfvers/vers6.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/ld/testsuite/ld-elfvers/vers6.c b/ld/testsuite/ld-elfvers/vers6.c
new file mode 100644
index 0000000..cb1c93f
--- /dev/null
+++ b/ld/testsuite/ld-elfvers/vers6.c
@@ -0,0 +1,26 @@
+/*
+ * Testcase to make sure that if we externally reference a versioned symbol
+ * that we always get the right one.
+ */
+#include <stdio.h>
+#include "vers.h"
+
+extern int foo_1();
+extern int foo_2();
+extern int foo_3();
+extern int foo_4();
+
+int
+main()
+{
+ printf("Expect 4, get %d\n", foo_1());
+ printf("Expect 13, get %d\n", foo_2());
+ printf("Expect 103, get %d\n", foo_3());
+ printf("Expect 1003, get %d\n", foo_4());
+ return 0;
+}
+
+SYMVER(foo_1, show_foo@);
+SYMVER(foo_2, show_foo@VERS_1.1);
+SYMVER(foo_3, show_foo@VERS_1.2);
+SYMVER(foo_4, show_foo@VERS_2.0);