GNU Binutils with patches for OS216
修订版 | 33d0ab95489cb3cf7ec98bee63c3541b5295adb6 (tree) |
---|---|
时间 | 2016-07-05 18:14:51 |
作者 | Jan Beulich <jbeulich@nove...> |
Commiter | Jan Beulich |
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()).
@@ -1,3 +1,12 @@ | ||
1 | +2016-07-04 Jan Beulich <jbeulich@suse.com> | |
2 | + | |
3 | + * config/tc-i386.c (check_qword_reg): Correct register kind | |
4 | + checked. | |
5 | + * testsuite/gas/i386/x86-64-suffix-bad.s: Add q-suffix with | |
6 | + 16-bit register cases. | |
7 | + * testsuite/gas/i386/x86-64-suffix-bad.l: Adjust expectations. | |
8 | + | |
9 | + | |
1 | 10 | 2016-07-02 Maciej W. Rozycki <macro@imgtec.com> |
2 | 11 | |
3 | 12 | * testsuite/gas/mips/ecoff@ld.d: Remove test. |
@@ -5670,7 +5670,7 @@ check_qword_reg (void) | ||
5670 | 5670 | /* Warn if the r prefix on a general reg is missing. */ |
5671 | 5671 | else if ((i.types[op].bitfield.reg16 |
5672 | 5672 | || i.types[op].bitfield.reg32) |
5673 | - && (i.tm.operand_types[op].bitfield.reg32 | |
5673 | + && (i.tm.operand_types[op].bitfield.reg64 | |
5674 | 5674 | || i.tm.operand_types[op].bitfield.acc)) |
5675 | 5675 | { |
5676 | 5676 | /* Prohibit these changes in the 64bit mode, since the |
@@ -11,3 +11,7 @@ | ||
11 | 11 | .*:15: Error: .* |
12 | 12 | .*:16: Error: .* |
13 | 13 | .*:17: Error: .* |
14 | +.*:19: Error: .* | |
15 | +.*:20: Error: .* | |
16 | +.*:21: Error: .* | |
17 | +.*:22: Error: .* |
@@ -15,3 +15,8 @@ start: | ||
15 | 15 | orb %rax, (%rax) |
16 | 16 | orw %rax, (%rax) |
17 | 17 | orl %rax, (%rax) |
18 | + | |
19 | + pushq %ax | |
20 | + popq %ax | |
21 | + callq *%ax | |
22 | + jmpq *%ax |