ZHCADC3B February 2019 – October 2023
重定位类型在两个表中进行了说明。表 11-5 提供了重定位类型的数值,并汇总了重定位值的计算。此表之后描述了重定位类型及其使用示例。表 11-6 描述了每种类型的确切计算,包括重定位字段的提取和插入、溢出检查以及任何缩放或其他调整。
表 11-5 中使用了以下表示法。
S | 与重定位关联的符号的值,由重定位条目的 r_info 字段中包含的符号表索引指定。 |
A | 用于计算可重定位字段的值的加数。对于 ELF32_rel 重定位,A 根据表 11-6 编码到可重定位字段中。对于 Elf32_Rela 重定位,A 由重定位条目的 r_addend 字段提供。 |
PC | 包含字段的容器的地址。这可能与包含重定位的指令的地址不同。 |
名称 | 值 | 运算 | 约束条件 |
---|---|---|---|
R_C28X_NONE | 0 | ||
R_C28X_ABS8 | 1 | S + A | |
R_C28X_ABS16 | 2 | S + A | |
R_C28X_ABS32 | 3 | S + A | |
R_C28X_ABSLO6 | 4 | S+A | |
R_C28X_ABSLO6_BLKD | 4 | S+A | 重复,但表示访问被阻止 |
R_C28X_ABS22 | 5 | S+A | |
R_C28X_ABS22_BR | 5 | S+A | 重复,但仅在函数调用中使用 |
R_C28X_HI6 | 6 | S+A | 仅限 Rela |
R_C28X_DP_HI10 | 7 | S+A-PC | 仅限 Rela |
R_C28X_DP_HI16 | 8 | S+A | |
R_C28X_PCREL16 | 9 | S+A-PC | |
R_C28X_PCREL8 | 10 | S+A-PC | |
R_C28X_HI16 | 11 | S+A | 仅限 Rela |
R_C28X_NEGWORD | 12 | 特殊 | |
R_C28X_NEGBYTE | 13 | 特殊 | |
R_C28X_ABS8_HI | 14 | ||
R_C28X_ABS13_SE16 | 15 | 特殊 | |
R_CLA_ABS16 | 16 | S+A | |
R_C28X_ABSLO7 | 17 | S+A | |
R_C28X_PREL31 | 18 | S+A-PC |