📄 basic.exp
字号:
gas_start "logical.s" "-al" # Instead of having a variable for each match string just increment the # total number of matches seen. That's simpler when testing large numbers # of instructions (as these tests to). while 1 { expect { -re "^ +\[0-9\]+ 0000 4531\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 0002 C5360700\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 0006 2530\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 0008 0531\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 000a 85360700\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 000e 2531\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 0010 A5360700\[^\n\]*\n" { set x [expr $x+1] } -re "\[^\n\]*\n" { } timeout { perror "timeout\n"; break } eof { break } } } # This was intended to do any cleanup necessary. It kinda looks like it # isn't needed, but just in case, please keep it in for now. gas_finish # Did we find what we were looking for? If not, flunk it. if [expr $x==7] then { pass $testname } else { fail $testname }}proc do_mem {} { set testname "mem.s: memory operations" set x 0 gas_start "mem.s" "-al" # Instead of having a variable for each match string just increment the # total number of matches seen. That's simpler when testing large numbers # of instructions (as these tests to). while 1 { expect { -re "^ +\[0-9\]+ 0000 05370500\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 0004 25370400\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 0008 25370500\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 000c 4033\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 000e 4034\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 0010 4035\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 0012 462F0500\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 0016 662F0400\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 001a 662F0500\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 001e C033\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 0020 C034\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 0022 4135\[^\n\]*\n" { set x [expr $x+1] } -re "\[^\n\]*\n" { } timeout { perror "timeout\n"; break } eof { break } } } # This was intended to do any cleanup necessary. It kinda looks like it # isn't needed, but just in case, please keep it in for now. gas_finish # Did we find what we were looking for? If not, flunk it. if [expr $x==12] then { pass $testname } else { fail $testname }}proc do_misc {} { set testname "misc.s: misc operations" set x 0 gas_start "misc.s" "-al" # Instead of having a variable for each match string just increment the # total number of matches seen. That's simpler when testing large numbers # of instructions (as these tests to). while 1 { expect { -re "^ +\[0-9\]+ 0000 E0076001\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 0004 E0876001\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 0008 E0072001\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 000c 0000\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 000e E0074001\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 0012 E0070001\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 0016 FF070001\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 001a E72F2000\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 001e E53F4000\[^\n\]*\n" { set x [expr $x+1] } -re "\[^\n\]*\n" { } timeout { perror "timeout\n"; break } eof { break } } } # This was intended to do any cleanup necessary. It kinda looks like it # isn't needed, but just in case, please keep it in for now. gas_finish # Did we find what we were looking for? If not, flunk it. if [expr $x==9] then { pass $testname } else { fail $testname }}proc do_move {} { set testname "move.s: move operations" set x 0 gas_start "move.s" "-al" # Instead of having a variable for each match string just increment the # total number of matches seen. That's simpler when testing large numbers # of instructions (as these tests to). while 1 { expect { -re "^ +\[0-9\]+ 0000 0530\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 0002 0532\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 0004 25360700\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 0008 45360700\[^\n\]*\n" { set x [expr $x+1] } -re "\[^\n\]*\n" { } timeout { perror "timeout\n"; break } eof { break } } } # This was intended to do any cleanup necessary. It kinda looks like it # isn't needed, but just in case, please keep it in for now. gas_finish # Did we find what we were looking for? If not, flunk it. if [expr $x==4] then { pass $testname } else { fail $testname }}proc do_hilo {} { set testname "hilo.s: hilo tests" set x 0 gas_start "hilo.s" "-al" # Instead of having a variable for each match string just increment the # total number of matches seen. That's simpler when testing large numbers # of instructions (as these tests to). while 1 { expect { -re "^ +\[0-9\]+ 0000 200EEFBE\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 0004 410EAEDE\[^\n\]*\n" { set x [expr $x+1] } -re "^ +\[0-9\]+ 0008 410EADDE\[^\n\]*\n" { set x [expr $x+1] } -re "\[^\n\]*\n" { } timeout { perror "timeout\n"; break } eof { break } } } # This was intended to do any cleanup necessary. It kinda looks like it # isn't needed, but just in case, please keep it in for now. gas_finish # Did we find what we were looking for? If not, flunk it. if [expr $x==3] then { pass $testname } else { fail $testname }}proc do_simple_reloc_tests {} { set testname "reloc.s: Test for proper relocations (part 2)" set x 0 if [gas_test_old "reloc.s" "" "Test for proper relocation (part 1)"] then { objdump_start_no_subdir "a.out" "-r" while 1 { expect { -re "^00000002\[^\n\]*R_V850_LO16\[^\n\]*\n" { set x [expr $x+1] } -re "^00000006\[^\n\]*R_V850_HI16_S\[^\n\]*\n" { set x [expr $x+1] } -re "^0000000a\[^\n\]*R_V850_HI16\[^\n\]*\n" { set x [expr $x+1] } -re "^0000000e\[^\n\]*R_V850_ZDA_16_16_OFFSET\[^\n\]*\n" { set x [expr $x+1] } -re "^00000012\[^\n\]*R_V850_TDA_16_16_OFFSET\[^\n\]*\n" { set x [expr $x+1] } -re "^00000016\[^\n\]*R_V850_SDA_16_16_OFFSET\[^\n\]*\n" { set x [expr $x+1] } -re "\[^\n\]*\n" { } timeout { perror "timeout\n"; break } eof { break } } } } # This was intended to do any cleanup necessary. It kinda looks like it # isn't needed, but just in case, please keep it in for now. objdump_finish # Did we find what we were looking for? If not, flunk it. if [expr $x==6] then { pass $testname } else { fail $testname }}if [istarget v850*-*-*] then { # Test the basic instruction parser. do_arith do_bit do_branch do_compare do_jumps do_logical do_mem do_misc do_move # Make sure we handle lo() hi() and hi0() correctly. do_hilo # Check for proper relocs on lo, hi, hi0, zdaoff, tdaoff and sdaoff # expressions do_simple_reloc_tests gas_test "hilo2.s" "" "" "hi/lo regression test" gas_test "fepsw.s" "" "" "eqsw regression test" gas_test_error "range.s" "-mwarn-signed-overflow" "Check for range error on byte load/store" run_dump_test "v850e1" run_dump_test "split-lo16"}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -