{{readelf -Ssrl tlspic.rd} {objdump -drj.text tlspic.dd}
{objdump -sj.got tlspic.sd} {objdump -sj.tdata tlspic.td}}
"libtlspic.so"}
+ {"TLS -fpic -shared transitions without PLT"
+ "-shared -melf_i386 --no-ld-generated-unwind-info" ""
+ "-mrelax-relocations=yes --32"
+ {tlspic3.s tlspic2.s}
+ {{readelf -Ssrl tlspic2.rd} {objdump -drj.text tlspic2.dd}
+ {objdump -sj.got tlspic2.sd} {objdump -sj.tdata tlspic2.td}}
+ "libtlspic2.so"}
{"TLS descriptor -fpic -shared transitions"
"-shared -melf_i386 --no-ld-generated-unwind-info" ""
"--32" {tlsdesc.s tlspic2.s}
{{readelf -Ssrl tlsbin.rd} {objdump -drj.text tlsbin.dd}
{objdump -sj.got tlsbin.sd} {objdump -sj.tdata tlsbin.td}}
"tlsbin"}
+ {"TLS -fpic and -fno-pic exec transitions without PLT"
+ "-melf_i386 tmpdir/libtlslib.so --no-ld-generated-unwind-info" ""
+ "-mrelax-relocations=yes --32"
+ {tlsbinpic2.s tlsbin.s}
+ {{readelf -Ssrl tlsbin2.rd} {objdump -drj.text tlsbin2.dd}
+ {objdump -sj.got tlsbin2.sd} {objdump -sj.tdata tlsbin2.td}}
+ "tlsbin2"}
{"TLS descriptor -fpic and -fno-pic exec transitions"
"-melf_i386 tmpdir/libtlslib.so --no-ld-generated-unwind-info" ""
"--32" {tlsbindesc.s tlsbin.s}
{"TLS GD->LE transition" "-melf_i386" ""
"--32" {tlsgd1.s}
{{objdump -dwr tlsgd1.dd}} "tlsgd1"}
+ {"TLS GD->LE transition without PLT" "-melf_i386" ""
+ "-mrelax-relocations=yes --32"
+ {tlsgd3.s}
+ {{objdump -dwr tlsgd3.dd}} "tlsgd3"}
{"TLS LD->LE transition" "-melf_i386" ""
"--32" {tlsld1.s}
{{objdump -dwr tlsld1.dd}} "tlsld1"}
+ {"TLS LD->LE transition without PLT" "-melf_i386" ""
+ "-mrelax-relocations=yes --32"
+ {tlsld2.s}
+ {{objdump -dwr tlsld2.dd}} "tlsld2"}
{"TLS IE->LE transition" "-melf_i386" ""
"--32" {tlsie1.s}
{{objdump -dwr tlsie1.dd}} "tlsie1"}
run_dump_test "alloc"
run_dump_test "warn1"
run_dump_test "tlsgd2"
+run_dump_test "tlsgd4"
run_dump_test "tlsie2"
run_dump_test "tlsie3"
run_dump_test "tlsie4"
run_dump_test "protected6b"
run_dump_test "tlspie1"
run_dump_test "tlspie2"
+run_dump_test "tlspie3a"
+run_dump_test "tlspie3b"
+run_dump_test "tlspie3c"
run_dump_test "nogot1"
run_dump_test "nogot2"
run_dump_test "discarded1"
run_dump_test "pr19636-2d"
run_dump_test "pr19636-2d-nacl"
run_dump_test "pr19636-2e"
+run_dump_test "pr19636-2e-nacl"
run_dump_test "pr19636-3a"
run_dump_test "pr19636-3b"
run_dump_test "pr19636-3c"
run_dump_test "undefweakb"
run_dump_test "pr19539"
run_dump_test "pr20117"
+run_dump_test "pr20244-1a"
+run_dump_test "pr20244-1b"
+run_dump_test "pr20244-1c"
+run_dump_test "pr20244-2a"
+run_dump_test "pr20244-2b"
+run_dump_test "pr20244-2c"
+run_dump_test "pr20244-2d"
+run_dump_test "pr20253-3"
+run_dump_test "pr20253-4a"
+run_dump_test "pr20253-4b"
+run_dump_test "pr20253-4c"
+run_dump_test "pr20253-5"
if { !([istarget "i?86-*-linux*"]
|| [istarget "i?86-*-gnu*"]
undefined_weak "-fPIE" "-pie -z nodynamic-undefined-weak"
}
+# Must be native with the C compiler and working IFUNC support,
+if { [isnative]
+ && [check_ifunc_available]
+ && [istarget "i?86-*-*"]
+ && [which $CC] != 0 } {
+ run_cc_link_tests [list \
+ [list \
+ "Build ifunc-1a.o ifunc-1b.o ifunc-1c.o ifunc-1d.o" \
+ "" \
+ "-fPIC -O2 -g" \
+ { ifunc-1a.c ifunc-1b.S ifunc-1c.S ifunc-1d.S } \
+ ] \
+ ]
+
+ run_ld_link_exec_tests [] [list \
+ [list \
+ "Run ifunc-1a" \
+ "tmpdir/ifunc-1a.o tmpdir/ifunc-1b.o \
+ tmpdir/ifunc-1c.o tmpdir/ifunc-1d.o" \
+ "" \
+ { dummy.c } \
+ "ifunc-1a" \
+ "pass.out" \
+ ] \
+ [list \
+ "Run ifunc-1b" \
+ "--static tmpdir/ifunc-1a.o tmpdir/ifunc-1b.o \
+ tmpdir/ifunc-1c.o tmpdir/ifunc-1d.o" \
+ "" \
+ { dummy.c } \
+ "ifunc-1b" \
+ "pass.out" \
+ ] \
+ ]
+}
+
if { !([istarget "i?86-*-linux*"]
|| [istarget "x86_64-*-linux*"]) } {
return