[PATCH] adr & adrl instructions for arm-wince-pe target
Dmitry Semyonov
Dmitry.Semyonov@oktet.ru
Wed Dec 10 11:50:00 GMT 2003
Hello.
Please, review the patch below. I've ecountered the problem with 'adr'
instruction while trying to compile the following function, but belive
'adrl' one should be fixed in similar way.
void foo(void)
{
unsigned long long n = 0x1122334455667788LL;
}
Note that grepping "X_add_number.*8" gives similar places in tc-arm.c
file not protected by TE_WINCE macro. Can somebody confirm the code is
correct, or these places need to be also fixed?
2003-12-10 Dmitry Semyonov <Dmitry.Semyonov@oktet.ru>
* tc-arm.c (do_adr): Do not adjust pc by -8 if TE_WINCE is defined.
(do_adrl): likewise.
diff -rNc3pad binutils-031118/gas/config/tc-arm.c /home/sdv/cross/src/binutils-031118/gas/config/tc-arm.c
*** binutils-031118/gas/config/tc-arm.c Tue Nov 18 22:06:42 2003
--- /home/sdv/cross/src/binutils-031118/gas/config/tc-arm.c Wed Dec 10 14:37:39 2003
*************** do_adr (str)
*** 6168,6174 ****
--- 6168,6176 ----
/* Frag hacking will turn this into a sub instruction if the offset turns
out to be negative. */
inst.reloc.type = BFD_RELOC_ARM_IMMEDIATE;
+ #ifndef TE_WINCE
inst.reloc.exp.X_add_number -= 8; /* PC relative adjust. */
+ #endif
inst.reloc.pc_rel = 1;
end_of_line (str);
*************** do_adrl (str)
*** 6199,6205 ****
--- 6201,6209 ----
/* Frag hacking will turn this into a sub instruction if the offset turns
out to be negative. */
inst.reloc.type = BFD_RELOC_ARM_ADRL_IMMEDIATE;
+ #ifndef TE_WINCE
inst.reloc.exp.X_add_number -= 8; /* PC relative adjust */
+ #endif
inst.reloc.pc_rel = 1;
inst.size = INSN_SIZE * 2;
...Bye..Dmitry.
More information about the Binutils
mailing list