X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=ld%2Ftestsuite%2Fld-arm%2Farm-elf.exp;h=ef3a49c23742f4c43c78e73aa692928ba3d56123;hb=4389b29a5af431eeac517272b66560e12df3c430;hp=0576847d2952c325f2da5e28fadc3059e9a354db;hpb=6a2619f95336f522e6a5e9a7fcbfd6d4ce47014b;p=deliverable%2Fbinutils-gdb.git diff --git a/ld/testsuite/ld-arm/arm-elf.exp b/ld/testsuite/ld-arm/arm-elf.exp index 0576847d29..ef3a49c237 100644 --- a/ld/testsuite/ld-arm/arm-elf.exp +++ b/ld/testsuite/ld-arm/arm-elf.exp @@ -1,5 +1,5 @@ # Expect script for various ARM ELF tests. -# Copyright (C) 2002-2014 Free Software Foundation, Inc. +# Copyright (C) 2002-2019 Free Software Foundation, Inc. # # This file is part of the GNU Binutils. # @@ -21,23 +21,24 @@ if {[istarget "arm-*-vxworks"]} { set armvxworkstests { - {"VxWorks shared library test 1" "-shared -Tvxworks1.ld" "" + {"VxWorks shared library test 1" + "-shared -Tvxworks1.ld --hash-style=sysv" "" "" {vxworks1-lib.s} {{readelf --relocs vxworks1-lib.rd} {objdump -dr vxworks1-lib.dd} {readelf --symbols vxworks1-lib.nd} {readelf -d vxworks1-lib.td}} "libvxworks1.so"} - {"VxWorks executable test 1 (dynamic)" \ - "tmpdir/libvxworks1.so -Tvxworks1.ld -q --force-dynamic" "" + {"VxWorks executable test 1 (dynamic)" + "tmpdir/libvxworks1.so -Tvxworks1.ld --hash-style=sysv -q --force-dynamic" "" "" {vxworks1.s} {{readelf --relocs vxworks1.rd} {objdump -dr vxworks1.dd}} "vxworks1"} {"VxWorks executable test 2 (dynamic)" \ - "-Tvxworks1.ld -q --force-dynamic" "" + "-Tvxworks1.ld --hash-style=sysv -q --force-dynamic" "" "" {vxworks2.s} {{readelf --segments vxworks2.sd}} "vxworks2"} {"VxWorks executable test 2 (static)" - "-Tvxworks1.ld" "" + "-Tvxworks1.ld --hash-style=sysv" "" "" {vxworks2.s} {{readelf --segments vxworks2-static.sd}} "vxworks2"} @@ -66,7 +67,7 @@ if { ![is_elf_format] || ![istarget "arm*-*-*"] } { # nm: Apply nm options on result. Compare with regex (last arg). # readelf: Apply readelf options on result. Compare with regex (last arg). -set armelftests_common { +set armelftests_common_1 { {"Group relocations" "-Ttext 0x8000 -Tdata 0x3000000 --section-start alpha=0xeef0 --section-start beta=0xffeef0" "" "" {group-relocs.s} {{objdump -dr group-relocs.d}} "group-relocs"} @@ -99,43 +100,57 @@ set armelftests_common { {"arm-rel31" "-static -T arm.ld" "" "" {arm-rel31.s} {{objdump -s arm-rel31.d}} "arm-rel31"} - {"arm-rel32" "-shared -T arm-dyn.ld" "" "" {arm-rel32.s} + {"arm-rel32" "-shared -T arm-dyn.ld --hash-style=sysv" "" "" {arm-rel32.s} {{objdump -Rsj.data arm-rel32.d}} "arm-rel32"} {"arm-call" "--no-fix-arm1176 -static -T arm.ld" "" "-meabi=4" {arm-call1.s arm-call2.s} {{objdump -d arm-call.d}} "arm-call"} - {"TLS shared library" "-shared -T arm-lib.ld" "" "" {tls-lib.s} + {"TLS shared library" "-shared -T arm-lib.ld --hash-style=sysv" "" + "" {tls-lib.s} {{objdump -fdw tls-lib.d} {objdump -Rw tls-lib.r}} "tls-lib.so"} - {"TLS dynamic application" "-T arm-dyn.ld tmpdir/tls-lib.so" "" "" {tls-app.s} + {"TLS dynamic application" + "-T arm-dyn.ld --hash-style=sysv tmpdir/tls-lib.so" "" "" {tls-app.s} {{objdump -fdw tls-app.d} {objdump -Rw tls-app.r}} "tls-app"} - {"TLS gnu shared library got" "-shared -T arm-dyn.ld" "" "" {tls-gdesc-got.s} + {"TLS gnu shared library got" + "-shared -T arm-dyn.ld --hash-style=sysv" "" "" {tls-gdesc-got.s} {{objdump "-fDR -j .got" tls-gdesc-got.d}} "tls-lib2-got.so"} - {"TLS gnu GD to IE relaxation" "-static -T arm-dyn.ld" "" "" {tls-gdierelax.s} + {"TLS gnu GD to IE relaxation" + "-static -T arm-dyn.ld --hash-style=sysv" "" "" {tls-gdierelax.s} {{objdump -fdw tls-gdierelax.d}} "tls-app-rel-ie"} - {"TLS gnu GD to IE shared relaxation" "--no-fix-arm1176 -shared -T arm-dyn.ld" "" "" {tls-gdierelax2.s} + {"TLS gnu GD to IE shared relaxation" + "--no-fix-arm1176 -shared -T arm-dyn.ld --hash-style=sysv" "" + "" {tls-gdierelax2.s} {{objdump -fdw tls-gdierelax2.d}} "tls-app-rel-ie2"} - {"TLS gnu GD to LE relaxation" "-T arm-dyn.ld" "" "" {tls-gdlerelax.s} + {"TLS gnu GD to LE relaxation" "-T arm-dyn.ld --hash-style=sysv" "" + "" {tls-gdlerelax.s} {{objdump -fdw tls-gdlerelax.d}} "tls-app-rel-le"} - {"TLS mixed models shared lib" "-shared -T arm-dyn.ld" "" "" {tls-mixed.s} + {"TLS mixed models shared lib" + "-shared -T arm-dyn.ld --hash-style=sysv" "" "" {tls-mixed.s} {{objdump -Rw tls-mixed.r}} "tls-mixed.so"} - {"TLS descseq relaxation" "-T arm-dyn.ld" "" "" {tls-descrelax.s} + {"TLS descseq relaxation" + "-T arm-dyn.ld --hash-style=sysv" "" "" {tls-descrelax.s} {{objdump -fdw tls-descrelax.d}} "tls-descrelax"} - {"TLS descseq relaxation v7" "-T arm-dyn.ld" "" "" {tls-descrelax-v7.s} + {"TLS descseq relaxation v7" + "-T arm-dyn.ld --hash-style=sysv" "" "" {tls-descrelax-v7.s} {{objdump -fdw tls-descrelax-v7.d}} "tls-descrelax-v7"} - {"TLS descseq relaxation BE8" "-T arm-dyn.ld -EB --be8" "" "-mbig-endian" {tls-descrelax-be8.s} + {"TLS descseq relaxation BE8" + "-T arm-dyn.ld --hash-style=sysv -EB --be8" "" + "-mbig-endian" {tls-descrelax-be8.s} {{objdump -fdw tls-descrelax-be8.d}} "tls-descrelax-be8"} - {"TLS descseq relaxation BE32" "-T arm-dyn.ld -EB" "" "-mbig-endian" {tls-descrelax-be32.s} + {"TLS descseq relaxation BE32" + "-T arm-dyn.ld --hash-style=sysv -EB" "" + "-mbig-endian" {tls-descrelax-be32.s} {{objdump -fdw tls-descrelax-be32.d}} "tls-descrelax-be32"} {"TLS local PIC symbol static link" "-T arm.ld" "" "" {tls-local-static.s} @@ -159,12 +174,38 @@ set armelftests_common { "-EL --vfp11-denorm-fix=scalar -Ttext=0x8000" "" "-EL -mfpu=vfpxd" {vfp11-fix-none.s} {{objdump -dr vfp11-fix-none.d}} "vfp11-fix-none"} + {"STM32L4XX erratum fix LDM" + "-EL --fix-stm32l4xx-629360 -Ttext=0x8000" "" "-EL -mcpu=cortex-m4 -mfpu=fpv4-sp-d16" {stm32l4xx-fix-ldm.s} + {{objdump -dr stm32l4xx-fix-ldm.d}} + "stm32l4xx-fix-ldm"} + {"STM32L4XX erratum fix VLDM" + "-EL --fix-stm32l4xx-629360 -Ttext=0x8000" "" "-EL -mcpu=cortex-m4 -mfpu=fpv4-sp-d16" {stm32l4xx-fix-vldm.s} + {{objdump -dr stm32l4xx-fix-vldm.d}} + "stm32l4xx-fix-vldm"} + {"STM32L4XX erratum fix VLDM, DP registers" + "-EL --fix-stm32l4xx-629360 -Ttext=0x8000" "" "-EL -mcpu=cortex-m4 -mfpu=fpv4-sp-d16" {stm32l4xx-fix-vldm-dp.s} + {{objdump -dr stm32l4xx-fix-vldm-dp.d}} + "stm32l4xx-fix-vldm-dp"} + {"STM32L4XX erratum fix ALL" + "-EL --fix-stm32l4xx-629360=all -Ttext=0x8000" "" "-EL -mcpu=cortex-m4 -mfpu=fpv4-sp-d16" {stm32l4xx-fix-all.s} + {{objdump -dr stm32l4xx-fix-all.d}} + "stm32l4xx-fix-all"} + {"STM32L4XX erratum fix in IT context" + "-EL --fix-stm32l4xx-629360 -Ttext=0x8000" "" "-EL -mcpu=cortex-m4 -mfpu=fpv4-sp-d16" {stm32l4xx-fix-it-block.s} + {{objdump -dr stm32l4xx-fix-it-block.d}} + "stm32l4xx-fix-it-block"} {"Unwinding and -gc-sections" "-gc-sections" "" "" {gc-unwind.s} {{objdump -sj.data gc-unwind.d}} - "gc-unwind"} + "gc-unwind"} +} + +set armelftests_common_2 { {"script-type" "-static -T script-type.ld" "" "" {script-type.s} - {{readelf -s script-type.sym}} - "script-type"} + {{readelf -s script-type.sym}} + "script-type"} +} + +set armelftests_common_3 { {"callweak" "-static -T arm.ld" "" "" {callweak.s} {{objdump -dr callweak.d}} "callweak"} @@ -203,8 +244,31 @@ set armelftests_common { {"EABI ABI flags ld -r" "-r" "" "-mfloat-abi=soft -meabi=5" {eabi-soft-float.s} {{readelf -h eabi-soft-float-r.d}} "eabi-soft-float-r.o"} + {"PC-relative in -shared" "-shared --hash-style=sysv" "" + "" {pcrel-shared.s} + {{readelf -dr pcrel-shared.rd}} + "pcrel-shared.so"} + {"MOVS thumb1 relocations" "-static -T arm.ld" "" "" {thumb1-movs.s} + {{objdump -dw thumb1-movs.d}} + "thumb1-movs"} + {"ADDS thumb1 relocations" "-static -T arm.ld" "" "" {thumb1-adds.s} + {{objdump -dw thumb1-adds.d}} + "thumb1-adds"} + {"MOVS thumb1 relocations for armv7-m target" "-static -T arm.ld" "" "" {thumb1-movs-armv7-m.s} + {{objdump -dw thumb1-movs.d}} + "thumb1-movs"} + {"ADDS thumb1 relocations for armv7-m target" "-static -T arm.ld" "" "" {thumb1-adds-armv7-m.s} + {{objdump -dw thumb1-adds.d}} + "thumb1-adds"} } +run_ld_link_tests $armelftests_common_1 +if { ![istarget "arm*-*-netbsdelf"] } { + run_ld_link_tests $armelftests_common_2 +} +run_ld_link_tests $armelftests_common_3 + + set armelftests_nonacl { {"Thumb-1 BL" "-Ttext 0x1000 --section-start .foo=0x401000" "" "" {thumb1-bl.s} {{objdump -dr thumb1-bl.d}} @@ -218,7 +282,8 @@ set armelftests_nonacl { {"jump19" "-static -T arm.ld" "" "" {jump19.s} {{objdump -dr jump19.d}} "jump19"} - {"Thumb and -gc-sections" "-shared -T arm-dyn.ld" "" "" {gc-thumb-lib.s} + {"Thumb and -gc-sections" + "-shared -T arm-dyn.ld --hash-style=sysv" "" "" {gc-thumb-lib.s} {} "gc-thumb-lib.so"} {"Thumb and -gc-sections" "-pie -T arm.ld -gc-sections tmpdir/gc-thumb-lib.so" "" "" {gc-thumb.s} @@ -237,45 +302,54 @@ set armelftests_nonacl { {"Simple static application without .rel.plt in linker script" "-T arm-no-rel-plt.ld" "" "" {arm-static-app.s} {{objdump -fdw arm-static-app.d} {objdump -rw arm-static-app.r}} - "arm-static-app"} + "arm-static-app-no-rel-plt"} {"Simple dynamic application without .rel.plt in linker script" "tmpdir/arm-lib.so -T arm-no-rel-plt.ld" "" "" {arm-app.s} - {{ld arm-no-rel-plt.out}} - "arm-app"} + {{readelf -dr arm-no-rel-plt.r}} + "arm-app-no-rel-plt"} {"Non-pcrel function reference" "tmpdir/arm-lib.so" "" "" {arm-app-abs32.s} {{objdump -fdw arm-app-abs32.d} {objdump -Rw arm-app-abs32.r}} "arm-app-abs32"} - {"Thumb shared library with ARM entry points" "-shared -T arm-lib.ld" "" "-mthumb-interwork" - {mixed-lib.s} + {"Thumb shared library with ARM entry points" + "-shared -T arm-lib.ld --hash-style=sysv" "" + "-mthumb-interwork" {mixed-lib.s} {{objdump -fdw armthumb-lib.d} {readelf -Ds armthumb-lib.sym}} "armthumb-lib.so"} - {"Mixed ARM/Thumb shared library" "-shared -T arm-lib.ld -use-blx" "" "" - {mixed-lib.s} + {"Mixed ARM/Thumb shared library" + "-shared -T arm-lib.ld --hash-style=sysv -use-blx" "" + "" {mixed-lib.s} {{objdump -fdw mixed-lib.d} {objdump -Rw mixed-lib.r} {readelf -Ds mixed-lib.sym}} "mixed-lib.so"} - {"Mixed ARM/Thumb dynamic application" "tmpdir/mixed-lib.so -T arm-dyn.ld" "" "" - {mixed-app.s} + {"Mixed ARM/Thumb dynamic application" + "tmpdir/mixed-lib.so -T arm-dyn.ld --hash-style=sysv" "" + "" {mixed-app.s} {{objdump -fdw mixed-app.d} {objdump -Rw mixed-app.r} {readelf -Ds mixed-app.sym}} "mixed-app"} - {"Mixed ARM/Thumb arch5 dynamic application" "tmpdir/mixed-lib.so -T arm-dyn.ld --use-blx" "" "" - {mixed-app.s} + {"Mixed ARM/Thumb arch5 dynamic application" + "tmpdir/mixed-lib.so -T arm-dyn.ld --hash-style=sysv --use-blx" "" + "" {mixed-app.s} {{objdump -fdw mixed-app-v5.d} {objdump -Rw mixed-app.r} {readelf -Ds mixed-app.sym}} "mixed-app-v5"} - {"Using Thumb lib by another lib" "-shared tmpdir/mixed-lib.so" "" "" {use-thumb-lib.s} + {"Using Thumb lib by another lib" + "-shared --hash-style=sysv tmpdir/mixed-lib.so" "" + "" {use-thumb-lib.s} {{readelf -Ds use-thumb-lib.sym}} "use-thumb-lib.so"} - {"TLS gnu shared library inlined trampoline" "--no-fix-arm1176 -shared -T arm-dyn.ld" "" "" {tls-descseq.s} + {"TLS gnu shared library inlined trampoline" + "--no-fix-arm1176 -shared -T arm-dyn.ld --hash-style=sysv" "" + "" {tls-descseq.s} {{objdump -fdw tls-descseq.d} {objdump -Rw tls-descseq.r}} "tls-lib2inline.so"} - {"TLS shared library gdesc local" "--no-fix-arm1176 -shared -T arm-dyn.ld" "" "" {tls-lib-loc.s} + {"TLS shared library gdesc local" + "--no-fix-arm1176 -shared -T arm-dyn.ld --hash-style=sysv" "" + "" {tls-lib-loc.s} {{objdump -fdw tls-lib-loc.d} {objdump -Rw tls-lib-loc.r}} "tls-lib-loc.so"} } -run_ld_link_tests $armelftests_common if { ![istarget "arm*-*-nacl*"] } { run_ld_link_tests $armelftests_nonacl } @@ -295,9 +369,16 @@ run_dump_test "movw-shared-1" run_dump_test "movw-shared-2" run_dump_test "movw-shared-3" run_dump_test "movw-shared-4" +run_dump_test "rel32-reject" +run_dump_test "rel32-reject-pie" +run_dump_test "pie-bind-locally" # Exclude non-ARM-EABI targets. +if { [istarget "arm*-*-netbsdelf"] } { + return +} + if { ![istarget "arm*-*-*eabi*"] && ![istarget "arm*-*-nacl*"] } { # Special variants of these tests, as a different farcall stub is # generated for a non-ARM-EABI target: indeed in such a case, @@ -348,6 +429,24 @@ set armeabitests_common { {"EABI attribute merging 7" "-r" "" "" {attr-merge-7a.s attr-merge-7b.s} {{readelf -A attr-merge-7.attr}} "attr-merge-7"} + {"EABI attribute merging 8" "-r" "" "" {attr-merge-8a.s attr-merge-8b.s} + {{readelf -A attr-merge-8.attr}} + "attr-merge-8"} + {"EABI attribute merging 9" "-r" "" "" {attr-merge-9a.s attr-merge-9b.s} + {{ld attr-merge-9.out}} + "attr-merge-9"} + {"EABI attribute merging 10" "-r" "" "" {attr-merge-10a.s attr-merge-10b.s} + {{readelf -A attr-merge-10.attr}} + "attr-merge-10"} + {"EABI attribute merging 11" "-r" "" "" {attr-merge-11a.s attr-merge-11b.s} + {{readelf -A attr-merge-11.attr}} + "attr-merge-11"} + {"EABI attribute merging 12" "-r" "" "" {attr-merge-12a.s attr-merge-12b.s} + {{readelf -A attr-merge-12.attr}} + "attr-merge-12"} + {"EABI attribute merging 10 (DSP)" "-r" "" "" {attr-merge-10a.s attr-merge-10b-dsp.s} + {{readelf -A attr-merge-10-dsp.attr}} + "attr-merge-10-dsp"} {"EABI attribute arch merging 1" "-r" "" "" {arch-v6k.s arch-v6t2.s} {{readelf -A attr-merge-arch-1.attr}} "attr-merge-arch-1"} @@ -408,9 +507,18 @@ set armeabitests_nonacl { {"Thumb-Thumb farcall with BLX" "--no-fix-arm1176 -Ttext 0x1000 --section-start .foo=0x2001014" "" "-march=armv5t" {farcall-thumb-thumb.s} {{objdump -d farcall-thumb-thumb-blx.d}} "farcall-thumb-thumb-blx"} - {"Thumb-Thumb farcall M profile" "-Ttext 0x1000 --section-start .foo=0x2001014" "" "-march=armv7-m" {farcall-thumb-thumb.s} + {"Thumb-Thumb farcall M profile" "-Ttext 0x1000 --section-start .foo=0x2001014" "" "-march=armv6-m" {farcall-thumb-thumb.s} {{objdump -d farcall-thumb-thumb-m.d}} "farcall-thumb-thumb-m"} + {"Thumb2-Thumb2 farcall M profile" "-Ttext 0x1000 --section-start .foo=0x2001014" "" "-march=armv7-m" {farcall-thumb-thumb.s} + {{objdump -d farcall-thumb2-thumb2-m.d}} + "farcall-thumb2-thumb2-m"} + {"Thumb-Thumb farcall v8-M Baseline" "-Ttext 0x1000 --section-start .foo=0x2001014" "" "-march=armv8-m.base" {farcall-thumb-thumb.s} + {{objdump -d farcall-thumb-thumb-m.d}} + "farcall-thumb-thumb-v8-m-base"} + {"Thumb-Thumb farcall v8-M Mainline" "-Ttext 0x1000 --section-start .foo=0x2001014" "" "-march=armv8-m.main" {farcall-thumb-thumb.s} + {{objdump -d farcall-thumb-thumb-m.d}} + "farcall-thumb-thumb-v8-m-main"} {"Thumb-Thumb farcall v6-M" "-Ttext 0x1000 --section-start .foo=0x2001014" "" "-march=armv6-m" {farcall-thumb-thumb.s} {{objdump -d farcall-thumb-thumb-m.d}} "farcall-thumb-thumb-v6-m"} @@ -426,6 +534,13 @@ set armeabitests_nonacl { {"Thumb-Thumb farcall (PIC veneer)" "-Ttext 0x1000 --section-start .foo=0x2001014 --pic-veneer" "" "-march=armv4t" {farcall-thumb-thumb.s} {{objdump -d farcall-thumb-thumb-pic-veneer.d}} "farcall-thumb-thumb-pic-veneer"} + {"Thumb-Thumb farcall v6-M (no profile)" "-Ttext 0x1000 --section-start .foo=0x2001014" "" "" + {farcall-thumb-thumb-m-no-profile-a.s farcall-thumb-thumb-m-no-profile-b.s} + {{objdump -d farcall-thumb-thumb-m-no-profile.d}} + "farcall-thumb-thumb-m-no-profile"} + {"Thumb2 purecode farcall" "-Ttext 0x1000 --section-start .foo=0x2001020" "" "" {farcall-thumb2-purecode.s} + {{objdump -d farcall-thumb2-purecode.d}} + "farcall-thumb2-purecode"} {"Thumb-ARM farcall" "-Ttext 0x1c01010 --section-start .foo=0x2001014" "" "-W" {farcall-thumb-arm.s} {{objdump -d farcall-thumb-arm.d}} @@ -449,6 +564,16 @@ set armeabitests_nonacl { {{objdump -d farcall-thumb-arm-pic-veneer.d}} "farcall-thumb-arm-pic-veneer"} + {"Thumb-ARM farcall cond" "-Ttext 0x8000 --section-start .foo=0x118000" "" "-W" {farcall-cond-thumb-arm.s} + {{objdump -d farcall-cond-thumb-arm.d}} + "farcall-cond-thumb-arm"} + {"Thumb-ARM farcall cond (BE8)" "-Ttext 0x8000 --section-start .foo=0x118000 -EB --be8" "" "-W -EB" {farcall-cond-thumb-arm.s} + {{objdump -d farcall-cond-thumb-arm.d}} + "farcall-cond-thumb-arm-be8"} + {"Thumb-ARM farcall cond (BE)" "-Ttext 0x8000 --section-start .foo=0x118000 -EB" "" "-W -EB" {farcall-cond-thumb-arm.s} + {{objdump -d farcall-cond-thumb-arm.d}} + "farcall-cond-thumb-arm-be"} + {"Multiple farcalls" "-Ttext 0x1000 --section-start .foo=0x2002020" "" "" {farcall-mix.s} {{objdump -d farcall-mix.d}} "farcall-mix"} @@ -456,24 +581,35 @@ set armeabitests_nonacl { {{objdump -d farcall-mix2.d}} "farcall-mix2"} - {"Mixed ARM/Thumb dynamic application with farcalls" "tmpdir/mixed-lib.so -T arm-dyn.ld --section-start .far_arm=0x2100000 --section-start .far_thumb=0x2200000" "" "" - {farcall-mixed-app.s} + {"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 --use-blx --section-start .far_arm=0x2100000 --section-start .far_thumb=0x2200000" "" "" - {farcall-mixed-app.s} + {"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/Thumb shared library with long branches (v4t)" "-shared -T arm-lib.ld" "" "-march=armv4t" - {farcall-mixed-lib1.s farcall-mixed-lib2.s} + {"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" "" "-march=armv5t" - {farcall-mixed-lib1.s farcall-mixed-lib2.s} + {"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"} @@ -515,9 +651,12 @@ set armeabitests_nonacl { {{objdump -d fix-arm1176-off.d}} "fix-arm1176-6"} - {"Thumb-2 BL" "-Ttext 0x1000 --section-start .foo=0x1001000" "" "" {thumb2-bl.s} + {"Thumb-2 BL" "-Ttext 0x1000 --section-start .foo=0x1001000" "" "-march=armv7" {thumb2-bl.s} {{objdump -dr thumb2-bl.d}} "thumb2-bl"} + {"Thumb-2 BL on ARMv6-M" "-Ttext 0x1000 --section-start .foo=0x1001000" "" "-march=armv6-m" {thumb2-bl.s} + {{objdump -dr thumb2-bl.d}} + "thumb2-armv6m-bl"} {"Thumb-2 Interworked branch" "-T arm.ld" "" "" {thumb2-b-interwork.s} {{objdump -dr thumb2-b-interwork.d}} "thumb2-b-interwork"} @@ -528,6 +667,10 @@ set armeabitests_nonacl { {{objdump -d armv4-bx.d}} "armv4-bx"} + {"Armv8.1-M Mainline BF" "-r -Ttext 0x1000 --section-start .foo=0x1001000" "" "-march=armv8.1-m.main" {bf.s} + {{objdump -dr bf.d}} + "bf"} + {"R_ARM_THM_JUMP24 Relocation veneers: Short 1" "--no-fix-arm1176 --section-start destsect=0x00009000 --section-start .text=0x8000" "" "-march=armv7-a -mthumb" @@ -547,6 +690,114 @@ set armeabitests_nonacl { {{objdump -d jump-reloc-veneers-long.d}} "jump-reloc-veneers-long"} + {"Secure gateway veneers: no .gnu.sgstubs section" "" "" + "-march=armv8-m.base -mthumb" + {cmse-veneers.s} + {{ld cmse-veneers-no-gnu_sgstubs.out}} + "cmse-veneers-no-gnu_sgstubs"} + {"Secure gateway veneers: wrong entry functions" "" "" + "-march=armv7-m -mthumb --defsym CHECK_ERRORS=1" + {cmse-veneers.s} + {{ld cmse-veneers-wrong-entryfct.out}} + "cmse-veneers-wrong-entryfct"} + {"Secure gateway veneers (ARMv8-M Baseline)" + "-Ttext=0x8000 --section-start .gnu.sgstubs=0x20000 --gc-sections" "" + "-march=armv8-m.base -mthumb" + {cmse-veneers.s} + {{objdump {-d -j .gnu.sgstubs} cmse-veneers.d} + {objdump {-h -j .gnu.sgstubs} cmse-veneers.sd} + {nm {} cmse-veneers.rd}} + "cmse-veneers-baseline"} + {"Secure gateway veneers (ARMv8-M Mainline)" + "-Ttext=0x8000 --section-start .gnu.sgstubs=0x20000 --gc-sections" "" + "-march=armv8-m.main -mthumb" + {cmse-veneers.s} + {{objdump {-d -j .gnu.sgstubs} cmse-veneers.d} + {objdump {-h -j .gnu.sgstubs} cmse-veneers.sd} + {nm {} cmse-veneers.rd}} + "cmse-veneers-mainline"} + {"Secure gateway import library generation: errors" + "--section-start .gnu.sgstubs=0x20000 --out-implib=tmpdir/cmse-implib.lib --cmse-implib" "" + "-march=armv8-m.base -mthumb --defsym CHECK_ERRORS=1 --defsym VER=1" + {cmse-implib.s} + {{ld cmse-implib-errors.out}} + "cmse-implib"} + {"Secure gateway import library generation" + "--section-start .gnu.sgstubs=0x20000 --out-implib=tmpdir/cmse-implib.lib --cmse-implib" "" + "-march=armv8-m.base -mthumb --defsym VER=1" + {cmse-implib.s} + {{readelf {-s tmpdir/cmse-implib.lib} cmse-implib.rd} + {readelf {-h tmpdir/cmse-implib.lib} cmse-implib.type}} + "cmse-implib"} + {"Input secure gateway import library" + "--section-start .gnu.sgstubs=0x20000 --out-implib=tmpdir/cmse-new-implib.lib --in-implib=tmpdir/cmse-implib.lib --cmse-implib" "" + "-march=armv8-m.base -mthumb --defsym VER=2" + {cmse-implib.s} + {{ld cmse-new-implib.out} + {readelf {-s tmpdir/cmse-new-implib.lib} cmse-new-implib.rd}} + "cmse-new-implib"} + {"Input secure gateway import library: no output import library" + "--section-start .gnu.sgstubs=0x20000 --in-implib=tmpdir/cmse-implib.lib --cmse-implib" "" + "-march=armv8-m.base -mthumb --defsym VER=2" + {cmse-implib.s} + {{ld cmse-new-implib-no-output.out}} + "cmse-new-implib-no-output"} + {"Input secure gateway import library: not an SG input import library" + "--section-start .gnu.sgstubs=0x20000 --in-implib=tmpdir/cmse-implib.lib" "" + "-march=armv8-m.base -mthumb --defsym VER=2" + {cmse-implib.s} + {{ld cmse-new-implib-not-sg-in-implib.out}} + "cmse-new-implib-not-sg-in-implib"} + {"Input secure gateway import library: earlier stub section base" + "--section-start .gnu.sgstubs=0x19000 --out-implib=tmpdir/cmse-new-earlier-implib.lib --in-implib=tmpdir/cmse-implib.lib --cmse-implib" "" + "-march=armv8-m.base -mthumb --defsym VER=2" + {cmse-implib.s} + {{ld cmse-new-earlier-later-implib.out}} + "cmse-new-earlier-implib"} + {"Input secure gateway import library: later stub section base" + "--section-start .gnu.sgstubs=0x30000 --out-implib=tmpdir/cmse-new-later-implib.lib --in-implib=tmpdir/cmse-implib.lib --cmse-implib" "" + "-march=armv8-m.base -mthumb --defsym VER=2" + {cmse-implib.s} + {{ld cmse-new-earlier-later-implib.out}} + "cmse-new-later-implib"} + {"Input secure gateway import library: veneer comeback" + "--section-start .gnu.sgstubs=0x20000 --out-implib=tmpdir/cmse-new-comeback-implib.lib --in-implib=tmpdir/cmse-implib.lib --cmse-implib" "" + "-march=armv8-m.base -mthumb --defsym VER=3" + {cmse-implib.s} + {{readelf {-s tmpdir/cmse-new-comeback-implib.lib} cmse-new-comeback-implib.rd}} + "cmse-new-comeback-implib"} + {"Input secure gateway import library: entry function change" + "--section-start .gnu.sgstubs=0x20000 --out-implib=tmpdir/cmse-new-wrong-implib.lib --in-implib=tmpdir/cmse-implib.lib --cmse-implib" "" + "-march=armv8-m.base -mthumb --defsym VER=4" + {cmse-implib.s} + {{ld cmse-new-wrong-implib.out}} + "cmse-new-wrong-implib"} + + {"R_ARM_THM_JUMP19 Relocation veneers: Short" + "--section-start destsect=0x000108002 --section-start .text=0x8000" "" + "-march=armv7-m -mthumb" + {jump-reloc-veneers-cond.s} + {{objdump -d jump-reloc-veneers-cond-short.d}} + "jump-reloc-veneers-cond-short"} + {"R_ARM_THM_JUMP19 Relocation veneers: Long" + "--section-start destsect=0x00108004 --section-start .text=0x8000" "" + "-march=armv7-m -mthumb" + {jump-reloc-veneers-cond.s} + {{objdump -d jump-reloc-veneers-cond-long.d}} + "jump-reloc-veneers-cond-long"} + {"R_ARM_THM_JUMP19 Relocation veneers: Short backward" + "--section-start destsect=0x8004 --section-start .text=0x108000" "" + "-march=armv7-m -mthumb" + {jump-reloc-veneers-cond.s} + {{objdump -d jump-reloc-veneers-cond-short-backward.d}} + "jump-reloc-veneers-cond-short-backward"} + {"R_ARM_THM_JUMP19 Relocation veneers: Long backward" + "--section-start destsect=0x8002 --section-start .text=0x108000" "" + "-march=armv7-m -mthumb" + {jump-reloc-veneers-cond.s} + {{objdump -d jump-reloc-veneers-cond-long-backward.d}} + "jump-reloc-veneers-cond-long-backward"} + {"Default group size" "-Ttext 0x1000 --section-start .foo=0x2003020" "" "" {farcall-group.s farcall-group2.s} {{objdump -d farcall-group.d}} "farcall-group-default"} @@ -557,19 +808,29 @@ set armeabitests_nonacl { {{objdump -d farcall-group-limit.d}} "farcall-group-limit"} - {"TLS gnu shared library" "--no-fix-arm1176 -shared -T arm-dyn.ld" "" "" {tls-gdesc.s} + {"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" "" "" {tls-gdesc.s} + {"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 long plt library" "-shared -T arm-dyn.ld --section-start .foo=0x4001000" "" "" {tls-longplt-lib.s} + {"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 --section-start .foo=0x4001000 tmpdir/tls-longplt-lib.so" "" "" {tls-longplt.s} + {"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 --section-start .foo=0x4001000" "" "" {tls-thumb1.s} + {"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" @@ -651,7 +912,7 @@ set armeabitests_nonacl { {{objdump -dr cortex-a8-fix-blx-plt.d}} "cortex-a8-fix-blx-plt"} {"Cortex-A8 erratum fix, relocate bl.w to PLT" - "-EL --section-start=.plt=0x8e00 -Ttext=0x8f00 --fix-cortex-a8 -shared" "" + "-EL --section-start=.plt=0x8e00 -Ttext=0x8f00 --fix-cortex-a8 -shared --hash-style=sysv" "" "-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"} @@ -746,18 +1007,60 @@ set armeabitests_nonacl { "" {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 --version-script=ifunc-gdesc.ver" "" "" {ifunc-gdesc.s} + {"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"} - {"Preempt Thumb symbol" "tmpdir/mixed-lib.so -T arm-dyn.ld --use-blx" "" "" - {preempt-app.s} + {"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"} } +set armfdpiceabitests { + {"FDPIC ARM shared library little endian" + "-shared -T fdpic-shared.ld --hash-style=sysv -EL -m armelf_linux_fdpiceabi" "" + "-EL -fdpic" {fdpic-shared.s} + {{objdump -fdw fdpic-shared.d} {objdump -Rw fdpic-shared.r} + {readelf -Ds fdpic-shared.sym}} + "fdpic-shared.so"} + {"FDPIC ARM dynamic executable little endian" + "tmpdir/fdpic-shared.so -T fdpic-main.ld --hash-style=sysv -EL -m armelf_linux_fdpiceabi" "" + "-EL -fdpic" {fdpic-main.s} + {{objdump -fdw fdpic-main.d} {objdump -Rw fdpic-main.r} + {readelf -Ds fdpic-main.sym}} + "fdpic-main"} + {"FDPIC ARM shared library big endian" + "-shared -T fdpic-shared.ld --hash-style=sysv -EB -m armelfb_linux_fdpiceabi" "" + "-EB -fdpic" {fdpic-shared.s} + {{objdump -fdw fdpic-shared.d} {objdump -Rw fdpic-shared.r} + {readelf -Ds fdpic-shared.sym}} + "fdpic-shared.so"} + {"FDPIC ARM dynamic executable big endian" + "tmpdir/fdpic-shared.so -T fdpic-main.ld --hash-style=sysv -EB -m armelfb_linux_fdpiceabi" "" + "-EB -fdpic" {fdpic-main.s} + {{objdump -fdw fdpic-main.d} {objdump -Rw fdpic-main.r} + {readelf -Ds fdpic-main.sym}} + "fdpic-main"} + {"FDPIC ARM shared library little endian M profile" + "-shared -T fdpic-shared.ld --hash-style=sysv -EL -m armelf_linux_fdpiceabi" "" + "-EL -fdpic" {fdpic-shared-m.s} + {{objdump -fdw fdpic-shared-m.d} {objdump -Rw fdpic-shared.r} + {readelf -Ds fdpic-shared-m.sym}} + "fdpic-shared.so"} + {"FDPIC ARM dynamic executable little endian M profile" + "tmpdir/fdpic-shared.so -T fdpic-main.ld --hash-style=sysv -EL -m armelf_linux_fdpiceabi" "" + "-EL -fdpic" {fdpic-main-m.s} + {{objdump -fdw fdpic-main-m.d} {objdump -Rw fdpic-main.r} + {readelf -Ds fdpic-main-m.sym}} + "fdpic-main"} +} + # Massage the $armeabitests_common list into run_ld_link_tests standard form. # See the comment before 'set armeabitests_common', above. set elide_action_elt 3 @@ -784,6 +1087,10 @@ if { !$is_nacl } { run_ld_link_tests $armeabitests_nonacl } +if { [istarget "arm*-*-uclinuxfdpiceabi"] } { + run_ld_link_tests $armfdpiceabitests +} + run_dump_test "attr-merge-div-00" run_dump_test "attr-merge-div-01" run_dump_test "attr-merge-div-10" @@ -838,10 +1145,40 @@ run_dump_test "attr-merge-vfp-6" run_dump_test "attr-merge-vfp-6r" run_dump_test "attr-merge-vfp-7" run_dump_test "attr-merge-vfp-7r" +run_dump_test "attr-merge-vfp-8" +run_dump_test "attr-merge-vfp-8r" +run_dump_test "attr-merge-vfp-9" +run_dump_test "attr-merge-vfp-9r" +run_dump_test "attr-merge-vfp-10" +run_dump_test "attr-merge-vfp-10r" +run_dump_test "attr-merge-vfp-11" +run_dump_test "attr-merge-vfp-11r" +run_dump_test "attr-merge-vfp-12" +run_dump_test "attr-merge-vfp-12r" +run_dump_test "attr-merge-vfp-13" +run_dump_test "attr-merge-vfp-13r" +run_dump_test "attr-merge-vfp-14" +run_dump_test "attr-merge-vfp-14r" run_dump_test "attr-merge-incompatible" +run_dump_test "attr-merge-arch-2" +run_dump_test "attr-merge-nosection-1" +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*"] } { run_dump_test "unresolved-1-dyn" } run_dump_test "unresolved-2" run_dump_test "gc-hidden-1" +run_dump_test "protected-data" +run_dump_test "stm32l4xx-cannot-fix-it-block" +run_dump_test "stm32l4xx-cannot-fix-far-ldm" +set arm_unwind_tests { + {"unwind-rel" "-r -Tarm.ld" "" "" {unwind-rel1.s unwind-rel2.s unwind-rel3.s} + {{readelf -ur unwind-rel.d}} + "unwind-rel"} + {"unwind-mix" "-Tarm.ld" "" "" {unwind-mix1.s unwind-mix2.s} + {{readelf -u unwind-mix.d}} + "unwind-mix"} +} +run_ld_link_tests $arm_unwind_tests