X-Git-Url: https://oss.titaniummirror.com/gitweb?p=msp430-binutils.git;a=blobdiff_plain;f=ld%2Ftestsuite%2Fld-arm%2Farm-elf.exp;fp=ld%2Ftestsuite%2Fld-arm%2Farm-elf.exp;h=d88fb37ca1dcdc8a2cd4099d24e5a4170d2c38d1;hp=8897968115404bed910c9bbd62b6caf50eeaceed;hb=d5da4f291af551c0b8b79e1d4a9b173d60e5c10e;hpb=7b5ea4fcdf2819e070665ab5610f8b48e3867c10 diff --git a/ld/testsuite/ld-arm/arm-elf.exp b/ld/testsuite/ld-arm/arm-elf.exp index 8897968..d88fb37 100644 --- a/ld/testsuite/ld-arm/arm-elf.exp +++ b/ld/testsuite/ld-arm/arm-elf.exp @@ -1,5 +1,6 @@ # Expect script for various ARM ELF tests. -# Copyright 2002, 2003, 2004, 2007 Free Software Foundation, Inc. +# Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +# Free Software Foundation, Inc. # # This file is part of the GNU Binutils. # @@ -47,6 +48,10 @@ if {[istarget "arm-*-vxworks"]} { run_dump_test "emit-relocs1-vxworks" } +if { [istarget "arm*-*-symbianelf*"] } { + run_dump_test "symbian-seg1" +} + # Exclude non-ARM-ELF targets. if { ![is_elf_format] || ![istarget "arm*-*-*"] } { @@ -140,7 +145,7 @@ set armelftests { {{objdump -dw arm-movwt.d}} "arm-movwt"} {"BE8 Mapping Symbols" "-static -T arm.ld -EB --be8" "-EB" {arm-be8.s} - {{objdump -s arm-be8.d}} + {{objdump -d arm-be8.d}} "arm-be8"} {"Using Thumb lib by another lib" "-shared tmpdir/mixed-lib.so" "" {use-thumb-lib.s} {{readelf -Ds use-thumb-lib.sym}} @@ -157,6 +162,58 @@ set armelftests { "-EL --vfp11-denorm-fix=scalar -Ttext=0x8000" "-EL -mfpu=vfpxd" {vfp11-fix-none.s} {{objdump -dr vfp11-fix-none.d}} "vfp11-fix-none"} + {"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}} + "cortex-a8-fix-b"} + {"Cortex-A8 erratum fix, bl.w" + "-EL -Ttext=0x8f00 --fix-cortex-a8" "-EL" {cortex-a8-fix-bl.s} + {{objdump -dr cortex-a8-fix-bl.d}} + "cortex-a8-fix-bl"} + {"Cortex-A8 erratum fix, bcc.w" + "-EL -Ttext=0x8f00 --fix-cortex-a8" "-EL" {cortex-a8-fix-bcc.s} + {{objdump -dr cortex-a8-fix-bcc.d}} + "cortex-a8-fix-bcc"} + {"Cortex-A8 erratum fix, blx.w" + "-EL -Ttext=0x8f00 --fix-cortex-a8" "-EL" {cortex-a8-fix-blx.s} + {{objdump -dr cortex-a8-fix-blx.d}} + "cortex-a8-fix-blx"} + {"Cortex-A8 erratum fix, relocate b.w to ARM" + "-EL -Ttext=0x8f00 --fix-cortex-a8" "-EL" {cortex-a8-arm-target.s cortex-a8-fix-b-rel.s} + {{objdump -dr cortex-a8-fix-b-rel-arm.d}} + "cortex-a8-fix-b-rel-arm"} + {"Cortex-A8 erratum fix, relocate b.w to Thumb" + "-EL -Ttext=0x8f00 --fix-cortex-a8" "-EL" {cortex-a8-thumb-target.s cortex-a8-fix-b-rel.s} + {{objdump -dr cortex-a8-fix-b-rel-thumb.d}} + "cortex-a8-fix-b-rel-thumb"} + {"Cortex-A8 erratum fix, relocate bl.w to ARM" + "-EL -Ttext=0x8f00 --fix-cortex-a8" "-EL" {cortex-a8-arm-target.s cortex-a8-fix-bl-rel.s} + {{objdump -dr cortex-a8-fix-bl-rel-arm.d}} + "cortex-a8-fix-bl-rel-arm"} + {"Cortex-A8 erratum fix, relocate bl.w to Thumb" + "-EL -Ttext=0x8f00 --fix-cortex-a8" "-EL" {cortex-a8-thumb-target.s cortex-a8-fix-bl-rel.s} + {{objdump -dr cortex-a8-fix-bl-rel-thumb.d}} + "cortex-a8-fix-bl-rel-thumb"} + {"Cortex-A8 erratum fix, relocate b.w to Thumb" + "-EL -Ttext=0x8f00 --fix-cortex-a8" "-EL" {cortex-a8-thumb-target.s cortex-a8-fix-bcc-rel.s} + {{objdump -dr cortex-a8-fix-bcc-rel-thumb.d}} + "cortex-a8-fix-bcc-rel-thumb"} + {"Cortex-A8 erratum fix, relocate blx.w to ARM" + "-EL -Ttext=0x8f00 --fix-cortex-a8" "-EL" {cortex-a8-arm-target.s cortex-a8-fix-blx-rel.s} + {{objdump -dr cortex-a8-fix-blx-rel-arm.d}} + "cortex-a8-fix-blx-rel-arm"} + {"Cortex-A8 erratum fix, relocate blx.w to Thumb" + "-EL -Ttext=0x8f00 --fix-cortex-a8" "-EL" {cortex-a8-thumb-target.s cortex-a8-fix-blx-rel.s} + {{objdump -dr cortex-a8-fix-blx-rel-thumb.d}} + "cortex-a8-fix-blx-rel-thumb"} + {"Cortex-A8 erratum fix, relocate bl.w and far call" + "-EL -Ttext=0x00 --fix-cortex-a8 --defsym far_fn1=0x80000000 --defsym far_fn2=0x80000004 --defsym far_fn=0x7fff0000 --defsym _start=0" "-EL" {cortex-a8-far-1.s cortex-a8-far-2.s} + {{objdump -dr cortex-a8-far.d}} + "cortex-a8-far"} + {"Cortex-A8 erratum fix, headers" + "-EL --fix-cortex-a8 -T cortex-a8-fix-hdr.t" "-EL" {cortex-a8-fix-hdr.s} + {{objdump -dr cortex-a8-fix-hdr.d}} + "cortex-a8-fix-hdr"} {"Unwinding and -gc-sections" "-gc-sections" "" {gc-unwind.s} {{objdump -sj.data gc-unwind.d}} "gc-unwind"} @@ -167,12 +224,12 @@ set armelftests { {preempt-app.s} {{readelf -Ds preempt-app.sym}} "preempt-app"} - {"jump19" "-static -T arm.ld" "" {jump19.s} - {{objdump -dr jump19.d}} - "jump19"} - {"callweak" "-static -T arm.ld" "" {callweak.s} - {{objdump -dr callweak.d}} - "callweak"} + {"jump19" "-static -T arm.ld" "" {jump19.s} + {{objdump -dr jump19.d}} + "jump19"} + {"callweak" "-static -T arm.ld" "" {callweak.s} + {{objdump -dr callweak.d}} + "callweak"} } run_ld_link_tests $armelftests @@ -180,16 +237,35 @@ run_dump_test "group-relocs-alu-bad" run_dump_test "group-relocs-ldr-bad" run_dump_test "group-relocs-ldrs-bad" run_dump_test "group-relocs-ldc-bad" -run_dump_test "thumb2-bl-as-thumb1-bad" -run_dump_test "thumb2-bl-bad" +run_dump_test "thumb2-bl-undefweak" +run_dump_test "thumb2-bl-undefweak1" run_dump_test "emit-relocs1" +run_dump_test "movw-shared-1" +run_dump_test "movw-shared-2" +run_dump_test "movw-shared-3" +run_dump_test "movw-shared-4" # Exclude non-ARM-EABI targets. if { ![istarget "arm*-*-*eabi"] } { + # Special variants of these tests, as a different farcall stub is + # generated for a non-ARM-EABI target: indeed in such a case, + # there are no attributes to indicate that blx can be used. + + set arm_noeabi_tests { + {"Thumb-2-as-Thumb-1 BL" "-Ttext 0x1000 --section-start .foo=0x100100c" "" {thumb2-bl-as-thumb1-bad.s} + {{objdump -d thumb2-bl-as-thumb1-bad-noeabi.d}} + "thumb2-bl-as-thumb1-bad"} + {"Thumb-2 BL bad" "-Ttext 0x1000 --section-start .foo=0x100100c" "" {thumb2-bl-bad.s} + {{objdump -d thumb2-bl-bad-noeabi.d}} + "thumb2-bl-bad"} + } + run_ld_link_tests $arm_noeabi_tests + return } +# Farcalls stubs are fully supported for ARM-EABI only set armeabitests { {"EABI attribute merging" "-r" "" {attr-merge.s attr-merge.s} {{readelf -A attr-merge.attr}} @@ -197,9 +273,180 @@ set armeabitests { {"EABI attribute merging 2" "-r" "" {attr-merge-2a.s attr-merge-2b.s} {{readelf -A attr-merge-2.attr}} "attr-merge-2"} + {"EABI attribute merging 3" "-r" "" {attr-merge-3a.s attr-merge-3b.s} + {{readelf -A attr-merge-3.attr}} + "attr-merge-3"} + {"EABI attribute merging 4" "-r" "" {attr-merge-4a.s attr-merge-4b.s} + {{readelf -A attr-merge-4.attr}} + "attr-merge-4"} + {"EABI attribute merging 5" "-r" "" {attr-merge-5.s attr-merge-5.s} + {{readelf -A attr-merge-5.attr}} + "attr-merge-5"} + {"EABI attribute arch merging 1" "-r" "" {arch-v6k.s arch-v6t2.s} + {{readelf -A attr-merge-arch-1.attr}} + "attr-merge-arch-1"} + {"EABI attribute arch merging 1 reversed" "-r" "" {arch-v6t2.s arch-v6k.s} + {{readelf -A attr-merge-arch-1.attr}} + "attr-merge-arch-1r"} + {"EABI attribute arch merging 2" "-r" "" {arch-v6k.s arch-v6.s} + {{readelf -A attr-merge-arch-2.attr}} + "attr-merge-arch-2"} + {"EABI attribute arch merging 2 reversed" "-r" "" {arch-v6.s arch-v6k.s} + {{readelf -A attr-merge-arch-2.attr}} + "attr-merge-arch-2r"} {"Thumb-2 BL" "-Ttext 0x1000 --section-start .foo=0x1001000" "" {thumb2-bl.s} {{objdump -dr thumb2-bl.d}} "thumb2-bl"} + {"Thumb-2 Interworked branch" "-T arm.ld" "" {thumb2-b-interwork.s} + {{objdump -dr thumb2-b-interwork.d}} + "thumb2-b-interwork"} + {"BL/BLX interworking" "-T arm.ld" "" {thumb2-bl-blx-interwork.s} + {{objdump -dr thumb2-bl-blx-interwork.d}} + "thumb2-bl-blx-interwork"} + {"ARMv4 interworking" "-static -T arm.ld --fix-v4bx-interworking" "--fix-v4bx -meabi=4" {armv4-bx.s} + {{objdump -d armv4-bx.d}} + "armv4-bx"} + {"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"} + {"Thumb-2-as-Thumb-1 BL" "-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"} + {"Thumb-2 BL" "-Ttext 0x1000 --section-start .foo=0x100100c" "" {thumb2-bl-bad.s} + {{objdump -d thumb2-bl-bad.d}} + "thumb2-bl-bad"} + + {"ARM-ARM farcall" "-Ttext 0x1000 --section-start .foo=0x2001020" "" {farcall-arm-arm.s} + {{objdump -d farcall-arm-arm.d}} + "farcall-arm-arm"} + {"ARM-ARM farcall (PIC veneer)" "-Ttext 0x1000 --section-start .foo=0x2001020 --pic-veneer" "" {farcall-arm-arm.s} + {{objdump -d farcall-arm-arm-pic-veneer.d}} + "farcall-arm-arm-pic-veneer"} + {"ARM-ARM farcall (BE8)" "-Ttext 0x1000 --section-start .foo=0x2001020 -EB --be8" "-EB" {farcall-arm-arm.s} + {{objdump -d farcall-arm-arm.d}} + "farcall-arm-arm-be8"} + {"ARM-ARM farcall (BE)" "-Ttext 0x1000 --section-start .foo=0x2001020 -EB" "-EB" {farcall-arm-arm.s} + {{objdump -d farcall-arm-arm.d}} + "farcall-arm-arm-be"} + + {"ARM-Thumb farcall" "-Ttext 0x1000 --section-start .foo=0x2001014" "" {farcall-arm-thumb.s} + {{objdump -d farcall-arm-thumb.d}} + "farcall-arm-thumb"} + {"ARM-Thumb farcall with BLX" "-Ttext 0x1000 --section-start .foo=0x2001014" "-march=armv5t" {farcall-arm-thumb.s} + {{objdump -d farcall-arm-thumb-blx.d}} + "farcall-arm-thumb-blx"} + {"ARM-Thumb farcall (PIC veneer)" "-Ttext 0x1000 --section-start .foo=0x2001014 --pic-veneer" "" {farcall-arm-thumb.s} + {{objdump -d farcall-arm-thumb-pic-veneer.d}} + "farcall-arm-thumb-pic-veneer"} + {"ARM-Thumb farcall with BLX (PIC veneer)" "-Ttext 0x1000 --section-start .foo=0x2001014 --pic-veneer" "-march=armv5t" {farcall-arm-thumb.s} + {{objdump -d farcall-arm-thumb-blx-pic-veneer.d}} + "farcall-arm-thumb-blx-pic-veneer"} + + {"Thumb-Thumb farcall with BLX" "-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=armv7m" {farcall-thumb-thumb.s} + {{objdump -d farcall-thumb-thumb-m.d}} + "farcall-thumb-thumb-m"} + {"Thumb-Thumb farcall" "-Ttext 0x1000 --section-start .foo=0x2001014" "-march=armv4t" {farcall-thumb-thumb.s} + {{objdump -d farcall-thumb-thumb.d}} + "farcall-thumb-thumb"} + {"Thumb-Thumb farcall with BLX (PIC veneer)" "-Ttext 0x1000 --section-start .foo=0x2001014 --pic-veneer" "-march=armv5t" {farcall-thumb-thumb.s} + {{objdump -d farcall-thumb-thumb-blx-pic-veneer.d}} + "farcall-thumb-thumb-blx-pic-veneer"} + {"Thumb-Thumb farcall M profile (PIC veneer)" "-Ttext 0x1000 --section-start .foo=0x2001014 --pic-veneer" "-march=armv7m" {farcall-thumb-thumb.s} + {{objdump -d farcall-thumb-thumb-m-pic-veneer.d}} + "farcall-thumb-thumb-m-pic-veneer"} + {"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-ARM farcall" "-Ttext 0x1000 --section-start .foo=0x2001014" "-W" {farcall-thumb-arm.s} + {{objdump -d farcall-thumb-arm.d}} + "farcall-thumb-arm"} + {"Thumb-ARM farcall (BE8)" "-Ttext 0x1000 --section-start .foo=0x2001014 -EB --be8" "-W -EB" {farcall-thumb-arm.s} + {{objdump -d farcall-thumb-arm.d}} + "farcall-thumb-arm-be8"} + {"Thumb-ARM farcall (BE)" "-Ttext 0x1000 --section-start .foo=0x2001014 -EB" "-W -EB" {farcall-thumb-arm.s} + {{objdump -d farcall-thumb-arm.d}} + "farcall-thumb-arm-be"} + {"Thumb-ARM (short) call" "-Ttext 0x1000 --section-start .foo=0x0002014" "-W" {farcall-thumb-arm-short.s} + {{objdump -d farcall-thumb-arm-short.d}} + "farcall-thumb-arm-short"} + {"Thumb-ARM farcall with BLX" "-Ttext 0x1000 --section-start .foo=0x2001014" "-W -march=armv5t" {farcall-thumb-arm.s} + {{objdump -d farcall-thumb-arm-blx.d}} + "farcall-thumb-arm-blx"} + {"Thumb-ARM farcall with BLX (PIC veneer)" "-Ttext 0x1000 --section-start .foo=0x2001014 --pic-veneer" "-W -march=armv5t" {farcall-thumb-arm.s} + {{objdump -d farcall-thumb-arm-blx-pic-veneer.d}} + "farcall-thumb-arm-blx-pic-veneer"} + {"Thumb-ARM farcall (PIC veneer)" "-Ttext 0x1000 --section-start .foo=0x2001014 --pic-veneer" "-W" {farcall-thumb-arm.s} + {{objdump -d farcall-thumb-arm-pic-veneer.d}} + "farcall-thumb-arm-pic-veneer"} + + {"Multiple farcalls" "-Ttext 0x1000 --section-start .foo=0x2002020" "" {farcall-mix.s} + {{objdump -d farcall-mix.d}} + "farcall-mix"} + {"Multiple farcalls from several sections" "-Ttext 0x1000 --section-start .mytext=0x2000 --section-start .foo=0x2003020" "" {farcall-mix2.s} + {{objdump -d farcall-mix2.d}} + "farcall-mix2"} + + {"Default group size" "-Ttext 0x1000 --section-start .foo=0x2003020" "" {farcall-group.s farcall-group2.s} + {{objdump -d farcall-group.d}} + "farcall-group-default"} + {"Group size=2" "-Ttext 0x1000 --section-start .foo=0x2003020 --stub-group-size=2" "" {farcall-group.s farcall-group2.s} + {{objdump -d farcall-group-size2.d}} + "farcall-group-size2"} + {"Group size limit" "-Ttext 0x1000 --section-start .far=0x2003020" "" {farcall-group3.s farcall-group4.s} + {{objdump -d farcall-group-limit.d}} + "farcall-group-limit"} + + {"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} + {{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} + {{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" "-shared -T arm-lib.ld" "" + {farcall-mixed-lib1.s farcall-mixed-lib2.s} + {{objdump -fdw farcall-mixed-lib.d}} + "farcall-mixed-lib.so"} + } run_ld_link_tests $armeabitests +run_dump_test "attr-merge-wchar-00" +run_dump_test "attr-merge-wchar-02" +run_dump_test "attr-merge-wchar-04" +run_dump_test "attr-merge-wchar-20" +run_dump_test "attr-merge-wchar-22" +run_dump_test "attr-merge-wchar-24" +run_dump_test "attr-merge-wchar-40" +run_dump_test "attr-merge-wchar-42" +run_dump_test "attr-merge-wchar-44" +run_dump_test "attr-merge-wchar-00-nowarn" +run_dump_test "attr-merge-wchar-02-nowarn" +run_dump_test "attr-merge-wchar-04-nowarn" +run_dump_test "attr-merge-wchar-20-nowarn" +run_dump_test "attr-merge-wchar-22-nowarn" +run_dump_test "attr-merge-wchar-24-nowarn" +run_dump_test "attr-merge-wchar-40-nowarn" +run_dump_test "attr-merge-wchar-42-nowarn" +run_dump_test "attr-merge-wchar-44-nowarn" +run_dump_test "farcall-section" +run_dump_test "attr-merge-unknown-1" +run_dump_test "attr-merge-unknown-2" +run_dump_test "attr-merge-unknown-2r" +run_dump_test "attr-merge-unknown-3" +run_dump_test "unwind-1" +run_dump_test "unwind-2" +run_dump_test "unwind-3" +run_dump_test "unwind-4" +run_dump_test "unwind-5"