Specific data relocations can be generated by putting the relocation name in parentheses after the symbol name. For example:
.word foo(TARGET1)
This will generate an R_ARM_TARGET1 relocation against the symbol
foo.
The following relocations are supported:
GOT,
GOTOFF,
TARGET1,
TARGET2,
SBREL,
TLSGD,
TLSLDM,
TLSLDO,
GOTTPOFF
and
TPOFF.
For compatibility with older toolchains the assembler also accepts
(PLT) after branch targets. This will generate the deprecated
R_ARM_PLT32 relocation.
Relocations for MOVW and MOVT instructions can be generated by prefixing the value with #:lower16: and #:upper16 respectively. For example to load the 32-bit address of foo into r0:
MOVW r0, #:lower16:foo
MOVT r0, #:upper16:foo