dlltest failed on a riscv machine.
Unified · Split
| @@ -39,10 +39,13 @@ int code_reloc (int reloc_type) · 38 unmodified lines | ||
| 39 | 39 | case R_RISCV_PCREL_LO12_S: |
| 40 | 40 | case R_RISCV_32_PCREL: |
| 41 | 41 | case R_RISCV_SET6: |
| 42 | + case R_RISCV_SET8: | |
| 43 | + case R_RISCV_SET16: | |
| 42 | 44 | case R_RISCV_SUB6: |
| 43 | 45 | case R_RISCV_ADD16: |
| 44 | 46 | case R_RISCV_ADD32: |
| 45 | 47 | case R_RISCV_ADD64: |
| 48 | + case R_RISCV_SUB8: | |
| 46 | 49 | case R_RISCV_SUB16: |
| 47 | 50 | case R_RISCV_SUB32: |
| 48 | 51 | case R_RISCV_SUB64: |
| @@ -68,8 +71,11 @@ int gotplt_entry_type (int reloc_type) · 19 unmodified lines | ||
| 68 | 71 | case R_RISCV_RVC_JUMP: |
| 69 | 72 | case R_RISCV_JUMP_SLOT: |
| 70 | 73 | case R_RISCV_SET6: |
| 74 | + case R_RISCV_SET8: | |
| 75 | + case R_RISCV_SET16: | |
| 71 | 76 | case R_RISCV_SUB6: |
| 72 | 77 | case R_RISCV_ADD16: |
| 78 | + case R_RISCV_SUB8: | |
| 73 | 79 | case R_RISCV_SUB16: |
| 74 | 80 | return NO_GOTPLT_ENTRY; |
| 75 | 81 | |
| @@ -328,12 +334,21 @@ void relocate(TCCState *s1, ElfW_Rel *rel, int type, unsigned char *ptr, · 252 unmodified lines | ||
| 328 | 334 | case R_RISCV_ADD16: |
| 329 | 335 | write16le(ptr, read16le(ptr) + val); |
| 330 | 336 | return; |
| 337 | + case R_RISCV_SUB8: | |
| 338 | + *ptr -= val; | |
| 339 | + return; | |
| 331 | 340 | case R_RISCV_SUB16: |
| 332 | 341 | write16le(ptr, read16le(ptr) - val); |
| 333 | 342 | return; |
| 334 | 343 | case R_RISCV_SET6: |
| 335 | 344 | *ptr = (*ptr & ~0x3f) | (val & 0x3f); |
| 336 | 345 | return; |
| 346 | + case R_RISCV_SET8: | |
| 347 | + *ptr = (*ptr & ~0xff) | (val & 0xff); | |
| 348 | + return; | |
| 349 | + case R_RISCV_SET16: | |
| 350 | + *ptr = (*ptr & ~0xffff) | (val & 0xffff); | |
| 351 | + return; | |
| 337 | 352 | case R_RISCV_SUB6: |
| 338 | 353 | *ptr = (*ptr & ~0x3f) | ((*ptr - val) & 0x3f); |
| 339 | 354 | return; |