和每个重定向类型相关的计算成员:
A
加数
P
要重定向的位置,r_offset加上section的基地址。
S
符号的值
B
符号定义所在section的基地址。
ARM relocation types 0-16
| Type | Name | Field | Computation and meaning |
| 0 | R_ARM_NONE | Any | No relocation. Encodes dependencies between sections. |
| 1 | R_ARM_PC24 | ARM B/BL | S-P+A |
| 2 | R_ARM_ABS32 | 32-bit word | S+A |
| 3 | R_ARM_REL32 | 32-bit word | S-P+A |
| 4 | R_ARM_PC13 | ARM LDR r,[pc...] | S-P+A |
| 5 | R_ARM_ABS16 | 16-bit half-word | S+A |
| 6 | R_ARM_ABS12 | ARM LDR/STR | S+A |
| 7 | R_ARM_THM_ABS | Thumb LDR/STR | S+A |
| 8 | R_ARM_ABS8 | 8-bit byte | S+A |
| 9 | R_ARM_SBREL32 | 32-bit word | S-B+A |
| 10 | R_ARM_THM_PC22 | Thumb BL pair | S-P+A |
| 11 | R_ARM_THM_PC8 | Thumb LDR r,[pc...] | S-P+A |
| 12 | R_ARM_AMP_VCALL9 | AMP VCALL | Obsolete - SA-1500 only. |
| 13 | R_ARM_SWI24 | ARM SWI | S+A |
| 14 | R_ARM_THM_SWI8 | Thumb SWI | S+A |
| 15 | R_ARM_XPC25 | ARM BLX | S-P+A |
| 16 | R_ARM_THM_XPC22 | Thumb BLX pair | S-P+A |
Note
R_ARM_NONE记录Section包含要重定向的地址,该地址依赖于符号定义所在的Section,该Section应当保留。
ARM relocation types 17-31, reserved to ARM Linux
| Type | Name | Field | Computation and meaning |
| 17-19 | Reserved to ARM LINUX | ||
| 20 | R_ARM_COPY | 32 bit word | Copy symbol at dynamic link time |
| 21 | R_ARM_GLOB_DAT | 32 bit word | Create GOT entry |
| 22 | R_ARM_JUMP_SLOT | 32 bit word | Create PLT entry |
| 23 | R_ARM_RELATIVE | 32 bit word | Adjust by program base |
| 24 | R_ARM_GOTOFF | 32 bit word | Offset relative to start of GOT |
| 25 | R_ARM_GOTPC | 32 bit word | Insert address of GOT |
| 26 | R_ARM_GOT32 | 32 bit word | Entry in GOT |
| 27 | R_ARM_PLT32 | ARM BL | Entry in PLT |
| 28-31 | Reserved to ARM LINUX |
参考
ARM ELF. 8 June, 2001.