From 9f7079c44e670532df68ab78a1869cb99531c864 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Wed, 14 Apr 2021 12:30:36 -0400 Subject: [PATCH] cmd/link: sort the pclntab relocations 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 Run-TryBot: Russ Cox TryBot-Result: Go Bot Reviewed-by: Cherry Zhang --- src/cmd/link/internal/ld/pcln.go | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cmd/link/internal/ld/pcln.go b/src/cmd/link/internal/ld/pcln.go index 79ad9d73e9a..05fd3023694 100644 --- a/src/cmd/link/internal/ld/pcln.go +++ b/src/cmd/link/internal/ld/pcln.go @@ -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() } }