Previous: ARM-Regs, Up: ARM Syntax

##### 9.3.3.1 ARM relocation generation

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