]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link/internal/ppc64: fix export of R_DWARFSECREF to ELF on ppc64
authorPaul E. Murphy <murp@ibm.com>
Thu, 4 May 2023 18:14:52 +0000 (13:14 -0500)
committerPaul Murphy <murp@ibm.com>
Tue, 9 May 2023 13:46:03 +0000 (13:46 +0000)
Today, external linking is not supported on any ppc64 ELF target, but
soon openbsd will be enabled with external linking support.

This relocation does not require additional endian specific fixups
like most other PPC64 Go relocation types.

I discovered this during an experiment to support external linking
on ppc64/linux.

Change-Id: I0b12b6172c7ba08df1c8cf024b4aa5e7ee76d0c4
Reviewed-on: https://go-review.googlesource.com/c/go/+/492618
Reviewed-by: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Paul Murphy <murp@ibm.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
src/cmd/link/internal/ppc64/asm.go

index b77ee500fc091fbb65c152223a0e5b7913765460..d14e9322cf36da602cdcdde89991e1cb08061596 100644 (file)
@@ -729,7 +729,7 @@ func xcoffreloc1(arch *sys.Arch, out *ld.OutBuf, ldr *loader.Loader, s loader.Sy
 func elfreloc1(ctxt *ld.Link, out *ld.OutBuf, ldr *loader.Loader, s loader.Sym, r loader.ExtReloc, ri int, sectoff int64) bool {
        // Beware that bit0~bit15 start from the third byte of an instruction in Big-Endian machines.
        rt := r.Type
-       if rt == objabi.R_ADDR || rt == objabi.R_POWER_TLS || rt == objabi.R_CALLPOWER {
+       if rt == objabi.R_ADDR || rt == objabi.R_POWER_TLS || rt == objabi.R_CALLPOWER || rt == objabi.R_DWARFSECREF {
        } else {
                if ctxt.Arch.ByteOrder == binary.BigEndian {
                        sectoff += 2