[ARM] Allow MOV/MOV.W to accept all possible immediates
Szabolcs Nagy
szabolcs.nagy@arm.com
Thu Jan 5 10:49:00 GMT 2017
adding the reporter to cc and rich because it broke musl.
On 05/01/17 10:45, Szabolcs Nagy wrote:
> On 01/11/16 12:21, Jiong Wang wrote:
>> Hi,
>>
>> AArch32 MOV Rd, #imm should accept all immediates which can be encoded into
>> available encoding, A1/A2 for ARM, T1/T2/T3 for Thumb/Thumb2, and MOV is the
>> preferred disassembly syntax. See latest ARM Architecture Reference Manual for
>> ARMv8-A, section F6.1.108 and for ARMv8-M, section C2.4.89.
>>
>> The same for MOV.W under Thumb mode. It should try all possible 32-bit Thumb
>> encoding instead of T2 only.
>>
>> This patch let MOV/MOV.W accept more immediate formats while their currently
>> supported immediate formats are not affected, so there is no backward compatibility
>> issue, also this patch haven't touched the disassembler.
>>
>> I think this patch brings GAS closer to ARM Architecture Reference Manual.
>>
>> OK for master?
>>
>> gas/
>> 2016-11-01 Jiong Wang <jiong.wang@arm.com>
>> * config/tc-arm.c (SBIT_SHIFT): New.
>> (T2_SBIT_SHIFT): Likewise.
>> (t32_insn_ok): Return TRUE for MOV in ARMv8-M Baseline.
>> (md_apply_fix): Try UINT16 encoding when ARM/Thumb modified immediate
>> encoding failed.
>> * testsuite/gas/arm/archv6t2-bad.s: New error case.
>> * testsuite/gas/arm/archv6t2-bad.l: New error match.
>> * testsuite/gas/arm/archv6t2.s: New testcase.
>> * testsuite/gas/arm/archv6t2.d: New expected result.
>> * testsuite/gas/arm/archv8m.s: New testcase
>> * testsuite/gas/arm/archv8m-base.d: New expected result.
>> * testsuite/gas/arm/archv8m-main.d: Likewise.
>> * testsuite/gas/arm/archv8m-main-dsp-1.d: Likewise.
>
> this caused
>
> $ cat bug.s
> .syntax unified
> .text
> .arch armv7-a
> mov r3,#1
>
> .arch armv4t
> .eabi_attribute 6,2
> bx lr
>
> $ arm-none-linux-gnueabihf-as -mthumb bug.s
> bug.s: Assembler messages:
> bug.s:4: Error: invalid constant (1) after fixup
>
> previously this worked, but i'm not sure if the mix
> of .arch directives and .syntax unified is valid here.
>
More information about the Binutils
mailing list