diff options
Diffstat (limited to 'gas')
-rw-r--r-- | gas/testsuite/ChangeLog | 9 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/general.l | 156 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/general.s | 58 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/i386.exp | 6 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/jump.d | 26 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/jump.s | 24 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/jump16.d | 40 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/jump16.s | 43 |
8 files changed, 175 insertions, 187 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index c6c1e82..e631626 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2000-01-21 Alan Modra <alan@spri.levels.unisa.edu.au> + + * gas/i386/general.{s,l}: Move 16 bit jmp and call tests from here + * gas/i386/jump16.{s,d}: To here. + * gas/i386/jump.{s,d}: New files. Duplicate 32 bit jmp and call + tests in general.s so that objdump is exercised. + + * gas/i386/i386.exp: Call new tests. + 2000-01-15 Alan Modra <alan@spri.levels.unisa.edu.au> * gas/i386/general.{s,l}: Add jmp and call tests for .code16gcc, diff --git a/gas/testsuite/gas/i386/general.l b/gas/testsuite/gas/i386/general.l index 4e0fb0a..bbb59ef 100644 --- a/gas/testsuite/gas/i386/general.l +++ b/gas/testsuite/gas/i386/general.l @@ -35,26 +35,6 @@ .*:180: Warning:.* .*:182: Warning:.* .*:184: Warning:.* -.*:191: Warning:.* -.*:193: Warning:.* -.*:195: Warning:.* -.*:197: Warning:.* -.*:199: Warning:.* -.*:205: Warning:.* -.*:207: Warning:.* -.*:209: Warning:.* -.*:211: Warning:.* -.*:213: Warning:.* -.*:220: Warning:.* -.*:222: Warning:.* -.*:224: Warning:.* -.*:226: Warning:.* -.*:228: Warning:.* -.*:234: Warning:.* -.*:236: Warning:.* -.*:238: Warning:.* -.*:240: Warning:.* -.*:242: Warning:.* 1 .psize 0 2 .text 3 # test various segment reg insns @@ -239,123 +219,45 @@ 156 0160 67668984 248C0000 movl %eax,140\(%esp\) 156 00 157 - 158 .extern xxx + 158 .code32 159 0169 EB98 jmp 1b - 160 016b E9FEFF jmp xxx - 161 016e FF260000 jmp \*xxx - 162 0172 FF260000 jmp xxx\(,1\) + 160 016b E9FCFFFF FF jmp xxx + 161 0170 FF250000 0000 jmp \*xxx + 162 0176 FF250000 0000 jmp xxx\(,1\) .*Warning:.* - 163 0176 66FFE7 jmp \*%edi - 164 0179 66FFE7 jmp %edi + 163 017c FFE7 jmp \*%edi + 164 017e FFE7 jmp %edi .*Warning:.* - 165 017c 67FF27 jmp \*\(%edi\) - 166 017f 67FF27 jmp \(%edi\) + 165 0180 FF27 jmp \*\(%edi\) + 166 0182 FF27 jmp \(%edi\) .*Warning:.* - 167 0182 67FFAF00 000000 ljmp \*xxx\(%edi\) - 168 0189 67FFAF00 000000 ljmp xxx\(%edi\) + 167 0184 FF2CBD00 000000 ljmp \*xxx\(,%edi,4\) + 168 018b FF2CBD00 000000 ljmp xxx\(,%edi,4\) .*Warning:.* - 169 0190 FF2E0000 ljmp \*xxx - 170 0194 FF2E0000 ljmp xxx\(,1\) + 169 0192 FF2D0000 0000 ljmp \*xxx + 170 0198 FF2D0000 0000 ljmp xxx\(,1\) .*Warning:.* - 171 0198 EA000034 12 ljmp \$0x1234,\$xxx + 171 019e EA000000 003412 ljmp \$0x1234,\$xxx 172 - 173 019d 66E860FF FFFF call 1b - 174 01a3 66E8FCFF FFFF call xxx - 175 01a9 66FF1600 00 call \*xxx - 176 01ae 66FF1600 00 call xxx\(,1\) + 173 01a5 E859FFFF FF call 1b + 174 01aa E8FCFFFF FF call xxx + 175 01af FF150000 0000 call \*xxx + 176 01b5 FF150000 0000 call xxx\(,1\) .*Warning:.* - 177 01b3 66FFD7 call \*%edi - 178 01b6 66FFD7 call %edi + 177 01bb FFD7 call \*%edi + 178 01bd FFD7 call %edi .*Warning:.* - 179 01b9 6766FF17 call \*\(%edi\) - 180 01bd 6766FF17 call \(%edi\) + 179 01bf FF17 call \*\(%edi\) + 180 01c1 FF17 call \(%edi\) .*Warning:.* - 181 01c1 6766FF9F 00000000 lcall \*xxx\(%edi\) - 182 01c9 6766FF9F 00000000 lcall xxx\(%edi\) + 181 01c3 FF1CBD00 000000 lcall \*xxx\(,%edi,4\) + 182 01ca FF1CBD00 000000 lcall xxx\(,%edi,4\) .*Warning:.* - 183 01d1 66FF1E00 00 lcall \*xxx - 184 01d6 66FF1E00 00 lcall xxx\(,1\) + 183 01d1 FF1D0000 0000 lcall \*xxx + 184 01d7 FF1D0000 0000 lcall xxx\(,1\) .*Warning:.* - 185 01db 669A0000 00003412 lcall \$0x1234,\$xxx + 185 01dd 9A000000 003412 lcall \$0x1234,\$xxx 186 - 187 .code16 - 188 01e3 E91DFF jmp 1b - 189 01e6 E9FEFF jmp xxx - 190 01e9 FF260000 jmp \*xxx - 191 01ed FF260000 jmp xxx\(,1\) -.*Warning:.* - 192 01f1 FFE7 jmp \*%di - 193 01f3 FFE7 jmp %di -.*Warning:.* - 194 01f5 FF25 jmp \*\(%di\) - 195 01f7 FF25 jmp \(%di\) -.*Warning:.* - 196 01f9 FFAD0000 ljmp \*xxx\(%di\) - 197 01fd FFAD0000 ljmp xxx\(%di\) -.*Warning:.* - 198 0201 FF2E0000 ljmp \*xxx - 199 0205 FF2E0000 ljmp xxx\(,1\) -.*Warning:.* - 200 0209 EA000034 12 ljmp \$0x1234,\$xxx - 201 - 202 020e E8F2FE call 1b - 203 0211 E8FEFF call xxx - 204 0214 FF160000 call \*xxx - 205 0218 FF160000 call xxx\(,1\) -.*Warning:.* - 206 021c FFD7 call \*%di - 207 021e FFD7 call %di -.*Warning:.* - 208 0220 FF15 call \*\(%di\) - 209 0222 FF15 call \(%di\) -.*Warning:.* - 210 0224 FF9D0000 lcall \*xxx\(%di\) - 211 0228 FF9D0000 lcall xxx\(%di\) -.*Warning:.* - 212 022c FF1E0000 lcall \*xxx - 213 0230 FF1E0000 lcall xxx\(,1\) -.*Warning:.* - 214 0234 9A000034 12 lcall \$0x1234,\$xxx - 215 - 216 .code32 - 217 0239 E9C5FEFF FF jmp 1b - 218 023e E9FCFFFF FF jmp xxx - 219 0243 FF250000 0000 jmp \*xxx - 220 0249 FF250000 0000 jmp xxx\(,1\) -.*Warning:.* - 221 024f FFE7 jmp \*%edi - 222 0251 FFE7 jmp %edi -.*Warning:.* - 223 0253 FF27 jmp \*\(%edi\) - 224 0255 FF27 jmp \(%edi\) -.*Warning:.* - 225 0257 FF2CBD00 000000 ljmp \*xxx\(,%edi,4\) - 226 025e FF2CBD00 000000 ljmp xxx\(,%edi,4\) -.*Warning:.* - 227 0265 FF2D0000 0000 ljmp \*xxx - 228 026b FF2D0000 0000 ljmp xxx\(,1\) -.*Warning:.* - 229 0271 EA000000 003412 ljmp \$0x1234,\$xxx - 230 - 231 0278 E886FEFF FF call 1b - 232 027d E8FCFFFF FF call xxx - 233 0282 FF150000 0000 call \*xxx - 234 0288 FF150000 0000 call xxx\(,1\) -.*Warning:.* - 235 028e FFD7 call \*%edi - 236 0290 FFD7 call %edi -.*Warning:.* - 237 0292 FF17 call \*\(%edi\) - 238 0294 FF17 call \(%edi\) -.*Warning:.* - 239 0296 FF1CBD00 000000 lcall \*xxx\(,%edi,4\) - 240 029d FF1CBD00 000000 lcall xxx\(,%edi,4\) -.*Warning:.* - 241 02a4 FF1D0000 0000 lcall \*xxx - 242 02aa FF1D0000 0000 lcall xxx\(,1\) -.*Warning:.* - 243 02b0 9A000000 003412 lcall \$0x1234,\$xxx - 244 - 245 # Force a good alignment. - 246 02b7 00000000 00000000 .p2align 4,0 - 246 00 + 187 # Force a good alignment. + 188 01e4 00000000 00000000 .p2align 4,0 + 188 00000000 diff --git a/gas/testsuite/gas/i386/general.s b/gas/testsuite/gas/i386/general.s index d8be937..c794157 100644 --- a/gas/testsuite/gas/i386/general.s +++ b/gas/testsuite/gas/i386/general.s @@ -155,64 +155,6 @@ leal -1760(%ebp),%ebx movl %eax,140(%esp) -.extern xxx - jmp 1b - jmp xxx - jmp *xxx - jmp xxx(,1) - jmp *%edi - jmp %edi - jmp *(%edi) - jmp (%edi) - ljmp *xxx(%edi) - ljmp xxx(%edi) - ljmp *xxx - ljmp xxx(,1) - ljmp $0x1234,$xxx - - call 1b - call xxx - call *xxx - call xxx(,1) - call *%edi - call %edi - call *(%edi) - call (%edi) - lcall *xxx(%edi) - lcall xxx(%edi) - lcall *xxx - lcall xxx(,1) - lcall $0x1234,$xxx - -.code16 - jmp 1b - jmp xxx - jmp *xxx - jmp xxx(,1) - jmp *%di - jmp %di - jmp *(%di) - jmp (%di) - ljmp *xxx(%di) - ljmp xxx(%di) - ljmp *xxx - ljmp xxx(,1) - ljmp $0x1234,$xxx - - call 1b - call xxx - call *xxx - call xxx(,1) - call *%di - call %di - call *(%di) - call (%di) - lcall *xxx(%di) - lcall xxx(%di) - lcall *xxx - lcall xxx(,1) - lcall $0x1234,$xxx - .code32 jmp 1b jmp xxx diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index 9401136..a431bb6 100644 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -26,11 +26,13 @@ if [istarget "i*86-*-*"] then { run_dump_test "prefix" run_dump_test "amd" run_dump_test "katmai" + run_dump_test "jump" - # The reloc and white tests require support for 8 and 16 bit - # relocs, so we only run them for ELF and COFF targets. + # These tests require support for 8 and 16 bit relocs, + # so we only run them for ELF and COFF targets. if {[istarget "*-*-elf*"] || [istarget "*-*-linux*"] || [istarget "*-*-coff*"]} then { run_dump_test "reloc" + run_dump_test "jump16" run_list_test "white" "-al --listing-lhs-width=3" } } diff --git a/gas/testsuite/gas/i386/jump.d b/gas/testsuite/gas/i386/jump.d new file mode 100644 index 0000000..90e893e --- /dev/null +++ b/gas/testsuite/gas/i386/jump.d @@ -0,0 +1,26 @@ +#name: i386 jump +#objdump: -drw + +.*: +file format .*i386.* + +Disassembly of section .text: + +0+000 <.text>: + 0: eb fe [ ]*jmp (0x0|0 <.text>) + 2: e9 (fc|f9) ff ff ff [ ]*jmp (0x3|0 <.text>) 3: (R_386_PC)?(DISP)?32 xxx + 7: ff 25 00 00 00 00 [ ]*jmp \*0x0 9: (R_386_)?(dir)?32 xxx + d: ff e7 [ ]*jmp \*%edi + f: ff 27 [ ]*jmp \*\(%edi\) + 11: ff 2c bd 00 00 00 00 [ ]*ljmp \*0x0\(,%edi,4\) 14: (R_386_)?(dir)?32 xxx + 18: ff 2d 00 00 00 00 [ ]*ljmp \*0x0 1a: (R_386_)?(dir)?32 xxx + 1e: ea 00 00 00 00 34 12 [ ]*ljmp \$0x1234,\$0x0 1f: (R_386_)?(dir)?32 xxx + 25: e8 d6 ff ff ff [ ]*call (0x0|0 <.text>) + 2a: e8 (fc|d1) ff ff ff [ ]*call (0x2b|0 <.text>) 2b: (R_386_PC)?(DISP)?32 xxx + 2f: ff 15 00 00 00 00 [ ]*call \*0x0 31: (R_386_)?(dir)?32 xxx + 35: ff d7 [ ]*call \*%edi + 37: ff 17 [ ]*call \*\(%edi\) + 39: ff 1c bd 00 00 00 00 [ ]*lcall \*0x0\(,%edi,4\) 3c: (R_386_)?(dir)?32 xxx + 40: ff 1d 00 00 00 00 [ ]*lcall \*0x0 42: (R_386_)?(dir)?32 xxx + 46: 9a 00 00 00 00 34 12 [ ]*lcall \$0x1234,\$0x0 47: (R_386_)?(dir)?32 xxx + 4d:.* +.* diff --git a/gas/testsuite/gas/i386/jump.s b/gas/testsuite/gas/i386/jump.s new file mode 100644 index 0000000..1f11cd3 --- /dev/null +++ b/gas/testsuite/gas/i386/jump.s @@ -0,0 +1,24 @@ +.psize 0 +.text +.extern xxx + +1: jmp 1b + jmp xxx + jmp *xxx + jmp *%edi + jmp *(%edi) + ljmp *xxx(,%edi,4) + ljmp *xxx + ljmp $0x1234,$xxx + + call 1b + call xxx + call *xxx + call *%edi + call *(%edi) + lcall *xxx(,%edi,4) + lcall *xxx + lcall $0x1234,$xxx + + # Force a good alignment. + .p2align 4,0 diff --git a/gas/testsuite/gas/i386/jump16.d b/gas/testsuite/gas/i386/jump16.d new file mode 100644 index 0000000..4513e4a --- /dev/null +++ b/gas/testsuite/gas/i386/jump16.d @@ -0,0 +1,40 @@ +#name: i386 jump16 +#objdump: -drw -mi8086 + +.*: file format .*i386.* + +Disassembly of section .text: + +0+000 <.text>: + 0: eb fe [ ]*jmp (0x0|0 <.text>) + 2: e9 (fe|fb) ff [ ]*jmp (0x3|0 <.text>) 3: (R_386_PC)?(DISP)?16 xxx + 5: ff 26 00 00 [ ]*jmp \*0 7: (R_386_)?(dir)?16 xxx + 9: 66 ff e7 [ ]*jmpl \*%edi + c: 67 ff 27 [ ]*addr32 jmp \*\(%edi\) + f: 67 ff af 00 00 00 00 [ ]*addr32 ljmp \*0x0\(%edi\) 12: (R_386_)?(dir)?32 xxx + 16: ff 2e 00 00 [ ]*ljmp \*0 18: (R_386_)?(dir)?16 xxx + 1a: ea 00 00 34 12 [ ]*ljmp \$0x1234,\$0x0 1b: (R_386_)?(dir)?16 xxx + 1f: 66 e8 db ff ff ff [ ]*calll (0x0|0 <.text>) + 25: 66 e8 (fc|d5) ff ff ff [ ]*calll (0x27|0 <.text>) 27: (R_386_PC)?(DISP)?32 xxx + 2b: 66 ff 16 00 00 [ ]*calll \*0 2e: (R_386_)?(dir)?16 xxx + 30: 66 ff d7 [ ]*calll \*%edi + 33: 67 66 ff 17 [ ]*addr32 calll \*\(%edi\) + 37: 67 66 ff 9f 00 00 00 00 [ ]*addr32 lcalll \*0x0\(%edi\) 3b: (R_386_)?(dir)?32 xxx + 3f: 66 ff 1e 00 00 [ ]*lcalll \*0 42: (R_386_)?(dir)?16 xxx + 44: 66 9a 00 00 00 00 34 12 [ ]*lcalll \$0x1234,\$0x0 46: (R_386_)?(dir)?32 xxx + 4c: eb b2 [ ]*jmp (0x0|0 <.text>) + 4e: ff 26 00 00 [ ]*jmp \*0 50: (R_386_)?(dir)?16 xxx + 52: ff e7 [ ]*jmp \*%di + 54: ff 25 [ ]*jmp \*\(%di\) + 56: ff ad 00 00 [ ]*ljmp \*0\(%di\) 58: (R_386_)?(dir)?16 xxx + 5a: ff 2e 00 00 [ ]*ljmp \*0 5c: (R_386_)?(dir)?16 xxx + 5e: ea 00 00 34 12 [ ]*ljmp \$0x1234,\$0x0 5f: (R_386_)?(dir)?16 xxx + 63: e8 9a ff [ ]*call (0x0|0 <.text>) + 66: e8 (fe|97) ff [ ]*call (0x67|0 <.text>) 67: (R_386_PC)?(DISP)?16 xxx + 69: ff 16 00 00 [ ]*call \*0 6b: (R_386_)?(dir)?16 xxx + 6d: ff d7 [ ]*call \*%di + 6f: ff 15 [ ]*call \*\(%di\) + 71: ff 9d 00 00 [ ]*lcall \*0\(%di\) 73: (R_386_)?(dir)?16 xxx + 75: ff 1e 00 00 [ ]*lcall \*0 77: (R_386_)?(dir)?16 xxx + 79: 9a 00 00 34 12 [ ]*lcall \$0x1234,\$0x0 7a: (R_386_)?(dir)?16 xxx + ... diff --git a/gas/testsuite/gas/i386/jump16.s b/gas/testsuite/gas/i386/jump16.s new file mode 100644 index 0000000..1eee242 --- /dev/null +++ b/gas/testsuite/gas/i386/jump16.s @@ -0,0 +1,43 @@ +.psize 0 +.text +.extern xxx + +.code16gcc +1: jmp 1b + jmp xxx + jmp *xxx + jmp *%edi + jmp *(%edi) + ljmp *xxx(%edi) + ljmp *xxx + ljmp $0x1234,$xxx + + call 1b + call xxx + call *xxx + call *%edi + call *(%edi) + lcall *xxx(%edi) + lcall *xxx + lcall $0x1234,$xxx + +.code16 + jmp 1b + jmp *xxx + jmp *%di + jmp *(%di) + ljmp *xxx(%di) + ljmp *xxx + ljmp $0x1234,$xxx + + call 1b + call xxx + call *xxx + call *%di + call *(%di) + lcall *xxx(%di) + lcall *xxx + lcall $0x1234,$xxx + + # Force a good alignment. + .p2align 4,0 |