From: Cherry Zhang Date: Mon, 12 Oct 2020 22:00:25 +0000 (-0400) Subject: cmd/link: set runtime.text to the address of the first function X-Git-Tag: go1.16beta1~757 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=575ea5a87a86de3107b2401e10ff4e50e5a133a0;p=gostls13.git cmd/link: set runtime.text to the address of the first function In CL 240065 we changed it to set to FlagTextAddr. Normally it is the address of the first function, except on plan9/amd64 where, as FlagTextAddr is not aligned, it is rounded up. Set it to the actual text start address. Fixes #41137. Change-Id: I1bba67f5eb4e24d9f745a11350fc999ff48bff45 Reviewed-on: https://go-review.googlesource.com/c/go/+/261644 Trust: Cherry Zhang Run-TryBot: Cherry Zhang TryBot-Result: Go Bot Reviewed-by: David du Colombier <0intro@gmail.com> Reviewed-by: Than McIntosh --- diff --git a/src/cmd/link/internal/ld/data.go b/src/cmd/link/internal/ld/data.go index 3cd7b4ad0b..84e03a4011 100644 --- a/src/cmd/link/internal/ld/data.go +++ b/src/cmd/link/internal/ld/data.go @@ -2188,7 +2188,7 @@ func (ctxt *Link) textaddress() { ctxt.Textp[0] = text } - va := uint64(*FlagTextAddr) + va := uint64(Rnd(*FlagTextAddr, int64(Funcalign))) n := 1 sect.Vaddr = va ntramps := 0 @@ -2214,7 +2214,7 @@ func (ctxt *Link) textaddress() { // Set the address of the start/end symbols, if not already // (i.e. not darwin+dynlink or AIX+external, see above). ldr.SetSymValue(etext, int64(va)) - ldr.SetSymValue(text, *FlagTextAddr) + ldr.SetSymValue(text, int64(Segtext.Sections[0].Vaddr)) } // merge tramps into Textp, keeping Textp in address order