<div dir="ltr">Something in this series breaks:<div><br></div><div><div>ERROR: go-helloworld-0.1-r0 do_compile: Function failed: do_compile (log file is located at /data/poky-tmp/master/work/corei7-64-poky-linux/go-helloworld/0.1-r0/temp/log.do_compile.12028)</div><div>ERROR: Logfile of failure stored in: /data/poky-tmp/master/work/corei7-64-poky-linux/go-helloworld/0.1-r0/temp/log.do_compile.12028</div><div>Log data follows:</div><div>| DEBUG: Executing shell function do_compile</div><div>| <a href="http://github.com/golang/example/stringutil">github.com/golang/example/stringutil</a></div><div>| # /data/poky-tmp/master/work/corei7-64-poky-linux/go-helloworld/0.1-r0/go-tmp/go-build469569525/b188/libstd.so</div><div>| /data/poky-tmp/master/work/corei7-64-poky-linux/go-helloworld/0.1-r0/recipe-sysroot-native/usr/lib/x86_64-poky-linux/go/pkg/tool/linux_amd64/link: running x86_64-poky-linux-gcc failed: exit status 1</div><div>| /tmp/go-link-351787050/go.o:(.<a href="http://data.rel.ro">data.rel.ro</a>+0x4181b0): undefined reference to `main.init&#39;</div><div>| /tmp/go-link-351787050/go.o:(.<a href="http://data.rel.ro">data.rel.ro</a>+0x4181b8): undefined reference to `main.main&#39;</div><div>| collect2: error: ld returned 1 exit status</div><div>|</div><div>| WARNING: exit code 2 from a shell command.</div><div>| ERROR: Function failed: do_compile (log file is located at /data/poky-tmp/master/work/corei7-64-poky-linux/go-helloworld/0.1-r0/temp/log.do_compile.12028)</div><div>ERROR: Task (/home/ross/Yocto/poky/meta/recipes-extended/go-examples/go-helloworld_0.1.bb:do_compile) failed with exit code &#39;1&#39;</div></div><div><br></div><div>(same recipe built without the series)</div><div><br></div><div>Ross</div></div><div class="gmail_extra"><br><div class="gmail_quote">On 27 February 2018 at 12:36, Matt Madison <span dir="ltr">&lt;<a href="mailto:matt@madison.systems" target="_blank">matt@madison.systems</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">* Patches and recipes reworked for go 1.10&#39;s significant<br>
  changes to its bootstrap and build steps<br>
<br>
* Update go1.4 source tarball used for go-native<br>
  bootstrapping to the version recommended<br>
  in the current go documentation<br>
<br>
* Remove test data from installed sources to eliminate<br>
  some packaging QA warnings<br>
<br>
* Set GOCACHE to &#39;off&#39; to disable 1.10&#39;s build caching<br>
  in the go recipes and bbclass<br>
<br>
Signed-off-by: Matt Madison &lt;matt@madison.systems&gt;<br>
---<br>
 meta/classes/go.bbclass                            |   2 +<br>
 meta/recipes-devtools/go/go-1.<wbr>10.inc               |  21 ++<br>
 ...1-allow-CC-and-CXX-to-have-<wbr>multiple-words.patch |  49 ++++<br>
 ...-content-based-hash-<wbr>generation-less-pedan.patch | 220 ++++++++++++++++<br>
 ...OLDIR-to-be-overridden-in-<wbr>the-environment.patch |  64 +++++<br>
 .../0004-ld-add-soname-to-<wbr>shareable-objects.patch  |  47 ++++<br>
 ...verride-CC-when-building-<wbr>dist-and-go_boot.patch |  40 +++<br>
 ...-cmd-dist-separate-host-<wbr>and-target-builds.patch | 277 +++++++++++++++++++++<br>
 ...07-cmd-go-make-GOROOT-<wbr>precious-by-default.patch |  97 ++++++++<br>
 ...ld-replace-glibc-dynamic-<wbr>linker-with-musl.patch | 130 ++++++++++<br>
 meta/recipes-devtools/go/go-1.<wbr>9.inc                |  26 --<br>
 .../0001-make.bash-quote-CC_<wbr>FOR_TARGET.patch       |  32 ---<br>
 ...CC-and-CXX-environment-<wbr>variable-construct.patch |  67 -----<br>
 ...sh-better-separate-host-<wbr>and-target-builds.patch |  92 -------<br>
 ...w-GOTOOLDIR-to-be-<wbr>overridden-in-the-envir.patch |  68 -----<br>
 ...05-cmd-go-make-GOROOT-<wbr>precious-by-default.patch |  41 ---<br>
 ...dd-GOTOOLDIR_BOOTSTRAP-<wbr>environment-variab.patch |  36 ---<br>
 .../0007-ld-add-soname-to-<wbr>shareable-objects.patch  |  46 ----<br>
 ...dd-GOHOSTxx-indirection-<wbr>for-cross-canadia.patch |  33 ---<br>
 ...dmode-pie-forces-external-<wbr>linking-mode-on.patch |  47 ----<br>
 ...verride-CC-when-building-<wbr>dist-and-go_boot.patch |  43 ----<br>
 .../go/go-1.9/set-external-<wbr>linker.patch            | 111 ---------<br>
 meta/recipes-devtools/go/go-<wbr>common.inc             |   2 +<br>
 meta/recipes-devtools/go/go-<wbr>cross-canadian.inc     |  28 +--<br>
 ...<a href="http://s-canadian_1.9.bb" rel="noreferrer" target="_blank">s-canadian_1.9.bb</a> =&gt; <a href="http://go-cross-canadian_1.10.bb" rel="noreferrer" target="_blank">go-cross-canadian_1.10.bb</a>} |   0<br>
 meta/recipes-devtools/go/go-<wbr>cross.inc              |  55 ++--<br>
 .../go/{<a href="http://go-cross_1.9.bb" rel="noreferrer" target="_blank">go-cross_1.9.bb</a> =&gt; <a href="http://go-cross_1.10.bb" rel="noreferrer" target="_blank">go-cross_1.10.bb</a>}       |   0<br>
 meta/recipes-devtools/go/go-<wbr>crosssdk.inc           |  16 +-<br>
 .../go/{<a href="http://go-crosssdk_1.9.bb" rel="noreferrer" target="_blank">go-crosssdk_1.9.bb</a> =&gt; <a href="http://go-crosssdk_1.10.bb" rel="noreferrer" target="_blank">go-crosssdk_1.10.bb</a>} |   0<br>
 meta/recipes-devtools/go/go-<wbr>native.inc             |  25 +-<br>
 .../go/{<a href="http://go-native_1.9.bb" rel="noreferrer" target="_blank">go-native_1.9.bb</a> =&gt; <a href="http://go-native_1.10.bb" rel="noreferrer" target="_blank">go-native_1.10.bb</a>}     |   0<br>
 meta/recipes-devtools/go/go-<wbr>runtime.inc            |  58 +++--<br>
 .../go/{<a href="http://go-runtime_1.9.bb" rel="noreferrer" target="_blank">go-runtime_1.9.bb</a> =&gt; <a href="http://go-runtime_1.10.bb" rel="noreferrer" target="_blank">go-runtime_1.10.bb</a>}   |   0<br>
 meta/recipes-devtools/go/go-<wbr>target.inc             |  21 +-<br>
 meta/recipes-devtools/go/{<a href="http://go_1.9.bb" rel="noreferrer" target="_blank">go_<wbr>1.9.bb</a> =&gt; <a href="http://go_1.10.bb" rel="noreferrer" target="_blank">go_1.10.bb</a>} |   0<br>
 35 files changed, 1048 insertions(+), 746 deletions(-)<br>
 create mode 100644 meta/recipes-devtools/go/go-1.<wbr>10.inc<br>
 create mode 100644 meta/recipes-devtools/go/go-1.<wbr>10/0001-allow-CC-and-CXX-to-<wbr>have-multiple-words.patch<br>
 create mode 100644 meta/recipes-devtools/go/go-1.<wbr>10/0002-cmd-go-make-content-<wbr>based-hash-generation-less-<wbr>pedan.patch<br>
 create mode 100644 meta/recipes-devtools/go/go-1.<wbr>10/0003-allow-GOTOOLDIR-to-be-<wbr>overridden-in-the-environment.<wbr>patch<br>
 create mode 100644 meta/recipes-devtools/go/go-1.<wbr>10/0004-ld-add-soname-to-<wbr>shareable-objects.patch<br>
 create mode 100644 meta/recipes-devtools/go/go-1.<wbr>10/0005-make.bash-override-CC-<wbr>when-building-dist-and-go_<wbr>boot.patch<br>
 create mode 100644 meta/recipes-devtools/go/go-1.<wbr>10/0006-cmd-dist-separate-<wbr>host-and-target-builds.patch<br>
 create mode 100644 meta/recipes-devtools/go/go-1.<wbr>10/0007-cmd-go-make-GOROOT-<wbr>precious-by-default.patch<br>
 create mode 100644 meta/recipes-devtools/go/go-1.<wbr>10/0008-ld-replace-glibc-<wbr>dynamic-linker-with-musl.patch<br>
 delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9.inc<br>
 delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/0001-make.bash-quote-CC_FOR_<wbr>TARGET.patch<br>
 delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/0002-cmd-go-fix-CC-and-CXX-<wbr>environment-variable-<wbr>construct.patch<br>
 delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/0003-make.bash-better-<wbr>separate-host-and-target-<wbr>builds.patch<br>
 delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/0004-cmd-go-allow-GOTOOLDIR-<wbr>to-be-overridden-in-the-envir.<wbr>patch<br>
 delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/0005-cmd-go-make-GOROOT-<wbr>precious-by-default.patch<br>
 delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/0006-make.bash-add-<wbr>GOTOOLDIR_BOOTSTRAP-<wbr>environment-variab.patch<br>
 delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/0007-ld-add-soname-to-<wbr>shareable-objects.patch<br>
 delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/0008-make.bash-add-GOHOSTxx-<wbr>indirection-for-cross-canadia.<wbr>patch<br>
 delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/0009-cmd-go-buildmode-pie-<wbr>forces-external-linking-mode-<wbr>on.patch<br>
 delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/0010-make.bash-override-CC-<wbr>when-building-dist-and-go_<wbr>boot.patch<br>
 delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/set-external-linker.patch<br>
 rename meta/recipes-devtools/go/{<a href="http://go-cross-canadian_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>cross-canadian_1.9.bb</a> =&gt; <a href="http://go-cross-canadian_1.10.bb" rel="noreferrer" target="_blank">go-cross-canadian_1.10.bb</a>} (100%)<br>
 rename meta/recipes-devtools/go/{<a href="http://go-cross_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>cross_1.9.bb</a> =&gt; <a href="http://go-cross_1.10.bb" rel="noreferrer" target="_blank">go-cross_1.10.bb</a>} (100%)<br>
 rename meta/recipes-devtools/go/{<a href="http://go-crosssdk_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>crosssdk_1.9.bb</a> =&gt; <a href="http://go-crosssdk_1.10.bb" rel="noreferrer" target="_blank">go-crosssdk_1.10.bb</a>} (100%)<br>
 rename meta/recipes-devtools/go/{<a href="http://go-native_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>native_1.9.bb</a> =&gt; <a href="http://go-native_1.10.bb" rel="noreferrer" target="_blank">go-native_1.10.bb</a>} (100%)<br>
 rename meta/recipes-devtools/go/{<a href="http://go-runtime_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>runtime_1.9.bb</a> =&gt; <a href="http://go-runtime_1.10.bb" rel="noreferrer" target="_blank">go-runtime_1.10.bb</a>} (100%)<br>
 rename meta/recipes-devtools/go/{<a href="http://go_1.9.bb" rel="noreferrer" target="_blank">go_<wbr>1.9.bb</a> =&gt; <a href="http://go_1.10.bb" rel="noreferrer" target="_blank">go_1.10.bb</a>} (100%)<br>
<br>
diff --git a/meta/classes/go.bbclass b/meta/classes/go.bbclass<br>
index 7ecd8c9254..43a262d599 100644<br>
--- a/meta/classes/go.bbclass<br>
+++ b/meta/classes/go.bbclass<br>
@@ -24,6 +24,7 @@ GO_LINKMODE ?= &quot;&quot;<br>
 GO_LINKMODE_class-nativesdk = &quot;--linkmode=external&quot;<br>
 GO_LDFLAGS ?= &#39;-ldflags=&quot;${GO_RPATH} ${GO_LINKMODE} -extldflags &#39;${GO_EXTLDFLAGS}&#39;&quot;&#39;<br>
 export GOBUILDFLAGS ?= &quot;-v ${GO_LDFLAGS}&quot;<br>
+export GOPATH_OMIT_IN_ACTIONID ?= &quot;1&quot;<br>
 export GOPTESTBUILDFLAGS ?= &quot;${GOBUILDFLAGS} -c&quot;<br>
 export GOPTESTFLAGS ?= &quot;-test.v&quot;<br>
 GOBUILDFLAGS_prepend_task-<wbr>compile = &quot;${GO_PARALLEL_BUILD} &quot;<br>
@@ -47,6 +48,7 @@ GO_INSTALL_FILTEROUT ?= &quot;${GO_IMPORT}/vendor/&quot;<br>
<br>
 B = &quot;${WORKDIR}/build&quot;<br>
 export GOPATH = &quot;${B}&quot;<br>
+export GOCACHE = &quot;off&quot;<br>
 GO_TMPDIR ?= &quot;${WORKDIR}/go-tmp&quot;<br>
 GO_TMPDIR[vardepvalue] = &quot;&quot;<br>
<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.10.inc b/meta/recipes-devtools/go/go-<wbr>1.10.inc<br>
new file mode 100644<br>
index 0000000000..3a93773e2a<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/go/go-<wbr>1.10.inc<br>
@@ -0,0 +1,21 @@<br>
+require go-common.inc<br>
+<br>
+GO_BASEVERSION = &quot;1.10&quot;<br>
+FILESEXTRAPATHS_prepend := &quot;${FILE_DIRNAME}/go-${GO_<wbr>BASEVERSION}:&quot;<br>
+<br>
+LIC_FILES_CHKSUM = &quot;file://LICENSE;md5=<wbr>5d4950ecb7b26d2c5e4e7b4e0dd747<wbr>07&quot;<br>
+<br>
+SRC_URI += &quot;\<br>
+    file://0001-allow-CC-and-CXX-<wbr>to-have-multiple-words.patch \<br>
+    file://0002-cmd-go-make-<wbr>content-based-hash-generation-<wbr>less-pedan.patch \<br>
+    file://0003-allow-GOTOOLDIR-<wbr>to-be-overridden-in-the-<wbr>environment.patch \<br>
+    file://0004-ld-add-soname-to-<wbr>shareable-objects.patch \<br>
+    file://0005-make.bash-<wbr>override-CC-when-building-<wbr>dist-and-go_boot.patch \<br>
+    file://0006-cmd-dist-separate-<wbr>host-and-target-builds.patch \<br>
+    file://0007-cmd-go-make-<wbr>GOROOT-precious-by-default.<wbr>patch \<br>
+&quot;<br>
+<br>
+SRC_URI_append_libc-musl = &quot; file://0008-ld-replace-glibc-<wbr>dynamic-linker-with-musl.<wbr>patch&quot;<br>
+<br>
+SRC_URI[main.md5sum] = &quot;<wbr>07cbb9d0091b846c6aea40bf5bc0ce<wbr>a7&quot;<br>
+SRC_URI[main.sha256sum] = &quot;<wbr>f3de49289405fda5fd1483a8fe6bd2<wbr>fa5469e005fd567df64485c4fa000c<wbr>7f24&quot;<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.10/0001-allow-CC-and-CXX-to-<wbr>have-multiple-words.patch b/meta/recipes-devtools/go/go-<wbr>1.10/0001-allow-CC-and-CXX-to-<wbr>have-multiple-words.patch<br>
new file mode 100644<br>
index 0000000000..4584590632<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/go/go-<wbr>1.10/0001-allow-CC-and-CXX-to-<wbr>have-multiple-words.patch<br>
@@ -0,0 +1,49 @@<br>
+From c287c18856575139e4495b320f20cf<wbr>96856896db Mon Sep 17 00:00:00 2001<br>
+From: Matt Madison &lt;matt@madison.systems&gt;<br>
+Date: Mon, 19 Feb 2018 08:49:33 -0800<br>
+Subject: [PATCH 1/8] allow CC and CXX to have multiple words<br>
+<br>
+Upstream-Status: Inappropriate [OE specific]<br>
+<br>
+Signed-off-by: Matt Madison &lt;matt@madison.systems&gt;<br>
+---<br>
+ src/cmd/dist/build.go             | 4 +++-<br>
+ src/cmd/go/internal/envcmd/<wbr>env.go | 4 ++--<br>
+ 2 files changed, 5 insertions(+), 3 deletions(-)<br>
+<br>
+diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go<br>
+index 49ed80033e..eb70f17790 100644<br>
+--- a/src/cmd/dist/build.go<br>
++++ b/src/cmd/dist/build.go<br>
+@@ -1406,7 +1406,9 @@ func checkCC() {<br>
+       if !needCC() {<br>
+               return<br>
+       }<br>
+-      if output, err := exec.Command(defaultcc[&quot;&quot;], &quot;--help&quot;).CombinedOutput(); err != nil {<br>
++      cc := strings.Split(defaultcc[&quot;&quot;], &quot; &quot;)<br>
++      args := append(cc[1:], &quot;--help&quot;)<br>
++      if output, err := exec.Command(cc[0], args...).CombinedOutput(); err != nil {<br>
+               outputHdr := &quot;&quot;<br>
+               if len(output) &gt; 0 {<br>
+                       outputHdr = &quot;\nCommand output:\n\n&quot;<br>
+diff --git a/src/cmd/go/internal/envcmd/<wbr>env.go b/src/cmd/go/internal/envcmd/<wbr>env.go<br>
+index 603f7b5060..f891123f9c 100644<br>
+--- a/src/cmd/go/internal/envcmd/<wbr>env.go<br>
++++ b/src/cmd/go/internal/envcmd/<wbr>env.go<br>
+@@ -82,11 +82,11 @@ func MkEnv() []cfg.EnvVar {<br>
+<br>
+       cc := cfg.DefaultCC(cfg.Goos, cfg.Goarch)<br>
+       if env := strings.Fields(os.Getenv(&quot;CC&quot;)<wbr>); len(env) &gt; 0 {<br>
+-              cc = env[0]<br>
++              cc = strings.Join(env, &quot; &quot;)<br>
+       }<br>
+       cxx := cfg.DefaultCXX(cfg.Goos, cfg.Goarch)<br>
+       if env := strings.Fields(os.Getenv(&quot;CXX&quot;<wbr>)); len(env) &gt; 0 {<br>
+-              cxx = env[0]<br>
++              cxx = strings.Join(env, &quot; &quot;)<br>
+       }<br>
+       env = append(env, cfg.EnvVar{Name: &quot;CC&quot;, Value: cc})<br>
+       env = append(env, cfg.EnvVar{Name: &quot;CXX&quot;, Value: cxx})<br>
+--<br>
+2.14.1<br>
+<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.10/0002-cmd-go-make-content-<wbr>based-hash-generation-less-<wbr>pedan.patch b/meta/recipes-devtools/go/go-<wbr>1.10/0002-cmd-go-make-content-<wbr>based-hash-generation-less-<wbr>pedan.patch<br>
new file mode 100644<br>
index 0000000000..5fd471960e<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/go/go-<wbr>1.10/0002-cmd-go-make-content-<wbr>based-hash-generation-less-<wbr>pedan.patch<br>
@@ -0,0 +1,220 @@<br>
+From 4ec2b27c091fbce0e8e2fd7e3ef2c7<wbr>6e068af32f Mon Sep 17 00:00:00 2001<br>
+From: Matt Madison &lt;matt@madison.systems&gt;<br>
+Date: Mon, 19 Feb 2018 08:50:59 -0800<br>
+Subject: [PATCH 2/8] cmd/go: make content-based hash generation less pedantic<br>
+<br>
+Go 1.10&#39;s build tool now uses content-based hashes to<br>
+determine when something should be built or re-built.<br>
+This same mechanism is used to maintain a built-artifact<br>
+cache for speeding up builds.<br>
+<br>
+However, the hashes it generates include information that<br>
+doesn&#39;t work well with OE, nor with using a shared runtime<br>
+library.<br>
+<br>
+First, it embeds path names to source files, unless<br>
+building within GOROOT.  This prevents the building<br>
+of a package in GOPATH for later staging into GOROOT.<br>
+<br>
+This patch adds support for the environment variable<br>
+GOPATH_OMIT_IN_ACTIONID.  If present, path name<br>
+embedding is disabled.<br>
+<br>
+Second, if cgo is enabled, the build ID for cgo-related<br>
+packages will include the current value of the environment<br>
+variables for invoking the compiler (CC, CXX, FC) and<br>
+any CGO_xxFLAGS variables.  Only if the settings used<br>
+during a compilation exactly match, character for character,<br>
+the values used for compiling runtime/cgo or any other<br>
+cgo-enabled package being imported, will the tool<br>
+decide that the imported package is up-to-date.<br>
+<br>
+This is done to help ensure correctness, but is overly<br>
+simplistic and effectively prevents the reuse of built<br>
+artifacts that use cgo (or shared runtime, which includes<br>
+runtime/cgo).<br>
+<br>
+This patch filters out all compiler flags except those<br>
+beginning with &#39;-m&#39;.  The default behavior can be restored<br>
+by setting the CGO_PEDANTIC environment variable.<br>
+<br>
+Upstream-Status: Inappropriate [OE specific]<br>
+<br>
+Signed-off-by: Matt Madison &lt;matt@madison.systems&gt;<br>
+---<br>
+ src/cmd/go/internal/envcmd/<wbr>env.go |  2 +-<br>
+ src/cmd/go/internal/work/exec.<wbr>go  | 63 ++++++++++++++++++++++++++++--<wbr>---------<br>
+ 2 files changed, 46 insertions(+), 19 deletions(-)<br>
+<br>
+diff --git a/src/cmd/go/internal/envcmd/<wbr>env.go b/src/cmd/go/internal/envcmd/<wbr>env.go<br>
+index f891123f9c..ebacfbfdbc 100644<br>
+--- a/src/cmd/go/internal/envcmd/<wbr>env.go<br>
++++ b/src/cmd/go/internal/envcmd/<wbr>env.go<br>
+@@ -113,7 +113,7 @@ func findEnv(env []cfg.EnvVar, name string) string {<br>
+ func ExtraEnvVars() []cfg.EnvVar {<br>
+       var b work.Builder<br>
+       b.Init()<br>
+-      cppflags, cflags, cxxflags, fflags, ldflags, err := b.CFlags(&amp;load.Package{})<br>
++      cppflags, cflags, cxxflags, fflags, ldflags, err := b.CFlags(&amp;load.Package{}, false)<br>
+       if err != nil {<br>
+               // Should not happen - b.CFlags was given an empty package.<br>
+               fmt.Fprintf(os.Stderr, &quot;go: invalid cflags: %v\n&quot;, err)<br>
+diff --git a/src/cmd/go/internal/work/<wbr>exec.go b/src/cmd/go/internal/work/<wbr>exec.go<br>
+index c4c1500eb2..b0f6b45647 100644<br>
+--- a/src/cmd/go/internal/work/<wbr>exec.go<br>
++++ b/src/cmd/go/internal/work/<wbr>exec.go<br>
+@@ -173,6 +173,8 @@ func (b *Builder) Do(root *Action) {<br>
+       wg.Wait()<br>
+ }<br>
+<br>
++var omitGopath = os.Getenv(&quot;GOPATH_OMIT_IN_<wbr>ACTIONID&quot;) != &quot;&quot;<br>
++<br>
+ // buildActionID computes the action ID for a build action.<br>
+ func (b *Builder) buildActionID(a *Action) cache.ActionID {<br>
+       p := a.Package<br>
+@@ -189,7 +191,7 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {<br>
+       // but it does not hide the exact value of $GOPATH.<br>
+       // Include the full dir in that case.<br>
+       // Assume b.WorkDir is being trimmed properly.<br>
+-      if !p.Goroot &amp;&amp; !strings.HasPrefix(p.Dir, b.WorkDir) {<br>
++      if !p.Goroot &amp;&amp; !omitGopath &amp;&amp; !strings.HasPrefix(p.Dir, b.WorkDir) {<br>
+               fmt.Fprintf(h, &quot;dir %s\n&quot;, p.Dir)<br>
+       }<br>
+       fmt.Fprintf(h, &quot;goos %s goarch %s\n&quot;, cfg.Goos, cfg.Goarch)<br>
+@@ -197,13 +199,13 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {<br>
+       fmt.Fprintf(h, &quot;omitdebug %v standard %v local %v prefix %q\n&quot;, p.Internal.OmitDebug, p.Standard, p.Internal.Local, p.Internal.LocalPrefix)<br>
+       if len(p.CgoFiles)+len(p.<wbr>SwigFiles) &gt; 0 {<br>
+               fmt.Fprintf(h, &quot;cgo %q\n&quot;, b.toolID(&quot;cgo&quot;))<br>
+-              cppflags, cflags, cxxflags, fflags, _, _ := b.CFlags(p)<br>
+-              fmt.Fprintf(h, &quot;CC=%q %q %q\n&quot;, b.ccExe(), cppflags, cflags)<br>
++              cppflags, cflags, cxxflags, fflags, _, _ := b.CFlags(p, true)<br>
++              fmt.Fprintf(h, &quot;CC=%q %q %q\n&quot;, b.ccExe(true), cppflags, cflags)<br>
+               if len(p.CXXFiles)+len(p.<wbr>SwigFiles) &gt; 0 {<br>
+-                      fmt.Fprintf(h, &quot;CXX=%q %q\n&quot;, b.cxxExe(), cxxflags)<br>
++                      fmt.Fprintf(h, &quot;CXX=%q %q\n&quot;, b.cxxExe(true), cxxflags)<br>
+               }<br>
+               if len(p.FFiles) &gt; 0 {<br>
+-                      fmt.Fprintf(h, &quot;FC=%q %q\n&quot;, b.fcExe(), fflags)<br>
++                      fmt.Fprintf(h, &quot;FC=%q %q\n&quot;, b.fcExe(true), fflags)<br>
+               }<br>
+               // TODO(rsc): Should we include the SWIG version or Fortran/GCC/G++/Objective-C compiler versions?<br>
+       }<br>
+@@ -1731,33 +1733,33 @@ var (<br>
+ // gccCmd returns a gcc command line prefix<br>
+ // defaultCC is defined in zdefaultcc.go, written by cmd/dist.<br>
+ func (b *Builder) GccCmd(incdir, workdir string) []string {<br>
+-      return b.compilerCmd(b.ccExe(), incdir, workdir)<br>
++      return b.compilerCmd(b.ccExe(false), incdir, workdir)<br>
+ }<br>
+<br>
+ // gxxCmd returns a g++ command line prefix<br>
+ // defaultCXX is defined in zdefaultcc.go, written by cmd/dist.<br>
+ func (b *Builder) GxxCmd(incdir, workdir string) []string {<br>
+-      return b.compilerCmd(b.cxxExe(), incdir, workdir)<br>
++      return b.compilerCmd(b.cxxExe(false), incdir, workdir)<br>
+ }<br>
+<br>
+ // gfortranCmd returns a gfortran command line prefix.<br>
+ func (b *Builder) gfortranCmd(incdir, workdir string) []string {<br>
+-      return b.compilerCmd(b.fcExe(), incdir, workdir)<br>
++      return b.compilerCmd(b.fcExe(false), incdir, workdir)<br>
+ }<br>
+<br>
+ // ccExe returns the CC compiler setting without all the extra flags we add implicitly.<br>
+-func (b *Builder) ccExe() []string {<br>
+-      return b.compilerExe(origCC, cfg.DefaultCC(cfg.Goos, cfg.Goarch))<br>
++func (b *Builder) ccExe(filtered bool) []string {<br>
++      return b.compilerExe(origCC, cfg.DefaultCC(cfg.Goos, cfg.Goarch), filtered)<br>
+ }<br>
+<br>
+ // cxxExe returns the CXX compiler setting without all the extra flags we add implicitly.<br>
+-func (b *Builder) cxxExe() []string {<br>
+-      return b.compilerExe(origCXX, cfg.DefaultCXX(cfg.Goos, cfg.Goarch))<br>
++func (b *Builder) cxxExe(filtered bool) []string {<br>
++      return b.compilerExe(origCXX, cfg.DefaultCXX(cfg.Goos, cfg.Goarch), filtered)<br>
+ }<br>
+<br>
+ // fcExe returns the FC compiler setting without all the extra flags we add implicitly.<br>
+-func (b *Builder) fcExe() []string {<br>
+-      return b.compilerExe(os.Getenv(&quot;FC&quot;), &quot;gfortran&quot;)<br>
++func (b *Builder) fcExe(filtered bool) []string {<br>
++      return b.compilerExe(os.Getenv(&quot;FC&quot;), &quot;gfortran&quot;, filtered)<br>
+ }<br>
+<br>
+ // compilerExe returns the compiler to use given an<br>
+@@ -1766,11 +1768,14 @@ func (b *Builder) fcExe() []string {<br>
+ // of the compiler but can have additional arguments if they<br>
+ // were present in the environment value.<br>
+ // For example if CC=&quot;gcc -DGOPHER&quot; then the result is [&quot;gcc&quot;, &quot;-DGOPHER&quot;].<br>
+-func (b *Builder) compilerExe(envValue string, def string) []string {<br>
++func (b *Builder) compilerExe(envValue string, def string, filtered bool) []string {<br>
+       compiler := strings.Fields(envValue)<br>
+       if len(compiler) == 0 {<br>
+               compiler = []string{def}<br>
+       }<br>
++      if filtered {<br>
++              return append(compiler[0:1], filterCompilerFlags(compiler[<wbr>1:])...)<br>
++      }<br>
+       return compiler<br>
+ }<br>
+<br>
+@@ -1920,8 +1925,23 @@ func envList(key, def string) []string {<br>
+       return strings.Fields(v)<br>
+ }<br>
+<br>
++var filterFlags = os.Getenv(&quot;CGO_PEDANTIC&quot;) == &quot;&quot;<br>
++<br>
++func filterCompilerFlags(flags []string) []string {<br>
++      var newflags []string<br>
++      if !filterFlags {<br>
++              return flags<br>
++      }<br>
++      for _, flag := range flags {<br>
++              if strings.HasPrefix(flag, &quot;-m&quot;) {<br>
++                      newflags = append(newflags, flag)<br>
++              }<br>
++      }<br>
++      return newflags<br>
++}<br>
++<br>
+ // CFlags returns the flags to use when invoking the C, C++ or Fortran compilers, or cgo.<br>
+-func (b *Builder) CFlags(p *load.Package) (cppflags, cflags, cxxflags, fflags, ldflags []string, err error) {<br>
++func (b *Builder) CFlags(p *load.Package, filtered bool) (cppflags, cflags, cxxflags, fflags, ldflags []string, err error) {<br>
+       defaults := &quot;-g -O2&quot;<br>
+<br>
+       if cppflags, err = buildFlags(&quot;CPPFLAGS&quot;, &quot;&quot;, p.CgoCPPFLAGS, checkCompilerFlags); err != nil {<br>
+@@ -1939,6 +1959,13 @@ func (b *Builder) CFlags(p *load.Package) (cppflags, cflags, cxxflags, fflags, l<br>
+       if ldflags, err = buildFlags(&quot;LDFLAGS&quot;, defaults, p.CgoLDFLAGS, checkLinkerFlags); err != nil {<br>
+               return<br>
+       }<br>
++      if filtered {<br>
++              cppflags = filterCompilerFlags(cppflags)<br>
++              cflags = filterCompilerFlags(cflags)<br>
++              cxxflags = filterCompilerFlags(cxxflags)<br>
++              fflags = filterCompilerFlags(fflags)<br>
++              ldflags = filterCompilerFlags(ldflags)<br>
++      }<br>
+<br>
+       return<br>
+ }<br>
+@@ -1954,7 +1981,7 @@ var cgoRe = regexp.MustCompile(`[/\\:]`)<br>
+<br>
+ func (b *Builder) cgo(a *Action, cgoExe, objdir string, pcCFLAGS, pcLDFLAGS, cgofiles, gccfiles, gxxfiles, mfiles, ffiles []string) (outGo, outObj []string, err error) {<br>
+       p := a.Package<br>
+-      cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, cgoFFLAGS, cgoLDFLAGS, err := b.CFlags(p)<br>
++      cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, cgoFFLAGS, cgoLDFLAGS, err := b.CFlags(p, false)<br>
+       if err != nil {<br>
+               return nil, nil, err<br>
+       }<br>
+@@ -2306,7 +2333,7 @@ func (b *Builder) swigIntSize(objdir string) (intsize string, err error) {<br>
+<br>
+ // Run SWIG on one SWIG input file.<br>
+ func (b *Builder) swigOne(a *Action, p *load.Package, file, objdir string, pcCFLAGS []string, cxx bool, intgosize string) (outGo, outC string, err error) {<br>
+-      cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, _, _, err := b.CFlags(p)<br>
++      cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, _, _, err := b.CFlags(p, false)<br>
+       if err != nil {<br>
+               return &quot;&quot;, &quot;&quot;, err<br>
+       }<br>
+--<br>
+2.14.1<br>
+<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.10/0003-allow-GOTOOLDIR-to-<wbr>be-overridden-in-the-<wbr>environment.patch b/meta/recipes-devtools/go/go-<wbr>1.10/0003-allow-GOTOOLDIR-to-<wbr>be-overridden-in-the-<wbr>environment.patch<br>
new file mode 100644<br>
index 0000000000..d1a674f3c2<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/go/go-<wbr>1.10/0003-allow-GOTOOLDIR-to-<wbr>be-overridden-in-the-<wbr>environment.patch<br>
@@ -0,0 +1,64 @@<br>
+From d9bdd1bf03da06572a7a74d7dbf2a2<wbr>6d279cfa55 Mon Sep 17 00:00:00 2001<br>
+From: Matt Madison &lt;matt@madison.systems&gt;<br>
+Date: Sat, 17 Feb 2018 05:24:20 -0800<br>
+Subject: [PATCH 3/8] allow GOTOOLDIR to be overridden in the environment<br>
+<br>
+to allow for split host/target build roots<br>
+<br>
+Upstream-Status: Inappropriate [OE specific]<br>
+<br>
+Signed-off-by: Matt Madison &lt;matt@madison.systems&gt;<br>
+---<br>
+ src/cmd/dist/build.go          | 4 +++-<br>
+ src/cmd/go/internal/cfg/cfg.go | 6 +++++-<br>
+ src/go/build/build.go          | 2 +-<br>
+ 3 files changed, 9 insertions(+), 3 deletions(-)<br>
+<br>
+diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go<br>
+index eb70f17790..e749cbd22e 100644<br>
+--- a/src/cmd/dist/build.go<br>
++++ b/src/cmd/dist/build.go<br>
+@@ -220,7 +220,9 @@ func xinit() {<br>
+       workdir = xworkdir()<br>
+       xatexit(rmworkdir)<br>
+<br>
+-      tooldir = pathf(&quot;%s/pkg/tool/%s_%s&quot;, goroot, gohostos, gohostarch)<br>
++      if tooldir = os.Getenv(&quot;GOTOOLDIR&quot;); tooldir == &quot;&quot; {<br>
++              tooldir = pathf(&quot;%s/pkg/tool/%s_%s&quot;, goroot, gohostos, gohostarch)<br>
++      }<br>
+ }<br>
+<br>
+ // compilerEnv returns a map from &quot;goos/goarch&quot; to the<br>
+diff --git a/src/cmd/go/internal/cfg/cfg.<wbr>go b/src/cmd/go/internal/cfg/cfg.<wbr>go<br>
+index 1de4f0dc79..4f6010d660 100644<br>
+--- a/src/cmd/go/internal/cfg/cfg.<wbr>go<br>
++++ b/src/cmd/go/internal/cfg/cfg.<wbr>go<br>
+@@ -96,7 +96,11 @@ func init() {<br>
+       // as the tool directory does not move based on environment variables.<br>
+       // This matches the initialization of ToolDir in go/build,<br>
+       // except for using GOROOT rather than runtime.GOROOT().<br>
+-      build.ToolDir = filepath.Join(GOROOT, &quot;pkg/tool/&quot;+runtime.GOOS+&quot;_&quot;+<wbr>runtime.GOARCH)<br>
++      if s := os.Getenv(&quot;GOTOOLDIR&quot;); s != &quot;&quot; {<br>
++              build.ToolDir = filepath.Clean(s)<br>
++      } else {<br>
++              build.ToolDir = filepath.Join(GOROOT, &quot;pkg/tool/&quot;+runtime.GOOS+&quot;_&quot;+<wbr>runtime.GOARCH)<br>
++      }<br>
+ }<br>
+<br>
+ func findGOROOT() string {<br>
+diff --git a/src/go/build/build.go b/src/go/build/build.go<br>
+index 68fb423983..81b1b32270 100644<br>
+--- a/src/go/build/build.go<br>
++++ b/src/go/build/build.go<br>
+@@ -1594,7 +1594,7 @@ func init() {<br>
+ }<br>
+<br>
+ // ToolDir is the directory containing build tools.<br>
+-var ToolDir = filepath.Join(runtime.GOROOT()<wbr>, &quot;pkg/tool/&quot;+runtime.GOOS+&quot;_&quot;+<wbr>runtime.GOARCH)<br>
++var ToolDir = envOr(&quot;GOTOOLDIR&quot;, filepath.Join(runtime.GOROOT()<wbr>, &quot;pkg/tool/&quot;+runtime.GOOS+&quot;_&quot;+<wbr>runtime.GOARCH))<br>
+<br>
+ // IsLocalImport reports whether the import path is<br>
+ // a local import path, like &quot;.&quot;, &quot;..&quot;, &quot;./foo&quot;, or &quot;../foo&quot;.<br>
+--<br>
+2.14.1<br>
+<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.10/0004-ld-add-soname-to-<wbr>shareable-objects.patch b/meta/recipes-devtools/go/go-<wbr>1.10/0004-ld-add-soname-to-<wbr>shareable-objects.patch<br>
new file mode 100644<br>
index 0000000000..a748391659<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/go/go-<wbr>1.10/0004-ld-add-soname-to-<wbr>shareable-objects.patch<br>
@@ -0,0 +1,47 @@<br>
+From 0346a4271d31aab567f6758711a469<wbr>4fb6108daf Mon Sep 17 00:00:00 2001<br>
+From: Matt Madison &lt;matt@madison.systems&gt;<br>
+Date: Sat, 17 Feb 2018 06:26:10 -0800<br>
+Subject: [PATCH 4/8] ld: add soname to shareable objects<br>
+<br>
+so that OE&#39;s shared library dependency handling<br>
+can find them.<br>
+<br>
+Upstream-Status: Inappropriate [OE specific]<br>
+<br>
+Signed-off-by: Matt Madison &lt;matt@madison.systems&gt;<br>
+---<br>
+ src/cmd/link/internal/ld/lib.<wbr>go | 4 ++++<br>
+ 1 file changed, 4 insertions(+)<br>
+<br>
+diff --git a/src/cmd/link/internal/ld/<wbr>lib.go b/src/cmd/link/internal/ld/<wbr>lib.go<br>
+index 6dcaf64122..11cbb8a8bb 100644<br>
+--- a/src/cmd/link/internal/ld/<wbr>lib.go<br>
++++ b/src/cmd/link/internal/ld/<wbr>lib.go<br>
+@@ -1134,6 +1134,7 @@ func (ctxt *Link) hostlink() {<br>
+                               argv = append(argv, &quot;-Wl,-z,relro&quot;)<br>
+                       }<br>
+                       argv = append(argv, &quot;-shared&quot;)<br>
++                      argv = append(argv, fmt.Sprintf(&quot;-Wl,-soname,%s&quot;, filepath.Base(*flagOutfile)))<br>
+                       if ctxt.HeadType != objabi.Hwindows {<br>
+                               // Pass -z nodelete to mark the shared library as<br>
+                               // non-closeable: a dlclose will do nothing.<br>
+@@ -1145,6 +1146,8 @@ func (ctxt *Link) hostlink() {<br>
+                       argv = append(argv, &quot;-Wl,-z,relro&quot;)<br>
+               }<br>
+               argv = append(argv, &quot;-shared&quot;)<br>
++              argv = append(argv, fmt.Sprintf(&quot;-Wl,-soname,%s&quot;, filepath.Base(*flagOutfile)))<br>
++<br>
+       case BuildModePlugin:<br>
+               if ctxt.HeadType == objabi.Hdarwin {<br>
+                       argv = append(argv, &quot;-dynamiclib&quot;)<br>
+@@ -1153,6 +1156,7 @@ func (ctxt *Link) hostlink() {<br>
+                               argv = append(argv, &quot;-Wl,-z,relro&quot;)<br>
+                       }<br>
+                       argv = append(argv, &quot;-shared&quot;)<br>
++                      argv = append(argv, fmt.Sprintf(&quot;-Wl,-soname,%s&quot;, filepath.Base(*flagOutfile)))<br>
+               }<br>
+       }<br>
+<br>
+--<br>
+2.14.1<br>
+<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.10/0005-make.bash-override-<wbr>CC-when-building-dist-and-go_<wbr>boot.patch b/meta/recipes-devtools/go/go-<wbr>1.10/0005-make.bash-override-<wbr>CC-when-building-dist-and-go_<wbr>boot.patch<br>
new file mode 100644<br>
index 0000000000..d15f9d299f<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/go/go-<wbr>1.10/0005-make.bash-override-<wbr>CC-when-building-dist-and-go_<wbr>boot.patch<br>
@@ -0,0 +1,40 @@<br>
+From 215132a219461a9bcc2ff086474c62<wbr>0f651f463e Mon Sep 17 00:00:00 2001<br>
+From: Matt Madison &lt;matt@madison.systems&gt;<br>
+Date: Sat, 17 Feb 2018 06:32:45 -0800<br>
+Subject: [PATCH 5/8] make.bash: override CC when building dist and<br>
+ go_bootstrap<br>
+<br>
+for handling OE cross-canadian builds.<br>
+<br>
+Upstream-Status: Inappropriate [OE specific]<br>
+<br>
+Signed-off-by: Matt Madison &lt;matt@madison.systems&gt;<br>
+---<br>
+ src/make.bash | 4 ++--<br>
+ 1 file changed, 2 insertions(+), 2 deletions(-)<br>
+<br>
+diff --git a/src/make.bash b/src/make.bash<br>
+index 93a5c43d11..3a63682bc4 100755<br>
+--- a/src/make.bash<br>
++++ b/src/make.bash<br>
+@@ -162,7 +162,7 @@ if [ &quot;$GOROOT_BOOTSTRAP&quot; = &quot;$GOROOT&quot; ]; then<br>
+       exit 1<br>
+ fi<br>
+ rm -f cmd/dist/dist<br>
+-GOROOT=&quot;$GOROOT_BOOTSTRAP&quot; GOOS=&quot;&quot; GOARCH=&quot;&quot; &quot;$GOROOT_BOOTSTRAP/bin/go&quot; build -o cmd/dist/dist ./cmd/dist<br>
++CC=&quot;${BUILD_CC:-${CC}}&quot; GOROOT=&quot;$GOROOT_BOOTSTRAP&quot; GOOS=&quot;&quot; GOARCH=&quot;&quot; &quot;$GOROOT_BOOTSTRAP/bin/go&quot; build -o cmd/dist/dist ./cmd/dist<br>
+<br>
+ # -e doesn&#39;t propagate out of eval, so check success by hand.<br>
+ eval $(./cmd/dist/dist env -p || echo FAIL=true)<br>
+@@ -193,7 +193,7 @@ fi<br>
+ # Run dist bootstrap to complete make.bash.<br>
+ # Bootstrap installs a proper cmd/dist, built with the new toolchain.<br>
+ # Throw ours, built with Go 1.4, away after bootstrap.<br>
+-./cmd/dist/dist bootstrap $buildall $vflag $GO_DISTFLAGS &quot;$@&quot;<br>
++CC=&quot;${BUILD_CC:-${CC}}&quot; ./cmd/dist/dist bootstrap $buildall $vflag $GO_DISTFLAGS &quot;$@&quot;<br>
+ rm -f ./cmd/dist/dist<br>
+<br>
+ # DO NOT ADD ANY NEW CODE HERE.<br>
+--<br>
+2.14.1<br>
+<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.10/0006-cmd-dist-separate-<wbr>host-and-target-builds.patch b/meta/recipes-devtools/go/go-<wbr>1.10/0006-cmd-dist-separate-<wbr>host-and-target-builds.patch<br>
new file mode 100644<br>
index 0000000000..73a9db213c<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/go/go-<wbr>1.10/0006-cmd-dist-separate-<wbr>host-and-target-builds.patch<br>
@@ -0,0 +1,277 @@<br>
+From 4839007ac75e0d6d15392e84966bd6<wbr>051a68bcc4 Mon Sep 17 00:00:00 2001<br>
+From: Matt Madison &lt;matt@madison.systems&gt;<br>
+Date: Sat, 17 Feb 2018 10:03:48 -0800<br>
+Subject: [PATCH 6/8] cmd/dist: separate host and target builds<br>
+<br>
+Change the dist tool to allow for OE-style cross-<br>
+and cross-canadian builds:<br>
+<br>
+ - command flags --host-only and --target only are added;<br>
+   if one is present, the other changes mentioned below<br>
+   take effect, and arguments may also be specified on<br>
+   the command line to enumerate the package(s) to be<br>
+   built.<br>
+<br>
+ - for OE cross builds, go_bootstrap is always built for<br>
+   the current build host, and is moved, along with the supporting<br>
+   toolchain (asm, compile, etc.) to a separate &#39;native_native&#39;<br>
+   directory under GOROOT/pkg/tool.<br>
+<br>
+ - go_bootstrap is not automatically removed after the build,<br>
+   so it can be reused later (e.g., building both static and<br>
+   shared runtime).<br>
+<br>
+Note that for --host-only builds, it would be nice to specify<br>
+just the &quot;cmd&quot; package to build only the go commands/tools,<br>
+the staleness checks in the dist tool will fail if the &quot;std&quot;<br>
+library has not also been built.  So host-only builds have to<br>
+build everything anyway.<br>
+<br>
+Upstream-Status: Inappropriate [OE specific]<br>
+<br>
+Signed-off-by: Matt Madison &lt;matt@madison.systems&gt;<br>
+<br>
+more dist cleanup<br>
+---<br>
+ src/cmd/dist/build.go | 149 ++++++++++++++++++++++++++++++<wbr>+++++++-------------<br>
+ 1 file changed, 111 insertions(+), 38 deletions(-)<br>
+<br>
+diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go<br>
+index e749cbd22e..c949429543 100644<br>
+--- a/src/cmd/dist/build.go<br>
++++ b/src/cmd/dist/build.go<br>
+@@ -38,6 +38,7 @@ var (<br>
+       goldflags        string<br>
+       workdir          string<br>
+       tooldir          string<br>
++      build_tooldir    string<br>
+       oldgoos          string<br>
+       oldgoarch        string<br>
+       exe              string<br>
+@@ -49,6 +50,7 @@ var (<br>
+<br>
+       rebuildall   bool<br>
+       defaultclang bool<br>
++      crossBuild   bool<br>
+<br>
+       vflag int // verbosity<br>
+ )<br>
+@@ -223,6 +225,8 @@ func xinit() {<br>
+       if tooldir = os.Getenv(&quot;GOTOOLDIR&quot;); tooldir == &quot;&quot; {<br>
+               tooldir = pathf(&quot;%s/pkg/tool/%s_%s&quot;, goroot, gohostos, gohostarch)<br>
+       }<br>
++      build_tooldir = pathf(&quot;%s/pkg/tool/native_<wbr>native&quot;, goroot)<br>
++<br>
+ }<br>
+<br>
+ // compilerEnv returns a map from &quot;goos/goarch&quot; to the<br>
+@@ -252,7 +256,6 @@ func compilerEnv(envName, def string) map[string]string {<br>
+               if gohostos != goos || gohostarch != goarch {<br>
+                       m[gohostos+&quot;/&quot;+gohostarch] = m[&quot;&quot;]<br>
+               }<br>
+-              m[&quot;&quot;] = env<br>
+       }<br>
+<br>
+       for _, goos := range okgoos {<br>
+@@ -479,8 +482,10 @@ func setup() {<br>
+       // We keep it in pkg/, just like the object directory above.<br>
+       if rebuildall {<br>
+               xremoveall(tooldir)<br>
++              xremoveall(build_tooldir)<br>
+       }<br>
+       xmkdirall(tooldir)<br>
++      xmkdirall(build_tooldir)<br>
+<br>
+       // Remove tool binaries from before the tool/gohostos_gohostarch<br>
+       xremoveall(pathf(&quot;%s/bin/tool&quot;<wbr>, goroot))<br>
+@@ -1130,11 +1135,29 @@ func cmdbootstrap() {<br>
+<br>
+       var noBanner bool<br>
+       var debug bool<br>
++      var hostOnly bool<br>
++      var targetOnly bool<br>
++      var toBuild = []string { &quot;std&quot;, &quot;cmd&quot; }<br>
++<br>
+       flag.BoolVar(&amp;rebuildall, &quot;a&quot;, rebuildall, &quot;rebuild all&quot;)<br>
+       flag.BoolVar(&amp;debug, &quot;d&quot;, debug, &quot;enable debugging of bootstrap process&quot;)<br>
+       flag.BoolVar(&amp;noBanner, &quot;no-banner&quot;, noBanner, &quot;do not print banner&quot;)<br>
++      flag.BoolVar(&amp;hostOnly, &quot;host-only&quot;, hostOnly, &quot;build only host binaries, not target&quot;)<br>
++      flag.BoolVar(&amp;targetOnly, &quot;target-only&quot;, targetOnly, &quot;build only target binaries, not host&quot;)<br>
+<br>
+-      xflagparse(0)<br>
++      xflagparse(-1)<br>
++<br>
++      if (hostOnly &amp;&amp; targetOnly) {<br>
++              fatalf(&quot;specify only one of --host-only or --target-only\n&quot;)<br>
++      }<br>
++      crossBuild = hostOnly || targetOnly<br>
++      if flag.NArg() &gt; 0 {<br>
++              if crossBuild {<br>
++                      toBuild = flag.Args()<br>
++              } else {<br>
++                      fatalf(&quot;package names not permitted without --host-only or --target-only\n&quot;)<br>
++              }<br>
++      }<br>
+<br>
+       if debug {<br>
+               // cmd/buildid is used in debug mode.<br>
+@@ -1182,8 +1205,13 @@ func cmdbootstrap() {<br>
+               xprintf(&quot;\n&quot;)<br>
+       }<br>
+<br>
+-      gogcflags = os.Getenv(&quot;GO_GCFLAGS&quot;) // we were using $BOOT_GO_GCFLAGS until now<br>
+-      goldflags = os.Getenv(&quot;GO_LDFLAGS&quot;)<br>
++      // For split host/target cross/cross-canadian builds, we don&#39;t<br>
++      // want to be setting these flags until after we have compiled<br>
++      // the toolchain that runs on the build host.<br>
++      if ! crossBuild {<br>
++              gogcflags = os.Getenv(&quot;GO_GCFLAGS&quot;) // we were using $BOOT_GO_GCFLAGS until now<br>
++              goldflags = os.Getenv(&quot;GO_LDFLAGS&quot;)<br>
++      }<br>
+       goBootstrap := pathf(&quot;%s/go_bootstrap&quot;, tooldir)<br>
+       cmdGo := pathf(&quot;%s/go&quot;, gobin)<br>
+       if debug {<br>
+@@ -1212,7 +1240,11 @@ func cmdbootstrap() {<br>
+               xprintf(&quot;\n&quot;)<br>
+       }<br>
+       xprintf(&quot;Building Go toolchain2 using go_bootstrap and Go toolchain1.\n&quot;)<br>
+-      os.Setenv(&quot;CC&quot;, compilerEnvLookup(defaultcc, goos, goarch))<br>
++      if crossBuild {<br>
++              os.Setenv(&quot;CC&quot;, defaultcc[&quot;&quot;])<br>
++      } else {<br>
++              os.Setenv(&quot;CC&quot;, compilerEnvLookup(defaultcc, goos, goarch))<br>
++      }<br>
+       goInstall(goBootstrap, append([]string{&quot;-i&quot;}, toolchain...)...)<br>
+       if debug {<br>
+               run(&quot;&quot;, ShowOutput|CheckExit, pathf(&quot;%s/compile&quot;, tooldir), &quot;-V=full&quot;)<br>
+@@ -1249,45 +1281,82 @@ func cmdbootstrap() {<br>
+       }<br>
+       checkNotStale(goBootstrap, append(toolchain, &quot;runtime/internal/sys&quot;)...)<br>
+<br>
+-      if goos == oldgoos &amp;&amp; goarch == oldgoarch {<br>
+-              // Common case - not setting up for cross-compilation.<br>
+-              timelog(&quot;build&quot;, &quot;toolchain&quot;)<br>
+-              if vflag &gt; 0 {<br>
+-                      xprintf(&quot;\n&quot;)<br>
++      if crossBuild {<br>
++              gogcflags = os.Getenv(&quot;GO_GCFLAGS&quot;)<br>
++              goldflags = os.Getenv(&quot;GO_LDFLAGS&quot;)<br>
++              tool_files, _ := filepath.Glob(pathf(&quot;%s/*&quot;, tooldir))<br>
++              for _, f := range tool_files {<br>
++                      copyfile(pathf(&quot;%s/%s&quot;, build_tooldir, filepath.Base(f)), f, writeExec)<br>
++                      xremove(f)<br>
++              }<br>
++              os.Setenv(&quot;GOTOOLDIR&quot;, build_tooldir)<br>
++              goBootstrap = pathf(&quot;%s/go_bootstrap&quot;, build_tooldir)<br>
++              if hostOnly {<br>
++                      timelog(&quot;build&quot;, &quot;host toolchain&quot;)<br>
++                      if vflag &gt; 0 {<br>
++                              xprintf(&quot;\n&quot;)<br>
++                      }<br>
++                      xprintf(&quot;Building %s for host, %s/%s.\n&quot;, strings.Join(toBuild, &quot;,&quot;), goos, goarch)<br>
++                      goInstall(goBootstrap, toBuild...)<br>
++                      checkNotStale(goBootstrap, toBuild...)<br>
++                      // Skip cmdGo staleness checks here, since we can&#39;t necessarily run the cmdGo binary<br>
++<br>
++                      timelog(&quot;build&quot;, &quot;target toolchain&quot;)<br>
++                      if vflag &gt; 0 {<br>
++                              xprintf(&quot;\n&quot;)<br>
++                      }<br>
++              } else if targetOnly {<br>
++                      goos = oldgoos<br>
++                      goarch = oldgoarch<br>
++                      os.Setenv(&quot;GOOS&quot;, goos)<br>
++                      os.Setenv(&quot;GOARCH&quot;, goarch)<br>
++                      os.Setenv(&quot;CC&quot;, compilerEnvLookup(defaultcc, goos, goarch))<br>
++                      xprintf(&quot;Building %s for target, %s/%s.\n&quot;, strings.Join(toBuild, &quot;,&quot;), goos, goarch)<br>
++                      goInstall(goBootstrap, toBuild...)<br>
++                      checkNotStale(goBootstrap, toBuild...)<br>
++                      // Skip cmdGo staleness checks here, since we can&#39;t run the target&#39;s cmdGo binary<br>
+               }<br>
+-              xprintf(&quot;Building packages and commands for %s/%s.\n&quot;, goos, goarch)<br>
+       } else {<br>
+-              // GOOS/GOARCH does not match GOHOSTOS/GOHOSTARCH.<br>
+-              // Finish GOHOSTOS/GOHOSTARCH installation and then<br>
+-              // run GOOS/GOARCH installation.<br>
+-              timelog(&quot;build&quot;, &quot;host toolchain&quot;)<br>
+-              if vflag &gt; 0 {<br>
+-                      xprintf(&quot;\n&quot;)<br>
++              if goos == oldgoos &amp;&amp; goarch == oldgoarch {<br>
++                      // Common case - not setting up for cross-compilation.<br>
++                      timelog(&quot;build&quot;, &quot;toolchain&quot;)<br>
++                      if vflag &gt; 0 {<br>
++                              xprintf(&quot;\n&quot;)<br>
++                      }<br>
++                      xprintf(&quot;Building packages and commands for %s/%s.\n&quot;, goos, goarch)<br>
++              } else {<br>
++                      // GOOS/GOARCH does not match GOHOSTOS/GOHOSTARCH.<br>
++                      // Finish GOHOSTOS/GOHOSTARCH installation and then<br>
++                      // run GOOS/GOARCH installation.<br>
++                      timelog(&quot;build&quot;, &quot;host toolchain&quot;)<br>
++                      if vflag &gt; 0 {<br>
++                              xprintf(&quot;\n&quot;)<br>
++                      }<br>
++                      xprintf(&quot;Building packages and commands for host, %s/%s.\n&quot;, goos, goarch)<br>
++                      goInstall(goBootstrap, &quot;std&quot;, &quot;cmd&quot;)<br>
++                      checkNotStale(goBootstrap, &quot;std&quot;, &quot;cmd&quot;)<br>
++                      checkNotStale(cmdGo, &quot;std&quot;, &quot;cmd&quot;)<br>
++<br>
++                      timelog(&quot;build&quot;, &quot;target toolchain&quot;)<br>
++                      if vflag &gt; 0 {<br>
++                              xprintf(&quot;\n&quot;)<br>
++                      }<br>
++                      goos = oldgoos<br>
++                      goarch = oldgoarch<br>
++                      os.Setenv(&quot;GOOS&quot;, goos)<br>
++                      os.Setenv(&quot;GOARCH&quot;, goarch)<br>
++                      os.Setenv(&quot;CC&quot;, compilerEnvLookup(defaultcc, goos, goarch))<br>
++                      xprintf(&quot;Building packages and commands for target, %s/%s.\n&quot;, goos, goarch)<br>
+               }<br>
+-              xprintf(&quot;Building packages and commands for host, %s/%s.\n&quot;, goos, goarch)<br>
+               goInstall(goBootstrap, &quot;std&quot;, &quot;cmd&quot;)<br>
+               checkNotStale(goBootstrap, &quot;std&quot;, &quot;cmd&quot;)<br>
+               checkNotStale(cmdGo, &quot;std&quot;, &quot;cmd&quot;)<br>
+-<br>
+-              timelog(&quot;build&quot;, &quot;target toolchain&quot;)<br>
+-              if vflag &gt; 0 {<br>
+-                      xprintf(&quot;\n&quot;)<br>
++              if debug {<br>
++                      run(&quot;&quot;, ShowOutput|CheckExit, pathf(&quot;%s/compile&quot;, tooldir), &quot;-V=full&quot;)<br>
++                      run(&quot;&quot;, ShowOutput|CheckExit, pathf(&quot;%s/buildid&quot;, tooldir), pathf(&quot;%s/pkg/%s_%s/runtime/<wbr>internal/sys.a&quot;, goroot, goos, goarch))<br>
++                      checkNotStale(goBootstrap, append(toolchain, &quot;runtime/internal/sys&quot;)...)<br>
++                      copyfile(pathf(&quot;%s/compile4&quot;, tooldir), pathf(&quot;%s/compile&quot;, tooldir), writeExec)<br>
+               }<br>
+-              goos = oldgoos<br>
+-              goarch = oldgoarch<br>
+-              os.Setenv(&quot;GOOS&quot;, goos)<br>
+-              os.Setenv(&quot;GOARCH&quot;, goarch)<br>
+-              os.Setenv(&quot;CC&quot;, compilerEnvLookup(defaultcc, goos, goarch))<br>
+-              xprintf(&quot;Building packages and commands for target, %s/%s.\n&quot;, goos, goarch)<br>
+-      }<br>
+-      goInstall(goBootstrap, &quot;std&quot;, &quot;cmd&quot;)<br>
+-      checkNotStale(goBootstrap, &quot;std&quot;, &quot;cmd&quot;)<br>
+-      checkNotStale(cmdGo, &quot;std&quot;, &quot;cmd&quot;)<br>
+-      if debug {<br>
+-              run(&quot;&quot;, ShowOutput|CheckExit, pathf(&quot;%s/compile&quot;, tooldir), &quot;-V=full&quot;)<br>
+-              run(&quot;&quot;, ShowOutput|CheckExit, pathf(&quot;%s/buildid&quot;, tooldir), pathf(&quot;%s/pkg/%s_%s/runtime/<wbr>internal/sys.a&quot;, goroot, goos, goarch))<br>
+-              checkNotStale(goBootstrap, append(toolchain, &quot;runtime/internal/sys&quot;)...)<br>
+-              copyfile(pathf(&quot;%s/compile4&quot;, tooldir), pathf(&quot;%s/compile&quot;, tooldir), writeExec)<br>
+       }<br>
+<br>
+       // Check that there are no new files in $GOROOT/bin other than<br>
+@@ -1305,7 +1374,11 @@ func cmdbootstrap() {<br>
+       }<br>
+<br>
+       // Remove go_bootstrap now that we&#39;re done.<br>
+-      xremove(pathf(&quot;%s/go_<wbr>bootstrap&quot;, tooldir))<br>
++      // Except that for split host/target cross-builds, we need to<br>
++      // keep it.<br>
++      if ! crossBuild {<br>
++              xremove(pathf(&quot;%s/go_<wbr>bootstrap&quot;, tooldir))<br>
++      }<br>
+<br>
+       // Print trailing banner unless instructed otherwise.<br>
+       if !noBanner {<br>
+--<br>
+2.14.1<br>
+<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.10/0007-cmd-go-make-GOROOT-<wbr>precious-by-default.patch b/meta/recipes-devtools/go/go-<wbr>1.10/0007-cmd-go-make-GOROOT-<wbr>precious-by-default.patch<br>
new file mode 100644<br>
index 0000000000..cadca3012b<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/go/go-<wbr>1.10/0007-cmd-go-make-GOROOT-<wbr>precious-by-default.patch<br>
@@ -0,0 +1,97 @@<br>
+From 71653883c263093624e6c92d4cd518<wbr>7433887690 Mon Sep 17 00:00:00 2001<br>
+From: Matt Madison &lt;matt@madison.systems&gt;<br>
+Date: Sun, 18 Feb 2018 15:03:14 -0800<br>
+Subject: [PATCH 7/8] cmd/go: make GOROOT precious by default<br>
+<br>
+The go build tool normally rebuilds whatever it detects is<br>
+stale.  This can be a problem when GOROOT is intended to<br>
+be read-only and the go runtime has been built as a shared<br>
+library, since we don&#39;t want every application to be rebuilding<br>
+the shared runtime - particularly in cross-build/packaging<br>
+setups, since that would lead to &#39;abi mismatch&#39; runtime errors.<br>
+<br>
+This patch adds logic to treat the standard library and all<br>
+other GOROOT-resident packages as essentially binary-only.<br>
+If, during compilation, any of those packages are &#39;stale&#39;,<br>
+an error is issued instead of rebuilding the stale components.<br>
+<br>
+For an OE build, staleness errors would indicate a problem<br>
+with the build (missing dependencies, sstate issues, etc.).<br>
+<br>
+Upstream-Status: Inappropriate [OE specific]<br>
+<br>
+Signed-off-by: Matt Madison &lt;matt@madison.systems&gt;<br>
+---<br>
+ src/cmd/go/internal/work/<wbr>build.go   |  5 +++++<br>
+ src/cmd/go/internal/work/<wbr>buildid.go |  2 +-<br>
+ src/cmd/go/internal/work/exec.<wbr>go    | 18 ++++++++++++++++++<br>
+ 3 files changed, 24 insertions(+), 1 deletion(-)<br>
+<br>
+diff --git a/src/cmd/go/internal/work/<wbr>build.go b/src/cmd/go/internal/work/<wbr>build.go<br>
+index 57b7b00879..e2ba95420e 100644<br>
+--- a/src/cmd/go/internal/work/<wbr>build.go<br>
++++ b/src/cmd/go/internal/work/<wbr>build.go<br>
+@@ -143,6 +143,7 @@ See also: go install, go get, go clean.<br>
+ }<br>
+<br>
+ const concurrentGCBackendCompilation<wbr>EnabledByDefault = true<br>
++var goRootPrecious bool = true<br>
+<br>
+ func init() {<br>
+       // break init cycle<br>
+@@ -156,6 +157,10 @@ func init() {<br>
+<br>
+       AddBuildFlags(CmdBuild)<br>
+       AddBuildFlags(CmdInstall)<br>
++<br>
++      if x := os.Getenv(&quot;GOROOT_OVERRIDE&quot;); x != &quot;&quot; {<br>
++              goRootPrecious = false<br>
++      }<br>
+ }<br>
+<br>
+ // Note that flags consulted by other parts of the code<br>
+diff --git a/src/cmd/go/internal/work/<wbr>buildid.go b/src/cmd/go/internal/work/<wbr>buildid.go<br>
+index 39ca20ee4f..a047430177 100644<br>
+--- a/src/cmd/go/internal/work/<wbr>buildid.go<br>
++++ b/src/cmd/go/internal/work/<wbr>buildid.go<br>
+@@ -463,7 +463,7 @@ func (b *Builder) useCache(a *Action, p *load.Package, actionHash cache.ActionID<br>
+<br>
+       if b.ComputeStaleOnly {<br>
+               // Invoked during go list only to compute and record staleness.<br>
+-              if p := a.Package; p != nil &amp;&amp; !p.Stale {<br>
++              if p := a.Package; p != nil &amp;&amp; !p.Stale &amp;&amp; !(goRootPrecious &amp;&amp; (p.Standard || p.Goroot)) {<br>
+                       p.Stale = true<br>
+                       if cfg.BuildA {<br>
+                               p.StaleReason = &quot;build -a flag in use&quot;<br>
+diff --git a/src/cmd/go/internal/work/<wbr>exec.go b/src/cmd/go/internal/work/<wbr>exec.go<br>
+index b0f6b45647..a876d59347 100644<br>
+--- a/src/cmd/go/internal/work/<wbr>exec.go<br>
++++ b/src/cmd/go/internal/work/<wbr>exec.go<br>
+@@ -371,6 +371,24 @@ func (b *Builder) build(a *Action) (err error) {<br>
+               return fmt.Errorf(&quot;missing or invalid binary-only package&quot;)<br>
+       }<br>
+<br>
++      if goRootPrecious &amp;&amp; (a.Package.Standard || a.Package.Goroot) {<br>
++              _, err := os.Stat(a.Package.Target)<br>
++              if err == nil {<br>
++                      a.built = a.Package.Target<br>
++                      a.Target = a.Package.Target<br>
++                      a.buildID = b.fileHash(a.Package.Target)<br>
++                      a.Package.Stale = false<br>
++                      a.Package.StaleReason = &quot;GOROOT-resident package&quot;<br>
++                      return nil<br>
++              }<br>
++              if b.ComputeStaleOnly {<br>
++                      a.Package.Stale = true<br>
++                      a.Package.StaleReason = &quot;missing or invalid GOROOT-resident package&quot;<br>
++                      return nil<br>
++              }<br>
++              return fmt.Errorf(&quot;missing or invalid GOROOT-resident package&quot;)<br>
++      }<br>
++<br>
+       if err := b.Mkdir(a.Objdir); err != nil {<br>
+               return err<br>
+       }<br>
+--<br>
+2.14.1<br>
+<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.10/0008-ld-replace-glibc-<wbr>dynamic-linker-with-musl.patch b/meta/recipes-devtools/go/go-<wbr>1.10/0008-ld-replace-glibc-<wbr>dynamic-linker-with-musl.patch<br>
new file mode 100644<br>
index 0000000000..cc7179cb2c<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/go/go-<wbr>1.10/0008-ld-replace-glibc-<wbr>dynamic-linker-with-musl.patch<br>
@@ -0,0 +1,130 @@<br>
+From 5c3ed89c29d4f40ea4e66d569b1f6c<wbr>9c4a51cd42 Mon Sep 17 00:00:00 2001<br>
+From: Matt Madison &lt;matt@madison.systems&gt;<br>
+Date: Sun, 18 Feb 2018 08:24:05 -0800<br>
+Subject: [PATCH 8/8] ld: replace glibc dynamic linker with musl<br>
+<br>
+Rework of patch by Khem Raj &lt;<a href="mailto:raj.khem@gmail.com">raj.khem@gmail.com</a>&gt;<br>
+for go 1.10.  Should be applied conditionally on<br>
+musl being the system C library.<br>
+<br>
+Upstream-Status: Inappropriate [Real fix should be portable across libcs]<br>
+<br>
+Signed-off-by: Matt Madison &lt;matt@madison.systems&gt;<br>
+---<br>
+ src/cmd/link/internal/amd64/<wbr>obj.go  | 2 +-<br>
+ src/cmd/link/internal/arm/obj.<wbr>go    | 2 +-<br>
+ src/cmd/link/internal/arm64/<wbr>obj.go  | 2 +-<br>
+ src/cmd/link/internal/mips/<wbr>obj.go   | 2 +-<br>
+ src/cmd/link/internal/mips64/<wbr>obj.go | 2 +-<br>
+ src/cmd/link/internal/ppc64/<wbr>obj.go  | 2 +-<br>
+ src/cmd/link/internal/s390x/<wbr>obj.go  | 2 +-<br>
+ src/cmd/link/internal/x86/obj.<wbr>go    | 2 +-<br>
+ 8 files changed, 8 insertions(+), 8 deletions(-)<br>
+<br>
+diff --git a/src/cmd/link/internal/amd64/<wbr>obj.go b/src/cmd/link/internal/amd64/<wbr>obj.go<br>
+index 87e809166a..f522a63034 100644<br>
+--- a/src/cmd/link/internal/amd64/<wbr>obj.go<br>
++++ b/src/cmd/link/internal/amd64/<wbr>obj.go<br>
+@@ -62,7 +62,7 @@ func Init() (*sys.Arch, ld.Arch) {<br>
+               PEreloc1:         pereloc1,<br>
+               TLSIEtoLE:        tlsIEtoLE,<br>
+<br>
+-              Linuxdynld:     &quot;/lib64/ld-linux-x86-64.so.2&quot;,<br>
++              Linuxdynld:     &quot;/lib64/ld-musl-x86-64.so.1&quot;,<br>
+               Freebsddynld:   &quot;/libexec/ld-elf.so.1&quot;,<br>
+               Openbsddynld:   &quot;/usr/libexec/ld.so&quot;,<br>
+               Netbsddynld:    &quot;/libexec/ld.elf_so&quot;,<br>
+diff --git a/src/cmd/link/internal/arm/<wbr>obj.go b/src/cmd/link/internal/arm/<wbr>obj.go<br>
+index da16f92345..fd14940ede 100644<br>
+--- a/src/cmd/link/internal/arm/<wbr>obj.go<br>
++++ b/src/cmd/link/internal/arm/<wbr>obj.go<br>
+@@ -58,7 +58,7 @@ func Init() (*sys.Arch, ld.Arch) {<br>
+               Gentext:          gentext,<br>
+               Machoreloc1:      machoreloc1,<br>
+<br>
+-              Linuxdynld:     &quot;/lib/ld-linux.so.3&quot;, // 2 for OABI, 3 for EABI<br>
++              Linuxdynld:     &quot;/lib/ld-musl-armhf.so.1&quot;,<br>
+               Freebsddynld:   &quot;/usr/libexec/ld-elf.so.1&quot;,<br>
+               Openbsddynld:   &quot;/usr/libexec/ld.so&quot;,<br>
+               Netbsddynld:    &quot;/libexec/ld.elf_so&quot;,<br>
+diff --git a/src/cmd/link/internal/arm64/<wbr>obj.go b/src/cmd/link/internal/arm64/<wbr>obj.go<br>
+index 6b386ad737..99863712cc 100644<br>
+--- a/src/cmd/link/internal/arm64/<wbr>obj.go<br>
++++ b/src/cmd/link/internal/arm64/<wbr>obj.go<br>
+@@ -57,7 +57,7 @@ func Init() (*sys.Arch, ld.Arch) {<br>
+               Gentext:          gentext,<br>
+               Machoreloc1:      machoreloc1,<br>
+<br>
+-              Linuxdynld: &quot;/lib/ld-linux-aarch64.so.1&quot;,<br>
++              Linuxdynld: &quot;/lib/ld-musl-aarch64.so.1&quot;,<br>
+<br>
+               Freebsddynld:   &quot;XXX&quot;,<br>
+               Openbsddynld:   &quot;XXX&quot;,<br>
+diff --git a/src/cmd/link/internal/mips/<wbr>obj.go b/src/cmd/link/internal/mips/<wbr>obj.go<br>
+index c5d3451c39..fd85e6368d 100644<br>
+--- a/src/cmd/link/internal/mips/<wbr>obj.go<br>
++++ b/src/cmd/link/internal/mips/<wbr>obj.go<br>
+@@ -60,7 +60,7 @@ func Init() (*sys.Arch, ld.Arch) {<br>
+               Gentext:          gentext,<br>
+               Machoreloc1:      machoreloc1,<br>
+<br>
+-              Linuxdynld: &quot;/lib/ld.so.1&quot;,<br>
++              Linuxdynld: &quot;/lib/ld-musl-mipsle.so.1&quot;,<br>
+<br>
+               Freebsddynld:   &quot;XXX&quot;,<br>
+               Openbsddynld:   &quot;XXX&quot;,<br>
+diff --git a/src/cmd/link/internal/<wbr>mips64/obj.go b/src/cmd/link/internal/<wbr>mips64/obj.go<br>
+index 83974e5b56..097224f6da 100644<br>
+--- a/src/cmd/link/internal/<wbr>mips64/obj.go<br>
++++ b/src/cmd/link/internal/<wbr>mips64/obj.go<br>
+@@ -59,7 +59,7 @@ func Init() (*sys.Arch, ld.Arch) {<br>
+               Gentext:          gentext,<br>
+               Machoreloc1:      machoreloc1,<br>
+<br>
+-              Linuxdynld:     &quot;/lib64/ld64.so.1&quot;,<br>
++              Linuxdynld:     &quot;/lib64/ld-musl-mips64le.so.1&quot;<wbr>,<br>
+               Freebsddynld:   &quot;XXX&quot;,<br>
+               Openbsddynld:   &quot;XXX&quot;,<br>
+               Netbsddynld:    &quot;XXX&quot;,<br>
+diff --git a/src/cmd/link/internal/ppc64/<wbr>obj.go b/src/cmd/link/internal/ppc64/<wbr>obj.go<br>
+index 273d9b42cb..a503abe8ea 100644<br>
+--- a/src/cmd/link/internal/ppc64/<wbr>obj.go<br>
++++ b/src/cmd/link/internal/ppc64/<wbr>obj.go<br>
+@@ -62,7 +62,7 @@ func Init() (*sys.Arch, ld.Arch) {<br>
+               Machoreloc1:      machoreloc1,<br>
+<br>
+               // TODO(austin): ABI v1 uses /usr/lib/ld.so.1,<br>
+-              Linuxdynld: &quot;/lib64/ld64.so.1&quot;,<br>
++              Linuxdynld: &quot;/lib64/ld-musl-powerpc64le.<wbr>so.1&quot;,<br>
+<br>
+               Freebsddynld:   &quot;XXX&quot;,<br>
+               Openbsddynld:   &quot;XXX&quot;,<br>
+diff --git a/src/cmd/link/internal/s390x/<wbr>obj.go b/src/cmd/link/internal/s390x/<wbr>obj.go<br>
+index 9ac7eb8217..3825ff7abe 100644<br>
+--- a/src/cmd/link/internal/s390x/<wbr>obj.go<br>
++++ b/src/cmd/link/internal/s390x/<wbr>obj.go<br>
+@@ -57,7 +57,7 @@ func Init() (*sys.Arch, ld.Arch) {<br>
+               Gentext:          gentext,<br>
+               Machoreloc1:      machoreloc1,<br>
+<br>
+-              Linuxdynld: &quot;/lib64/ld64.so.1&quot;,<br>
++              Linuxdynld: &quot;/lib64/ld-musl-s390x.so.1&quot;,<br>
+<br>
+               // not relevant for s390x<br>
+               Freebsddynld:   &quot;XXX&quot;,<br>
+diff --git a/src/cmd/link/internal/x86/<wbr>obj.go b/src/cmd/link/internal/x86/<wbr>obj.go<br>
+index 6a744dc04e..d81f392549 100644<br>
+--- a/src/cmd/link/internal/x86/<wbr>obj.go<br>
++++ b/src/cmd/link/internal/x86/<wbr>obj.go<br>
+@@ -58,7 +58,7 @@ func Init() (*sys.Arch, ld.Arch) {<br>
+               Machoreloc1:      machoreloc1,<br>
+               PEreloc1:         pereloc1,<br>
+<br>
+-              Linuxdynld:   &quot;/lib/ld-linux.so.2&quot;,<br>
++              Linuxdynld:   &quot;/lib/ld-musl-i386.so.1&quot;,<br>
+               Freebsddynld: &quot;/usr/libexec/ld-elf.so.1&quot;,<br>
+               Openbsddynld: &quot;/usr/libexec/ld.so&quot;,<br>
+               Netbsddynld:  &quot;/usr/libexec/ld.elf_so&quot;,<br>
+--<br>
+2.14.1<br>
+<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9.inc b/meta/recipes-devtools/go/go-<wbr>1.9.inc<br>
deleted file mode 100644<br>
index 2823304b7c..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9.inc<br>
+++ /dev/null<br>
@@ -1,26 +0,0 @@<br>
-require go-common.inc<br>
-<br>
-GO_BASEVERSION = &quot;1.9&quot;<br>
-GO_MINOR = &quot;.4&quot;<br>
-PV .= &quot;${GO_MINOR}&quot;<br>
-<br>
-FILESEXTRAPATHS_prepend := &quot;${FILE_DIRNAME}/go-${GO_<wbr>BASEVERSION}:&quot;<br>
-<br>
-LIC_FILES_CHKSUM = &quot;file://LICENSE;md5=<wbr>5d4950ecb7b26d2c5e4e7b4e0dd747<wbr>07&quot;<br>
-<br>
-SRC_URI += &quot;\<br>
-        file://0001-make.bash-quote-<wbr>CC_FOR_TARGET.patch \<br>
-        file://0002-cmd-go-fix-CC-and-<wbr>CXX-environment-variable-<wbr>construct.patch \<br>
-        file://0003-make.bash-better-<wbr>separate-host-and-target-<wbr>builds.patch \<br>
-        file://0004-cmd-go-allow-<wbr>GOTOOLDIR-to-be-overridden-in-<wbr>the-envir.patch \<br>
-        file://0005-cmd-go-make-<wbr>GOROOT-precious-by-default.<wbr>patch \<br>
-        file://0006-make.bash-add-<wbr>GOTOOLDIR_BOOTSTRAP-<wbr>environment-variab.patch \<br>
-        file://0007-ld-add-soname-to-<wbr>shareable-objects.patch \<br>
-        file://0008-make.bash-add-<wbr>GOHOSTxx-indirection-for-<wbr>cross-canadia.patch \<br>
-        file://0009-cmd-go-buildmode-<wbr>pie-forces-external-linking-<wbr>mode-on.patch \<br>
-        file://0010-make.bash-<wbr>override-CC-when-building-<wbr>dist-and-go_boot.patch \<br>
-&quot;<br>
-SRC_URI_append_libc-musl = &quot; file://set-external-linker.<wbr>patch&quot;<br>
-<br>
-SRC_URI[main.md5sum] = &quot;<wbr>6816441fd6680c63865cdd5cb8bc19<wbr>60&quot;<br>
-SRC_URI[main.sha256sum] = &quot;<wbr>0573a8df33168977185aa44173305e<wbr>5a0450f55213600e94541604b75d46<wbr>dc06&quot;<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/0001-make.bash-quote-CC_<wbr>FOR_TARGET.patch b/meta/recipes-devtools/go/go-<wbr>1.9/0001-make.bash-quote-CC_<wbr>FOR_TARGET.patch<br>
deleted file mode 100644<br>
index 7800975e48..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/0001-make.bash-quote-CC_<wbr>FOR_TARGET.patch<br>
+++ /dev/null<br>
@@ -1,32 +0,0 @@<br>
-From d24734ad44006791fd48fc45ea34fe<wbr>608ff672fb Mon Sep 17 00:00:00 2001<br>
-From: Matt Madison &lt;matt@madison.systems&gt;<br>
-Date: Wed, 13 Sep 2017 08:04:23 -0700<br>
-Subject: [PATCH 1/7] make.bash: quote CC_FOR_TARGET<br>
-<br>
-For OE cross-builds, $CC_FOR_TARGET has more than<br>
-one word and needs to be quoted.<br>
-<br>
-Upstream-Status: Pending<br>
-<br>
-Signed-off-by: Khem Raj &lt;<a href="mailto:raj.khem@gmail.com">raj.khem@gmail.com</a>&gt;<br>
-Signed-off-by: Matt Madison &lt;matt@madison.systems&gt;<br>
----<br>
- src/make.bash | 2 +-<br>
- 1 file changed, 1 insertion(+), 1 deletion(-)<br>
-<br>
-diff --git a/src/make.bash b/src/make.bash<br>
-index 71e7531..dcf3256 100755<br>
---- a/src/make.bash<br>
-+++ b/src/make.bash<br>
-@@ -175,7 +175,7 @@ echo &quot;##### Building packages and commands for $GOOS/$GOARCH.&quot;<br>
-<br>
- old_bin_files=$(cd $GOROOT/bin &amp;&amp; echo *)<br>
-<br>
--CC=$CC_FOR_TARGET &quot;$GOTOOLDIR&quot;/go_bootstrap install $GO_FLAGS -gcflags &quot;$GO_GCFLAGS&quot; -ldflags &quot;$GO_LDFLAGS&quot; -v std cmd<br>
-+CC=&quot;$CC_FOR_TARGET&quot; &quot;$GOTOOLDIR&quot;/go_bootstrap install $GO_FLAGS -gcflags &quot;$GO_GCFLAGS&quot; -ldflags &quot;$GO_LDFLAGS&quot; -v std cmd<br>
-<br>
- # Check that there are no new files in $GOROOT/bin other than go and gofmt<br>
- # and $GOOS_$GOARCH (a directory used when cross-compiling).<br>
---<br>
-2.7.4<br>
-<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/0002-cmd-go-fix-CC-and-<wbr>CXX-environment-variable-<wbr>construct.patch b/meta/recipes-devtools/go/go-<wbr>1.9/0002-cmd-go-fix-CC-and-<wbr>CXX-environment-variable-<wbr>construct.patch<br>
deleted file mode 100644<br>
index a4e42261c3..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/0002-cmd-go-fix-CC-and-<wbr>CXX-environment-variable-<wbr>construct.patch<br>
+++ /dev/null<br>
@@ -1,67 +0,0 @@<br>
-From a7170d32a13aead608abd18996f6da<wbr>b2e2a631b5 Mon Sep 17 00:00:00 2001<br>
-From: Matt Madison &lt;matt@madison.systems&gt;<br>
-Date: Wed, 13 Sep 2017 08:06:37 -0700<br>
-Subject: [PATCH 2/7] cmd/go: fix CC and CXX environment variable construction<br>
-<br>
-For OE cross-builds, CC and CXX have multiple words, and<br>
-we need their complete definitions when setting up the<br>
-environment during Go builds.<br>
-<br>
-Upstream-Status: Pending<br>
-<br>
-Signed-off-by: Khem Raj &lt;<a href="mailto:raj.khem@gmail.com">raj.khem@gmail.com</a>&gt;<br>
-Signed-off-by: Matt Madison &lt;matt@madison.systems&gt;<br>
----<br>
- src/cmd/go/internal/envcmd/<wbr>env.go |  4 ++--<br>
- src/cmd/go/internal/work/<wbr>build.go | 12 ++++++++++++<br>
- 2 files changed, 14 insertions(+), 2 deletions(-)<br>
-<br>
-diff --git a/src/cmd/go/internal/envcmd/<wbr>env.go b/src/cmd/go/internal/envcmd/<wbr>env.go<br>
-index 43d4334..529d21d 100644<br>
---- a/src/cmd/go/internal/envcmd/<wbr>env.go<br>
-+++ b/src/cmd/go/internal/envcmd/<wbr>env.go<br>
-@@ -74,10 +74,10 @@ func MkEnv() []cfg.EnvVar {<br>
-       }<br>
-<br>
-       cmd := b.GccCmd(&quot;.&quot;)<br>
--      env = append(env, cfg.EnvVar{Name: &quot;CC&quot;, Value: cmd[0]})<br>
-+      env = append(env, cfg.EnvVar{Name: &quot;CC&quot;, Value: strings.Join(b.GccCmdForReal()<wbr>, &quot; &quot;)})<br>
-       env = append(env, cfg.EnvVar{Name: &quot;GOGCCFLAGS&quot;, Value: strings.Join(cmd[3:], &quot; &quot;)})<br>
-       cmd = b.GxxCmd(&quot;.&quot;)<br>
--      env = append(env, cfg.EnvVar{Name: &quot;CXX&quot;, Value: cmd[0]})<br>
-+      env = append(env, cfg.EnvVar{Name: &quot;CXX&quot;, Value: strings.Join(b.GxxCmdForReal()<wbr>, &quot; &quot;)})<br>
-<br>
-       if cfg.BuildContext.CgoEnabled {<br>
-               env = append(env, cfg.EnvVar{Name: &quot;CGO_ENABLED&quot;, Value: &quot;1&quot;})<br>
-diff --git a/src/cmd/go/internal/work/<wbr>build.go b/src/cmd/go/internal/work/<wbr>build.go<br>
-index 7d667ff..85df0b3 100644<br>
---- a/src/cmd/go/internal/work/<wbr>build.go<br>
-+++ b/src/cmd/go/internal/work/<wbr>build.go<br>
-@@ -3127,12 +3127,24 @@ func (b *Builder) GccCmd(objdir string) []string {<br>
-       return b.ccompilerCmd(&quot;CC&quot;, cfg.DefaultCC, objdir)<br>
- }<br>
-<br>
-+// gccCmd returns a gcc command line prefix<br>
-+// defaultCC is defined in zdefaultcc.go, written by cmd/dist.<br>
-+func (b *Builder) GccCmdForReal() []string {<br>
-+      return envList(&quot;CC&quot;, cfg.DefaultCC)<br>
-+}<br>
-+<br>
- // gxxCmd returns a g++ command line prefix<br>
- // defaultCXX is defined in zdefaultcc.go, written by cmd/dist.<br>
- func (b *Builder) GxxCmd(objdir string) []string {<br>
-       return b.ccompilerCmd(&quot;CXX&quot;, cfg.DefaultCXX, objdir)<br>
- }<br>
-<br>
-+// gxxCmd returns a g++ command line prefix<br>
-+// defaultCXX is defined in zdefaultcc.go, written by cmd/dist.<br>
-+func (b *Builder) GxxCmdForReal() []string {<br>
-+      return envList(&quot;CXX&quot;, cfg.DefaultCXX)<br>
-+}<br>
-+<br>
- // gfortranCmd returns a gfortran command line prefix.<br>
- func (b *Builder) gfortranCmd(objdir string) []string {<br>
-       return b.ccompilerCmd(&quot;FC&quot;, &quot;gfortran&quot;, objdir)<br>
---<br>
-2.7.4<br>
-<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/0003-make.bash-better-<wbr>separate-host-and-target-<wbr>builds.patch b/meta/recipes-devtools/go/go-<wbr>1.9/0003-make.bash-better-<wbr>separate-host-and-target-<wbr>builds.patch<br>
deleted file mode 100644<br>
index ffd9f2359c..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/0003-make.bash-better-<wbr>separate-host-and-target-<wbr>builds.patch<br>
+++ /dev/null<br>
@@ -1,92 +0,0 @@<br>
-From 31e88f06af7ab787d8fe0c1ca62519<wbr>3e1799e167 Mon Sep 17 00:00:00 2001<br>
-From: Matt Madison &lt;matt@madison.systems&gt;<br>
-Date: Wed, 13 Sep 2017 08:12:04 -0700<br>
-Subject: [PATCH 3/7] make.bash: better separate host and target builds<br>
-<br>
-Fore OE cross-builds, the simple checks in make.bash are<br>
-insufficient for distinguishing host and target build<br>
-environments, so add some options for telling the<br>
-script which parts are being built.<br>
-<br>
-Upstream-Status: Pending<br>
-<br>
-Signed-off-by: Khem Raj &lt;<a href="mailto:raj.khem@gmail.com">raj.khem@gmail.com</a>&gt;<br>
-Signed-off-by: Matt Madison &lt;matt@madison.systems&gt;<br>
----<br>
- src/make.bash | 51 ++++++++++++++++++++++++++++--<wbr>---------------------<br>
- 1 file changed, 28 insertions(+), 23 deletions(-)<br>
-<br>
-diff --git a/src/make.bash b/src/make.bash<br>
-index dcf3256..9553623 100755<br>
---- a/src/make.bash<br>
-+++ b/src/make.bash<br>
-@@ -156,13 +156,22 @@ if [ &quot;$1&quot; = &quot;--no-clean&quot; ]; then<br>
-       buildall=&quot;&quot;<br>
-       shift<br>
- fi<br>
--./cmd/dist/dist bootstrap $buildall $GO_DISTFLAGS -v # builds go_bootstrap<br>
-+do_host_build=&quot;yes&quot;<br>
-+do_target_build=&quot;yes&quot;<br>
-+if [ &quot;$1&quot; = &quot;--target-only&quot; ]; then<br>
-+      do_host_build=&quot;no&quot;<br>
-+      shift<br>
-+elif [ &quot;$1&quot; = &quot;--host-only&quot; ]; then<br>
-+      do_target_build=&quot;no&quot;<br>
-+      shift<br>
-+fi<br>
-<br>
--# Delay move of dist tool to now, because bootstrap may clear tool directory.<br>
--mv cmd/dist/dist &quot;$GOTOOLDIR&quot;/dist<br>
--echo<br>
-+if [ &quot;$do_host_build&quot; = &quot;yes&quot; ]; then<br>
-+      ./cmd/dist/dist bootstrap $buildall $GO_DISTFLAGS -v # builds go_bootstrap<br>
-+      # Delay move of dist tool to now, because bootstrap may clear tool directory.<br>
-+      mv cmd/dist/dist &quot;$GOTOOLDIR&quot;/dist<br>
-+      echo<br>
-<br>
--if [ &quot;$GOHOSTARCH&quot; != &quot;$GOARCH&quot; -o &quot;$GOHOSTOS&quot; != &quot;$GOOS&quot; ]; then<br>
-       echo &quot;##### Building packages and commands for host, $GOHOSTOS/$GOHOSTARCH.&quot;<br>
-       # CC_FOR_TARGET is recorded as the default compiler for the go tool. When building for the host, however,<br>
-       # use the host compiler, CC, from `cmd/dist/dist env` instead.<br>
-@@ -171,24 +180,20 @@ if [ &quot;$GOHOSTARCH&quot; != &quot;$GOARCH&quot; -o &quot;$GOHOSTOS&quot; != &quot;$GOOS&quot; ]; then<br>
-       echo<br>
- fi<br>
-<br>
--echo &quot;##### Building packages and commands for $GOOS/$GOARCH.&quot;<br>
--<br>
--old_bin_files=$(cd $GOROOT/bin &amp;&amp; echo *)<br>
--<br>
--CC=&quot;$CC_FOR_TARGET&quot; &quot;$GOTOOLDIR&quot;/go_bootstrap install $GO_FLAGS -gcflags &quot;$GO_GCFLAGS&quot; -ldflags &quot;$GO_LDFLAGS&quot; -v std cmd<br>
--<br>
--# Check that there are no new files in $GOROOT/bin other than go and gofmt<br>
--# and $GOOS_$GOARCH (a directory used when cross-compiling).<br>
--(cd $GOROOT/bin &amp;&amp; for f in *; do<br>
--      if ! expr &quot; $old_bin_files go gofmt ${GOOS}_${GOARCH} &quot; : &quot;.* $f &quot; &gt;/dev/null 2&gt;/dev/null; then<br>
--              echo 1&gt;&amp;2 &quot;ERROR: unexpected new file in $GOROOT/bin: $f&quot;<br>
--              exit 1<br>
--      fi<br>
--done)<br>
--<br>
--echo<br>
--<br>
--rm -f &quot;$GOTOOLDIR&quot;/go_bootstrap<br>
-+if [ &quot;$do_target_build&quot; = &quot;yes&quot; ]; then<br>
-+    GO_INSTALL=&quot;${GO_TARGET_<wbr>INSTALL:-std cmd}&quot;<br>
-+    echo &quot;##### Building packages and commands for $GOOS/$GOARCH.&quot;<br>
-+    if [ &quot;$GOHOSTOS&quot; = &quot;$GOOS&quot; -a &quot;$GOHOSTARCH&quot; = &quot;$GOARCH&quot; -a &quot;$do_host_build&quot; = &quot;yes&quot; ]; then<br>
-+      rm -rf ./host-tools<br>
-+      mkdir ./host-tools<br>
-+      mv &quot;$GOTOOLDIR&quot;/* ./host-tools<br>
-+      GOTOOLDIR=&quot;$PWD/host-tools&quot;<br>
-+    fi<br>
-+    GOTOOLDIR=&quot;$GOTOOLDIR&quot; CC=&quot;$CC_FOR_TARGET&quot; &quot;$GOTOOLDIR&quot;/go_bootstrap install $GO_FLAGS -gcflags &quot;$GO_GCFLAGS&quot; -ldflags &quot;$GO_LDFLAGS&quot; -v ${GO_INSTALL}<br>
-+    echo<br>
-+<br>
-+    rm -f &quot;$GOTOOLDIR&quot;/go_bootstrap<br>
-+fi<br>
-<br>
- if [ &quot;$1&quot; != &quot;--no-banner&quot; ]; then<br>
-       &quot;$GOTOOLDIR&quot;/dist banner<br>
---<br>
-2.7.4<br>
-<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/0004-cmd-go-allow-<wbr>GOTOOLDIR-to-be-overridden-in-<wbr>the-envir.patch b/meta/recipes-devtools/go/go-<wbr>1.9/0004-cmd-go-allow-<wbr>GOTOOLDIR-to-be-overridden-in-<wbr>the-envir.patch<br>
deleted file mode 100644<br>
index 180b06a4d3..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/0004-cmd-go-allow-<wbr>GOTOOLDIR-to-be-overridden-in-<wbr>the-envir.patch<br>
+++ /dev/null<br>
@@ -1,68 +0,0 @@<br>
-From 1369178b497b12088ec4c2794606cc<wbr>9f14cc327c Mon Sep 17 00:00:00 2001<br>
-From: Matt Madison &lt;matt@madison.systems&gt;<br>
-Date: Wed, 13 Sep 2017 08:15:03 -0700<br>
-Subject: [PATCH 4/7] cmd/go: allow GOTOOLDIR to be overridden in the<br>
- environment<br>
-<br>
-For OE cross-builds, host-side tools reside in the native<br>
-GOROOT, not the target GOROOT.  Allow GOTOOLDIR to be set<br>
-in the environment to allow that split, rather than always<br>
-computing GOTOOLDIR relative to the GOROOT setting.<br>
-<br>
-Upstream-Status: Pending<br>
-<br>
-Signed-off-by: Khem Raj &lt;<a href="mailto:raj.khem@gmail.com">raj.khem@gmail.com</a>&gt;<br>
-Signed-off-by: Matt Madison &lt;matt@madison.systems&gt;<br>
----<br>
- src/cmd/go/internal/cfg/cfg.go    | 7 ++++++-<br>
- src/cmd/go/internal/work/<wbr>build.go | 2 +-<br>
- src/go/build/build.go             | 2 +-<br>
- 3 files changed, 8 insertions(+), 3 deletions(-)<br>
-<br>
-diff --git a/src/cmd/go/internal/cfg/cfg.<wbr>go b/src/cmd/go/internal/cfg/cfg.<wbr>go<br>
-index b3ad1ce..c1dc974 100644<br>
---- a/src/cmd/go/internal/cfg/cfg.<wbr>go<br>
-+++ b/src/cmd/go/internal/cfg/cfg.<wbr>go<br>
-@@ -91,7 +91,12 @@ func init() {<br>
-       // as the tool directory does not move based on environment variables.<br>
-       // This matches the initialization of ToolDir in go/build,<br>
-       // except for using GOROOT rather than runtime.GOROOT().<br>
--      build.ToolDir = filepath.Join(GOROOT, &quot;pkg/tool/&quot;+runtime.GOOS+&quot;_&quot;+<wbr>runtime.GOARCH)<br>
-+      s := os.Getenv(&quot;GOTOOLDIR&quot;)<br>
-+      if s == &quot;&quot; {<br>
-+              build.ToolDir = filepath.Join(GOROOT, &quot;pkg/tool/&quot;+runtime.GOOS+&quot;_&quot;+<wbr>runtime.GOARCH)<br>
-+      } else {<br>
-+              build.ToolDir = s<br>
-+      }<br>
- }<br>
-<br>
- func findGOROOT() string {<br>
-diff --git a/src/cmd/go/internal/work/<wbr>build.go b/src/cmd/go/internal/work/<wbr>build.go<br>
-index 85df0b3..7b9a69e 100644<br>
---- a/src/cmd/go/internal/work/<wbr>build.go<br>
-+++ b/src/cmd/go/internal/work/<wbr>build.go<br>
-@@ -1337,7 +1337,7 @@ func (b *Builder) build(a *Action) (err error) {<br>
-               }<br>
-<br>
-               var cgoExe string<br>
--              if a.cgo != nil &amp;&amp; a.cgo.Target != &quot;&quot; {<br>
-+              if a.cgo != nil &amp;&amp; a.cgo.Target != &quot;&quot; &amp;&amp; os.Getenv(&quot;GOTOOLDIR&quot;) == &quot;&quot; {<br>
-                       cgoExe = a.cgo.Target<br>
-               } else {<br>
-                       cgoExe = base.Tool(&quot;cgo&quot;)<br>
-diff --git a/src/go/build/build.go b/src/go/build/build.go<br>
-index fd89871..e16145b 100644<br>
---- a/src/go/build/build.go<br>
-+++ b/src/go/build/build.go<br>
-@@ -1588,7 +1588,7 @@ func init() {<br>
- }<br>
-<br>
- // ToolDir is the directory containing build tools.<br>
--var ToolDir = filepath.Join(runtime.GOROOT()<wbr>, &quot;pkg/tool/&quot;+runtime.GOOS+&quot;_&quot;+<wbr>runtime.GOARCH)<br>
-+var ToolDir = envOr(&quot;GOTOOLDIR&quot;, filepath.Join(runtime.GOROOT()<wbr>, &quot;pkg/tool/&quot;+runtime.GOOS+&quot;_&quot;+<wbr>runtime.GOARCH))<br>
-<br>
- // IsLocalImport reports whether the import path is<br>
- // a local import path, like &quot;.&quot;, &quot;..&quot;, &quot;./foo&quot;, or &quot;../foo&quot;.<br>
---<br>
-2.7.4<br>
-<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/0005-cmd-go-make-GOROOT-<wbr>precious-by-default.patch b/meta/recipes-devtools/go/go-<wbr>1.9/0005-cmd-go-make-GOROOT-<wbr>precious-by-default.patch<br>
deleted file mode 100644<br>
index 6e93bcb6ce..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/0005-cmd-go-make-GOROOT-<wbr>precious-by-default.patch<br>
+++ /dev/null<br>
@@ -1,41 +0,0 @@<br>
-From 44f961975dac6cf464a77b5f6dd0c4<wbr>7cc192c4fd Mon Sep 17 00:00:00 2001<br>
-From: Matt Madison &lt;matt@madison.systems&gt;<br>
-Date: Wed, 13 Sep 2017 08:19:52 -0700<br>
-Subject: [PATCH 5/7] cmd/go: make GOROOT precious by default<br>
-<br>
-For OE builds, we never want packages that have<br>
-already been installed into the build root to be<br>
-modified, so prevent the go build tool from checking<br>
-if they should be rebuilt.<br>
-<br>
-Also add an environment variable to override this<br>
-behavior, just for building the Go runtime.<br>
-<br>
-Upstream-Status: Pending<br>
-<br>
-Signed-off-by: Matt Madison &lt;matt@madison.systems&gt;<br>
----<br>
- src/cmd/go/internal/load/pkg.<wbr>go | 7 +++++++<br>
- 1 file changed, 7 insertions(+)<br>
-<br>
-diff --git a/src/cmd/go/internal/load/<wbr>pkg.go b/src/cmd/go/internal/load/<wbr>pkg.go<br>
-index 60de666..2660d3f 100644<br>
---- a/src/cmd/go/internal/load/<wbr>pkg.go<br>
-+++ b/src/cmd/go/internal/load/<wbr>pkg.go<br>
-@@ -1530,6 +1530,13 @@ func isStale(p *Package) (bool, string) {<br>
-               return true, &quot;build ID mismatch&quot;<br>
-       }<br>
-<br>
-+      // For OE builds, make anything in GOROOT non-stale,<br>
-+      // to prevent a package build from overwriting the<br>
-+      // build root.<br>
-+      if p.Goroot &amp;&amp; os.Getenv(&quot;GOROOT_OVERRIDE&quot;) != &quot;1&quot; {<br>
-+              return false, &quot;GOROOT-resident packages do not get rebuilt&quot;<br>
-+      }<br>
-+<br>
-       // Package is stale if a dependency is.<br>
-       for _, p1 := range p.Internal.Deps {<br>
-               if p1.Stale {<br>
---<br>
-2.7.4<br>
-<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/0006-make.bash-add-<wbr>GOTOOLDIR_BOOTSTRAP-<wbr>environment-variab.patch b/meta/recipes-devtools/go/go-<wbr>1.9/0006-make.bash-add-<wbr>GOTOOLDIR_BOOTSTRAP-<wbr>environment-variab.patch<br>
deleted file mode 100644<br>
index f0f564044b..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/0006-make.bash-add-<wbr>GOTOOLDIR_BOOTSTRAP-<wbr>environment-variab.patch<br>
+++ /dev/null<br>
@@ -1,36 +0,0 @@<br>
-From aae74d1045ca03306ba4159206ee3b<wbr>ac72bcdfbb Mon Sep 17 00:00:00 2001<br>
-From: Matt Madison &lt;matt@madison.systems&gt;<br>
-Date: Wed, 13 Sep 2017 08:23:23 -0700<br>
-Subject: [PATCH 6/7] make.bash: add GOTOOLDIR_BOOTSTRAP environment variable<br>
-<br>
-For cross-canadian builds, we need to use the native<br>
-GOTOOLDIR during the bootstrap phase, so provide a way<br>
-to pass that setting into the build script.<br>
-<br>
-Upstream-Status: Pending<br>
-<br>
-Signed-off-by: Matt Madison &lt;matt@madison.systems&gt;<br>
----<br>
- src/make.bash | 3 ++-<br>
- 1 file changed, 2 insertions(+), 1 deletion(-)<br>
-<br>
-diff --git a/src/make.bash b/src/make.bash<br>
-index 9553623..2e6fb05 100755<br>
---- a/src/make.bash<br>
-+++ b/src/make.bash<br>
-@@ -172,10 +172,11 @@ if [ &quot;$do_host_build&quot; = &quot;yes&quot; ]; then<br>
-       mv cmd/dist/dist &quot;$GOTOOLDIR&quot;/dist<br>
-       echo<br>
-<br>
-+      GOTOOLDIR_BOOTSTRAP=&quot;${<wbr>GOTOOLDIR_BOOTSTRAP:-$<wbr>GOTOOLDIR}&quot;<br>
-       echo &quot;##### Building packages and commands for host, $GOHOSTOS/$GOHOSTARCH.&quot;<br>
-       # CC_FOR_TARGET is recorded as the default compiler for the go tool. When building for the host, however,<br>
-       # use the host compiler, CC, from `cmd/dist/dist env` instead.<br>
--      CC=$CC GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH \<br>
-+      CC=$CC GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH GOTOOLDIR=&quot;$GOTOOLDIR_<wbr>BOOTSTRAP&quot; \<br>
-               &quot;$GOTOOLDIR&quot;/go_bootstrap install -gcflags &quot;$GO_GCFLAGS&quot; -ldflags &quot;$GO_LDFLAGS&quot; -v std cmd<br>
-       echo<br>
- fi<br>
---<br>
-2.7.4<br>
-<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/0007-ld-add-soname-to-<wbr>shareable-objects.patch b/meta/recipes-devtools/go/go-<wbr>1.9/0007-ld-add-soname-to-<wbr>shareable-objects.patch<br>
deleted file mode 100644<br>
index 6459782d81..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/0007-ld-add-soname-to-<wbr>shareable-objects.patch<br>
+++ /dev/null<br>
@@ -1,46 +0,0 @@<br>
-From e957c3458d53e37bf416f51d2f8bf5<wbr>4c195e50f5 Mon Sep 17 00:00:00 2001<br>
-From: Matt Madison &lt;matt@madison.systems&gt;<br>
-Date: Wed, 13 Sep 2017 08:27:02 -0700<br>
-Subject: [PATCH 7/7] ld: add soname to shareable objects<br>
-<br>
-Shared library handling in OE depends on the inclusion<br>
-of an soname header, so update the go linker to add that<br>
-header for both internal and external linking.<br>
-<br>
-Upstream-Status: Pending<br>
-<br>
-Signed-off-by: Matt Madison &lt;matt@madison.systems&gt;<br>
----<br>
- src/cmd/link/internal/ld/lib.<wbr>go | 3 +++<br>
- 1 file changed, 3 insertions(+)<br>
-<br>
-diff --git a/src/cmd/link/internal/ld/<wbr>lib.go b/src/cmd/link/internal/ld/<wbr>lib.go<br>
-index 0234105..0b9e2d0 100644<br>
---- a/src/cmd/link/internal/ld/<wbr>lib.go<br>
-+++ b/src/cmd/link/internal/ld/<wbr>lib.go<br>
-@@ -1124,12 +1124,14 @@ func (l *Link) hostlink() {<br>
-                       // Pass -z nodelete to mark the shared library as<br>
-                       // non-closeable: a dlclose will do nothing.<br>
-                       argv = append(argv, &quot;-shared&quot;, &quot;-Wl,-z,nodelete&quot;)<br>
-+                      argv = append(argv, fmt.Sprintf(&quot;-Wl,-soname,%s&quot;, filepath.Base(*flagOutfile)))<br>
-               }<br>
-       case BuildmodeShared:<br>
-               if UseRelro() {<br>
-                       argv = append(argv, &quot;-Wl,-z,relro&quot;)<br>
-               }<br>
-               argv = append(argv, &quot;-shared&quot;)<br>
-+              argv = append(argv, fmt.Sprintf(&quot;-Wl,-soname,%s&quot;, filepath.Base(*flagOutfile)))<br>
-       case BuildmodePlugin:<br>
-               if Headtype == objabi.Hdarwin {<br>
-                       argv = append(argv, &quot;-dynamiclib&quot;)<br>
-@@ -1138,6 +1140,7 @@ func (l *Link) hostlink() {<br>
-                               argv = append(argv, &quot;-Wl,-z,relro&quot;)<br>
-                       }<br>
-                       argv = append(argv, &quot;-shared&quot;)<br>
-+                      argv = append(argv, fmt.Sprintf(&quot;-Wl,-soname,%s&quot;, filepath.Base(*flagOutfile)))<br>
-               }<br>
-       }<br>
-<br>
---<br>
-2.7.4<br>
-<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/0008-make.bash-add-<wbr>GOHOSTxx-indirection-for-<wbr>cross-canadia.patch b/meta/recipes-devtools/go/go-<wbr>1.9/0008-make.bash-add-<wbr>GOHOSTxx-indirection-for-<wbr>cross-canadia.patch<br>
deleted file mode 100644<br>
index 0977c78350..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/0008-make.bash-add-<wbr>GOHOSTxx-indirection-for-<wbr>cross-canadia.patch<br>
+++ /dev/null<br>
@@ -1,33 +0,0 @@<br>
-From 03e6c339d4fb712fbb8c4ca6ef2fc7<wbr>100dcdb3d7 Mon Sep 17 00:00:00 2001<br>
-From: Matt Madison &lt;matt@madison.systems&gt;<br>
-Date: Thu, 14 Sep 2017 05:38:10 -0700<br>
-Subject: [PATCH 8/8] make.bash: add GOHOSTxx indirection for cross-canadian<br>
- builds<br>
-<br>
-Add environment variables for specifying the host OS/arch<br>
-that we are building the compiler for, so it can differ from<br>
-the build host OS/arch.<br>
-<br>
-Upstream-Status: Pending<br>
-<br>
-Signed-off-by: Matt Madison &lt;matt@madison.systems&gt;<br>
----<br>
- src/make.bash | 2 ++<br>
- 1 file changed, 2 insertions(+)<br>
-<br>
-diff --git a/src/make.bash b/src/make.bash<br>
-index 2e6fb05..0bdadc6 100755<br>
---- a/src/make.bash<br>
-+++ b/src/make.bash<br>
-@@ -173,6 +173,8 @@ if [ &quot;$do_host_build&quot; = &quot;yes&quot; ]; then<br>
-       echo<br>
-<br>
-       GOTOOLDIR_BOOTSTRAP=&quot;${<wbr>GOTOOLDIR_BOOTSTRAP:-$<wbr>GOTOOLDIR}&quot;<br>
-+      GOHOSTOS=&quot;${GOHOSTOS_CROSS:-$<wbr>GOHOSTOS}&quot;<br>
-+      GOHOSTARCH=&quot;${GOHOSTARCH_<wbr>CROSS:-$GOHOSTARCH}&quot;<br>
-       echo &quot;##### Building packages and commands for host, $GOHOSTOS/$GOHOSTARCH.&quot;<br>
-       # CC_FOR_TARGET is recorded as the default compiler for the go tool. When building for the host, however,<br>
-       # use the host compiler, CC, from `cmd/dist/dist env` instead.<br>
---<br>
-2.7.4<br>
-<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/0009-cmd-go-buildmode-pie-<wbr>forces-external-linking-mode-<wbr>on.patch b/meta/recipes-devtools/go/go-<wbr>1.9/0009-cmd-go-buildmode-pie-<wbr>forces-external-linking-mode-<wbr>on.patch<br>
deleted file mode 100644<br>
index aa5fcfdd23..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/0009-cmd-go-buildmode-pie-<wbr>forces-external-linking-mode-<wbr>on.patch<br>
+++ /dev/null<br>
@@ -1,47 +0,0 @@<br>
-From aae44527c8065d54f6acaf87c82cba<wbr>1ac96fae59 Mon Sep 17 00:00:00 2001<br>
-From: Ian Lance Taylor &lt;<a href="mailto:iant@golang.org">iant@golang.org</a>&gt;<br>
-Date: Fri, 18 Aug 2017 17:46:03 -0700<br>
-Subject: [PATCH] cmd/go: -buildmode=pie forces external linking mode on all<br>
- systems<br>
-<br>
-The go tool assumed that -buildmode=pie implied internal linking on<br>
-linux-amd64. However, that was changed by CL 36417 for issue #18968.<br>
-<br>
-Fixes #21452<br>
-<br>
-Change-Id: I8ed13aea52959cc5c53223f4c41ba<wbr>35329445545<br>
-Reviewed-on: <a href="https://go-review.googlesource.com/57231" rel="noreferrer" target="_blank">https://go-review.<wbr>googlesource.com/57231</a><br>
-Run-TryBot: Ian Lance Taylor &lt;<a href="mailto:iant@golang.org">iant@golang.org</a>&gt;<br>
-TryBot-Result: Gobot Gobot &lt;<a href="mailto:gobot@golang.org">gobot@golang.org</a>&gt;<br>
-Reviewed-by: Avelino &lt;t@avelino.xxx&gt;<br>
-Reviewed-by: Rob Pike &lt;<a href="mailto:r@golang.org">r@golang.org</a>&gt;<br>
----<br>
-Upstream-Status: Backport<br>
-Signed-off-by: Khem Raj &lt;<a href="mailto:raj.khem@gmail.com">raj.khem@gmail.com</a>&gt;<br>
-<br>
- src/cmd/go/internal/load/pkg.<wbr>go | 7 ++++---<br>
- 1 file changed, 4 insertions(+), 3 deletions(-)<br>
-<br>
-diff --git a/src/cmd/go/internal/load/<wbr>pkg.go b/src/cmd/go/internal/load/<wbr>pkg.go<br>
-index 2660d3f..d40773b 100644<br>
---- a/src/cmd/go/internal/load/<wbr>pkg.go<br>
-+++ b/src/cmd/go/internal/load/<wbr>pkg.go<br>
-@@ -954,11 +954,12 @@ func (p *Package) load(stk *ImportStack, bp *build.Package, err error) *Package<br>
-<br>
-       if cfg.BuildContext.CgoEnabled &amp;&amp; p.Name == &quot;main&quot; &amp;&amp; !p.Goroot {<br>
-               // Currently build modes c-shared, pie (on systems that do not<br>
--              // support PIE with internal linking mode), plugin, and<br>
--              // -linkshared force external linking mode, as of course does<br>
-+              // support PIE with internal linking mode (currently all<br>
-+              // systems: issue #18968)), plugin, and -linkshared force<br>
-+              // external linking mode, as of course does<br>
-               // -ldflags=-linkmode=external. External linking mode forces<br>
-               // an import of runtime/cgo.<br>
--              pieCgo := cfg.BuildBuildmode == &quot;pie&quot; &amp;&amp; (cfg.BuildContext.GOOS != &quot;linux&quot; || cfg.BuildContext.GOARCH != &quot;amd64&quot;)<br>
-+              pieCgo := cfg.BuildBuildmode == &quot;pie&quot;<br>
-               linkmodeExternal := false<br>
-               for i, a := range cfg.BuildLdflags {<br>
-                       if a == &quot;-linkmode=external&quot; {<br>
---<br>
-2.14.1<br>
-<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/0010-make.bash-override-<wbr>CC-when-building-dist-and-go_<wbr>boot.patch b/meta/recipes-devtools/go/go-<wbr>1.9/0010-make.bash-override-<wbr>CC-when-building-dist-and-go_<wbr>boot.patch<br>
deleted file mode 100644<br>
index 83fd78c3d7..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/0010-make.bash-override-<wbr>CC-when-building-dist-and-go_<wbr>boot.patch<br>
+++ /dev/null<br>
@@ -1,43 +0,0 @@<br>
-From 21d83dd9499e5be30eea28dd7034d1<wbr>ea2a01c838 Mon Sep 17 00:00:00 2001<br>
-From: Matt Madison &lt;matt@madison.systems&gt;<br>
-Date: Tue, 14 Nov 2017 07:38:42 -0800<br>
-Subject: [PATCH 10/10] make.bash: override CC when building dist and<br>
- go_bootstrap<br>
-<br>
-For cross-canadian builds, dist and go_bootstrap<br>
-run on the build host, so CC needs to point to the<br>
-build host&#39;s C compiler.  Add a BUILD_CC environment<br>
-for this, falling back to $CC if not present.<br>
-<br>
-Upstream-Status: Pending<br>
-<br>
-Signed-off-by: Matt Madison &lt;matt@madison.systems&gt;<br>
----<br>
- src/make.bash | 4 ++--<br>
- 1 file changed, 2 insertions(+), 2 deletions(-)<br>
-<br>
-diff --git a/src/make.bash b/src/make.bash<br>
-index 0bdadc6..f199349 100755<br>
---- a/src/make.bash<br>
-+++ b/src/make.bash<br>
-@@ -131,7 +131,7 @@ if [ &quot;$GOROOT_BOOTSTRAP&quot; = &quot;$GOROOT&quot; ]; then<br>
-       exit 1<br>
- fi<br>
- rm -f cmd/dist/dist<br>
--GOROOT=&quot;$GOROOT_BOOTSTRAP&quot; GOOS=&quot;&quot; GOARCH=&quot;&quot; &quot;$GOROOT_BOOTSTRAP/bin/go&quot; build -o cmd/dist/dist ./cmd/dist<br>
-+CC=${BUILD_CC:-${CC}} GOROOT=&quot;$GOROOT_BOOTSTRAP&quot; GOOS=&quot;&quot; GOARCH=&quot;&quot; &quot;$GOROOT_BOOTSTRAP/bin/go&quot; build -o cmd/dist/dist ./cmd/dist<br>
-<br>
- # -e doesn&#39;t propagate out of eval, so check success by hand.<br>
- eval $(./cmd/dist/dist env -p || echo FAIL=true)<br>
-@@ -167,7 +167,7 @@ elif [ &quot;$1&quot; = &quot;--host-only&quot; ]; then<br>
- fi<br>
-<br>
- if [ &quot;$do_host_build&quot; = &quot;yes&quot; ]; then<br>
--      ./cmd/dist/dist bootstrap $buildall $GO_DISTFLAGS -v # builds go_bootstrap<br>
-+      CC=${BUILD_CC:-${CC}} ./cmd/dist/dist bootstrap $buildall $GO_DISTFLAGS -v # builds go_bootstrap<br>
-       # Delay move of dist tool to now, because bootstrap may clear tool directory.<br>
-       mv cmd/dist/dist &quot;$GOTOOLDIR&quot;/dist<br>
-       echo<br>
---<br>
-2.7.4<br>
-<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/set-external-linker.patch b/meta/recipes-devtools/go/go-<wbr>1.9/set-external-linker.patch<br>
deleted file mode 100644<br>
index d6bd7fa39c..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/set-external-linker.patch<br>
+++ /dev/null<br>
@@ -1,111 +0,0 @@<br>
-Change the dynamic linker hardcoding to use musl when not using glibc<br>
-this should be applied conditional to musl being the system C library<br>
-<br>
-Upstream-Status: Inappropriate [Real Fix should be portable across libcs]<br>
-<br>
-Signed-off-by: Khem Raj &lt;<a href="mailto:raj.khem@gmail.com">raj.khem@gmail.com</a>&gt;<br>
-<br>
-Index: go/src/cmd/link/internal/<wbr>amd64/obj.go<br>
-=============================<wbr>==============================<wbr>========<br>
---- go.orig/src/cmd/link/internal/<wbr>amd64/obj.go<br>
-+++ go/src/cmd/link/internal/<wbr>amd64/obj.go<br>
-@@ -67,7 +67,7 @@ func Init() {<br>
-       ld.Thearch.Append64 = ld.Append64l<br>
-       ld.Thearch.TLSIEtoLE = tlsIEtoLE<br>
-<br>
--      ld.Thearch.Linuxdynld = &quot;/lib64/ld-linux-x86-64.so.2&quot;<br>
-+      ld.Thearch.Linuxdynld = &quot;/lib/ld-musl-x86_64.so.1&quot;<br>
-       ld.Thearch.Freebsddynld = &quot;/libexec/ld-elf.so.1&quot;<br>
-       ld.Thearch.Openbsddynld = &quot;/usr/libexec/ld.so&quot;<br>
-       ld.Thearch.Netbsddynld = &quot;/libexec/ld.elf_so&quot;<br>
-Index: go/src/cmd/link/internal/arm/<wbr>obj.go<br>
-=============================<wbr>==============================<wbr>========<br>
---- go.orig/src/cmd/link/internal/<wbr>arm/obj.go<br>
-+++ go/src/cmd/link/internal/arm/<wbr>obj.go<br>
-@@ -63,7 +63,7 @@ func Init() {<br>
-       ld.Thearch.Append32 = ld.Append32l<br>
-       ld.Thearch.Append64 = ld.Append64l<br>
-<br>
--      ld.Thearch.Linuxdynld = &quot;/lib/ld-linux.so.3&quot; // 2 for OABI, 3 for EABI<br>
-+      ld.Thearch.Linuxdynld = &quot;/lib/ld-musl-armhf.so.1&quot;<br>
-       ld.Thearch.Freebsddynld = &quot;/usr/libexec/ld-elf.so.1&quot;<br>
-       ld.Thearch.Openbsddynld = &quot;/usr/libexec/ld.so&quot;<br>
-       ld.Thearch.Netbsddynld = &quot;/libexec/ld.elf_so&quot;<br>
-Index: go/src/cmd/link/internal/<wbr>arm64/obj.go<br>
-=============================<wbr>==============================<wbr>========<br>
---- go.orig/src/cmd/link/internal/<wbr>arm64/obj.go<br>
-+++ go/src/cmd/link/internal/<wbr>arm64/obj.go<br>
-@@ -62,7 +62,7 @@ func Init() {<br>
-       ld.Thearch.Append32 = ld.Append32l<br>
-       ld.Thearch.Append64 = ld.Append64l<br>
-<br>
--      ld.Thearch.Linuxdynld = &quot;/lib/ld-linux-aarch64.so.1&quot;<br>
-+      ld.Thearch.Linuxdynld = &quot;/lib/ld-musl-aarch64.so.1&quot;<br>
-<br>
-       ld.Thearch.Freebsddynld = &quot;XXX&quot;<br>
-       ld.Thearch.Openbsddynld = &quot;XXX&quot;<br>
-Index: go/src/cmd/link/internal/mips/<wbr>obj.go<br>
-=============================<wbr>==============================<wbr>========<br>
---- go.orig/src/cmd/link/internal/<wbr>mips/obj.go<br>
-+++ go/src/cmd/link/internal/mips/<wbr>obj.go<br>
-@@ -77,7 +77,7 @@ func Init() {<br>
-               ld.Thearch.Append64 = ld.Append64b<br>
-       }<br>
-<br>
--      ld.Thearch.Linuxdynld = &quot;/lib/ld.so.1&quot;<br>
-+      ld.Thearch.Linuxdynld = &quot;/lib/ld-musl-mipsle.so.1&quot;<br>
-<br>
-       ld.Thearch.Freebsddynld = &quot;XXX&quot;<br>
-       ld.Thearch.Openbsddynld = &quot;XXX&quot;<br>
-Index: go/src/cmd/link/internal/<wbr>mips64/obj.go<br>
-=============================<wbr>==============================<wbr>========<br>
---- go.orig/src/cmd/link/internal/<wbr>mips64/obj.go<br>
-+++ go/src/cmd/link/internal/<wbr>mips64/obj.go<br>
-@@ -75,7 +75,7 @@ func Init() {<br>
-               ld.Thearch.Append64 = ld.Append64b<br>
-       }<br>
-<br>
--      ld.Thearch.Linuxdynld = &quot;/lib64/ld64.so.1&quot;<br>
-+      ld.Thearch.Linuxdynld = &quot;/lib64/ld-musl-mips64le.so.1&quot;<br>
-<br>
-       ld.Thearch.Freebsddynld = &quot;XXX&quot;<br>
-       ld.Thearch.Openbsddynld = &quot;XXX&quot;<br>
-Index: go/src/cmd/link/internal/<wbr>ppc64/obj.go<br>
-=============================<wbr>==============================<wbr>========<br>
---- go.orig/src/cmd/link/internal/<wbr>ppc64/obj.go<br>
-+++ go/src/cmd/link/internal/<wbr>ppc64/obj.go<br>
-@@ -77,7 +77,7 @@ func Init() {<br>
-       }<br>
-<br>
-       // TODO(austin): ABI v1 uses /usr/lib/ld.so.1<br>
--      ld.Thearch.Linuxdynld = &quot;/lib64/ld64.so.1&quot;<br>
-+      ld.Thearch.Linuxdynld = &quot;/lib/ld-musl-powerpc64le.so.<wbr>1&quot;<br>
-<br>
-       ld.Thearch.Freebsddynld = &quot;XXX&quot;<br>
-       ld.Thearch.Openbsddynld = &quot;XXX&quot;<br>
-Index: go/src/cmd/link/internal/<wbr>s390x/obj.go<br>
-=============================<wbr>==============================<wbr>========<br>
---- go.orig/src/cmd/link/internal/<wbr>s390x/obj.go<br>
-+++ go/src/cmd/link/internal/<wbr>s390x/obj.go<br>
-@@ -62,7 +62,7 @@ func Init() {<br>
-       ld.Thearch.Append32 = ld.Append32b<br>
-       ld.Thearch.Append64 = ld.Append64b<br>
-<br>
--      ld.Thearch.Linuxdynld = &quot;/lib64/ld64.so.1&quot;<br>
-+      ld.Thearch.Linuxdynld = &quot;/lib/ld-musl-s390x.so.1&quot;<br>
-<br>
-       // not relevant for s390x<br>
-       ld.Thearch.Freebsddynld = &quot;XXX&quot;<br>
-Index: go/src/cmd/link/internal/x86/<wbr>obj.go<br>
-=============================<wbr>==============================<wbr>========<br>
---- go.orig/src/cmd/link/internal/<wbr>x86/obj.go<br>
-+++ go/src/cmd/link/internal/x86/<wbr>obj.go<br>
-@@ -63,7 +63,7 @@ func Init() {<br>
-       ld.Thearch.Append32 = ld.Append32l<br>
-       ld.Thearch.Append64 = ld.Append64l<br>
-<br>
--      ld.Thearch.Linuxdynld = &quot;/lib/ld-linux.so.2&quot;<br>
-+      ld.Thearch.Linuxdynld = &quot;/lib/ld-musl-i386.so.1&quot;<br>
-       ld.Thearch.Freebsddynld = &quot;/usr/libexec/ld-elf.so.1&quot;<br>
-       ld.Thearch.Openbsddynld = &quot;/usr/libexec/ld.so&quot;<br>
-       ld.Thearch.Netbsddynld = &quot;/usr/libexec/ld.elf_so&quot;<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>common.inc b/meta/recipes-devtools/go/go-<wbr>common.inc<br>
index 37138b51ed..611775b2cc 100644<br>
--- a/meta/recipes-devtools/go/go-<wbr>common.inc<br>
+++ b/meta/recipes-devtools/go/go-<wbr>common.inc<br>
@@ -22,6 +22,8 @@ UPSTREAM_CHECK_REGEX = &quot;(?P&lt;pver&gt;\d+(\.\d+)+)\.src\.<wbr>tar&quot;<br>
 INHIBIT_PACKAGE_DEBUG_SPLIT = &quot;1&quot;<br>
 SSTATE_SCAN_CMD = &quot;true&quot;<br>
<br>
+export GOROOT_OVERRIDE = &quot;1&quot;<br>
+<br>
 do_compile_prepend() {<br>
        BUILD_CC=${BUILD_CC}<br>
 }<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>cross-canadian.inc b/meta/recipes-devtools/go/go-<wbr>cross-canadian.inc<br>
index 8afda6b2ce..c84aa4c9eb 100644<br>
--- a/meta/recipes-devtools/go/go-<wbr>cross-canadian.inc<br>
+++ b/meta/recipes-devtools/go/go-<wbr>cross-canadian.inc<br>
@@ -7,34 +7,34 @@ PN = &quot;go-cross-canadian-${<wbr>TRANSLATED_TARGET_ARCH}&quot;<br>
<br>
 export GOHOSTOS = &quot;${BUILD_GOOS}&quot;<br>
 export GOHOSTARCH = &quot;${BUILD_GOARCH}&quot;<br>
-export GOHOSTOS_CROSS = &quot;${HOST_GOOS}&quot;<br>
-export GOHOSTARCH_CROSS = &quot;${HOST_GOARCH}&quot;<br>
 export GOROOT_BOOTSTRAP = &quot;${STAGING_LIBDIR_NATIVE}/go&quot;<br>
 export GOTOOLDIR_BOOTSTRAP = &quot;${STAGING_LIBDIR_NATIVE}/${<wbr>HOST_SYS}/go/pkg/tool/${BUILD_<wbr>GOTUPLE}&quot;<br>
 export GOROOT_FINAL = &quot;${libdir}/go&quot;<br>
 export CGO_ENABLED = &quot;1&quot;<br>
-export CC_FOR_TARGET = &quot;${TARGET_PREFIX}gcc&quot;<br>
-export CXX_FOR_TARGET = &quot;${TARGET_PREFIX}g++&quot;<br>
-CC = &quot;${HOST_PREFIX}gcc&quot;<br>
-export CGO_CFLAGS = &quot;--sysroot=${STAGING_DIR_<wbr>TARGET} ${HOST_CC_ARCH} ${CFLAGS}&quot;<br>
-export CGO_LDFLAGS = &quot;--sysroot=${STAGING_DIR_<wbr>TARGET} ${HOST_CC_ARCH} ${LDFLAGS}&quot;<br>
-export GO_LDFLAGS = &#39;-linkmode external -extld ${HOST_PREFIX}gcc -extldflags &quot;--sysroot=${STAGING_DIR_<wbr>TARGET} ${HOST_CC_ARCH} ${LDFLAGS}&quot;&#39;<br>
+export GOCACHE = &quot;off&quot;<br>
+export GOTMPDIR ?= &quot;${WORKDIR}/go-tmp&quot;<br>
+GOTMPDIR[vardepvalue] = &quot;&quot;<br>
+#CC = &quot;${HOST_PREFIX}gcc&quot;<br>
+export CGO_CFLAGS = &quot;${CFLAGS}&quot;<br>
+export CGO_LDFLAGS = &quot;${LDFLAGS}&quot;<br>
+export GO_LDFLAGS = &#39;-v -linkmode external -extld ${HOST_PREFIX}gcc -extldflags &quot;--sysroot=${STAGING_DIR_HOST} ${HOST_CC_ARCH} ${LDFLAGS}&quot;&#39;<br>
<br>
 do_configure[noexec] = &quot;1&quot;<br>
<br>
 do_compile() {<br>
-       export GOBIN=&quot;${B}/bin&quot;<br>
-       rm -rf ${GOBIN} ${B}/pkg<br>
-       mkdir ${GOBIN}<br>
+       export CC_FOR_${HOST_GOOS}_${HOST_<wbr>GOARCH}=&quot;${HOST_PREFIX}gcc --sysroot=${STAGING_DIR_HOST}$<wbr>{SDKPATHNATIVE}&quot;<br>
+       export CXX_FOR_${HOST_GOOS}_${HOST_<wbr>GOARCH}=&quot;${HOST_PREFIX}gxx --sysroot=${STAGING_DIR_HOST}$<wbr>{SDKPATHNATIVE}&quot;<br>
        cd src<br>
        ./make.bash --host-only --no-banner<br>
        cd ${B}<br>
 }<br>
+do_compile[dirs] =+ &quot;${GOTMPDIR} ${B}/bin ${B}/pkg&quot;<br>
+do_compile[cleandirs] += &quot;${GOTMPDIR} ${B}/bin ${B}/pkg&quot;<br>
<br>
<br>
 make_wrapper() {<br>
-    rm -f ${D}${bindir}/$2<br>
-    cat &lt;&lt;END &gt;${D}${bindir}/$2<br>
+       rm -f ${D}${bindir}/$2<br>
+       cat &lt;&lt;END &gt;${D}${bindir}/$2<br>
 #!/bin/sh<br>
 here=\`dirname \$0\`<br>
 native_goroot=\`readlink -f \$here/../../lib/${TARGET_SYS}<wbr>/go\`<br>
@@ -46,7 +46,7 @@ export GOTOOLDIR=&quot;\$native_goroot/<wbr>pkg/tool/${HOST_GOTUPLE}&quot;<br>
 test -n &quot;\$GOROOT&quot; || export GOROOT=&quot;\$OECORE_TARGET_<wbr>SYSROOT/${target_libdir}/go&quot;<br>
 \$here/../../lib/${TARGET_SYS}<wbr>/go/bin/$1 &quot;\$@&quot;<br>
 END<br>
-    chmod +x ${D}${bindir}/$2<br>
+       chmod +x ${D}${bindir}/$2<br>
 }<br>
<br>
 do_install() {<br>
diff --git a/meta/recipes-devtools/go/<a href="http://go-cross-canadian_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>cross-canadian_1.9.bb</a> b/meta/recipes-devtools/go/<a href="http://go-cross-canadian_1.10.bb" rel="noreferrer" target="_blank">go-<wbr>cross-canadian_1.10.bb</a><br>
similarity index 100%<br>
rename from meta/recipes-devtools/go/<a href="http://go-cross-canadian_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>cross-canadian_1.9.bb</a><br>
rename to meta/recipes-devtools/go/<a href="http://go-cross-canadian_1.10.bb" rel="noreferrer" target="_blank">go-<wbr>cross-canadian_1.10.bb</a><br>
diff --git a/meta/recipes-devtools/go/go-<wbr>cross.inc b/meta/recipes-devtools/go/go-<wbr>cross.inc<br>
index 3ac7211bc3..fe92651581 100644<br>
--- a/meta/recipes-devtools/go/go-<wbr>cross.inc<br>
+++ b/meta/recipes-devtools/go/go-<wbr>cross.inc<br>
@@ -1,7 +1,7 @@<br>
 inherit cross<br>
<br>
 PROVIDES = &quot;virtual/${TARGET_PREFIX}go&quot;<br>
-DEPENDS += &quot;go-native&quot;<br>
+DEPENDS = &quot;go-native&quot;<br>
<br>
 PN = &quot;go-cross-${TARGET_ARCH}&quot;<br>
<br>
@@ -13,26 +13,27 @@ export GOARM = &quot;${TARGET_GOARM}&quot;<br>
 export GO386 = &quot;${TARGET_GO386}&quot;<br>
 export GOROOT_BOOTSTRAP = &quot;${STAGING_LIBDIR_NATIVE}/go&quot;<br>
 export GOROOT_FINAL = &quot;${libdir}/go&quot;<br>
+export GOCACHE = &quot;off&quot;<br>
+export GOTMPDIR ?= &quot;${WORKDIR}/go-tmp&quot;<br>
+GOTMPDIR[vardepvalue] = &quot;&quot;<br>
 export CGO_ENABLED = &quot;1&quot;<br>
-export CC_FOR_TARGET=&quot;${TARGET_<wbr>PREFIX}gcc ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_<wbr>TARGET}&quot;<br>
-export CXX_FOR_TARGET=&quot;${TARGET_<wbr>PREFIX}g++ ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_<wbr>TARGET}&quot;<br>
 CC = &quot;${@d.getVar(&#39;BUILD_CC&#39;).<wbr>strip()}&quot;<br>
<br>
 do_configure[noexec] = &quot;1&quot;<br>
<br>
 do_compile() {<br>
-    export GOBIN=&quot;${B}/bin&quot;<br>
-    rm -rf ${GOBIN} ${B}/pkg<br>
-    mkdir ${GOBIN}<br>
-    cd src<br>
-    ./make.bash --host-only<br>
-    cd ${B}<br>
+       export CC_FOR_${GOOS}_${GOARCH}=&quot;${<wbr>TARGET_PREFIX}gcc ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_<wbr>TARGET}&quot;<br>
+       export CXX_FOR_${GOOS}_${GOARCh}=&quot;${<wbr>TARGET_PREFIX}g++ ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_<wbr>TARGET}&quot;<br>
+       cd src<br>
+       ./make.bash --host-only --no-banner<br>
+       cd ${B}<br>
 }<br>
-<br>
+do_compile[dirs] =+ &quot;${GOTMPDIR} ${B}/bin ${B}/pkg&quot;<br>
+do_compile[cleandirs] += &quot;${GOTMPDIR} ${B}/bin ${B}/pkg&quot;<br>
<br>
 make_wrapper() {<br>
-    rm -f ${D}${bindir}/$2<br>
-    cat &lt;&lt;END &gt;${D}${bindir}/$2<br>
+       rm -f ${D}${bindir}/$2<br>
+       cat &lt;&lt;END &gt;${D}${bindir}/$2<br>
 #!/bin/bash<br>
 here=\`dirname \$0\`<br>
 export GOARCH=&quot;${TARGET_GOARCH}&quot;<br>
@@ -41,22 +42,22 @@ export GOARM=&quot;\${GOARM:-${TARGET_<wbr>GOARM}}&quot;<br>
 export GO386=&quot;\${GO386:-${TARGET_<wbr>GO386}}&quot;<br>
 \$here/../../lib/${CROSS_<wbr>TARGET_SYS_DIR}/go/bin/$1 &quot;\$@&quot;<br>
 END<br>
-    chmod +x ${D}${bindir}/$2<br>
+       chmod +x ${D}${bindir}/$2<br>
 }<br>
<br>
 do_install() {<br>
-    install -d ${D}${libdir}/go<br>
-    cp --preserve=mode,timestamps -R ${B}/pkg ${D}${libdir}/go/<br>
-    install -d ${D}${libdir}/go/src<br>
-    (cd ${S}/src; for d in *; do \<br>
-        [ ! -d $d ] || cp --preserve=mode,timestamps -R ${S}/src/$d ${D}${libdir}/go/src/; \<br>
-    done)<br>
-    rm -rf ${D}${libdir}/go/src/runtime/<wbr>pprof/testdata<br>
-    install -d ${D}${bindir} ${D}${libdir}/go/bin<br>
-    for f in ${B}/bin/*<br>
-    do<br>
-        base=`basename $f`<br>
-        install -m755 $f ${D}${libdir}/go/bin<br>
-        make_wrapper $base ${TARGET_PREFIX}$base<br>
-    done<br>
+       install -d ${D}${libdir}/go<br>
+       cp --preserve=mode,timestamps -R ${B}/pkg ${D}${libdir}/go/<br>
+       install -d ${D}${libdir}/go/src<br>
+       (cd ${S}/src; for d in *; do \<br>
+               [ ! -d $d ] || cp --preserve=mode,timestamps -R ${S}/src/$d ${D}${libdir}/go/src/; \<br>
+       done)<br>
+       find ${D}${libdir}/go/src -depth -type d -name testdata -exec rm -rf {} \;<br>
+       install -d ${D}${bindir} ${D}${libdir}/go/bin<br>
+       for f in ${B}/bin/*<br>
+       do<br>
+               base=`basename $f`<br>
+               install -m755 $f ${D}${libdir}/go/bin<br>
+               make_wrapper $base ${TARGET_PREFIX}$base<br>
+       done<br>
 }<br>
diff --git a/meta/recipes-devtools/go/<a href="http://go-cross_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>cross_1.9.bb</a> b/meta/recipes-devtools/go/<a href="http://go-cross_1.10.bb" rel="noreferrer" target="_blank">go-<wbr>cross_1.10.bb</a><br>
similarity index 100%<br>
rename from meta/recipes-devtools/go/<a href="http://go-cross_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>cross_1.9.bb</a><br>
rename to meta/recipes-devtools/go/<a href="http://go-cross_1.10.bb" rel="noreferrer" target="_blank">go-<wbr>cross_1.10.bb</a><br>
diff --git a/meta/recipes-devtools/go/go-<wbr>crosssdk.inc b/meta/recipes-devtools/go/go-<wbr>crosssdk.inc<br>
index f67e4b92a0..05ca62eba8 100644<br>
--- a/meta/recipes-devtools/go/go-<wbr>crosssdk.inc<br>
+++ b/meta/recipes-devtools/go/go-<wbr>crosssdk.inc<br>
@@ -11,21 +11,21 @@ export GOARCH = &quot;${TARGET_GOARCH}&quot;<br>
 export GOROOT_BOOTSTRAP = &quot;${STAGING_LIBDIR_NATIVE}/go&quot;<br>
 export GOROOT_FINAL = &quot;${libdir}/go&quot;<br>
 export CGO_ENABLED = &quot;1&quot;<br>
-export CC_FOR_TARGET=&quot;${TARGET_<wbr>PREFIX}gcc ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_<wbr>TARGET}${SDKPATHNATIVE}&quot;<br>
-export CXX_FOR_TARGET=&quot;${TARGET_<wbr>PREFIX}g++ ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_<wbr>TARGET}${SDKPATHNATIVE}&quot;<br>
-export GO_INSTALL = &quot;cmd&quot;<br>
-CC = &quot;${@d.getVar(&#39;BUILD_CC&#39;).<wbr>strip()}&quot;<br>
+export GOCACHE = &quot;off&quot;<br>
+export GOTMPDIR ?= &quot;${WORKDIR}/go-tmp&quot;<br>
+GOTMPDIR[vardepvalue] = &quot;&quot;<br>
<br>
 do_configure[noexec] = &quot;1&quot;<br>
<br>
 do_compile() {<br>
-       export GOBIN=&quot;${B}/bin&quot;<br>
-       rm -rf ${GOBIN} ${B}/pkg<br>
-       mkdir ${GOBIN}<br>
+       export CC_FOR_${TARGET_GOOS}_${<wbr>TARGET_GOARCH}=&quot;${TARGET_<wbr>PREFIX}gcc ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_<wbr>TARGET}${SDKPATHNATIVE}&quot;<br>
+       export CXX_FOR_${TARGET_GOOS}_${<wbr>TARGET_GOARCH}=&quot;${TARGET_<wbr>PREFIX}g++ ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_<wbr>TARGET}${SDKPATHNATIVE}&quot;<br>
        cd src<br>
-       ./make.bash --host-only<br>
+       ./make.bash --host-only --no-banner<br>
        cd ${B}<br>
 }<br>
+do_compile[dirs] =+ &quot;${GOTMPDIR} ${B}/bin ${B}/pkg&quot;<br>
+do_compile[cleandirs] += &quot;${GOTMPDIR} ${B}/bin ${B}/pkg&quot;<br>
<br>
 make_wrapper() {<br>
     rm -f ${D}${bindir}/$2<br>
diff --git a/meta/recipes-devtools/go/<a href="http://go-crosssdk_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>crosssdk_1.9.bb</a> b/meta/recipes-devtools/go/<a href="http://go-crosssdk_1.10.bb" rel="noreferrer" target="_blank">go-<wbr>crosssdk_1.10.bb</a><br>
similarity index 100%<br>
rename from meta/recipes-devtools/go/<a href="http://go-crosssdk_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>crosssdk_1.9.bb</a><br>
rename to meta/recipes-devtools/go/<a href="http://go-crosssdk_1.10.bb" rel="noreferrer" target="_blank">go-<wbr>crosssdk_1.10.bb</a><br>
diff --git a/meta/recipes-devtools/go/go-<wbr>native.inc b/meta/recipes-devtools/go/go-<wbr>native.inc<br>
index 95db1c2b7c..31e899da82 100644<br>
--- a/meta/recipes-devtools/go/go-<wbr>native.inc<br>
+++ b/meta/recipes-devtools/go/go-<wbr>native.inc<br>
@@ -4,34 +4,33 @@ nonstaging_libdir := &quot;${libdir}&quot;<br>
<br>
 inherit native<br>
<br>
-SRC_URI_append = &quot; <a href="http://golang.org/dl/go1.4.3.src.tar.gz;name=bootstrap;subdir=go1.4" rel="noreferrer" target="_blank">http://golang.org/dl/go1.4.3.<wbr>src.tar.gz;name=bootstrap;<wbr>subdir=go1.4</a>&quot;<br>
-SRC_URI[bootstrap.md5sum] = &quot;<wbr>dfb604511115dd402a77a553a5923a<wbr>04&quot;<br>
-SRC_URI[bootstrap.sha256sum] = &quot;<wbr>9947fc705b0b841b5938c48b22dc33<wbr>e9647ec0752bae66e50278df4f23f6<wbr>4959&quot;<br>
+SRC_URI_append = &quot; <a href="https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz;name=bootstrap;subdir=go1.4" rel="noreferrer" target="_blank">https://dl.google.com/go/go1.<wbr>4-bootstrap-20171003.tar.gz;<wbr>name=bootstrap;subdir=go1.4</a>&quot;<br>
+SRC_URI[bootstrap.md5sum] = &quot;<wbr>dbf727a4b0e365bf88d97cbfde5900<wbr>16&quot;<br>
+SRC_URI[bootstrap.sha256sum] = &quot;<wbr>f4ff5b5eb3a3cae1c993723f3eab51<wbr>9c5bae18866b5e5f96fe1102f0cb5c<wbr>3e52&quot;<br>
<br>
 export GOOS = &quot;${BUILD_GOOS}&quot;<br>
 export GOARCH = &quot;${BUILD_GOARCH}&quot;<br>
+export GOTMPDIR ?= &quot;${WORKDIR}/go-tmp&quot;<br>
+GOTMPDIR[vardepvalue] = &quot;&quot;<br>
 CC = &quot;${@d.getVar(&#39;BUILD_CC&#39;).<wbr>strip()}&quot;<br>
<br>
 export CGO_ENABLED = &quot;1&quot;<br>
<br>
 do_configure() {<br>
-    cd ${WORKDIR}/go1.4/go/src<br>
-    CGO_ENABLED=0 GOROOT=${WORKDIR}/go1.4/go ./make.bash<br>
+       cd ${WORKDIR}/go1.4/go/src<br>
+       CGO_ENABLED=0 GOROOT=${WORKDIR}/go1.4/go ./make.bash<br>
 }<br>
<br>
 do_compile() {<br>
-       export GOBIN=&quot;${B}/bin&quot;<br>
        export GOROOT_FINAL=&quot;${nonstaging_<wbr>libdir}/go&quot;<br>
        export GOROOT_BOOTSTRAP=&quot;${WORKDIR}/<wbr>go1.4/go&quot;<br>
-       rm -rf ${GOBIN}<br>
-       mkdir ${GOBIN}<br>
-<br>
-       export TMPDIR=${WORKDIR}/build-tmp<br>
-       mkdir -p ${WORKDIR}/build-tmp<br>
<br>
        cd src<br>
-       ./make.bash --host-only<br>
+       ./make.bash --no-banner<br>
+       cd ${B}<br>
 }<br>
+do_compile[dirs] =+ &quot;${GOTMPDIR} ${B}/bin&quot;<br>
+do_compile[cleandirs] += &quot;${GOTMPDIR} ${B}/bin&quot;<br>
<br>
 make_wrapper() {<br>
        rm -f ${D}${bindir}/$2$3<br>
@@ -51,7 +50,7 @@ do_install() {<br>
        (cd ${S}/src; for d in *; do \<br>
                [ -d $d ] &amp;&amp; cp -a ${S}/src/$d ${D}${libdir}/go/src/; \<br>
        done)<br>
-       rm -rf ${D}${libdir}/go/src/runtime/<wbr>pprof/testdata<br>
+       find ${D}${libdir}/go/src -depth -type d -name testdata -exec rm -rf {} \;<br>
        install -d ${D}${bindir} ${D}${libdir}/go/bin<br>
        for f in ${B}/bin/*<br>
        do<br>
diff --git a/meta/recipes-devtools/go/<a href="http://go-native_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>native_1.9.bb</a> b/meta/recipes-devtools/go/<a href="http://go-native_1.10.bb" rel="noreferrer" target="_blank">go-<wbr>native_1.10.bb</a><br>
similarity index 100%<br>
rename from meta/recipes-devtools/go/<a href="http://go-native_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>native_1.9.bb</a><br>
rename to meta/recipes-devtools/go/<a href="http://go-native_1.10.bb" rel="noreferrer" target="_blank">go-<wbr>native_1.10.bb</a><br>
diff --git a/meta/recipes-devtools/go/go-<wbr>runtime.inc b/meta/recipes-devtools/go/go-<wbr>runtime.inc<br>
index 29ae86e4ee..7a3b415b3f 100644<br>
--- a/meta/recipes-devtools/go/go-<wbr>runtime.inc<br>
+++ b/meta/recipes-devtools/go/go-<wbr>runtime.inc<br>
@@ -10,11 +10,18 @@ export GOARM = &quot;${TARGET_GOARM}&quot;<br>
 export GO386 = &quot;${TARGET_GO386}&quot;<br>
 export GOROOT_BOOTSTRAP = &quot;${STAGING_LIBDIR_NATIVE}/go&quot;<br>
 export GOROOT_FINAL = &quot;${libdir}/go&quot;<br>
-export GO_TARGET_INSTALL = &quot;std&quot;<br>
 export CGO_ENABLED = &quot;1&quot;<br>
-export CC_FOR_TARGET=&quot;${CC}&quot;<br>
-export CXX_FOR_TARGET=&quot;${CXX}&quot;<br>
-export GOROOT_OVERRIDE = &quot;1&quot;<br>
+export CGO_CFLAGS = &quot;${CFLAGS}&quot;<br>
+export CGO_CPPFLAGS = &quot;${CPPFLAGS}&quot;<br>
+export CGO_CXXFLAGS = &quot;${CXXFLAGS}&quot;<br>
+export CGO_LDFLAGS = &quot;${LDFLAGS}&quot;<br>
+export GOCACHE = &quot;off&quot;<br>
+export GOTMPDIR ?= &quot;${WORKDIR}/go-tmp&quot;<br>
+GOTMPDIR[vardepvalue] = &quot;&quot;<br>
+GO_EXTLDFLAGS ?= &quot;${HOST_CC_ARCH}${TOOLCHAIN_<wbr>OPTIONS} ${LDFLAGS}&quot;<br>
+GO_LINKMODE ?= &quot;&quot;<br>
+GO_LINKMODE_class-nativesdk = &quot;--linkmode=external&quot;<br>
+GO_LDFLAGS ?= &#39;-ldflags=&quot;${GO_LINKMODE} -extldflags &#39;${GO_EXTLDFLAGS}&#39;&quot;&#39;<br>
<br>
 do_configure() {<br>
        :<br>
@@ -25,21 +32,20 @@ do_configure_libc-musl() {<br>
 }<br>
<br>
 do_compile() {<br>
-       export GOBIN=&quot;${B}/bin&quot;<br>
-       export CC=&quot;${@d.getVar(&#39;BUILD_CC&#39;).<wbr>strip()}&quot;<br>
-       rm -rf ${GOBIN} ${B}/pkg<br>
-       mkdir ${GOBIN}<br>
+       export CC_FOR_${TARGET_GOOS}_${<wbr>TARGET_GOARCH}=&quot;${CC}&quot;<br>
+       export CXX_FOR_${TARGET_GOOS}_${<wbr>TARGET_GOARCH}=&quot;${CXX}&quot;<br>
+<br>
        cd src<br>
-       ./make.bash --host-only<br>
-       cp ${B}/pkg/tool/${BUILD_GOTUPLE}<wbr>/go_bootstrap ${B}<br>
-       rm -rf ${B}/pkg/${TARGET_GOTUPLE}<br>
-       ./make.bash --target-only<br>
+       ./make.bash --target-only --no-banner std<br>
        if [ -n &quot;${GO_DYNLINK}&quot; ]; then<br>
-               cp ${B}/go_bootstrap ${B}/pkg/tool/${BUILD_GOTUPLE}<br>
-               GO_FLAGS=&quot;-buildmode=shared&quot; GO_LDFLAGS=&quot;-extldflags \&quot;${LDFLAGS}\&quot;&quot; ./make.bash --target-only<br>
+               export GOTOOLDIR=&quot;${B}/pkg/tool/<wbr>native_native&quot;<br>
+               CC=&quot;$CC_FOR_${TARGET_GOOS}_${<wbr>TARGET_GOARCH}&quot; GOARCH=&quot;${TARGET_GOARCH}&quot; GOOS=&quot;${TARGET_GOOS}&quot; GOROOT=${B} \<br>
+                       $GOTOOLDIR/go_bootstrap install -linkshared -buildmode=shared ${GO_LDFLAGS} std<br>
        fi<br>
        cd ${B}<br>
 }<br>
+do_compile[dirs] =+ &quot;${GOTMPDIR} ${B}/bin ${B}/pkg&quot;<br>
+do_compile[cleandirs] += &quot;${GOTMPDIR} ${B}/bin ${B}/pkg&quot;<br>
<br>
 do_install() {<br>
        install -d ${D}${libdir}/go/src<br>
@@ -54,20 +60,10 @@ do_install() {<br>
        find src -mindepth 1 -maxdepth 1 -type d | while read srcdir; do<br>
                cp --preserve=mode,timestamps -R $srcdir ${D}${libdir}/go/src/<br>
        done<br>
+       find ${D}${libdir}/go/src -depth -type d -name testdata -exec rm -rf {} \;<br>
        rm -f ${D}${libdir}/go/src/cmd/dist/<wbr>dist<br>
 }<br>
<br>
-# Remove test binaries that cannot be relocated<br>
-do_install_append_class-<wbr>nativesdk() {<br>
-       rm -rf ${D}${libdir}/go/src/runtime/<wbr>pprof/testdata<br>
-}<br>
-<br>
-# These testdata directories aren&#39;t needed for builds and contain binaries<br>
-# that can cause errors in sysroot_strip(), so just remove them.<br>
-sysroot_stage_all_append() {<br>
-       find ${SYSROOT_DESTDIR}${libdir}/<wbr>go/src -depth -type d -name &#39;testdata&#39; -exec rm -rf {} \;<br>
-}<br>
-<br>
 ALLOW_EMPTY_${PN} = &quot;1&quot;<br>
 FILES_${PN} = &quot;${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE}_dynlink/*${SOLIBSDEV}<wbr>&quot;<br>
 FILES_${PN}-dev = &quot;${libdir}/go/src ${libdir}/go/pkg/include \<br>
@@ -78,8 +74,6 @@ FILES_${PN}-dev = &quot;${libdir}/go/src ${libdir}/go/pkg/include \<br>
                    ${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE}_dynlink/*/*/*/*/*.<wbr>shlibname \<br>
                    ${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE}_dynlink/*/*/*/*/*/*.<wbr>shlibname \<br>
                    ${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE}_dynlink/*/*/*/*/*/*/*<wbr>.shlibname \<br>
-&quot;<br>
-FILES_${PN}-staticdev = &quot;${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE} \<br>
                    ${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE}_dynlink/*.a \<br>
                    ${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE}_dynlink/*/*.a \<br>
                    ${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE}_dynlink/*/*/*.a \<br>
@@ -88,11 +82,15 @@ FILES_${PN}-staticdev = &quot;${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE} \<br>
                    ${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE}_dynlink/*/*/*/*/*/*.a \<br>
                    ${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE}_dynlink/*/*/*/*/*/*/*<wbr>.a \<br>
 &quot;<br>
-# The testdata directories in the source tree include some binaries for various<br>
-# architectures, scripts, and .a files<br>
-INSANE_SKIP_${PN}-dev = &quot;staticdev ldflags file-rdeps arch&quot;<br>
+FILES_${PN}-staticdev = &quot;${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE}&quot;<br>
+<br>
+# Go sources include some scripts and pre-built binaries for<br>
+# multiple architectures.  The static .a files for dynamically-linked<br>
+# runtime are also required in -dev.<br>
+INSANE_SKIP_${PN}-dev = &quot;staticdev file-rdeps arch&quot;<br>
<br>
 INHIBIT_PACKAGE_STRIP = &quot;1&quot;<br>
 INHIBIT_PACKAGE_DEBUG_SPLIT = &quot;1&quot;<br>
+INHIBIT_SYSROOT_STRIP = &quot;1&quot;<br>
<br>
 BBCLASSEXTEND = &quot;nativesdk&quot;<br>
diff --git a/meta/recipes-devtools/go/<a href="http://go-runtime_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>runtime_1.9.bb</a> b/meta/recipes-devtools/go/<a href="http://go-runtime_1.10.bb" rel="noreferrer" target="_blank">go-<wbr>runtime_1.10.bb</a><br>
similarity index 100%<br>
rename from meta/recipes-devtools/go/<a href="http://go-runtime_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>runtime_1.9.bb</a><br>
rename to meta/recipes-devtools/go/<a href="http://go-runtime_1.10.bb" rel="noreferrer" target="_blank">go-<wbr>runtime_1.10.bb</a><br>
diff --git a/meta/recipes-devtools/go/go-<wbr>target.inc b/meta/recipes-devtools/go/go-<wbr>target.inc<br>
index cac5d78227..a53a314c78 100644<br>
--- a/meta/recipes-devtools/go/go-<wbr>target.inc<br>
+++ b/meta/recipes-devtools/go/go-<wbr>target.inc<br>
@@ -11,10 +11,9 @@ export GO386 = &quot;${TARGET_GO386}&quot;<br>
 export GOROOT_BOOTSTRAP = &quot;${STAGING_LIBDIR_NATIVE}/go&quot;<br>
 export GOROOT_FINAL = &quot;${libdir}/go&quot;<br>
 export CGO_ENABLED = &quot;1&quot;<br>
-export CC_FOR_TARGET = &quot;${CC}&quot;<br>
-export CXX_FOR_TARGET = &quot;${CXX}&quot;<br>
-export GO_TARGET_INSTALL = &quot;cmd&quot;<br>
-export GO_FLAGS = &quot;-a&quot;<br>
+export GOCACHE = &quot;off&quot;<br>
+export GOTMPDIR ?= &quot;${WORKDIR}/go-tmp&quot;<br>
+GOTMPDIR[vardepvalue] = &quot;&quot;<br>
 GO_LDFLAGS = &quot;&quot;<br>
 GO_LDFLAGS_class-nativesdk = &quot;-linkmode external&quot;<br>
 export GO_LDFLAGS<br>
@@ -25,24 +24,22 @@ SECURITY_LDFLAGS = &quot;&quot;<br>
 do_configure[noexec] = &quot;1&quot;<br>
<br>
 do_compile() {<br>
-       export GOBIN=&quot;${B}/bin&quot;<br>
-       export CC=&quot;${@d.getVar(&#39;BUILD_CC&#39;).<wbr>strip()}&quot;<br>
-       rm -rf ${GOBIN} ${B}/pkg<br>
-       mkdir ${GOBIN}<br>
-<br>
-       export TMPDIR=${WORKDIR}/build-tmp<br>
-       mkdir -p ${WORKDIR}/build-tmp<br>
+       export CC_FOR_${TARGET_GOOS}_${<wbr>TARGET_GOARCH}=&quot;${CC}&quot;<br>
+       export CXX_FOR_${TARGET_GOOS}_${<wbr>TARGET_GOARCH}=&quot;${CXX}&quot;<br>
<br>
        cd src<br>
-       ./make.bash<br>
+       ./make.bash --target-only --no-banner<br>
        cd ${B}<br>
 }<br>
+do_compile[dirs] =+ &quot;${GOTMPDIR} ${B}/bin ${B}/pkg&quot;<br>
+do_compile[cleandirs] += &quot;${GOTMPDIR} ${B}/bin ${B}/pkg&quot;<br>
<br>
 do_install() {<br>
        install -d ${D}${libdir}/go/pkg/tool<br>
        cp --preserve=mode,timestamps -R ${B}/pkg/tool/${TARGET_<wbr>GOTUPLE} ${D}${libdir}/go/pkg/tool/<br>
        install -d ${D}${libdir}/go/src<br>
        cp --preserve=mode,timestamps -R ${S}/src/cmd ${D}${libdir}/go/src/<br>
+       find ${D}${libdir}/go/src -depth -type d -name testdata -exec rm -rf {} \;<br>
        install -d ${D}${libdir}/go/bin<br>
        install -d ${D}${bindir}<br>
        for f in ${B}/${GO_BUILD_BINDIR}/*; do<br>
diff --git a/meta/recipes-devtools/go/<a href="http://go_1.9.bb" rel="noreferrer" target="_blank">go_<wbr>1.9.bb</a> b/meta/recipes-devtools/go/<a href="http://go_1.10.bb" rel="noreferrer" target="_blank">go_<wbr>1.10.bb</a><br>
similarity index 100%<br>
rename from meta/recipes-devtools/go/<a href="http://go_1.9.bb" rel="noreferrer" target="_blank">go_1.<wbr>9.bb</a><br>
rename to meta/recipes-devtools/go/<a href="http://go_1.10.bb" rel="noreferrer" target="_blank">go_1.<wbr>10.bb</a><br>
<span class="HOEnZb"><font color="#888888">--<br>
2.14.1<br>
<br>
--<br>
______________________________<wbr>_________________<br>
Openembedded-core mailing list<br>
<a href="mailto:Openembedded-core@lists.openembedded.org">Openembedded-core@lists.<wbr>openembedded.org</a><br>
<a href="http://lists.openembedded.org/mailman/listinfo/openembedded-core" rel="noreferrer" target="_blank">http://lists.openembedded.org/<wbr>mailman/listinfo/openembedded-<wbr>core</a><br>
</font></span></blockquote></div><br></div>