]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link: sort the pclntab relocations
authorRuss Cox <rsc@golang.org>
Wed, 14 Apr 2021 16:30:36 +0000 (12:30 -0400)
committerRuss Cox <rsc@golang.org>
Fri, 23 Apr 2021 21:42:58 +0000 (21:42 +0000)
llvm-mingw's lld produces an invalid windows/arm64 executable
when presented with relocations that are out of order
(the relocation for each function is emitted for two different
locations, so we end up with two sorted streams roughly
interlaced, not one sorted stream).

Sorting should not break other systems, so sort always.

Change-Id: Ic9a95e7145881db5984cbda442f27b0cc24748fb
Reviewed-on: https://go-review.googlesource.com/c/go/+/312033
Trust: Russ Cox <rsc@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
src/cmd/link/internal/ld/pcln.go

index 79ad9d73e9a5f3bd830e96d0f91d7abfbefebf22..05fd30236949671419e6fd0e7efa13b7763b575c 100644 (file)
@@ -590,6 +590,7 @@ func (state *pclntab) generateFunctab(ctxt *Link, funcs []loader.Sym, inlSyms ma
        if !useSymValue {
                // Generate relocations for funcdata when externally linking.
                state.writeFuncData(ctxt, sb, funcs, inlSyms, startLocations, setAddr, setUintNOP)
+               sb.SortRelocs()
        }
 }