Commit | Line | Data |
---|---|---|
252b5132 RH |
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 | ||
b96d3a20 JH |
17 | proc gas_64_check { } { |
18 | global NM | |
19 | global NMFLAGS | |
20 | global srcdir | |
252b5132 | 21 | |
b96d3a20 | 22 | catch "exec $srcdir/lib/run $NM $NMFLAGS --help" nm_help |
c0b22597 | 23 | return [regexp "targets:.*x86-64" $nm_help] |
b96d3a20 | 24 | } |
6e0b89ee | 25 | |
b96d3a20 JH |
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 | |
c0b22597 | 32 | return [regexp "targets:.*i386" $nm_help] |
b96d3a20 JH |
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" | |
252b5132 RH |
41 | |
42 | run_list_test "float" "-al" | |
43 | run_list_test "general" "-al --listing-lhs-width=2" | |
44 | run_list_test "inval" "-al" | |
4cc91dba L |
45 | run_list_test "segment" "-al" |
46 | run_list_test "inval-seg" "-al" | |
252b5132 | 47 | run_list_test "modrm" "-al --listing-lhs-width=2" |
3f9ed93b | 48 | run_dump_test "naked" |
252b5132 | 49 | run_dump_test "opcode" |
cc5ca5ce | 50 | run_dump_test "intel" |
be66c492 | 51 | run_dump_test "intel16" |
9306ca4a JB |
52 | run_list_test "intelbad" "" |
53 | run_dump_test "intelok" | |
252b5132 RH |
54 | run_dump_test "prefix" |
55 | run_dump_test "amd" | |
c608c12e | 56 | run_dump_test "katmai" |
a3d1c52b | 57 | run_dump_test "jump" |
de9d65b5 JH |
58 | run_dump_test "ssemmx2" |
59 | run_dump_test "sse2" | |
4dd8d67b | 60 | run_dump_test "sub" |
ca164297 | 61 | run_dump_test "prescott" |
2033b4b9 | 62 | run_dump_test "sib" |
90700ea2 | 63 | run_dump_test "vmx" |
22cbf2e7 | 64 | run_dump_test "suffix" |
9cd96992 | 65 | run_dump_test "immed32" |
4d1bb795 | 66 | run_dump_test "equ" |
d2b2c203 DJ |
67 | |
68 | if {![istarget "*-*-aix*"] | |
69 | && (![is_elf_format] || [istarget "*-*-linux*"] | |
70 | || [istarget "*-*-netbsd*"] | |
71 | || [istarget "*-*-freebsd*"] | |
eac338cf PB |
72 | || [istarget "*-*-netware*"] |
73 | || [istarget "*-*-vxworks*"])} { | |
d2b2c203 DJ |
74 | # Don't run this test on targets where '/' starts comments. |
75 | run_dump_test "divide" | |
76 | } | |
77 | ||
26f07657 | 78 | run_dump_test "padlock" |
c4a530c5 JB |
79 | run_dump_test "crx" |
80 | run_list_test "cr-err" "" | |
30123838 | 81 | run_dump_test "svme" |
252b5132 | 82 | |
a3d1c52b AM |
83 | # These tests require support for 8 and 16 bit relocs, |
84 | # so we only run them for ELF and COFF targets. | |
62e88f3c | 85 | if {[is_elf_format] || [istarget "*-*-coff*"]} then { |
252b5132 | 86 | run_dump_test "reloc" |
a3d1c52b | 87 | run_dump_test "jump16" |
252b5132 | 88 | run_list_test "white" "-al --listing-lhs-width=3" |
3d983505 NC |
89 | |
90 | # These tests should in theory work for PE targets as well, | |
91 | # but the relocs we currently produce are slightly different | |
92 | # from those produced for ELF/COFF based toolchains. | |
93 | # So for now we ignore PE targets. | |
94 | run_dump_test "pcrel" | |
95 | run_dump_test "absrel" | |
252b5132 | 96 | } |
00687228 | 97 | |
62e88f3c NC |
98 | # ELF specific tests |
99 | if [is_elf_format] then { | |
100 | # PIC is only supported on ELF targets. | |
101 | run_dump_test "intelpic" | |
102 | ||
00687228 | 103 | run_dump_test "relax" |
2bbd9c25 | 104 | run_dump_test "gotpc" |
13ae64f3 JJ |
105 | run_dump_test "tlsd" |
106 | run_dump_test "tlspic" | |
107 | run_dump_test "tlsnopic" | |
8a75718c | 108 | run_dump_test "bss" |
3956db08 JB |
109 | run_dump_test "reloc32" |
110 | run_list_test "reloc32" "--defsym _bad_=1" | |
4fa24527 | 111 | run_dump_test "mixed-mode-reloc32" |
00687228 L |
112 | } |
113 | ||
6482c264 NC |
114 | # This is a PE specific test. |
115 | if { [istarget "*-*-cygwin*"] || [istarget "*-*-pe"] | |
116 | || [istarget "*-*-mingw*"] | |
117 | } then { | |
118 | run_dump_test "secrel" | |
119 | } | |
120 | ||
b96d3a20 JH |
121 | set ASFLAGS "$old_ASFLAGS" |
122 | } | |
6e0b89ee | 123 | |
fc847f15 | 124 | if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] then { |
b96d3a20 JH |
125 | |
126 | global ASFLAGS | |
127 | set old_ASFLAGS "$ASFLAGS" | |
128 | set ASFLAGS "$ASFLAGS --64" | |
129 | ||
130 | run_dump_test "x86_64" | |
20f0a1fc | 131 | run_dump_test "x86-64-addr32" |
831b02f6 | 132 | run_dump_test "x86-64-opcode" |
ae8887b5 | 133 | run_dump_test "x86-64-pcrel" |
20f0a1fc | 134 | run_dump_test "x86-64-rip" |
1a114b12 JB |
135 | run_dump_test "x86-64-stack" |
136 | run_dump_test "x86-64-stack-intel" | |
137 | run_dump_test "x86-64-stack-suffix" | |
831b02f6 | 138 | run_list_test "x86-64-inval" "-al" |
4cc91dba L |
139 | run_list_test "x86-64-segment" "-al" |
140 | run_list_test "x86-64-inval-seg" "-al" | |
003519a7 | 141 | run_dump_test "x86-64-branch" |
30123838 | 142 | run_dump_test "svme64" |
90700ea2 | 143 | run_dump_test "x86-64-vmx" |
9cd96992 | 144 | run_dump_test "immed64" |
b96d3a20 | 145 | |
d2b2c203 DJ |
146 | # For ELF targets verify that @unwind works. |
147 | if { ([istarget "*-*-elf*"] || [istarget "*-*-linux*"] | |
148 | || [istarget "*-*-solaris2.*"]) | |
149 | && ![istarget *-*-linux*aout*] | |
150 | && ![istarget *-*-linux*oldld*] } then { | |
151 | run_dump_test "x86-64-unwind" | |
152 | } | |
153 | ||
3956db08 JB |
154 | # ELF specific tests |
155 | if [is_elf_format] then { | |
156 | run_dump_test "reloc64" | |
157 | run_list_test "reloc64" "--defsym _bad_=1" | |
4fa24527 | 158 | run_dump_test "mixed-mode-reloc64" |
3956db08 JB |
159 | } |
160 | ||
b96d3a20 | 161 | set ASFLAGS "$old_ASFLAGS" |
252b5132 | 162 | } |