]>
Commit | Line | Data |
---|---|---|
1 | # | |
2 | # i386 tests | |
3 | # | |
4 | proc run_list_test { name opts } { | |
5 | global srcdir subdir | |
6 | set testname "i386 $name" | |
7 | set file $srcdir/$subdir/$name | |
8 | gas_run ${name}.s $opts ">&dump.out" | |
9 | if { [regexp_diff "dump.out" "${file}.l"] } then { | |
10 | fail $testname | |
11 | verbose "output is [file_contents "dump.out"]" 2 | |
12 | return | |
13 | } | |
14 | pass $testname | |
15 | } | |
16 | ||
17 | proc gas_64_check { } { | |
18 | global NM | |
19 | global NMFLAGS | |
20 | global srcdir | |
21 | ||
22 | catch "exec $srcdir/lib/run $NM $NMFLAGS --help" nm_help | |
23 | return [regexp "targets:.*x86-64" $nm_help]; | |
24 | } | |
25 | ||
26 | proc gas_32_check { } { | |
27 | global NM | |
28 | global NMFLAGS | |
29 | global srcdir | |
30 | ||
31 | catch "exec $srcdir/lib/run $NM $NMFLAGS --help" nm_help | |
32 | return [regexp "targets:.*i386" $nm_help]; | |
33 | } | |
34 | ||
35 | ||
36 | if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]] then { | |
37 | ||
38 | global ASFLAGS | |
39 | set old_ASFLAGS "$ASFLAGS" | |
40 | set ASFLAGS "$ASFLAGS --32" | |
41 | ||
42 | run_list_test "float" "-al" | |
43 | run_list_test "general" "-al --listing-lhs-width=2" | |
44 | run_list_test "inval" "-al" | |
45 | run_list_test "modrm" "-al --listing-lhs-width=2" | |
46 | run_dump_test "naked" | |
47 | run_dump_test "opcode" | |
48 | run_dump_test "intel" | |
49 | run_dump_test "prefix" | |
50 | run_dump_test "amd" | |
51 | run_dump_test "katmai" | |
52 | run_dump_test "jump" | |
53 | run_dump_test "ssemmx2" | |
54 | run_dump_test "sse2" | |
55 | ||
56 | # PIC is only supported on ELF targets. | |
57 | if { ([istarget "*-*-elf*"] || [istarget "*-*-linux*"] ) | |
58 | && ![istarget *-*-linux*aout*] | |
59 | && ![istarget *-*-linux*oldld*] } then { | |
60 | run_dump_test "intelpic" | |
61 | } | |
62 | ||
63 | # These tests require support for 8 and 16 bit relocs, | |
64 | # so we only run them for ELF and COFF targets. | |
65 | if {[istarget "*-*-elf*"] || [istarget "*-*-linux*"] || [istarget "*-*-coff*"]} then { | |
66 | run_dump_test "reloc" | |
67 | run_dump_test "jump16" | |
68 | run_list_test "white" "-al --listing-lhs-width=3" | |
69 | } | |
70 | ||
71 | # Do they only work for ELF? | |
72 | if { ([istarget "*-*-elf*"] | |
73 | || [istarget "*-*-linux*"] | |
74 | && ![istarget *-*-linux*aout*] | |
75 | && ![istarget *-*-linux*oldld*]) | |
76 | } then { | |
77 | run_dump_test "relax" | |
78 | run_dump_test "tlsd" | |
79 | run_dump_test "tlspic" | |
80 | run_dump_test "tlsnopic" | |
81 | } | |
82 | ||
83 | set ASFLAGS "$old_ASFLAGS" | |
84 | } | |
85 | ||
86 | if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] then { | |
87 | ||
88 | global ASFLAGS | |
89 | set old_ASFLAGS "$ASFLAGS" | |
90 | set ASFLAGS "$ASFLAGS --64" | |
91 | ||
92 | run_dump_test "x86_64" | |
93 | run_dump_test "x86-64-opcode" | |
94 | run_list_test "x86-64-inval" "-al" | |
95 | ||
96 | set ASFLAGS "$old_ASFLAGS" | |
97 | } |