aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2017-06-22 15:13:15 -0700
committerH.J. Lu <hjl.tools@gmail.com>2017-06-22 15:13:15 -0700
commit0056441823b1b1b2488dcf069b4feb55b00137ba (patch)
treedc3a5ce9db6014901c87832874cedb87f6649c99 /ld
parent5d8763a38211dd79459485ba0be4f76849ef8200 (diff)
i386: Add hidden weak undefined tests
* testsuite/ld-i386/i386.exp: Run weakundef1 tests. * testsuite/ld-i386/weakundef1.c: New file.
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog5
-rw-r--r--ld/testsuite/ld-i386/i386.exp26
-rw-r--r--ld/testsuite/ld-i386/weakundef1.c16
3 files changed, 47 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 2dfc0a4948..1f752e77cd 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,5 +1,10 @@
2017-06-22 H.J. Lu <hongjiu.lu@intel.com>
+ * testsuite/ld-i386/i386.exp: Run weakundef1 tests.
+ * testsuite/ld-i386/weakundef1.c: New file.
+
+2017-06-22 H.J. Lu <hongjiu.lu@intel.com>
+
PR ld/21090
* testsuite/ld-elfvsb/elfvsb.exp (visibility_run): Pass
$NOPIE_CFLAGS if non-PIE is required.
diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
index ac4fe33d33..6c53046193 100644
--- a/ld/testsuite/ld-i386/i386.exp
+++ b/ld/testsuite/ld-i386/i386.exp
@@ -1235,6 +1235,32 @@ if { [isnative]
}
}
+# Must be native with the C compiler.
+if { [isnative]
+ && [istarget "i?86-*-*"]
+ && [which $CC] != 0 } {
+ run_ld_link_exec_tests [list \
+ [list \
+ "Run weakundef1 without PIE" \
+ "$NOPIE_LDFLAGS" \
+ "" \
+ { weakundef1.c } \
+ "weakundef1pie" \
+ "pass.out" \
+ "$NOPIE_CFLAGS" \
+ ] \
+ [list \
+ "Run weakundef1 with PIE" \
+ "-pie" \
+ "" \
+ { weakundef1.c } \
+ "weakundef1pie" \
+ "pass.out" \
+ "-fPIE" \
+ ] \
+ ]
+}
+
if { !([istarget "i?86-*-linux*"]
|| [istarget "x86_64-*-linux*"]) } {
return
diff --git a/ld/testsuite/ld-i386/weakundef1.c b/ld/testsuite/ld-i386/weakundef1.c
new file mode 100644
index 0000000000..ca54a5e11c
--- /dev/null
+++ b/ld/testsuite/ld-i386/weakundef1.c
@@ -0,0 +1,16 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+extern int visibility_var_weak
+ __attribute__ ((weak, visibility ("hidden")));
+
+int
+main ()
+{
+ if (&visibility_var_weak != NULL)
+ abort ();
+
+ printf ("PASS\n");
+
+ return 0;
+}