diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 3e1811a092d..8f3a1b6f686 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -11780,8 +11780,8 @@ output_insn (const struct last_insn *last_insn) { j = encoding_length (insn_start_frag, insn_start_off, frag_more (0)); if (j > 15) - as_warn (_("instruction length of %u bytes exceeds the limit of 15"), - j); + as_bad (_("instruction length of %u bytes exceeds the limit of 15"), + j); else if (fragP) { /* NB: Don't add prefix with GOTPC relocation since diff --git a/gas/testsuite/gas/i386/oversized16.l b/gas/testsuite/gas/i386/oversized16.l index 3bf7e1d8095..e0fc7619bdc 100644 --- a/gas/testsuite/gas/i386/oversized16.l +++ b/gas/testsuite/gas/i386/oversized16.l @@ -1,9 +1,9 @@ .*: Assembler messages: -.*:6: Warning: instruction length.* -.*:7: Warning: instruction length.* -.*:8: Warning: instruction length.* -.*:10: Warning: instruction length.* -.*:11: Warning: instruction length.* +.*:6: Error: instruction length.* +.*:7: Error: instruction length.* +.*:8: Error: instruction length.* +.*:10: Error: instruction length.* +.*:11: Error: instruction length.* GAS LISTING .* @@ -12,29 +12,29 @@ GAS LISTING .* [ ]*3[ ]+\.code16 [ ]*4[ ]+ [ ]*5[ ]+long16: -[ ]*6[ ]+0000 26678FEA[ ]+lwpins eax, es:\[eax\*8\], 0x11223344 -\*\*\*\* Warning: instruction length of 16 bytes exceeds the limit of 15 +[ ]*6[ ]+\?\?\?\? 26678FEA[ ]+lwpins eax, es:\[eax\*8\], 0x11223344 +\*\*\*\* Error: instruction length of 16 bytes exceeds the limit of 15 [ ]*6[ ]+781204C5[ ]* [ ]*6[ ]+00000000[ ]* [ ]*6[ ]+44332211[ ]* -[ ]*7[ ]+0010 26678FEA[ ]+lwpval eax, es:\[eax\*4\], 0x11223344 -\*\*\*\* Warning: instruction length of 16 bytes exceeds the limit of 15 +[ ]*7[ ]+\?\?\?\? 26678FEA[ ]+lwpval eax, es:\[eax\*4\], 0x11223344 +\*\*\*\* Error: instruction length of 16 bytes exceeds the limit of 15 [ ]*7[ ]+78120C85[ ]* [ ]*7[ ]+00000000[ ]* [ ]*7[ ]+44332211[ ]* -[ ]*8[ ]+0020 26678FEA[ ]+bextr eax, es:\[eax\*2\], 0x11223344 -\*\*\*\* Warning: instruction length of 16 bytes exceeds the limit of 15 +[ ]*8[ ]+\?\?\?\? 26678FEA[ ]+bextr eax, es:\[eax\*2\], 0x11223344 +\*\*\*\* Error: instruction length of 16 bytes exceeds the limit of 15 [ ]*8[ ]+78100445[ ]* [ ]*8[ ]+00000000[ ]* [ ]*8[ ]+44332211[ ]* [ ]*9[ ]+ -[ ]*10[ ]+0030 266766F2[ ]+xacquire lock add dword ptr es:\[eax\*2\], 0x11223344 -\*\*\*\* Warning: instruction length of 16 bytes exceeds the limit of 15 +[ ]*10[ ]+\?\?\?\? 266766F2[ ]+xacquire lock add dword ptr es:\[eax\*2\], 0x11223344 +\*\*\*\* Error: instruction length of 16 bytes exceeds the limit of 15 [ ]*10[ ]+F0810445[ ]* [ ]*10[ ]+00000000[ ]* [ ]*10[ ]+44332211[ ]* -[ ]*11[ ]+0040 266766F3[ ]+xrelease lock sub dword ptr es:\[eax\*2\], 0x11223344 -\*\*\*\* Warning: instruction length of 16 bytes exceeds the limit of 15 +[ ]*11[ ]+\?\?\?\? 266766F3[ ]+xrelease lock sub dword ptr es:\[eax\*2\], 0x11223344 +\*\*\*\* Error: instruction length of 16 bytes exceeds the limit of 15 [ ]*11[ ]+F0812C45[ ]* [ ]*11[ ]+00000000[ ]* [ ]*11[ ]+44332211[ ]* diff --git a/gas/testsuite/gas/i386/oversized64.l b/gas/testsuite/gas/i386/oversized64.l index dc63fb5ae77..ac32c4d8139 100644 --- a/gas/testsuite/gas/i386/oversized64.l +++ b/gas/testsuite/gas/i386/oversized64.l @@ -1,9 +1,9 @@ .*: Assembler messages: -.*:5: Warning: instruction length.* -.*:6: Warning: instruction length.* -.*:7: Warning: instruction length.* -.*:9: Warning: instruction length.* -.*:10: Warning: instruction length.* +.*:5: Error: instruction length.* +.*:6: Error: instruction length.* +.*:7: Error: instruction length.* +.*:9: Error: instruction length.* +.*:10: Error: instruction length.* GAS LISTING .* @@ -11,29 +11,29 @@ GAS LISTING .* [ ]*2[ ]+\.intel_syntax noprefix [ ]*3[ ]+ [ ]*4[ ]+long64: -[ ]*5[ ]+0000 64678FEA[ ]+lwpins rax, fs:\[eax\*8\], 0x11223344 -\*\*\*\* Warning: instruction length of 16 bytes exceeds the limit of 15 +[ ]*5[ ]+\?\?\?\? 64678FEA[ ]+lwpins rax, fs:\[eax\*8\], 0x11223344 +\*\*\*\* Error: instruction length of 16 bytes exceeds the limit of 15 [ ]*5[ ]+F81204C5[ ]* [ ]*5[ ]+00000000[ ]* [ ]*5[ ]+44332211[ ]* -[ ]*6[ ]+0010 64678FEA[ ]+lwpval eax, fs:\[eax\*4\], 0x11223344 -\*\*\*\* Warning: instruction length of 16 bytes exceeds the limit of 15 +[ ]*6[ ]+\?\?\?\? 64678FEA[ ]+lwpval eax, fs:\[eax\*4\], 0x11223344 +\*\*\*\* Error: instruction length of 16 bytes exceeds the limit of 15 [ ]*6[ ]+78120C85[ ]* [ ]*6[ ]+00000000[ ]* [ ]*6[ ]+44332211[ ]* -[ ]*7[ ]+0020 64678FEA[ ]+bextr rax, fs:\[eax\*2\], 0x11223344 -\*\*\*\* Warning: instruction length of 16 bytes exceeds the limit of 15 +[ ]*7[ ]+\?\?\?\? 64678FEA[ ]+bextr rax, fs:\[eax\*2\], 0x11223344 +\*\*\*\* Error: instruction length of 16 bytes exceeds the limit of 15 [ ]*7[ ]+F8100445[ ]* [ ]*7[ ]+00000000[ ]* [ ]*7[ ]+44332211[ ]* [ ]*8[ ]+ -[ ]*9[ ]+0030 6567F2F0[ ]+xacquire lock add qword ptr gs:\[eax\*8\], 0x11223344 -\*\*\*\* Warning: instruction length of 16 bytes exceeds the limit of 15 +[ ]*9[ ]+\?\?\?\? 6567F2F0[ ]+xacquire lock add qword ptr gs:\[eax\*8\], 0x11223344 +\*\*\*\* Error: instruction length of 16 bytes exceeds the limit of 15 [ ]*9[ ]+488104C5[ ]* [ ]*9[ ]+00000000[ ]* [ ]*9[ ]+44332211[ ]* -[ ]*10[ ]+0040 6567F3F0[ ]+xrelease lock sub qword ptr gs:\[eax\*8\], 0x11223344 -\*\*\*\* Warning: instruction length of 16 bytes exceeds the limit of 15 +[ ]*10[ ]+\?\?\?\? 6567F3F0[ ]+xrelease lock sub qword ptr gs:\[eax\*8\], 0x11223344 +\*\*\*\* Error: instruction length of 16 bytes exceeds the limit of 15 [ ]*10[ ]+48812CC5[ ]* [ ]*10[ ]+00000000[ ]* [ ]*10[ ]+44332211[ ]* diff --git a/gas/testsuite/gas/i386/x86-64-apx-inval.l b/gas/testsuite/gas/i386/x86-64-apx-inval.l new file mode 100644 index 00000000000..6c1a346fcbf --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-apx-inval.l @@ -0,0 +1,3 @@ +.*: Assembler messages: +.*:3: Error: instruction length of 16 bytes exceeds the limit of 15 +.*:4: Error: instruction length of 16 bytes exceeds the limit of 15 diff --git a/gas/testsuite/gas/i386/x86-64-apx-inval.s b/gas/testsuite/gas/i386/x86-64-apx-inval.s new file mode 100644 index 00000000000..bb57817bc8a --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-apx-inval.s @@ -0,0 +1,4 @@ +# Check illegal 64bit APX_F instructions + .text + addq $0xe0, %fs:0, %rdx + xorq $0xe0, foo(%eax,%edx), %rdx diff --git a/gas/testsuite/gas/i386/x86-64.exp b/gas/testsuite/gas/i386/x86-64.exp index 6932ba97a4d..b77e8c10029 100644 --- a/gas/testsuite/gas/i386/x86-64.exp +++ b/gas/testsuite/gas/i386/x86-64.exp @@ -371,6 +371,7 @@ run_dump_test "x86-64-avx512f-rcigrne-intel" run_dump_test "x86-64-avx512f-rcigrne" run_dump_test "x86-64-avx512f-rcigru-intel" run_dump_test "x86-64-avx512f-rcigru" +run_list_test "x86-64-apx-inval" run_list_test "x86-64-apx-egpr-inval" run_dump_test "x86-64-apx-evex-promoted-bad" run_list_test "x86-64-apx-egpr-promote-inval" "-al"