From: Jan Beulich Date: Tue, 5 Jul 2016 09:14:51 +0000 (+0200) Subject: x86: fix register check in check_qword_reg() X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=33d0ab95489cb3cf7ec98bee63c3541b5295adb6;p=binutils-gdb.git x86: fix register check in check_qword_reg() A missing 'r' (or wrong 'e') register prefix needs to be complained about if the template allows for a 64-bit register, not a 32-bit one. I assume this was a copy-and-paste type of mistake (from check_long_reg()). --- diff --git a/gas/ChangeLog b/gas/ChangeLog index 9e24bcd45a8..d4f2e9b72ce 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,12 @@ +2016-07-04 Jan Beulich + + * config/tc-i386.c (check_qword_reg): Correct register kind + checked. + * testsuite/gas/i386/x86-64-suffix-bad.s: Add q-suffix with + 16-bit register cases. + * testsuite/gas/i386/x86-64-suffix-bad.l: Adjust expectations. + + 2016-07-02 Maciej W. Rozycki * testsuite/gas/mips/ecoff@ld.d: Remove test. diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 4ba05baccb3..a3b85c86553 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -5670,7 +5670,7 @@ check_qword_reg (void) /* Warn if the r prefix on a general reg is missing. */ else if ((i.types[op].bitfield.reg16 || i.types[op].bitfield.reg32) - && (i.tm.operand_types[op].bitfield.reg32 + && (i.tm.operand_types[op].bitfield.reg64 || i.tm.operand_types[op].bitfield.acc)) { /* Prohibit these changes in the 64bit mode, since the diff --git a/gas/testsuite/gas/i386/x86-64-suffix-bad.l b/gas/testsuite/gas/i386/x86-64-suffix-bad.l index febdc0c48f6..00adbf0cd4d 100644 --- a/gas/testsuite/gas/i386/x86-64-suffix-bad.l +++ b/gas/testsuite/gas/i386/x86-64-suffix-bad.l @@ -11,3 +11,7 @@ .*:15: Error: .* .*:16: Error: .* .*:17: Error: .* +.*:19: Error: .* +.*:20: Error: .* +.*:21: Error: .* +.*:22: Error: .* diff --git a/gas/testsuite/gas/i386/x86-64-suffix-bad.s b/gas/testsuite/gas/i386/x86-64-suffix-bad.s index c4462f6c02d..83837f5a9e5 100644 --- a/gas/testsuite/gas/i386/x86-64-suffix-bad.s +++ b/gas/testsuite/gas/i386/x86-64-suffix-bad.s @@ -15,3 +15,8 @@ start: orb %rax, (%rax) orw %rax, (%rax) orl %rax, (%rax) + + pushq %ax + popq %ax + callq *%ax + jmpq *%ax