X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gas%2Ftestsuite%2Fgas%2Fmips%2Fmips.exp;h=344e62b7e08d61c401c366eb531de317a9a76ccd;hb=741fe287568e6f0da4523c85a5cc5608d05b8335;hp=91bb12dde85d9fe02ef8f833a22d0220a13edadc;hpb=7c2be35cae27fc6965fea7023a438a8a9872af01;p=platform%2Fupstream%2Fbinutils.git diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp index 91bb12d..344e62b 100644 --- a/gas/testsuite/gas/mips/mips.exp +++ b/gas/testsuite/gas/mips/mips.exp @@ -55,6 +55,10 @@ # The architecture includes the instructions defined # by that MIPS ISA. # +# gpr_ilocks +# The architecture interlocks GPRs accesses. (That is, +# there are no load delay slots.) +# # mips3d The architecture includes the MIPS-3D ASE. # # ror The architecture includes hardware rotate instructions. @@ -74,6 +78,17 @@ # based on the target of the assembler being built. If always has # empty "as_flags" and "objdump_flags." +# mips_arch_init +# +# This function initializes the architecture data array ("mips_arches") +# to be empty. +proc mips_arch_init {} { + global mips_arches + + # Catch becuase the variable won't be set the first time through. + catch {unset mips_arches} +} + # mips_arch_create ARCH GPRSIZE EXTENDS PROPS AS_FLAGS OBJDUMP_FLAGS \ # (optional:) DEFAULT_FOR_TARGETS # @@ -239,7 +254,7 @@ proc mips_arch_list_matching {args} { # properties actually are. if { [string compare $arch default] == 0 && [string length [mips_arch_properties default]] == 0} { - continue; + continue } if { [mips_arch_matches $arch $args] } { lappend l $arch @@ -277,27 +292,6 @@ proc run_dump_test_arches { name arch_list } { } } -# run_list_test NAME OPTS (optional): TESTNAME -# -# Assemble the file "NAME.d" and compare the assembler standard error -# output against the regular expressions given in the file "NAME.l". -# The assembler is passed the flags given in OPTS. If TESTNAME is -# provided, it will be used as the name of the test. -proc run_list_test { name opts {testname {}} } { - global srcdir subdir - if { [string length $testname] == 0 } then { - set testname "MIPS $name" - } - set file $srcdir/$subdir/$name - gas_run ${name}.s $opts ">&dump.out" - if { [regexp_diff "dump.out" "${file}.l"] } then { - fail $testname - verbose "output is [file_contents "dump.out"]" 2 - return - } - pass $testname -} - # run_list_test_arch NAME OPTS ARCH # # Invoke "run_list_test" for test NAME with options OPTS, with extra @@ -330,9 +324,10 @@ proc run_list_test_arches { name opts arch_list } { # Note that several targets pick default CPU based on ABI. We # can't easily handle that; do NOT list those targets as defaulting # to any architecture. +mips_arch_init mips_arch_create mips1 32 {} {} \ { -march=mips1 -mtune=mips1 } { -mmips:3000 } -mips_arch_create mips2 32 mips1 {} \ +mips_arch_create mips2 32 mips1 { gpr_ilocks } \ { -march=mips2 -mtune=mips2 } { -mmips:6000 } mips_arch_create mips3 64 mips2 {} \ { -march=mips3 -mtune=mips3 } { -mmips:4000 } @@ -350,9 +345,13 @@ mips_arch_create mips32r2 32 mips32 { ror } \ mips_arch_create mips64 64 mips5 { mips32 } \ { -march=mips64 -mtune=mips64 } { -mmips:isa64 } \ { mipsisa64-*-* mipsisa64el-*-* } +mips_arch_create mips64r2 64 mips64 { mips32r2 ror } \ + { -march=mips64r2 -mtune=mips64r2 } \ + { -mmips:isa64r2 } \ + { mipsisa64r2-*-* mipsisa64r2el-*-* } mips_arch_create r3000 32 mips1 {} \ { -march=r3000 -mtune=r3000 } { -mmips:3000 } -mips_arch_create r3900 32 mips1 {} \ +mips_arch_create r3900 32 mips1 { gpr_ilocks } \ { -march=r3900 -mtune=r3900 } { -mmips:3900 } \ { mipstx39-*-* mipstx39el-*-* } mips_arch_create r4000 64 mips3 {} \ @@ -363,28 +362,32 @@ mips_arch_create sb1 64 mips64 { mips3d } \ { -march=sb1 -mtune=sb1 } { -mmips:sb1 } \ { mipsisa64sb1-*-* mipsisa64sb1el-*-* } - # -# And now begin the actual tests! +# And now begin the actual tests! VxWorks uses RELA rather than REL +# relocations, so most of the generic dump tests will not work there. # - -if { [istarget mips*-*-*] } then { +if { [istarget mips*-*-vxworks*] } { + run_dump_test "vxworks1" + run_dump_test "vxworks1-xgot" + run_dump_test "vxworks1-el" + run_dump_test "vxworks1-xgot-el" +} elseif { [istarget mips*-*-*] } { set no_mips16 0 set elf [expr [istarget *-*-elf*] || [istarget *-*-irix5*] || [istarget *-*-irix6* ] || [istarget *-*-linux*] || [istarget *-*-netbsd*] ] set ecoff [expr [istarget *-*-ecoff*] || [istarget *-*-ultrix*] || [istarget *-*-irix\[1-4\]*] ] set aout [expr [istarget *-*-bsd*] || [istarget *-*-openbsd*] ] set ilocks [istarget mipstx39*-*-*] set gpr_ilocks [expr [istarget mipstx39*-*-*]] - set addr32 [expr [istarget mipstx39*-*-*]] + set addr32 [expr [istarget mipstx39*-*-*] || [istarget mips-*-linux*] || [istarget mipsel-*-linux*]] set has_newabi [expr [istarget *-*-irix6*] || [istarget mips64*-*-linux*]] - if { [istarget "mips*-*-*linux*"] } then { + if { [istarget "mips*-*-*linux*"] || [istarget "mips*-sde-elf*"] } then { set tmips "t" } else { set tmips "" } if [istarget mips*el-*-*] { - set el el + set el "el" } { set el "" } @@ -408,13 +411,20 @@ if { [istarget mips*-*-*] } then { run_dump_test_arches "bltu" [mips_arch_list_matching mips2] run_dump_test_arches "branch-misc-1" [mips_arch_list_matching mips1] run_dump_test_arches "branch-misc-2" [mips_arch_list_matching mips1] + run_dump_test_arches "branch-misc-2pic" [mips_arch_list_matching mips1] + run_dump_test_arches "branch-misc-2-64" [mips_arch_list_matching mips3] + run_dump_test_arches "branch-misc-2pic-64" [mips_arch_list_matching mips3] + run_dump_test "branch-misc-3" + run_dump_test "branch-swap" if $ilocks { run_dump_test "div-ilocks" } else { run_dump_test "div" } - run_dump_test_arches "dli" [mips_arch_list_matching mips3] + if { !$addr32 } { + run_dump_test_arches "dli" [mips_arch_list_matching mips3] + } if $elf { run_dump_test_arches "elf-jal" [mips_arch_list_matching mips1] } else { @@ -422,30 +432,21 @@ if { [istarget mips*-*-*] } then { } if $elf { run_dump_test "jal-svr4pic" } if $elf { run_dump_test "jal-xgot" } - # LOSE: As of 2002-02-08, the jal-empic test fails for target mips-ecoff. - # It appears that it broke between 2000-03-11 00:00UTC and - # 2000-03-12 00:00 UTC. - if $ecoff { run_dump_test "jal-empic" } - if $elf { - run_dump_test_arches "jal-empic-elf" [mips_arch_list_matching mips1] - run_dump_test_arches "jal-empic-elf-2" [mips_arch_list_matching mips1] - run_dump_test_arches "jal-empic-elf-3" [mips_arch_list_matching mips1] - } - run_list_test_arches "jal-range" "" [mips_arch_list_matching mips1] + run_list_test_arches "jal-range" "-32" [mips_arch_list_matching mips1] + if $has_newabi { run_dump_test "jal-newabi" } if !$aout { run_dump_test "la" } if $elf { run_dump_test "la-svr4pic" } if $elf { run_dump_test "la-xgot" } - # LOSE: As of 2002-02-08, the la-empic test fails for target mips-ecoff. - # Not sure when it first cropped up, but may be related to addition of - # "la" -> "addiu" pattern in MIPS opcode table long ago. - if $ecoff { run_dump_test "la-empic" } + if $elf { run_dump_test "lca-svr4pic" } + if $elf { run_dump_test "lca-xgot" } if !$aout { # XXX FIXME: Has mips2 and later insns with mips1 disassemblies. # (Should split and then use appropriate arch lists.) run_dump_test_arches "lb" [mips_arch_list_matching !mips2] } if $elf { - run_dump_test_arches "lb-svr4pic" [mips_arch_list_matching mips1] + run_dump_test_arches "lb-svr4pic" [mips_arch_list_matching !gpr_ilocks] + run_dump_test_arches "lb-svr4pic-ilocks" [mips_arch_list_matching gpr_ilocks] } if $elf { # Both versions specify the cpu, so we can run both regardless of @@ -453,7 +454,6 @@ if { [istarget mips*-*-*] } then { run_dump_test "lb-xgot" run_dump_test "lb-xgot-ilocks" } - if $ecoff { run_dump_test "lb-empic" } if !$aout { if !$gpr_ilocks { run_dump_test "ld" @@ -467,16 +467,12 @@ if { [istarget mips*-*-*] } then { } if $elf { run_dump_test "ld-svr4pic" } if $elf { run_dump_test "ld-xgot" } - if $ecoff { run_dump_test "ld-empic" } run_dump_test_arches "li" [mips_arch_list_matching mips1] if !$aout { run_dump_test "lifloat" } if $elf { run_dump_test "lif-svr4pic" } if $elf { run_dump_test "lif-xgot" } - # LOSE: As of 2002-02-08, the lif-empic test fails for target mips-ecoff. - # It appears that it broke between 2000-03-11 00:00UTC and - # 2000-03-12 00:00 UTC. - if $ecoff { run_dump_test "lif-empic" } run_dump_test_arches "mips4" [mips_arch_list_matching mips4] + run_dump_test_arches "mips5" [mips_arch_list_matching mips5] if $ilocks { run_dump_test "mul-ilocks" } else { @@ -492,9 +488,10 @@ if { [istarget mips*-*-*] } then { if !$aout { run_dump_test "sb" } run_dump_test "trunc" if !$aout { run_dump_test "ulh" } + run_dump_test_arches "ulh2-eb" [mips_arch_list_matching mips1] + run_dump_test_arches "ulh2-el" [mips_arch_list_matching mips1] if $elf { run_dump_test "ulh-svr4pic" } if $elf { run_dump_test "ulh-xgot" } - if $ecoff { run_dump_test "ulh-empic" } if !$aout { run_dump_test "ulw" run_dump_test "uld" @@ -502,15 +499,31 @@ if { [istarget mips*-*-*] } then { run_dump_test "usw" run_dump_test "usd" } + run_dump_test_arches "ulw2-eb" [mips_arch_list_matching !gpr_ilocks] + run_dump_test_arches "ulw2-eb-ilocks" [mips_arch_list_matching gpr_ilocks] + run_dump_test_arches "ulw2-el" [mips_arch_list_matching !gpr_ilocks] + run_dump_test_arches "ulw2-el-ilocks" [mips_arch_list_matching gpr_ilocks] + + run_dump_test_arches "uld2-eb" [mips_arch_list_matching mips3] + run_dump_test_arches "uld2-el" [mips_arch_list_matching mips3] + # The mips16 test can only be run on ELF, because only ELF # supports the necessary mips16 reloc. if { $elf && !$no_mips16 } { run_dump_test "mips16" + run_dump_test "mips16-64" + # Check MIPS16e extensions + run_dump_test_arches "mips16e" [mips_arch_list_matching mips32] # Check jalx handling run_dump_test "mips16-jalx" run_dump_test "mips-jalx" + # Check MIPS16 HI16/LO16 relocations + run_dump_test "mips16-hilo" + if $has_newabi { + run_dump_test "mips16-hilo-n32" + } } - run_list_test "mips-no-jalx" "" + run_list_test "mips-no-jalx" "-32" run_dump_test "delay" run_dump_test "nodelay" run_dump_test "mips4010" @@ -518,31 +531,48 @@ if { [istarget mips*-*-*] } then { run_dump_test "mips4100" run_dump_test "vr4111" run_dump_test "vr4120" - run_dump_test "vr4122" + run_dump_test "vr4120-2" + run_dump_test "vr4130" run_dump_test "vr5400" run_dump_test "vr5500" + run_dump_test "rm7000" run_dump_test "perfcount" run_dump_test "lineno" run_dump_test "sync" run_dump_test_arches "mips32" [mips_arch_list_matching mips32] + run_dump_test_arches "mips32-sf32" [mips_arch_list_matching mips32] + run_dump_test_arches "mips32r2" [mips_arch_list_matching mips32r2] - run_list_test_arches "mips32r2-ill" "" [mips_arch_list_matching mips32r2] + run_list_test_arches "mips32r2-ill" "-32" \ + [mips_arch_list_matching mips32r2 gpr32] + run_list_test_arches "mips32r2-ill-fp64" "-mabi=o64" \ + [mips_arch_list_matching mips32r2 gpr64] run_dump_test_arches "mips64" [mips_arch_list_matching mips64] - run_dump_test "mips64-mips3d" - run_dump_test_arches "mips64-mips3d-incl" [mips_arch_list_matching mips3d] + run_dump_test_arches "mips64r2" [mips_arch_list_matching mips64r2] + run_list_test_arches "mips64r2-ill" "" [mips_arch_list_matching mips64r2] - run_dump_test "mips64-mdmx" - run_dump_test "sb1-ext-mdmx" - run_dump_test "sb1-ext-ps" + run_dump_test "set-arch" + + if { !$addr32 } { + run_dump_test "mips64-mips3d" + run_dump_test_arches "mips64-mips3d-incl" [mips_arch_list_matching mips3d] + + run_dump_test "mips64-mdmx" + run_dump_test "sb1-ext-mdmx" + run_dump_test "sb1-ext-ps" + } run_dump_test "relax" + run_dump_test "relax-swap1-mips1" + run_dump_test "relax-swap1-mips2" + run_dump_test "relax-swap2" - run_list_test "illegal" "" - run_list_test "baddata1" "" + run_list_test "illegal" "-32" + run_list_test "baddata1" "-32" # LOSE: As of 2002-02-08, the next 4 tests fail for target mips-ecoff. # It's unknown whether they _should_ pass as-is, or whether different @@ -573,6 +603,7 @@ if { [istarget mips*-*-*] } then { run_dump_test "elf_arch_mips32" run_dump_test "elf_arch_mips32r2" run_dump_test "elf_arch_mips64" + run_dump_test "elf_arch_mips64r2" # Verify that ASE markings are handled properly. if { !$no_mips16 } { run_dump_test "elf_ase_mips16" } @@ -587,20 +618,17 @@ if { [istarget mips*-*-*] } then { run_dump_test "mips-abi32-pic2" run_dump_test "elf${el}-rel" - if {[istarget mips64*-*-*] || [istarget mipsisa32*-*-*] - || [istarget mipsisa64*-*-*]} { - run_dump_test "elf${el}-rel2" - } else { - run_dump_test "e32${el}-rel2" - } + run_dump_test_arches "elf${el}-rel2" [mips_arch_list_matching gpr64] + run_dump_test "e32${el}-rel2" run_dump_test "elf${el}-rel3" - if {[istarget mips64*-*-*]} { - run_dump_test "elf-rel4" - } else { - run_dump_test "e32-rel4" - } + run_dump_test_arches "elf-rel4" [mips_arch_list_matching gpr64] + run_dump_test "e32-rel4" run_dump_test "elf-rel5" run_dump_test "elf-rel6" + if $has_newabi { + run_dump_test "elf-rel6-n32" + run_dump_test "elf-rel6-n64" + } run_dump_test "elf-rel7" run_dump_test "elf-rel8" run_dump_test "elf-rel9" @@ -611,17 +639,44 @@ if { [istarget mips*-*-*] } then { run_dump_test "elf-rel12" run_dump_test "elf-rel13" run_dump_test "elf-rel14" - run_dump_test "${tmips}${el}empic" - run_dump_test "empic2" - run_dump_test "empic3_e" - run_dump_test "empic3_g1" - run_dump_test "empic3_g2" + + if $has_newabi { + run_dump_test "elf-rel15" + run_dump_test "elf-rel16" + + run_dump_test "elf-rel-got-n32" + run_dump_test "elf-rel-xgot-n32" + run_dump_test "elf-rel-got-n64" + run_dump_test "elf-rel-xgot-n64" + } + run_dump_test "elf-rel17" + if $has_newabi { + run_dump_test "elf-rel18" + } + run_dump_test "elf-rel19" + run_dump_test "elf-rel20" + if $has_newabi { + run_dump_test "elf-rel21" + run_dump_test "elf-rel22" + run_dump_test "elf-rel23" + run_dump_test "elf-rel23a" + run_dump_test "elf-rel23b" + run_dump_test "elf-rel24" + } + + run_dump_test "elf-rel25" + run_dump_test "elf-rel25a" + run_dump_test "elf-rel26" + if { !$no_mips16 } { run_dump_test "${tmips}mips${el}16-e" run_dump_test "${tmips}mips${el}16-f" } run_dump_test "elf-consthilo" run_dump_test "expr1" + + run_list_test "tls-ill" "-32" + run_dump_test "tls-o32" } if $has_newabi { @@ -644,14 +699,84 @@ if { [istarget mips*-*-*] } then { run_dump_test "cp0-names-mips32" run_dump_test "cp0-names-mips32r2" run_dump_test "cp0-names-mips64" + run_dump_test "cp0-names-mips64r2" run_dump_test "cp0-names-sb1" run_dump_test "cp0sel-names-numeric" run_dump_test "cp0sel-names-mips32" run_dump_test "cp0sel-names-mips32r2" run_dump_test "cp0sel-names-mips64" + run_dump_test "cp0sel-names-mips64r2" run_dump_test "cp0sel-names-sb1" run_dump_test "hwr-names-numeric" run_dump_test "hwr-names-mips32r2" + run_dump_test "hwr-names-mips64r2" + + run_dump_test "ldstla-32" + run_dump_test "ldstla-32-mips3" + run_dump_test "ldstla-32-shared" + run_dump_test "ldstla-32-mips3-shared" + run_list_test "ldstla-32-1" "-mabi=32" \ + "MIPS ld-st-la bad constants (ABI o32)" + run_list_test "ldstla-32-mips3-1" "-mabi=32" \ + "MIPS ld-st-la bad constants (ABI o32, mips3)" + run_list_test "ldstla-32-1" "-KPIC -mabi=32" \ + "MIPS ld-st-la bad constants (ABI o32, shared)" + run_list_test "ldstla-32-mips3-1" "-KPIC -mabi=32" \ + "MIPS ld-st-la bad constants (ABI o32, mips3, shared)" + run_dump_test "ldstla-eabi64" + if $has_newabi { + run_dump_test "ldstla-n64" + run_dump_test "ldstla-n64-shared" + run_dump_test "ldstla-n64-sym32" + } + + run_dump_test "macro-warn-1" + run_dump_test "macro-warn-2" + run_dump_test "macro-warn-3" + run_dump_test "macro-warn-4" + if $has_newabi { + run_dump_test "macro-warn-1-n32" + run_dump_test "macro-warn-2-n32" + } + + run_dump_test "noat-1" + run_list_test "noat-2" "" + run_list_test "noat-3" "" + run_list_test "noat-4" "" + run_list_test "noat-5" "" + run_list_test "noat-6" "" + run_list_test "noat-7" "" + + run_dump_test "at-1" + run_list_test "at-2" "-32 -mips1" "MIPS at-2" + + run_dump_test_arches "smartmips" [mips_arch_list_matching mips32 !gpr64] + run_dump_test_arches "mips32-dsp" [mips_arch_list_matching mips32r2] + run_dump_test_arches "mips32-dspr2" [mips_arch_list_matching mips32r2] + run_dump_test_arches "mips64-dsp" [mips_arch_list_matching mips64r2] + run_dump_test_arches "mips32-mt" [mips_arch_list_matching mips32r2 !gpr64] + + if { $elf && !$no_mips16 } { + run_dump_test "mips16-dwarf2" + if $has_newabi { + run_dump_test "mips16-dwarf2-n32" + } + } + if { !$no_mips16 } { + run_dump_test "mips16e-jrc" + run_dump_test "mips16e-save" + run_dump_test "mips16e-64" + run_list_test "mips16e-64" "-march=mips32 -32" + run_dump_test "mips16-intermix" + } + run_dump_test "vxworks1" + run_dump_test "vxworks1-xgot" + run_dump_test "vxworks1-el" + run_dump_test "vxworks1-xgot-el" + + run_dump_test "noreorder" + run_dump_test "align" + run_dump_test "odd-float" }