From: Russ Cox Date: Fri, 11 Aug 2017 20:22:10 +0000 (-0400) Subject: [dev.boringcrypto] cmd/link: implement R_X86_64_PC64 relocations X-Git-Tag: go1.19beta1~484^2~198 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=19b89a22df5f55262f7b5acf6ae72944eb2b4486;p=gostls13.git [dev.boringcrypto] cmd/link: implement R_X86_64_PC64 relocations Change-Id: I1d7bd5cff7350a4e0f78b8efc8406e79c74732d1 Reviewed-on: https://go-review.googlesource.com/55370 Reviewed-by: Ian Lance Taylor Reviewed-on: https://go-review.googlesource.com/55470 Run-TryBot: Russ Cox --- diff --git a/src/cmd/link/internal/amd64/asm.go b/src/cmd/link/internal/amd64/asm.go index d2f63d3d05..fab4e37e98 100644 --- a/src/cmd/link/internal/amd64/asm.go +++ b/src/cmd/link/internal/amd64/asm.go @@ -118,6 +118,17 @@ func adddynrel(ctxt *ld.Link, s *ld.Symbol, r *ld.Reloc) bool { r.Add += 4 return true + case 256 + ld.R_X86_64_PC64: + if targ.Type == ld.SDYNIMPORT { + ld.Errorf(s, "unexpected R_X86_64_PC64 relocation for dynamic symbol %s", targ.Name) + } + if targ.Type == 0 || targ.Type == ld.SXREF { + ld.Errorf(s, "unknown symbol %s in pcrel", targ.Name) + } + r.Type = objabi.R_PCREL + r.Add += 8 + return true + case 256 + ld.R_X86_64_PLT32: r.Type = objabi.R_PCREL r.Add += 4 diff --git a/src/cmd/link/internal/ld/ldelf.go b/src/cmd/link/internal/ld/ldelf.go index d4f9fc44d7..340d9b2253 100644 --- a/src/cmd/link/internal/ld/ldelf.go +++ b/src/cmd/link/internal/ld/ldelf.go @@ -1210,6 +1210,7 @@ func relSize(ctxt *Link, pn string, elftype uint32) uint8 { return 4 case AMD64 | R_X86_64_64<<24, + AMD64 | R_X86_64_PC64<<24, PPC64 | R_PPC64_ADDR64<<24, S390X | R_390_GLOB_DAT<<24, S390X | R_390_RELATIVE<<24,