RELOC directive explicitly encodes an ELF relocation in an object file.
- must be an integer in the range 0 to 255 or one of the relocation names defined in the Application Binary Interface for the Arm® Architecture.
- can be any PC-relative label.
create a relocation with respect to the address labeled by
If used immediately after an A32 or T32 instruction,
RELOC results in a
relocation at that instruction. If used immediately after a
DCD, or any other data generating directive,
RELOC results in a relocation at the start of the data. Any addend to be
applied must be encoded in the instruction or in the data.
If the assembler has already emitted a relocation at that
place, the relocation is updated with the details in the
DCD sym2 ; R_ARM_ABS32 to sym32 RELOC 55 ; ... makes it R_ARM_ABS32_NOI
RELOC is faulted in all other cases,
for example, after any non-data generating directive,
or as the first thing in an
create a relocation with respect to the anonymous symbol, that is,
symbol 0 of the symbol table. If you use
a preceding assembler generated relocation, the relocation is with
respect to the anonymous symbol.
IMPORT impsym LDR r0,[pc,#-8] RELOC 4, impsym DCD 0 RELOC 2, sym DCD 0,1,2,3,4 ; the final word is relocated RELOC 38,sym2 ; R_ARM_TARGET1 DCD impsym RELOC R_ARM_TARGET1 ; relocation code 38