This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
"Load immediate values using LDR Rd, =const" as described in<http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0473l/dom1359731147386.html> is currently broken.
The symptom appears with the following fragment that transforms a 'ldr' into a 'cmp': $ cat weird-a53.s .syntax unified .thumb .text .align 2 .global foo .thumb_func .type foo, %function foo: ldr r12, =#0x99 $ arm-none-eabi-as weird-a53.s $ arm-none-eabi-objdump -t (snip) Disassembly of section .text: 00000000 <foo>: 0: 2c99 cmp r4, #153 ; 0x99 2: 46c0 nop ; (mov r8, r8) It was originally reported by an internal user on cortex-a53 in AArch32, but the issue is unrelated to a specific target and shows up for any architecture supporting this transformation, eg from armv6t2. The issue happens because a T1 encoding is used with a high register, and the bits of the register number leak into the opcode, leading to the transformation into a compare. It looks like this is exposed in binutils trunk since the changes for this <https://sourceware.org/bugzilla/show_bug.cgi?id=18500> have been merged into the trunk. I have attached a patch, tested on an x86_64 host in arm-none-eabi arm-linux-eabi arm-nacl, no regression. Waiting for any feedback, thanks. --C
Attachment:
thumb2_ldr_immediate_highregs_armv6t2.patch
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |