1
0
mirror of https://github.com/golang/go synced 2024-10-03 00:21:22 -06:00
go/misc/cgo
Michael Hudson-Doyle 2f41edf120 cmd/link: always read type data for dynimport symbols
Consider three shared libraries:

 libBase.so -- defines a type T
 lib2.so    -- references type T
 lib3.so    -- also references type T, and something from lib2

lib2.so will contain a type symbol for T in its symbol table, but no
definition. If, when linking lib3.so the linker reads the symbols from lib2.so
before libBase.so, the linker didn't read the type data and later crashed.

The fix is trivial but the test change is a bit messy because the order the
linker reads the shared libraries in ends up depending on the order of the
import statements in the file so I had to rename one of the test packages so
that gofmt doesn't fix the test by accident...

Fixes #15516

Change-Id: I124b058f782c900a3a54c15ed66a0d91d0cde5ce
Reviewed-on: https://go-review.googlesource.com/22744
Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-05-04 07:13:01 +00:00
..
errors all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
fortran all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
gmp all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
life all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
nocgo cmd/ld: really import runtime/cgo for external link 2014-05-20 21:36:50 -07:00
stdio all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
test all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
testasan runtime: more flexible heap memory mapping on 64-bits 2013-06-12 18:47:16 +04:00
testcarchive all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
testcshared all: fix spelling mistakes 2016-04-03 17:03:15 +00:00
testgodefs all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
testsanitizers all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00
testshared cmd/link: always read type data for dynimport symbols 2016-05-04 07:13:01 +00:00
testsigfwd runtime: for c-archive/c-shared, don't install unnecessary signal handlers 2015-12-18 22:27:38 +00:00
testso cmd/dist: convert testso test into Go 2015-06-12 04:33:50 +00:00
testsovar misc/cgo/testsovar: needs the extern keyword to export variables on non-windows platforms 2015-07-21 18:10:57 +00:00
testtls all: make copyright headers consistent with one space after period 2016-05-02 13:43:18 +00:00