| # |
| # Some ARM tests |
| # |
| proc run_errors_test { name opts tname} { |
| global srcdir subdir |
| set testname "$tname" |
| set file $srcdir/$subdir/$name |
| gas_run ${name}.s $opts ">&${name}.out" |
| if { [regexp_diff "${name}.out" "${file}.l"] } then { |
| fail $testname |
| verbose "output is [file_contents "${name}.out"]" 2 |
| return |
| } |
| pass $testname |
| } |
| |
| if {[istarget *arm*-*-*] || [istarget "xscale-*-*"]} then { |
| |
| if {[istarget *-wince-*]} then { |
| run_dump_test "wince_inst" |
| run_dump_test "wince_ldconst" |
| run_dump_test "wince_arm7t" |
| run_dump_test "wince_copro" |
| } else { |
| run_dump_test "inst" |
| run_dump_test "ldconst" |
| run_dump_test "arm7t" |
| run_dump_test "copro" |
| } |
| |
| run_dump_test "arm3" |
| run_dump_test "arm6" |
| run_dump_test "arm7dm" |
| run_dump_test "arch4t" |
| run_dump_test "immed" |
| run_dump_test "float" |
| run_dump_test "offset" |
| run_dump_test "armv1" |
| run_dump_test "arch5tej" |
| run_dump_test "fpa-monadic" |
| run_dump_test "fpa-dyadic" |
| run_dump_test "fpa-mem" |
| run_dump_test "vfp1xD" |
| run_dump_test "vfp1" |
| run_dump_test "vfp2" |
| run_dump_test "xscale" |
| run_dump_test "adrl" |
| run_dump_test "reg-alias" |
| run_dump_test "maverick" |
| run_dump_test "archv6" |
| run_dump_test "archv6t2" |
| run_dump_test "thumbv6" |
| run_dump_test "thumbv6k" |
| run_dump_test "arch6zk" |
| run_dump_test "tcompat" |
| run_dump_test "tcompat2" |
| run_dump_test "iwmmxt" |
| run_dump_test "macro1" |
| |
| run_errors_test "vfp-bad" "-mfpu=vfp" "VFP errors" |
| run_errors_test "req" "-mcpu=arm7m" ".req errors" |
| run_errors_test "armv1-bad" "-mcpu=arm7m" "ARM v1 errors" |
| run_errors_test "r15-bad" "" "Invalid use of r15 errors" |
| run_errors_test "archv6t2-bad" "-march=armv6t2" "Invalid V6T2 instructions" |
| run_errors_test "t16-bad" "-march=armv6k" "Valid ARM, invalid Thumb" |
| run_errors_test "iwmmxt-bad" "-mcpu=iwmmxt" "iWMMXt errors" |
| |
| if {[istarget *-*-*coff] || [istarget *-*-pe] || [istarget *-*-wince] || |
| [istarget *-*-*aout*] || [istarget *-*-netbsd] || [istarget *-*-riscix*]} then { |
| # COFF and aout based ports use a different naming convention for local labels. |
| run_errors_test "undefined_coff" "" "Undefined local label error" |
| } else { |
| # For ELF based ports we can run some additional tests as well. |
| run_errors_test "undefined" "" "Undefined local label error" |
| |
| run_dump_test "pic" |
| run_dump_test "mapping" |
| run_dump_test "bignum1" |
| run_dump_test "unwind" |
| run_dump_test "tls" |
| } |
| |
| # The arm-aout port does not support Thumb branch relocations. |
| if {! [istarget arm*-*-aout] && ![istarget arm-*-pe]} then { |
| run_dump_test "thumb" |
| run_dump_test "thumb32" |
| } |
| |
| # Not all arm targets are bi-endian, so only run this test on ones |
| # we know that are. FIXME: We should probably also key off armeb/armel. |
| if [istarget *-*-pe] { |
| run_dump_test "le-fpconst" |
| } |
| } |