{"MOVW/MOVT and merged sections" "-T arm.ld" "" "" {movw-merge.s}
{{objdump -dw movw-merge.d}}
"movw-merge"}
- {"MOVW/MOVT against shared libraries" "tmpdir/arm-lib.so" "" "" {arm-app-movw.s}
- {{objdump -Rw arm-app.r}}
- "arm-app-movw"}
{"ARM-ARM farcall" "-Ttext 0x1000 --section-start .foo=0x2001020" "" "" {farcall-arm-arm.s}
{{objdump -d farcall-arm-arm.d farcall-arm-nacl.d}}
"abs-call-1"}
}
+set armeabitests_common_shared {
+ {"MOVW/MOVT against shared libraries" "tmpdir/arm-lib.so" "" "" {arm-app-movw.s}
+ {{objdump -Rw arm-app.r}}
+ "arm-app-movw"}
+}
+if [check_shared_lib_support] { append armeabitests_common $armeabitests_common_shared}
+
+
set armeabitests_nonacl {
{"ARM-Thumb farcall" "-Ttext 0x1000 --section-start .foo=0x2001014" "" "" {farcall-arm-thumb.s}
{{objdump -d farcall-arm-thumb.d}}
{{objdump -d farcall-mix2.d}}
"farcall-mix2"}
- {"Mixed ARM/Thumb dynamic application with farcalls"
- "tmpdir/mixed-lib.so -T arm-dyn.ld --hash-style=sysv --section-start .far_arm=0x2100000 --section-start .far_thumb=0x2200000" ""
- "" {farcall-mixed-app.s}
- {{objdump -fdw farcall-mixed-app.d} {objdump -Rw farcall-mixed-app.r}
- {readelf -Ds farcall-mixed-app.sym}}
- "farcall-mixed-app"}
- {"Mixed ARM/Thumb arch5 dynamic application with farcalls"
- "tmpdir/mixed-lib.so -T arm-dyn.ld --hash-style=sysv --use-blx --section-start .far_arm=0x2100000 --section-start .far_thumb=0x2200000" ""
- "" {farcall-mixed-app.s}
- {{objdump -fdw farcall-mixed-app-v5.d} {objdump -Rw farcall-mixed-app.r}
- {readelf -Ds farcall-mixed-app.sym}}
- "farcall-mixed-app-v5"}
-
- {"Mixed ARM/Thumb2 dynamic application with farcalls"
- "tmpdir/mixed-lib.so -T arm-dyn.ld --hash-style=sysv --section-start .mid_thumb=0x10081c0 --section-start .far_arm=0x2100000 --section-start .far_thumb=0x2200000" ""
- "" {farcall-mixed-app2.s}
- {{objdump -fdw farcall-mixed-app2.d} {objdump -Rw farcall-mixed-app2.r}
- {readelf -Ds farcall-mixed-app2.sym}}
- "farcall-mixed-app2"}
-
- {"Mixed ARM/Thumb shared library with long branches (v4t)"
- "-shared -T arm-lib.ld --hash-style=sysv" ""
- "-march=armv4t" {farcall-mixed-lib1.s farcall-mixed-lib2.s}
- {{objdump -fdw farcall-mixed-lib-v4t.d}}
- "farcall-mixed-lib.so"}
-
- {"Mixed ARM/Thumb shared library with long branches (v5t)"
- "--no-fix-arm1176 -shared -T arm-lib.ld --hash-style=sysv" ""
- "-march=armv5t" {farcall-mixed-lib1.s farcall-mixed-lib2.s}
- {{objdump -fdw farcall-mixed-lib.d}}
- "farcall-mixed-lib.so"}
-
{"Thumb-2-as-Thumb-1 BL" "--no-fix-arm1176 -Ttext 0x1000 --section-start .foo=0x100100c" "" "" {thumb2-bl-as-thumb1-bad.s}
{{objdump -d thumb2-bl-as-thumb1-bad.d}}
"thumb2-bl-as-thumb1-bad"}
{{objdump -d farcall-group-limit.d}}
"farcall-group-limit"}
- {"TLS gnu shared library"
- "--no-fix-arm1176 -shared -T arm-dyn.ld --hash-style=sysv" ""
- "" {tls-gdesc.s}
- {{objdump -fdw tls-gdesc.d} {objdump -Rw tls-gdesc.r}}
- "tls-lib2.so"}
- {"TLS gnu shared library non-lazy"
- "-z now -shared -T arm-dyn.ld --hash-style=sysv" ""
- "" {tls-gdesc.s}
- {{readelf "-x .got" tls-gdesc-nlazy.g}}
- "tls-lib2-nlazy.so"}
- {"TLS gnu shared library negative addend"
- "--no-fix-arm1176 -shared -T arm-dyn.ld --hash-style=sysv" ""
- "" {tls-gdesc-neg.s}
- {{objdump -fdw tls-gdesc-neg.d}}
- "tls-lib2-neg.so"}
- {"TLS long plt library"
- "-shared -T arm-dyn.ld --hash-style=sysv --section-start .foo=0x4001000" ""
- "" {tls-longplt-lib.s}
- {{objdump -fdw tls-longplt-lib.d}}
- "tls-longplt-lib.so"}
- {"TLS long plt"
- "-T arm-dyn.ld --hash-style=sysv --section-start .foo=0x4001000 tmpdir/tls-longplt-lib.so" ""
- "" {tls-longplt.s}
- {{objdump -fdw tls-longplt.d}}
- "tls-longplt"}
- {"TLS thumb1"
- "-shared -T arm-dyn.ld --hash-style=sysv --section-start .foo=0x4001000" ""
- "" {tls-thumb1.s}
- {{objdump -fdw tls-thumb1.d}}
- "tls-thumb1"}
{"Cortex-A8 erratum fix, b.w"
"-EL -Ttext=0x8f00 --fix-cortex-a8" "" "-EL" {cortex-a8-fix-b.s}
{{objdump -dr cortex-a8-fix-b.d}}
"-EL -Ttext=0x8f00 --fix-cortex-a8" "" "-EL" {cortex-a8-fix-blx-bcond.s}
{{objdump -dr cortex-a8-fix-blx-bcond.d}}
"cortex-a8-fix-blx-bcond"}
+ {"IFUNC test 1" "-T ifunc-static.ld" "" "" {ifunc-1.s}
+ {{objdump -d ifunc-1.dd}
+ {objdump {-s -j.data -j.got} ifunc-1.gd}
+ {readelf -dr ifunc-1.rd}}
+ "ifunc-1"}
+ {"IFUNC test 2" "-T ifunc-static.ld" "" "" {ifunc-2.s}
+ {{objdump -d ifunc-2.dd}
+ {objdump {-s -j.data -j.got} ifunc-2.gd}
+ {readelf -dr ifunc-2.rd}}
+ "ifunc-2"}
+ {"IFUNC test 5" "-T ifunc-static.ld" "" "" {ifunc-5.s}
+ {{objdump -d ifunc-5.dd}
+ {objdump {-s -j.data -j.got} ifunc-5.gd}
+ {readelf -dr ifunc-5.rd}}
+ "ifunc-5"}
+ {"IFUNC test 6" "-T ifunc-static.ld" "" "" {ifunc-6.s}
+ {{objdump -d ifunc-6.dd}
+ {objdump {-s -j.data -j.got} ifunc-6.gd}
+ {readelf -dr ifunc-6.rd}}
+ "ifunc-6"}
+ {"IFUNC test 11" "-T ifunc-static.ld" "" "" {ifunc-11.s}
+ {{objdump -d ifunc-11.dd}
+ {objdump {-s -j.data -j.got} ifunc-11.gd}
+ {readelf -dr ifunc-11.rd}}
+ "ifunc-11"}
+ {"IFUNC test 17" "-T ifunc-static.ld" "" "" {ifunc-17.s}
+ {{objdump -d ifunc-17.dd}
+ {objdump {-s -j.data -j.got} ifunc-17.gd}
+ {readelf -r ifunc-17.rd}}
+ "ifunc-17"}
+ {"arm-pic-veneer" "-static -T arm.ld --pic-veneer" "" "" {arm-pic-veneer.s}
+ {{objdump -d arm-pic-veneer.d}}
+ "arm-pic-veneer"}
+}
+
+set armeabitests_nonacl_shared {
+ {"TLS gnu shared library"
+ "--no-fix-arm1176 -shared -T arm-dyn.ld --hash-style=sysv" ""
+ "" {tls-gdesc.s}
+ {{objdump -fdw tls-gdesc.d} {objdump -Rw tls-gdesc.r}}
+ "tls-lib2.so"}
+ {"TLS gnu shared library non-lazy"
+ "-z now -shared -T arm-dyn.ld --hash-style=sysv" ""
+ "" {tls-gdesc.s}
+ {{readelf "-x .got" tls-gdesc-nlazy.g}}
+ "tls-lib2-nlazy.so"}
+ {"TLS gnu shared library negative addend"
+ "--no-fix-arm1176 -shared -T arm-dyn.ld --hash-style=sysv" ""
+ "" {tls-gdesc-neg.s}
+ {{objdump -fdw tls-gdesc-neg.d}}
+ "tls-lib2-neg.so"}
+ {"TLS long plt library"
+ "-shared -T arm-dyn.ld --hash-style=sysv --section-start .foo=0x4001000" ""
+ "" {tls-longplt-lib.s}
+ {{objdump -fdw tls-longplt-lib.d}}
+ "tls-longplt-lib.so"}
+ {"TLS long plt"
+ "-T arm-dyn.ld --hash-style=sysv --section-start .foo=0x4001000 tmpdir/tls-longplt-lib.so" ""
+ "" {tls-longplt.s}
+ {{objdump -fdw tls-longplt.d}}
+ "tls-longplt"}
+ {"TLS thumb1"
+ "-shared -T arm-dyn.ld --hash-style=sysv --section-start .foo=0x4001000" ""
+ "" {tls-thumb1.s}
+ {{objdump -fdw tls-thumb1.d}}
+ "tls-thumb1"}
+
+ {"Mixed ARM/Thumb dynamic application with farcalls"
+ "tmpdir/mixed-lib.so -T arm-dyn.ld --hash-style=sysv --section-start .far_arm=0x2100000 --section-start .far_thumb=0x2200000" ""
+ "" {farcall-mixed-app.s}
+ {{objdump -fdw farcall-mixed-app.d} {objdump -Rw farcall-mixed-app.r}
+ {readelf -Ds farcall-mixed-app.sym}}
+ "farcall-mixed-app"}
+ {"Mixed ARM/Thumb arch5 dynamic application with farcalls"
+ "tmpdir/mixed-lib.so -T arm-dyn.ld --hash-style=sysv --use-blx --section-start .far_arm=0x2100000 --section-start .far_thumb=0x2200000" ""
+ "" {farcall-mixed-app.s}
+ {{objdump -fdw farcall-mixed-app-v5.d} {objdump -Rw farcall-mixed-app.r}
+ {readelf -Ds farcall-mixed-app.sym}}
+ "farcall-mixed-app-v5"}
+ {"Mixed ARM/Thumb2 dynamic application with farcalls"
+ "tmpdir/mixed-lib.so -T arm-dyn.ld --hash-style=sysv --section-start .mid_thumb=0x10081c0 --section-start .far_arm=0x2100000 --section-start .far_thumb=0x2200000" ""
+ "" {farcall-mixed-app2.s}
+ {{objdump -fdw farcall-mixed-app2.d} {objdump -Rw farcall-mixed-app2.r}
+ {readelf -Ds farcall-mixed-app2.sym}}
+ "farcall-mixed-app2"}
+ {"Mixed ARM/Thumb shared library with long branches (v4t)"
+ "-shared -T arm-lib.ld --hash-style=sysv" ""
+ "-march=armv4t" {farcall-mixed-lib1.s farcall-mixed-lib2.s}
+ {{objdump -fdw farcall-mixed-lib-v4t.d}}
+ "farcall-mixed-lib.so"}
+
+ {"Mixed ARM/Thumb shared library with long branches (v5t)"
+ "--no-fix-arm1176 -shared -T arm-lib.ld --hash-style=sysv" ""
+ "-march=armv5t" {farcall-mixed-lib1.s farcall-mixed-lib2.s}
+ {{objdump -fdw farcall-mixed-lib.d}}
+ "farcall-mixed-lib.so"}
+
{"Cortex-A8 erratum fix, b.w to PLT"
"-EL -Tcortex-a8-fix-plt.ld --fix-cortex-a8 -shared" "" "-EL"
{cortex-a8-fix-b-plt.s}
"-EL" {cortex-a8-thumb-target.s cortex-a8-fix-bl-rel.s}
{{objdump -dr cortex-a8-fix-bl-rel-plt.d}}
"cortex-a8-fix-bl-rel-thumb"}
- {"IFUNC test 1" "-T ifunc-static.ld" "" "" {ifunc-1.s}
- {{objdump -d ifunc-1.dd}
- {objdump {-s -j.data -j.got} ifunc-1.gd}
- {readelf -dr ifunc-1.rd}}
- "ifunc-1"}
- {"IFUNC test 2" "-T ifunc-static.ld" "" "" {ifunc-2.s}
- {{objdump -d ifunc-2.dd}
- {objdump {-s -j.data -j.got} ifunc-2.gd}
- {readelf -dr ifunc-2.rd}}
- "ifunc-2"}
+
{"IFUNC test 3" "-T ifunc-dynamic.ld -shared" "" "" {ifunc-3.s}
- {{objdump -d ifunc-3.dd}
- {objdump {-s -j.data -j.got} ifunc-3.gd}
- {readelf -r ifunc-3.rd}}
- "ifunc-3.so"}
+ {{objdump -d ifunc-3.dd}
+ {objdump {-s -j.data -j.got} ifunc-3.gd}
+ {readelf -r ifunc-3.rd}}
+ "ifunc-3.so"}
{"IFUNC test 4" "-T ifunc-dynamic.ld -shared" "" "" {ifunc-4.s}
- {{objdump -d ifunc-4.dd}
- {objdump {-s -j.data -j.got} ifunc-4.gd}
- {readelf -r ifunc-4.rd}}
- "ifunc-4.so"}
- {"IFUNC test 5" "-T ifunc-static.ld" "" "" {ifunc-5.s}
- {{objdump -d ifunc-5.dd}
- {objdump {-s -j.data -j.got} ifunc-5.gd}
- {readelf -dr ifunc-5.rd}}
- "ifunc-5"}
- {"IFUNC test 6" "-T ifunc-static.ld" "" "" {ifunc-6.s}
- {{objdump -d ifunc-6.dd}
- {objdump {-s -j.data -j.got} ifunc-6.gd}
- {readelf -dr ifunc-6.rd}}
- "ifunc-6"}
+ {{objdump -d ifunc-4.dd}
+ {objdump {-s -j.data -j.got} ifunc-4.gd}
+ {readelf -r ifunc-4.rd}}
+ "ifunc-4.so"}
{"IFUNC test 7" "-T ifunc-dynamic.ld tmpdir/ifunc-3.so -shared" ""
- "" {ifunc-7.s}
- {{objdump -d ifunc-7.dd}
- {objdump {-s -j.data -j.got} ifunc-7.gd}
- {readelf -r ifunc-7.rd}}
- "ifunc-7.so"}
- {"IFUNC test 8" "-T ifunc-dynamic.ld tmpdir/ifunc-4.so -shared" ""
- "" {ifunc-8.s}
- {{objdump -d ifunc-8.dd}
- {objdump {-s -j.data -j.got} ifunc-8.gd}
- {readelf -r ifunc-8.rd}}
- "ifunc-8.so"}
+ "" {ifunc-7.s}
+ {{objdump -d ifunc-7.dd}
+ {objdump {-s -j.data -j.got} ifunc-7.gd}
+ {readelf -r ifunc-7.rd}}
+ "ifunc-7.so"}
+ {"IFUNC test 12" "-T ifunc-dynamic.ld -shared" "" "" {ifunc-12.s}
+ {{objdump -d ifunc-12.dd}
+ {objdump {-s -j.data -j.got} ifunc-12.gd}
+ {readelf -r ifunc-12.rd}}
+ "ifunc-12.so"}
{"IFUNC test 9" "-T ifunc-dynamic.ld tmpdir/ifunc-3.so" "" "" {ifunc-9.s}
- {{objdump -d ifunc-9.dd}
- {objdump {-s -j.data -j.got} ifunc-9.gd}
- {readelf -r ifunc-9.rd}}
- "ifunc-9"}
+ {{objdump -d ifunc-9.dd}
+ {objdump {-s -j.data -j.got} ifunc-9.gd}
+ {readelf -r ifunc-9.rd}}
+ "ifunc-9"}
{"IFUNC test 10" "-T ifunc-dynamic.ld tmpdir/ifunc-4.so" "" "" {ifunc-10.s}
- {{objdump -d ifunc-10.dd}
- {objdump {-s -j.data -j.got} ifunc-10.gd}
- {readelf -r ifunc-10.rd}}
- "ifunc-10"}
- {"IFUNC test 11" "-T ifunc-static.ld" "" "" {ifunc-11.s}
- {{objdump -d ifunc-11.dd}
- {objdump {-s -j.data -j.got} ifunc-11.gd}
- {readelf -dr ifunc-11.rd}}
- "ifunc-11"}
- {"IFUNC test 12" "-T ifunc-dynamic.ld -shared" "" "" {ifunc-12.s}
- {{objdump -d ifunc-12.dd}
- {objdump {-s -j.data -j.got} ifunc-12.gd}
- {readelf -r ifunc-12.rd}}
- "ifunc-12.so"}
+ {{objdump -d ifunc-10.dd}
+ {objdump {-s -j.data -j.got} ifunc-10.gd}
+ {readelf -r ifunc-10.rd}}
+ "ifunc-10"}
{"IFUNC test 13" "-T ifunc-dynamic.ld tmpdir/ifunc-12.so" "" "" {ifunc-13.s}
- {{objdump -d ifunc-13.dd}
- {objdump {-s -j.data -j.got} ifunc-13.gd}
- {readelf -r ifunc-13.rd}}
- "ifunc-13"}
+ {{objdump -d ifunc-13.dd}
+ {objdump {-s -j.data -j.got} ifunc-13.gd}
+ {readelf -r ifunc-13.rd}}
+ "ifunc-13"}
{"IFUNC test 14" "-T ifunc-dynamic.ld tmpdir/ifunc-12.so" "" "" {ifunc-14.s}
- {{objdump -d ifunc-14.dd}
- {objdump {-s -j.data -j.got} ifunc-14.gd}
- {readelf -r ifunc-14.rd}}
- "ifunc-14"}
+ {{objdump -d ifunc-14.dd}
+ {objdump {-s -j.data -j.got} ifunc-14.gd}
+ {readelf -r ifunc-14.rd}}
+ "ifunc-14"}
{"IFUNC test 15" "-T ifunc-dynamic.ld tmpdir/ifunc-12.so" "" "" {ifunc-15.s}
- {{objdump -d ifunc-15.dd}
- {objdump {-s -j.data -j.got} ifunc-15.gd}
- {readelf -r ifunc-15.rd}}
- "ifunc-15"}
+ {{objdump -d ifunc-15.dd}
+ {objdump {-s -j.data -j.got} ifunc-15.gd}
+ {readelf -r ifunc-15.rd}}
+ "ifunc-15"}
{"IFUNC test 16" "-T ifunc-dynamic.ld tmpdir/ifunc-12.so" "" "" {ifunc-16.s}
- {{objdump -d ifunc-16.dd}
- {objdump {-s -j.data -j.got} ifunc-16.gd}
- {readelf -r ifunc-16.rd}}
- "ifunc-16"}
- {"IFUNC test 17" "-T ifunc-static.ld" "" "" {ifunc-17.s}
- {{objdump -d ifunc-17.dd}
- {objdump {-s -j.data -j.got} ifunc-17.gd}
- {readelf -r ifunc-17.rd}}
- "ifunc-17"}
+ {{objdump -d ifunc-16.dd}
+ {objdump {-s -j.data -j.got} ifunc-16.gd}
+ {readelf -r ifunc-16.rd}}
+ "ifunc-16"}
+
{"Long PLT entries in executables" "--long-plt -shared --section-start=.plt=0x1000 --section-start=.got=0xf0001100" ""
- "" {long-plt-format.s}
- {{objdump "-d -j .plt" long-plt-format.d}}
- "long-plt-format"}
+ "" {long-plt-format.s}
+ {{objdump "-d -j .plt" long-plt-format.d}}
+ "long-plt-format"}
+
{"IFUNC and TLS descriptor shared library"
- "-shared -T arm-lib.ld --hash-style=sysv --version-script=ifunc-gdesc.ver" ""
- "" {ifunc-gdesc.s}
- {{objdump "-Rw" ifunc-gdesc.r}}
- "ifunc-gdesc.so"}
- {"arm-pic-veneer" "-static -T arm.ld --pic-veneer" "" "" {arm-pic-veneer.s}
- {{objdump -d arm-pic-veneer.d}}
- "arm-pic-veneer"}
+ "-shared -T arm-lib.ld --hash-style=sysv --version-script=ifunc-gdesc.ver" ""
+ "" {ifunc-gdesc.s}
+ {{objdump "-Rw" ifunc-gdesc.r}}
+ "ifunc-gdesc.so"}
+
{"Preempt Thumb symbol"
- "tmpdir/mixed-lib.so -T arm-dyn.ld --hash-style=sysv --use-blx" ""
- "" {preempt-app.s}
- {{readelf -Ds preempt-app.sym}}
- "preempt-app"}
+ "tmpdir/mixed-lib.so -T arm-dyn.ld --hash-style=sysv --use-blx" ""
+ "" {preempt-app.s}
+ {{readelf -Ds preempt-app.sym}}
+ "preempt-app"}
}
+if [check_shared_lib_support] { append armeabitests_nonacl $armeabitests_nonacl_shared}
+
set armfdpiceabitests {
{"FDPIC ARM shared library little endian"
run_dump_test "attr-merge-hardfp-use-1"
run_dump_test "attr-merge-hardfp-use-2"
run_dump_test "unresolved-1"
-if { ![istarget "arm*-*-nacl*"] } {
+if { [check_shared_lib_support] } {
run_dump_test "unresolved-1-dyn"
}
run_dump_test "unresolved-2"
run_dump_test "non-contiguous-arm5"
run_dump_test "non-contiguous-arm6"
-if { ![istarget "arm*-*-nacl*"] } {
+if { [check_shared_lib_support] } {
run_dump_test "thumb-plt"
run_dump_test "thumb-plt-got"
}