# Expect script for ld-i386 tests
-# Copyright (C) 2002-2015 Free Software Foundation, Inc.
+# Copyright (C) 2002-2016 Free Software Foundation, Inc.
#
# This file is part of the GNU Binutils.
#
run_dump_test "lea1f"
run_dump_test "mov1a"
run_dump_test "mov1b"
+run_dump_test "mov2a"
+run_dump_test "mov2b"
+run_dump_test "mov3"
+run_dump_test "branch1"
+run_dump_test "call1"
+run_dump_test "call2"
+run_dump_test "call3a"
+run_dump_test "call3b"
+run_dump_test "call3c"
+run_dump_test "call3d"
+run_dump_test "call3e"
+run_dump_test "call3f"
+run_dump_test "call3g"
+run_dump_test "call3h"
+run_dump_test "jmp1"
+run_dump_test "jmp2"
+run_dump_test "load1"
+run_dump_test "load1-nacl"
+run_dump_test "load2"
+run_dump_test "load3"
+run_dump_test "load4a"
+run_dump_test "load4b"
+run_dump_test "load5a"
+run_dump_test "load5b"
+run_dump_test "load6"
+run_dump_test "pr19175"
+run_dump_test "pr19615"
+run_dump_test "pr19636-1a"
+run_dump_test "pr19636-1b"
+run_dump_test "pr19636-1c"
+run_dump_test "pr19636-1d"
+run_dump_test "pr19636-1d-nacl"
+run_dump_test "pr19636-1e"
+run_dump_test "pr19636-1f"
+run_dump_test "pr19636-1g"
+run_dump_test "pr19636-1h"
+run_dump_test "pr19636-1i"
+run_dump_test "pr19636-2a"
+run_dump_test "pr19636-2b"
+run_dump_test "pr19636-2c"
+run_dump_test "pr19636-2c-nacl"
+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 "pr19636-3d"
+run_dump_test "pr19636-3e"
+run_dump_test "pr19636-3f"
+run_dump_test "pr19636-3g"
+run_dump_test "pr19636-4a"
+run_dump_test "pr19636-4b"
+run_dump_test "pr19636-4c"
+run_dump_test "pr19636-4d"
+run_dump_test "pr19645"
if { !([istarget "i?86-*-linux*"]
|| [istarget "i?86-*-gnu*"]
run_dump_test "pr18801"
run_dump_test "pr18815"
+proc undefined_weak {cflags ldflags} {
+ set testname "Undefined weak symbol"
+ if { ![ string match "" $cflags$ldflags] } {
+ set testname "$testname ($cflags $ldflags)"
+ }
+
+ if { [ regexp "\-fPIE" $cflags]
+ && ![ regexp "\-z nodynamic-undefined-weak" $ldflags] } {
+ set weak_symbol "Weak defined"
+ } else {
+ set weak_symbol "Weak undefined"
+ }
+
+ run_cc_link_tests [list \
+ [list \
+ "Build libpr19704a.so" \
+ "-shared -Wl,-soname,libpr19704.so" \
+ "" \
+ { dummy.s } \
+ {} \
+ "libpr19704a.so" \
+ ] \
+ [list \
+ "Build libpr19704b.so" \
+ "-shared -Wl,-soname,libpr19704.so" \
+ "-fPIC" \
+ { pr19704b.c } \
+ {} \
+ "libpr19704b.so" \
+ ] \
+ ]
+
+ exec cp tmpdir/libpr19704a.so tmpdir/libpr19704.so
+
+ run_ld_link_exec_tests [] [list \
+ [list \
+ "Run pr19704" \
+ "$ldflags tmpdir/libpr19704.so -R tmpdir" \
+ "" \
+ { pr19704a.c } \
+ "pr19704" \
+ "pr19704.out" \
+ "$cflags" \
+ ] \
+ ]
+
+ exec cp tmpdir/libpr19704b.so tmpdir/libpr19704.so
+
+ set exec_output [run_host_cmd tmpdir/pr19704 ""]
+ if {![string match $weak_symbol $exec_output]} {
+ fail $testname
+ } else {
+ pass $testname
+ }
+}
+
# Add $PLT_CFLAGS if PLT is expected.
global PLT_CFLAGS
[list \
"Build libplt-main1.a" \
"" \
- "-fPIC" \
+ "-fPIC -Wa,-mrelax-relocations=yes" \
{ plt-main1.c } \
{{readelf {-Wr} plt-main1.rd}} \
"libplt-main1.a" \
[list \
"Build libplt-main2.a" \
"" \
- "-fPIC" \
+ "-fPIC -Wa,-mrelax-relocations=yes" \
{ plt-main2.c } \
{{readelf {-Wr} plt-main2.rd}} \
"libplt-main2.a" \
[list \
"Build libplt-main3.a" \
"" \
- "-fPIC $PLT_CFLAGS" \
+ "-fPIC -Wa,-mrelax-relocations=yes $PLT_CFLAGS" \
{ plt-main3.c } \
{{readelf {-Wr} plt-main3.rd}} \
"libplt-main3.a" \
[list \
"Build libplt-main4.a" \
"" \
- "-fPIC $PLT_CFLAGS" \
+ "-fPIC -Wa,-mrelax-relocations=yes $PLT_CFLAGS" \
{ plt-main4.c } \
{{readelf {-Wr} plt-main4.rd}} \
"libplt-main4.a" \
"" \
"pr19031.so" \
] \
+ [list \
+ "Build got1d.so" \
+ "-shared" \
+ "" \
+ { got1d.S } \
+ "" \
+ "got1d.so" \
+ ] \
+ [list \
+ "Build gotpc1" \
+ "tmpdir/got1d.so" \
+ "-Wa,-mrelax-relocations=yes" \
+ { got1a.S got1b.c got1c.c } \
+ {{objdump {-dw} got1.dd}} \
+ "got1" \
+ ] \
+ [list \
+ "Build pr19319.so" \
+ "-shared" \
+ "" \
+ { pr19319a.S } \
+ "" \
+ "pr19319.so" \
+ ] \
+ [list \
+ "Build pr19319" \
+ "-pie -nostdlib -nostartfiles tmpdir/pr19319.so" \
+ "" \
+ { pr19319b.S } \
+ {{objdump {-dw} pr19319.dd}} \
+ "pr19319" \
+ ] \
]
run_ld_link_exec_tests [] [list \
"pr19031" \
"pr19031.out" \
] \
+ [list \
+ "Run got1" \
+ "tmpdir/got1d.so" \
+ "" \
+ { got1a.S got1b.c got1c.c } \
+ "got1" \
+ "got1.out" \
+ ] \
]
+
+ undefined_weak "" ""
+ undefined_weak "-fPIE" ""
+ undefined_weak "-fPIE" "-pie"
+ undefined_weak "-fPIE" "-z nodynamic-undefined-weak"
+ undefined_weak "-fPIE" "-pie -z nodynamic-undefined-weak"
}
if { !([istarget "i?86-*-linux*"]