]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link: fix sym sect when splitting text on ppc64le
authorLynn Boger <laboger@linux.vnet.ibm.com>
Wed, 7 Dec 2016 13:55:21 +0000 (07:55 -0600)
committerIan Lance Taylor <iant@golang.org>
Wed, 7 Dec 2016 18:19:02 +0000 (18:19 +0000)
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>
src/cmd/link/internal/ld/data.go

index ed8193294ec631d8e26a21a098446918cb45c7d3..1e2a9eadc55f09f102627f2c6936e2cfd63d932c 100644 (file)
@@ -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