From: Cherry Zhang Date: Mon, 27 Apr 2020 20:01:24 +0000 (-0400) Subject: [dev.link] cmd/link: accept more types in Xcoffadddynrel X-Git-Tag: go1.15beta1~270^2^2~15 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=82f633a8e9a5d1b45293b54bc5224c3c846d3dc8;p=gostls13.git [dev.link] cmd/link: accept more types in Xcoffadddynrel In dodata we overwrite symbol types to SDATA. Now we'll stop doing that, so accept more symbol types here. This is basically a list of all writeable types handled in dodata that could appear in XCOFF. Change-Id: Iee35369162f5acd59806a3f0e6c8d3682620067e Reviewed-on: https://go-review.googlesource.com/c/go/+/230310 Run-TryBot: Cherry Zhang Reviewed-by: Than McIntosh TryBot-Result: Gobot Gobot --- diff --git a/src/cmd/link/internal/ld/xcoff.go b/src/cmd/link/internal/ld/xcoff.go index f156cbf439..c9c6507f1c 100644 --- a/src/cmd/link/internal/ld/xcoff.go +++ b/src/cmd/link/internal/ld/xcoff.go @@ -1141,7 +1141,7 @@ func Xcoffadddynrel2(target *Target, ldr *loader.Loader, syms *ArchSyms, s loade break } } - } else if ldr.SymType(s) == sym.SDATA { + } else if t := ldr.SymType(s); t == sym.SDATA || t == sym.SNOPTRDATA || t == sym.SBUILDINFO || t == sym.SXCOFFTOC { switch ldr.SymSect(targ).Seg { default: ldr.Errorf(s, "unknown segment for .loader relocation with symbol %s", ldr.SymName(targ)) diff --git a/src/cmd/link/internal/ld/xcoff2.go b/src/cmd/link/internal/ld/xcoff2.go index a8c2268fb7..27edbcb22d 100644 --- a/src/cmd/link/internal/ld/xcoff2.go +++ b/src/cmd/link/internal/ld/xcoff2.go @@ -84,7 +84,7 @@ func Xcoffadddynrel(target *Target, ldr *loader.Loader, s *sym.Symbol, r *sym.Re break } } - } else if s.Type == sym.SDATA { + } else if s.Type == sym.SDATA || s.Type == sym.SNOPTRDATA || s.Type == sym.SBUILDINFO || s.Type == sym.SXCOFFTOC { switch r.Sym.Sect.Seg { default: Errorf(s, "unknown segment for .loader relocation with symbol %s", r.Sym.Name)