]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.boringcrypto] cmd/link: implement R_X86_64_PC64 relocations
authorRuss Cox <rsc@golang.org>
Fri, 11 Aug 2017 20:22:10 +0000 (16:22 -0400)
committerRuss Cox <rsc@golang.org>
Wed, 16 Aug 2017 00:07:42 +0000 (00:07 +0000)
Change-Id: I1d7bd5cff7350a4e0f78b8efc8406e79c74732d1
Reviewed-on: https://go-review.googlesource.com/55370
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-on: https://go-review.googlesource.com/55470
Run-TryBot: Russ Cox <rsc@golang.org>

src/cmd/link/internal/amd64/asm.go
src/cmd/link/internal/ld/ldelf.go

index d2f63d3d0592e04ba068a63039a7b272207bad3a..fab4e37e985809f0bced937ffb7d003aec5d7025 100644 (file)
@@ -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
index d4f9fc44d7493a0f8f75a2f427eb5a6e88a88e55..340d9b22533b5fc2ae04c2287a381034809bff75 100644 (file)
@@ -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,