S390X uses .got instead of .got.plt. It is changed accidentally
in CL 222977. This CL fixes it.
Also, on S390X, we need to set the relocation "variant" of
R_PCREL relocation. In the old code AddPCRelPlus has the magic.
Here we use the equivalent R_PCRELDBL, as the loader doesn't
have variant.
Fix S390X build.
Change-Id: I388e16f02a0568d70287aa9a132fd42b442e3905
Reviewed-on: https://go-review.googlesource.com/c/go/+/223143
Run-TryBot: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Than McIntosh <thanm@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
dynamic.SetReachable(true)
dynamic.SetType(sym.SELFSECT) // writable
+ if ctxt.IsS390X() {
+ // S390X uses .got instead of .got.plt
+ gotplt = got
+ }
thearch.Elfsetupplt(ctxt, plt, gotplt, dynamic.Sym())
/*
if ctxt.IsPPC64() {
elfwritedynentsym2(ctxt, dynamic, DT_PLTGOT, plt.Sym())
- } else if ctxt.IsS390X() {
- elfwritedynentsym2(ctxt, dynamic, DT_PLTGOT, got.Sym())
} else {
elfwritedynentsym2(ctxt, dynamic, DT_PLTGOT, gotplt.Sym())
}
// larl %r1,_GLOBAL_OFFSET_TABLE_
plt.AddUint8(0xc0)
plt.AddUint8(0x10)
- plt.AddPCRelPlus(ctxt.Arch, got.Sym(), 6)
+ plt.AddSymRef(ctxt.Arch, got.Sym(), 6, objabi.R_PCRELDBL, 4)
// mvc 48(8,%r15),8(%r1)
plt.AddUint8(0xd2)
plt.AddUint8(0x07)