summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Madison <matt@madison.systems>2017-09-14 16:22:28 -0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-09-21 09:05:50 +0100
commit975246ffe6e053820c6929454c3d73fb329c54a1 (patch)
treee0cb1d59e2621977025fc3ec8179f1d38e496fb9
parent82ba908d86a75401c86b966d1579a9e5e00ff05d (diff)
downloadpoky-975246ffe6e053820c6929454c3d73fb329c54a1.tar.gz
go: fix linking issues for nativesdk builds
Switch to using an external linker for nativesdk go, go-runtime, and go package builds, which works more reliably when building 32-bit SDKs. (From OE-Core rev: f76779f7ef6636355a5aa5741a736f5234a67fdb) Signed-off-by: Matt Madison <matt@madison.systems> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/go.bbclass4
-rw-r--r--meta/recipes-devtools/go/go-runtime.inc5
-rw-r--r--meta/recipes-devtools/go/go-target.inc3
3 files changed, 11 insertions, 1 deletions
diff --git a/meta/classes/go.bbclass b/meta/classes/go.bbclass
index 33502bf722..863b578e5c 100644
--- a/meta/classes/go.bbclass
+++ b/meta/classes/go.bbclass
@@ -37,7 +37,9 @@ GO_RPATH = "${@'-r ${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink' if d.getVar('GO_D
37GO_RPATH_class-native = "${@'-r ${STAGING_LIBDIR_NATIVE}/go/pkg/${TARGET_GOTUPLE}_dynlink' if d.getVar('GO_DYNLINK') else ''}" 37GO_RPATH_class-native = "${@'-r ${STAGING_LIBDIR_NATIVE}/go/pkg/${TARGET_GOTUPLE}_dynlink' if d.getVar('GO_DYNLINK') else ''}"
38GO_RPATH_LINK_class-native = "${@'-Wl,-rpath-link=${STAGING_LIBDIR_NATIVE}/go/pkg/${TARGET_GOTUPLE}_dynlink' if d.getVar('GO_DYNLINK') else ''}" 38GO_RPATH_LINK_class-native = "${@'-Wl,-rpath-link=${STAGING_LIBDIR_NATIVE}/go/pkg/${TARGET_GOTUPLE}_dynlink' if d.getVar('GO_DYNLINK') else ''}"
39GO_EXTLDFLAGS ?= "${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} ${GO_RPATH_LINK} ${LDFLAGS}" 39GO_EXTLDFLAGS ?= "${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} ${GO_RPATH_LINK} ${LDFLAGS}"
40GO_LDFLAGS ?= '-ldflags="${GO_RPATH} -extldflags '${GO_EXTLDFLAGS}'"' 40GO_LINKMODE ?= ""
41GO_LINKMODE_class-nativesdk = "--linkmode=external"
42GO_LDFLAGS ?= '-ldflags="${GO_RPATH} ${GO_LINKMODE} -extldflags '${GO_EXTLDFLAGS}'"'
41export GOBUILDFLAGS ?= "-v ${GO_LDFLAGS}" 43export GOBUILDFLAGS ?= "-v ${GO_LDFLAGS}"
42export GOPTESTBUILDFLAGS ?= "${GOBUILDFLAGS} -c" 44export GOPTESTBUILDFLAGS ?= "${GOBUILDFLAGS} -c"
43export GOPTESTFLAGS ?= "-test.v" 45export GOPTESTFLAGS ?= "-test.v"
diff --git a/meta/recipes-devtools/go/go-runtime.inc b/meta/recipes-devtools/go/go-runtime.inc
index a074238e47..934d1aaeb9 100644
--- a/meta/recipes-devtools/go/go-runtime.inc
+++ b/meta/recipes-devtools/go/go-runtime.inc
@@ -45,6 +45,11 @@ do_install() {
45 done 45 done
46} 46}
47 47
48# Remove test binaries that cannot be relocated
49do_install_append_class-nativesdk() {
50 rm -rf ${D}${libdir}/go/src/runtime/pprof/testdata
51}
52
48# These testdata directories aren't needed for builds and contain binaries 53# These testdata directories aren't needed for builds and contain binaries
49# that can cause errors in sysroot_strip(), so just remove them. 54# that can cause errors in sysroot_strip(), so just remove them.
50sysroot_stage_all_append() { 55sysroot_stage_all_append() {
diff --git a/meta/recipes-devtools/go/go-target.inc b/meta/recipes-devtools/go/go-target.inc
index 0d80bf0d97..b88d0166e5 100644
--- a/meta/recipes-devtools/go/go-target.inc
+++ b/meta/recipes-devtools/go/go-target.inc
@@ -14,6 +14,9 @@ export CC_FOR_TARGET = "${CC}"
14export CXX_FOR_TARGET = "${CXX}" 14export CXX_FOR_TARGET = "${CXX}"
15export GO_TARGET_INSTALL = "cmd" 15export GO_TARGET_INSTALL = "cmd"
16export GO_FLAGS = "-a" 16export GO_FLAGS = "-a"
17GO_LDFLAGS = ""
18GO_LDFLAGS_class-nativesdk = "-linkmode external"
19export GO_LDFLAGS
17 20
18do_configure[noexec] = "1" 21do_configure[noexec] = "1"
19 22