[RelocationResolver] Add R_RISCV_SET{16,32}

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D134408
This commit is contained in:
LiaoChunyu 2022-09-22 11:53:24 +08:00
parent 8b8e18e11f
commit fcfa9c7fcd
2 changed files with 22 additions and 2 deletions

View File

@ -437,8 +437,10 @@ static bool supportsRISCV(uint64_t Type) {
case ELF::R_RISCV_SUB6:
case ELF::R_RISCV_ADD8:
case ELF::R_RISCV_SUB8:
case ELF::R_RISCV_SET16:
case ELF::R_RISCV_ADD16:
case ELF::R_RISCV_SUB16:
case ELF::R_RISCV_SET32:
case ELF::R_RISCV_ADD32:
case ELF::R_RISCV_SUB32:
case ELF::R_RISCV_ADD64:
@ -472,10 +474,14 @@ static uint64_t resolveRISCV(uint64_t Type, uint64_t Offset, uint64_t S,
return (A + (S + RA)) & 0xFF;
case ELF::R_RISCV_SUB8:
return (A - (S + RA)) & 0xFF;
case ELF::R_RISCV_SET16:
return (S + RA) & 0xFFFF;
case ELF::R_RISCV_ADD16:
return (A + (S + RA)) & 0xFFFF;
case ELF::R_RISCV_SUB16:
return (A - (S + RA)) & 0xFFFF;
case ELF::R_RISCV_SET32:
return (S + RA) & 0xFFFFFFFF;
case ELF::R_RISCV_ADD32:
return (A + (S + RA)) & 0xFFFFFFFF;
case ELF::R_RISCV_SUB32:

View File

@ -4,8 +4,16 @@
# RUN: | FileCheck -check-prefix=CHECK-DWARFDUMP %s
# CHECK: 0x26 R_RISCV_SET8 - 0x0
# CHECK-DWARFDUMP: DW_CFA_advance_loc1
# CHECK-DWARFDUMP-NEXT: DW_CFA_def_cfa_offset
# CHECK-NEXT: 0x26 R_RISCV_SUB8 - 0x0
# CHECK-NEXT: 0x2A R_RISCV_SET16 - 0x0
# CHECK-NEXT: 0x2A R_RISCV_SUB16 - 0x0
# CHECK-NEXT: 0x2F R_RISCV_SET32 - 0x0
# CHECK-DWARFDUMP: DW_CFA_advance_loc1
# CHECK-DWARFDUMP-NEXT: DW_CFA_def_cfa_offset
# CHECK-DWARFDUMP-NEXT: DW_CFA_advance_loc2
# CHECK-DWARFDUMP-NEXT: DW_CFA_def_cfa_offset
# CHECK-DWARFDUMP-NEXT: DW_CFA_advance_loc4
# CHECK-DWARFDUMP-NEXT: DW_CFA_def_cfa_offset
.text
.globl test # -- Begin function test
.p2align 1
@ -16,4 +24,10 @@ test:
.zero 100, 0x90
.cfi_def_cfa_offset 8
nop
.zero 255, 0x90
.cfi_def_cfa_offset 8
nop
.zero 65535, 0x90
.cfi_def_cfa_offset 8
nop
.cfi_endproc