PR gas/14260
* config/tc-arm.c (encode_arm_addr_mode_common): Generate an error message if literal pool addressing is used. * gas/arm/ldr-t-bad.s: Add test of bogus use of literal pool addressing. * gas/arm/ldr-t-bad.l: Update expected assembler error message output.
This commit is contained in:
parent
4c6a93d362
commit
2b2f5df902
5 changed files with 33 additions and 13 deletions
|
@ -1,3 +1,9 @@
|
|||
2012-06-28 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR gas/14260
|
||||
* config/tc-arm.c (encode_arm_addr_mode_common): Generate an error
|
||||
message if literal pool addressing is used.
|
||||
|
||||
2012-06-28 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* dwarf2dbg.c (DWARF2_USE_FIXED_ADVANCE_PC): Enable when using
|
||||
|
|
|
@ -7042,7 +7042,11 @@ encode_arm_shifter_operand (int i)
|
|||
static void
|
||||
encode_arm_addr_mode_common (int i, bfd_boolean is_t)
|
||||
{
|
||||
gas_assert (inst.operands[i].isreg);
|
||||
/* PR 14260:
|
||||
Generate an error if the operand is not a register. */
|
||||
constraint (!inst.operands[i].isreg,
|
||||
_("Instruction does not support =N addresses"));
|
||||
|
||||
inst.instruction |= inst.operands[i].reg << 16;
|
||||
|
||||
if (inst.operands[i].preind)
|
||||
|
@ -21269,8 +21273,8 @@ md_apply_fix (fixS * fixP,
|
|||
thumb_bl_common:
|
||||
|
||||
#ifdef OBJ_ELF
|
||||
if (EF_ARM_EABI_VERSION (meabi_flags) >= EF_ARM_EABI_VER4 &&
|
||||
fixP->fx_r_type == BFD_RELOC_THUMB_PCREL_BLX)
|
||||
if (EF_ARM_EABI_VERSION (meabi_flags) >= EF_ARM_EABI_VER4
|
||||
&& fixP->fx_r_type == BFD_RELOC_THUMB_PCREL_BLX)
|
||||
fixP->fx_r_type = BFD_RELOC_THUMB_PCREL_BRANCH23;
|
||||
#endif
|
||||
|
||||
|
@ -21281,15 +21285,15 @@ md_apply_fix (fixS * fixP,
|
|||
1 of the base address. */
|
||||
value = (value + 1) & ~ 1;
|
||||
|
||||
if ((value & ~0x3fffff) && ((value & ~0x3fffff) != ~0x3fffff))
|
||||
{
|
||||
if (!(ARM_CPU_HAS_FEATURE (cpu_variant, arm_arch_t2)))
|
||||
as_bad_where (fixP->fx_file, fixP->fx_line, BAD_RANGE);
|
||||
else if ((value & ~0x1ffffff)
|
||||
&& ((value & ~0x1ffffff) != ~0x1ffffff))
|
||||
as_bad_where (fixP->fx_file, fixP->fx_line,
|
||||
_("Thumb2 branch out of range"));
|
||||
}
|
||||
if ((value & ~0x3fffff) && ((value & ~0x3fffff) != ~0x3fffff))
|
||||
{
|
||||
if (!(ARM_CPU_HAS_FEATURE (cpu_variant, arm_arch_t2)))
|
||||
as_bad_where (fixP->fx_file, fixP->fx_line, BAD_RANGE);
|
||||
else if ((value & ~0x1ffffff)
|
||||
&& ((value & ~0x1ffffff) != ~0x1ffffff))
|
||||
as_bad_where (fixP->fx_file, fixP->fx_line,
|
||||
_("Thumb2 branch out of range"));
|
||||
}
|
||||
|
||||
if (fixP->fx_done || !seg->use_rela_p)
|
||||
encode_thumb2_b_bl_offset (buf, value);
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
2012-06-28 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR gas/14260
|
||||
* gas/arm/ldr-t-bad.s: Add test of bogus use of literal pool
|
||||
addressing.
|
||||
* gas/arm/ldr-t-bad.l: Update expected assembler error message
|
||||
output.
|
||||
|
||||
2012-06-28 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* gas/lns/lns.exp: Use alternate lns-common test for targets
|
||||
|
|
|
@ -13,4 +13,4 @@
|
|||
[^:]*:56: Error: r15 not allowed here -- `str r15,\[r1,r2\]'
|
||||
[^:]*:57: Error: r13 not allowed here -- `str r1,\[r2,r13\]'
|
||||
[^:]*:58: Error: r15 not allowed here -- `str r1,\[r2,r15\]'
|
||||
|
||||
[^:]*:61: Error: Instruction does not support =N addresses -- `ldrt r0,=0x0'
|
||||
|
|
|
@ -57,3 +57,5 @@
|
|||
str r1, [r2, r13]
|
||||
str r1, [r2, r15]
|
||||
|
||||
@ PR 14260
|
||||
ldrt r0, =0x0
|
||||
|
|
Loading…
Reference in a new issue