public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] PR ld/21402: Skip PIE indirect5 and indirect6 tests on i386
@ 2017-04-20 19:41 H.J. Lu
  2017-04-21  1:09 ` Alan Modra
  0 siblings, 1 reply; 6+ messages in thread
From: H.J. Lu @ 2017-04-20 19:41 UTC (permalink / raw)
  To: binutils

On i386, since GOT reference is needed to access global symbols in PIE,
those symbols are made dynamic.  Crash happens when there is a reference
to the same global symbol with a different symbol type in a shared
object.  Since mixing different types of the same symbol doesn't work in
general, this patch skips those tests on i386 as well as compiles non-PIE
indirect5 and indirect6 tests with $NOPIE_LDFLAGS and $NOPIE_CFLAGS.

I am checking in this patch.

H.J.
---
	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.
---
 ld/ChangeLog                     |  7 +++++++
 ld/testsuite/ld-elf/indirect.exp | 23 +++++++++++++++--------
 2 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/ld/ChangeLog b/ld/ChangeLog
index 7f5e389..fb88dc7 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,10 @@
+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.
diff --git a/ld/testsuite/ld-elf/indirect.exp b/ld/testsuite/ld-elf/indirect.exp
index 128d4a7..2fa374b 100644
--- a/ld/testsuite/ld-elf/indirect.exp
+++ b/ld/testsuite/ld-elf/indirect.exp
@@ -129,6 +129,8 @@ set testname "Indirect symbol 2"
 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" ""
@@ -155,17 +157,17 @@ set run_tests {
      "-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"}
@@ -220,6 +222,11 @@ foreach t [list indirect5a indirect5b indirect6a indirect6b] {
     }
 }
 
+# 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"
-- 
2.9.3

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-04-24 21:43 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-20 19:41 [PATCH] PR ld/21402: Skip PIE indirect5 and indirect6 tests on i386 H.J. Lu
2017-04-21  1:09 ` Alan Modra
2017-04-21 18:37   ` H.J. Lu
2017-04-24  4:10     ` Alan Modra
2017-04-24 20:51       ` H.J. Lu
2017-04-24 21:43       ` H.J. Lu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).