From: Joel Sing Date: Sat, 17 Sep 2022 16:32:42 +0000 (+1000) Subject: cmd/link/internal/loadelf: add additional relocations for riscv64 X-Git-Tag: go1.20rc1~863 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=bc73996facc45a2846ce6ffefad437314d554dcf;p=gostls13.git cmd/link/internal/loadelf: add additional relocations for riscv64 These relocations are produced by clang/llvm. Change-Id: I4820e7ed805d1b7341023b263c167a285ca32cf5 Reviewed-on: https://go-review.googlesource.com/c/go/+/431755 Reviewed-by: Cherry Mui Reviewed-by: Dmitri Shuralyov Run-TryBot: Joel Sing TryBot-Result: Gopher Robot --- diff --git a/src/cmd/link/internal/loadelf/ldelf.go b/src/cmd/link/internal/loadelf/ldelf.go index da02223212..7ac7699996 100644 --- a/src/cmd/link/internal/loadelf/ldelf.go +++ b/src/cmd/link/internal/loadelf/ldelf.go @@ -1086,8 +1086,16 @@ func relSize(arch *sys.Arch, pn string, elftype uint32) (uint8, uint8, error) { S390X | uint32(elf.R_390_PLT64)<<16: return 8, 8, nil + case RISCV64 | uint32(elf.R_RISCV_SET6)<<16, + RISCV64 | uint32(elf.R_RISCV_SUB6)<<16, + RISCV64 | uint32(elf.R_RISCV_SET8)<<16, + RISCV64 | uint32(elf.R_RISCV_SUB8)<<16: + return 1, 1, nil + case RISCV64 | uint32(elf.R_RISCV_RVC_BRANCH)<<16, - RISCV64 | uint32(elf.R_RISCV_RVC_JUMP)<<16: + RISCV64 | uint32(elf.R_RISCV_RVC_JUMP)<<16, + RISCV64 | uint32(elf.R_RISCV_SET16)<<16, + RISCV64 | uint32(elf.R_RISCV_SUB16)<<16: return 2, 2, nil case RISCV64 | uint32(elf.R_RISCV_32)<<16, @@ -1099,6 +1107,10 @@ func relSize(arch *sys.Arch, pn string, elftype uint32) (uint8, uint8, error) { RISCV64 | uint32(elf.R_RISCV_PCREL_HI20)<<16, RISCV64 | uint32(elf.R_RISCV_PCREL_LO12_I)<<16, RISCV64 | uint32(elf.R_RISCV_PCREL_LO12_S)<<16, + RISCV64 | uint32(elf.R_RISCV_ADD32)<<16, + RISCV64 | uint32(elf.R_RISCV_SET32)<<16, + RISCV64 | uint32(elf.R_RISCV_SUB32)<<16, + RISCV64 | uint32(elf.R_RISCV_32_PCREL)<<16, RISCV64 | uint32(elf.R_RISCV_RELAX)<<16: return 4, 4, nil