]> code.ossystems Code Review - openembedded-core.git/commitdiff
go: fix linking issues for nativesdk builds
authorMatt Madison <matt@madison.systems>
Thu, 14 Sep 2017 19:22:28 +0000 (16:22 -0300)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 21 Sep 2017 08:03:33 +0000 (09:03 +0100)
Switch to using an external linker for nativesdk
go, go-runtime, and go package builds, which works
more reliably when building 32-bit SDKs.

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>
meta/classes/go.bbclass
meta/recipes-devtools/go/go-runtime.inc
meta/recipes-devtools/go/go-target.inc

index 33502bf722c19ee29f585b5452d1ec912940c18a..863b578e5c056eef5d616631e50a143522653845 100644 (file)
@@ -37,7 +37,9 @@ GO_RPATH = "${@'-r ${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink' if d.getVar('GO_D
 GO_RPATH_class-native = "${@'-r ${STAGING_LIBDIR_NATIVE}/go/pkg/${TARGET_GOTUPLE}_dynlink' if d.getVar('GO_DYNLINK') else ''}"
 GO_RPATH_LINK_class-native = "${@'-Wl,-rpath-link=${STAGING_LIBDIR_NATIVE}/go/pkg/${TARGET_GOTUPLE}_dynlink' if d.getVar('GO_DYNLINK') else ''}"
 GO_EXTLDFLAGS ?= "${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} ${GO_RPATH_LINK} ${LDFLAGS}"
-GO_LDFLAGS ?= '-ldflags="${GO_RPATH} -extldflags '${GO_EXTLDFLAGS}'"'
+GO_LINKMODE ?= ""
+GO_LINKMODE_class-nativesdk = "--linkmode=external"
+GO_LDFLAGS ?= '-ldflags="${GO_RPATH} ${GO_LINKMODE} -extldflags '${GO_EXTLDFLAGS}'"'
 export GOBUILDFLAGS ?= "-v ${GO_LDFLAGS}"
 export GOPTESTBUILDFLAGS ?= "${GOBUILDFLAGS} -c"
 export GOPTESTFLAGS ?= "-test.v"
index a074238e47465f1171a8488e6584cc7a075f062a..934d1aaeb935bdc13559bda3864324841ac5dff8 100644 (file)
@@ -45,6 +45,11 @@ do_install() {
        done
 }
 
+# Remove test binaries that cannot be relocated
+do_install_append_class-nativesdk() {
+       rm -rf ${D}${libdir}/go/src/runtime/pprof/testdata
+}
+
 # These testdata directories aren't needed for builds and contain binaries
 # that can cause errors in sysroot_strip(), so just remove them.
 sysroot_stage_all_append() {
index 0d80bf0d97fcdcb3e73e8701830f457dab8808fd..b88d0166e5bbfce9b539c1bd88c03cf753ff41c0 100644 (file)
@@ -14,6 +14,9 @@ export CC_FOR_TARGET = "${CC}"
 export CXX_FOR_TARGET = "${CXX}"
 export GO_TARGET_INSTALL = "cmd"
 export GO_FLAGS = "-a"
+GO_LDFLAGS = ""
+GO_LDFLAGS_class-nativesdk = "-linkmode external"
+export GO_LDFLAGS
 
 do_configure[noexec] = "1"