those happen on SUSE systems.
Unified · Split
| @@ -37,8 +37,14 @@ int code_reloc (int reloc_type) · 36 unmodified lines | |||
| 37 | case R_RISCV_PCREL_LO12_I: | 37 | case R_RISCV_PCREL_LO12_I: |
| 38 | case R_RISCV_PCREL_LO12_S: | 38 | case R_RISCV_PCREL_LO12_S: |
| 39 | case R_RISCV_32_PCREL: | 39 | case R_RISCV_32_PCREL: |
| 40 | case R_RISCV_SET6: | ||
| 41 | case R_RISCV_SUB6: | ||
| 42 | case R_RISCV_ADD16: | ||
| 40 | case R_RISCV_ADD32: | 43 | case R_RISCV_ADD32: |
| 44 | case R_RISCV_ADD64: | ||
| 45 | case R_RISCV_SUB16: | ||
| 41 | case R_RISCV_SUB32: | 46 | case R_RISCV_SUB32: |
| 47 | case R_RISCV_SUB64: | ||
| 42 | case R_RISCV_32: | 48 | case R_RISCV_32: |
| 43 | case R_RISCV_64: | 49 | case R_RISCV_64: |
| 44 | return 0; | 50 | return 0; |
| @@ -61,6 +67,10 @@ int gotplt_entry_type (int reloc_type) · 16 unmodified lines | |||
| 61 | case R_RISCV_RVC_BRANCH: | 67 | case R_RISCV_RVC_BRANCH: |
| 62 | case R_RISCV_RVC_JUMP: | 68 | case R_RISCV_RVC_JUMP: |
| 63 | case R_RISCV_JUMP_SLOT: | 69 | case R_RISCV_JUMP_SLOT: |
| 70 | case R_RISCV_SET6: | ||
| 71 | case R_RISCV_SUB6: | ||
| 72 | case R_RISCV_ADD16: | ||
| 73 | case R_RISCV_SUB16: | ||
| 64 | return NO_GOTPLT_ENTRY; | 74 | return NO_GOTPLT_ENTRY; |
| 65 | 75 | ||
| 66 | case R_RISCV_BRANCH: | 76 | case R_RISCV_BRANCH: |
| @@ -70,7 +80,9 @@ int gotplt_entry_type (int reloc_type) · 3 unmodified lines | |||
| 70 | case R_RISCV_PCREL_LO12_S: | 80 | case R_RISCV_PCREL_LO12_S: |
| 71 | case R_RISCV_32_PCREL: | 81 | case R_RISCV_32_PCREL: |
| 72 | case R_RISCV_ADD32: | 82 | case R_RISCV_ADD32: |
| 83 | case R_RISCV_ADD64: | ||
| 73 | case R_RISCV_SUB32: | 84 | case R_RISCV_SUB32: |
| 85 | case R_RISCV_SUB64: | ||
| 74 | case R_RISCV_32: | 86 | case R_RISCV_32: |
| 75 | case R_RISCV_64: | 87 | case R_RISCV_64: |
| 76 | case R_RISCV_JAL: | 88 | case R_RISCV_JAL: |
| @@ -287,12 +299,30 @@ void relocate(TCCState *s1, ElfW_Rel *rel, int type, unsigned char *ptr, · 210 unmodified lines | |||
| 287 | case R_RISCV_64: | 299 | case R_RISCV_64: |
| 288 | write64le(ptr, val); | 300 | write64le(ptr, val); |
| 289 | return; | 301 | return; |
| 302 | case R_RISCV_ADD64: | ||
| 303 | write64le(ptr, read64le(ptr) + val); | ||
| 304 | return; | ||
| 290 | case R_RISCV_ADD32: | 305 | case R_RISCV_ADD32: |
| 291 | write32le(ptr, read32le(ptr) + val); | 306 | write32le(ptr, read32le(ptr) + val); |
| 292 | return; | 307 | return; |
| 308 | case R_RISCV_SUB64: | ||
| 309 | write64le(ptr, read64le(ptr) - val); | ||
| 310 | return; | ||
| 293 | case R_RISCV_SUB32: | 311 | case R_RISCV_SUB32: |
| 294 | write32le(ptr, read32le(ptr) - val); | 312 | write32le(ptr, read32le(ptr) - val); |
| 295 | return; | 313 | return; |
| 314 | case R_RISCV_ADD16: | ||
| 315 | write16le(ptr, read16le(ptr) + val); | ||
| 316 | return; | ||
| 317 | case R_RISCV_SUB16: | ||
| 318 | write16le(ptr, read16le(ptr) - val); | ||
| 319 | return; | ||
| 320 | case R_RISCV_SET6: | ||
| 321 | *ptr = (*ptr & ~0x3f) | (val & 0x3f); | ||
| 322 | return; | ||
| 323 | case R_RISCV_SUB6: | ||
| 324 | *ptr = (*ptr & ~0x3f) | ((*ptr - val) & 0x3f); | ||
| 325 | return; | ||
| 296 | 326 | ||
| 297 | case R_RISCV_32_PCREL: | 327 | case R_RISCV_32_PCREL: |
| 298 | case R_RISCV_COPY: | 328 | case R_RISCV_COPY: |