+2017-04-20 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/21402
+ * testsuite/ld-elf/indirect.exp: Pass $NOPIE_LDFLAGS and
+ $NOPIE_CFLAGS to non-PIE indirect5 and indirect6 tests. Skip
+ PIE indirect5 and indirect6 tests on i386.
+
2017-04-20 Maciej W. Rozycki <macro@imgtec.com>
* testsuite/ld-mips-elf/mips-elf.exp: Join `__ehdr_start' tests.
set cmd "$ld -shared -o tmpdir/indirect2.so tmpdir/indirect2.o"
check_link_message "$cmd" [list $string2 $string] "$testname"
+global NOPIE_CFLAGS NOPIE_LDFLAGS
+
set run_tests {
{"Run with libindirect3c.so 1"
"-Wl,--no-as-needed tmpdir/indirect3a.o tmpdir/indirect3b.o tmpdir/libindirect3c.so" ""
"-Wl,--no-as-needed tmpdir/libindirect4c.so tmpdir/indirect4b.o tmpdir/indirect4a.o" ""
{dummy.c} "indirect4d" "indirect4.out"}
{"Run indirect5 1"
- "-Wl,--no-as-needed tmpdir/libindirect5.so" ""
- {indirect5a.c} "indirect5a" "indirect5.out"}
+ "$NOPIE_LDFLAGS -Wl,--no-as-needed tmpdir/libindirect5.so" ""
+ {indirect5a.c} "indirect5a" "indirect5.out" "$NOPIE_CFLAGS"}
{"Run indirect5 2"
- "-Wl,--no-as-needed tmpdir/indirect5a.o tmpdir/libindirect5.so" ""
- {dummy.c} "indirect5b" "indirect5.out"}
+ "$NOPIE_LDFLAGS -Wl,--no-as-needed tmpdir/indirect5a.o tmpdir/libindirect5.so" ""
+ {dummy.c} "indirect5b" "indirect5.out" "$NOPIE_CFLAGS"}
{"Run indirect6 1"
- "-Wl,--no-as-needed tmpdir/libindirect5.so" ""
- {indirect6a.c} "indirect6a" "indirect5.out"}
+ "$NOPIE_LDFLAGS -Wl,--no-as-needed tmpdir/libindirect5.so" ""
+ {indirect6a.c} "indirect6a" "indirect5.out" "$NOPIE_CFLAGS"}
{"Run indirect6 2"
- "-Wl,--no-as-needed tmpdir/indirect6a.o tmpdir/libindirect5.so" ""
- {dummy.c} "indirect6b" "indirect5.out"}
+ "$NOPIE_LDFLAGS -Wl,--no-as-needed tmpdir/indirect6a.o tmpdir/libindirect5.so" ""
+ {dummy.c} "indirect6b" "indirect5.out" "$NOPIE_CFLAGS"}
{"Run with libpr18720c.so 1"
"-Wl,--no-as-needed tmpdir/pr18720a.o tmpdir/pr18720b.o tmpdir/libpr18720c.so" ""
{check-ptr-eq.c} "pr18720a" "pr18720.out"}
}
}
+# PR ld/21402: i386 doesn't support mixing different symbol types in PIE.
+if {[istarget "i?86-*-*"]} {
+ return
+}
+
send_log "$CC -fPIE -pie $srcdir/$subdir/main.c -o tmpdir/pie"
catch "exec $CC -fPIE -pie $srcdir/$subdir/main.c -o tmpdir/pie" exec_output
send_log "$exec_output"