mirror of
https://github.com/golang/go
synced 2024-11-18 02:54:47 -07:00
cmd/link: fix sym sect when splitting text on ppc64le
While processing a symbol for a function, if it is determined that a function would make the text section too large then a new text section is created and the address of the function is in the new text section. But the symbol for the function is marked as being in the previous text section, causing incorrect codegen for the function and leading to a segv if that function is called. This adds code to set the sym.Sect field to the new section if a new one is created. Note that this problem only happens at the point where a new section is created. Fixes #18218 Change-Id: Ic21ae11368d9d88ff6d5d3977f9ea72fe6477ed1 Reviewed-on: https://go-review.googlesource.com/34069 Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Carlos Eduardo Seo <cseo@linux.vnet.ibm.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
be8a6fd2e3
commit
6623988eb7
@ -2114,6 +2114,7 @@ func assignAddress(ctxt *Link, sect *Section, n int, sym *Symbol, va uint64) (*S
|
||||
// Create new section, set the starting Vaddr
|
||||
sect = addsection(&Segtext, ".text", 05)
|
||||
sect.Vaddr = va
|
||||
sym.Sect = sect
|
||||
|
||||
// Create a symbol for the start of the secondary text sections
|
||||
ctxt.Syms.Lookup(fmt.Sprintf("runtime.text.%d", n), 0).Sect = sect
|
||||
|
Loading…
Reference in New Issue
Block a user