mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-30 07:20:41 +00:00
[GAS][ARM]Generate unpredictable warning for pc used in data processing instructions with register-shifted register operand.
gas/ 2016-10-19 Renlin Li <renlin.li@arm.com> * config/tc-arm.c (encode_arm_shift): Generate unpredictable warning for register-shifted register instructions. * testsuite/gas/arm/shift-bad-pc.d: New. * testsuite/gas/arm/shift-bad-pc.l: New. * testsuite/gas/arm/shift-bad-pc.s: New.
This commit is contained in:
parent
bbb76b184f
commit
008a97eff0
@ -1,3 +1,11 @@
|
||||
2016-10-19 Renlin Li <renlin.li@arm.com>
|
||||
|
||||
* config/tc-arm.c (encode_arm_shift): Generate unpredictable warning
|
||||
for register-shifted register instructions.
|
||||
* testsuite/gas/arm/shift-bad-pc.d: New.
|
||||
* testsuite/gas/arm/shift-bad-pc.l: New.
|
||||
* testsuite/gas/arm/shift-bad-pc.s: New.
|
||||
|
||||
2016-10-17 Cupertino Miranda <cmiranda@synopsys.com>
|
||||
|
||||
* testsuite/arc/dis-inv.d: Fixed matching.
|
||||
|
@ -7427,6 +7427,21 @@ encode_arm_vfp_reg (int reg, enum vfp_reg_pos pos)
|
||||
static void
|
||||
encode_arm_shift (int i)
|
||||
{
|
||||
/* register-shifted register. */
|
||||
if (inst.operands[i].immisreg)
|
||||
{
|
||||
int index;
|
||||
for (index = 0; index <= i; ++index)
|
||||
{
|
||||
gas_assert (inst.operands[index].present);
|
||||
if (inst.operands[index].isreg && inst.operands[index].reg == REG_PC)
|
||||
as_warn (UNPRED_REG ("r15"));
|
||||
}
|
||||
|
||||
if (inst.operands[i].imm == REG_PC)
|
||||
as_warn (UNPRED_REG ("r15"));
|
||||
}
|
||||
|
||||
if (inst.operands[i].shift_kind == SHIFT_RRX)
|
||||
inst.instruction |= SHIFT_ROR << 5;
|
||||
else
|
||||
|
3
gas/testsuite/gas/arm/shift-bad-pc.d
Normal file
3
gas/testsuite/gas/arm/shift-bad-pc.d
Normal file
@ -0,0 +1,3 @@
|
||||
# name: pc used in instructions with register-shifted register
|
||||
# as:
|
||||
# error-output: shift-bad-pc.l
|
56
gas/testsuite/gas/arm/shift-bad-pc.l
Normal file
56
gas/testsuite/gas/arm/shift-bad-pc.l
Normal file
@ -0,0 +1,56 @@
|
||||
.*shift-bad-pc.s: Assembler messages:
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:20: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:21: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:21: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:21: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:21: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:21: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:21: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:21: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:21: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:21: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:21: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:21: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:21: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:21: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:21: Warning: using r15 results in unpredictable behaviour
|
||||
.*shift-bad-pc.s:21: Warning: using r15 results in unpredictable behaviour
|
21
gas/testsuite/gas/arm/shift-bad-pc.s
Normal file
21
gas/testsuite/gas/arm/shift-bad-pc.s
Normal file
@ -0,0 +1,21 @@
|
||||
.syntax unified
|
||||
|
||||
.macro insn4 rd rn rm rs
|
||||
.irp insn, and, eor, sub, rsb, add, adc, sbc, rsc, orr, bic
|
||||
\insn pc, \rn, \rm, lsr \rs
|
||||
\insn \rd, pc, \rm, lsr \rs
|
||||
\insn \rd, \rn, pc, lsr \rs
|
||||
\insn \rd, \rn, \rm, lsr pc
|
||||
.endr
|
||||
.endm
|
||||
|
||||
.macro insn3 rn rm rs
|
||||
.irp insn, tst, teq, cmp, cmn, mvn
|
||||
\insn pc, \rm, lsr \rs
|
||||
\insn \rn, pc, lsr \rs
|
||||
\insn \rn, \rm, lsr pc
|
||||
.endr
|
||||
.endm
|
||||
|
||||
insn4 r0 r1 r2 r3
|
||||
insn3 r0 r1 r2
|
Loading…
Reference in New Issue
Block a user