[PATCH] x86: fix register check in check_qword_reg()
H.J. Lu
hjl.tools@gmail.com
Mon Jul 4 16:00:00 GMT 2016
On Mon, Jul 4, 2016 at 12:00 AM, Jan Beulich <JBeulich@suse.com> wrote:
> 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()).
>
> gas/
> 2016-07-04 Jan Beulich <jbeulich@suse.com>
>
> * config/tc-i386.c (check_qword_reg): Correct register kind
> checked.
>
> gas/testsuite/
> 2016-07-04 Jan Beulich <jbeulich@suse.com>
>
> * gas/i386/x86-64-suffix-bad.s: Add q-suffix with 16-bit
> register cases.
> * gas/i386/x86-64-suffix-bad.l: Adjust expectations.
>
> --- 2016-07-01/gas/config/tc-i386.c
> +++ 2016-07-01/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
> --- 2016-07-01/gas/testsuite/gas/i386/x86-64-suffix-bad.l
> +++ 2016-07-01/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: .*
> --- 2016-07-01/gas/testsuite/gas/i386/x86-64-suffix-bad.s
> +++ 2016-07-01/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
OK.
Thanks.
--
H.J.
More information about the Binutils
mailing list