<div dir="ltr">Sorry for noise, I&#39;ve double checked and your fix wasn&#39;t included yet in the build which triggered the QA warning for me.<div><br></div><div>I&#39;ve re-triggered to test with the fix really included, will let you know if it didn&#39;t fix the issue.</div><div><br></div><div>Thanks</div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Nov 6, 2018 at 9:31 AM Martin Jansa &lt;<a href="mailto:martin.jansa@gmail.com">martin.jansa@gmail.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><pre class="m_2259858583088756193gmail-console-output" style="box-sizing:border-box;white-space:pre-wrap;margin-top:0px;margin-bottom:0px;color:rgb(51,51,51);font-size:15px">Hi, there are still textrel QA issues for aarch64 builds:</pre><pre class="m_2259858583088756193gmail-console-output" style="box-sizing:border-box;white-space:pre-wrap;margin-top:0px;margin-bottom:0px;color:rgb(51,51,51);font-size:15px"><br></pre><pre class="m_2259858583088756193gmail-console-output" style="box-sizing:border-box;white-space:pre-wrap;margin-top:0px;margin-bottom:0px;color:rgb(51,51,51);font-size:15px">ERROR: go-1.11.1-r0 do_package_qa: QA Issue: ELF binary &#39;/work/aarch64/go/1.11.1-r0/packages-split/go/usr/lib/go/bin/go&#39; has relocations in .text<br>ELF binary &#39;/work/aarch64/go/1.11.1-r0/packages-split/go/usr/lib/go/bin/go&#39; has relocations in .text
ELF binary &#39;/work/aarch64/go/1.11.1-r0/packages-split/go/usr/lib/go/pkg/tool/linux_arm64/trace&#39; has relocations in .text<br>ELF binary &#39;/work/aarch64/go/1.11.1-r0/packages-split/go/usr/lib/go/pkg/tool/linux_arm64/trace&#39; has relocations in .text<br>ELF binary &#39;/work/aarch64/go/1.11.1-r0/packages-split/go/usr/lib/go/pkg/tool/linux_arm64/pprof&#39; has relocations in .text<br>ELF binary &#39;/work/aarch64/go/1.11.1-r0/packages-split/go/usr/lib/go/pkg/tool/linux_arm64/pprof&#39; has relocations in .text [textrel]<br>ERROR: go-1.11.1-r0 do_package_qa: QA run found fatal errors. Please consider fixing them.
ERROR: go-1.11.1-r0 do_package_qa: Function failed: do_package_qa</pre></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Oct 26, 2018 at 11:32 AM Hongxu Jia &lt;<a href="mailto:hongxu.jia@windriver.com" target="_blank">hongxu.jia@windriver.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">While building go itself, the go build system does not support<br>
to set `-buildmode=pie&#39; from environment.<br>
<br>
Add GOBUILDMODE to support it which make PIE executables the default<br>
build mode, as PIE executables are required as of Yocto<br>
<br>
But mips doesn&#39;t support -buildmode=pie, so skip the QA checking for<br>
mips and its variants<br>
<br>
Signed-off-by: Hongxu Jia &lt;<a href="mailto:hongxu.jia@windriver.com" target="_blank">hongxu.jia@windriver.com</a>&gt;<br>
---<br>
 meta/recipes-devtools/go/go-1.11.inc               |  1 +<br>
 .../0008-use-GOBUILDMODE-to-set-buildmode.patch    | 40 ++++++++++++++++++++++<br>
 meta/recipes-devtools/go/go-1.9.inc                |  1 +<br>
 .../0011-use-GOBUILDMODE-to-set-buildmode.patch    | 40 ++++++++++++++++++++++<br>
 meta/recipes-devtools/go/<a href="http://go_1.11.bb" rel="noreferrer" target="_blank">go_1.11.bb</a>                | 12 +++++++<br>
 meta/recipes-devtools/go/<a href="http://go_1.9.bb" rel="noreferrer" target="_blank">go_1.9.bb</a>                 | 16 +++++----<br>
 6 files changed, 104 insertions(+), 6 deletions(-)<br>
 create mode 100644 meta/recipes-devtools/go/go-1.11/0008-use-GOBUILDMODE-to-set-buildmode.patch<br>
 create mode 100644 meta/recipes-devtools/go/go-1.9/0011-use-GOBUILDMODE-to-set-buildmode.patch<br>
<br>
diff --git a/meta/recipes-devtools/go/go-1.11.inc b/meta/recipes-devtools/go/go-1.11.inc<br>
index c02e468..d626514 100644<br>
--- a/meta/recipes-devtools/go/go-1.11.inc<br>
+++ b/meta/recipes-devtools/go/go-1.11.inc<br>
@@ -15,6 +15,7 @@ SRC_URI += &quot;\<br>
     file://0005-make.bash-override-CC-when-building-dist-and-go_boot.patch \<br>
     file://0006-cmd-dist-separate-host-and-target-builds.patch \<br>
     file://0007-cmd-go-make-GOROOT-precious-by-default.patch \<br>
+    file://0008-use-GOBUILDMODE-to-set-buildmode.patch \<br>
 &quot;<br>
<br>
 SRC_URI_append_libc-musl = &quot; file://0009-ld-replace-glibc-dynamic-linker-with-musl.patch&quot;<br>
diff --git a/meta/recipes-devtools/go/go-1.11/0008-use-GOBUILDMODE-to-set-buildmode.patch b/meta/recipes-devtools/go/go-1.11/0008-use-GOBUILDMODE-to-set-buildmode.patch<br>
new file mode 100644<br>
index 0000000..88986dc<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/go/go-1.11/0008-use-GOBUILDMODE-to-set-buildmode.patch<br>
@@ -0,0 +1,40 @@<br>
+From 0e0c247f0caec23528889ff09d98348cba9028f1 Mon Sep 17 00:00:00 2001<br>
+From: Hongxu Jia &lt;<a href="mailto:hongxu.jia@windriver.com" target="_blank">hongxu.jia@windriver.com</a>&gt;<br>
+Date: Fri, 26 Oct 2018 15:02:32 +0800<br>
+Subject: [PATCH] use GOBUILDMODE to set buildmode<br>
+<br>
+While building go itself, the go build system does not support<br>
+to set `-buildmode=pie&#39; from environment.<br>
+<br>
+Add GOBUILDMODE to support it which make PIE executables the default<br>
+build mode, as PIE executables are required as of Yocto<br>
+<br>
+Refers: <a href="https://groups.google.com/forum/#!topic/golang-dev/gRCe5URKewI+Upstream-Status" rel="noreferrer" target="_blank">https://groups.google.com/forum/#!topic/golang-dev/gRCe5URKewI<br>
+Upstream-Status</a>: Deny [upstream choose antoher solution: `17a256b<br>
+cmd/go: -buildmode=pie for android/arm&#39;]<br>
+<br>
+Signed-off-by: Hongxu Jia &lt;<a href="mailto:hongxu.jia@windriver.com" target="_blank">hongxu.jia@windriver.com</a>&gt;<br>
+---<br>
+ src/cmd/go/internal/work/build.go | 6 +++++-<br>
+ 1 file changed, 5 insertions(+), 1 deletion(-)<br>
+<br>
+diff --git a/src/cmd/go/internal/work/build.go b/src/cmd/go/internal/work/build.go<br>
+index 145b875..595d703 100644<br>
+--- a/src/cmd/go/internal/work/build.go<br>
++++ b/src/cmd/go/internal/work/build.go<br>
+@@ -218,7 +218,11 @@ func AddBuildFlags(cmd *base.Command) {<br>
+ <br>
+       cmd.Flag.Var(&amp;load.BuildAsmflags, &quot;asmflags&quot;, &quot;&quot;)<br>
+       cmd.Flag.Var(buildCompiler{}, &quot;compiler&quot;, &quot;&quot;)<br>
+-      cmd.Flag.StringVar(&amp;cfg.BuildBuildmode, &quot;buildmode&quot;, &quot;default&quot;, &quot;&quot;)<br>
++      if bm := os.Getenv(&quot;GOBUILDMODE&quot;); bm != &quot;&quot; {<br>
++              cmd.Flag.StringVar(&amp;cfg.BuildBuildmode, &quot;buildmode&quot;, bm, &quot;&quot;)<br>
++      } else {<br>
++              cmd.Flag.StringVar(&amp;cfg.BuildBuildmode, &quot;buildmode&quot;, &quot;default&quot;, &quot;&quot;)<br>
++      }<br>
+       cmd.Flag.Var(&amp;load.BuildGcflags, &quot;gcflags&quot;, &quot;&quot;)<br>
+       cmd.Flag.Var(&amp;load.BuildGccgoflags, &quot;gccgoflags&quot;, &quot;&quot;)<br>
+       cmd.Flag.StringVar(&amp;cfg.BuildMod, &quot;mod&quot;, &quot;&quot;, &quot;&quot;)<br>
+-- <br>
+2.7.4<br>
+<br>
diff --git a/meta/recipes-devtools/go/go-1.9.inc b/meta/recipes-devtools/go/go-1.9.inc<br>
index 329cee0..ba1eaa0 100644<br>
--- a/meta/recipes-devtools/go/go-1.9.inc<br>
+++ b/meta/recipes-devtools/go/go-1.9.inc<br>
@@ -19,6 +19,7 @@ SRC_URI += &quot;\<br>
         file://0008-make.bash-add-GOHOSTxx-indirection-for-cross-canadia.patch \<br>
         file://0009-cmd-go-buildmode-pie-forces-external-linking-mode-on.patch \<br>
         file://0010-make.bash-override-CC-when-building-dist-and-go_boot.patch \<br>
+        file://0011-use-GOBUILDMODE-to-set-buildmode.patch \<br>
 &quot;<br>
 SRC_URI_append_libc-musl = &quot; file://set-external-linker.patch&quot;<br>
<br>
diff --git a/meta/recipes-devtools/go/go-1.9/0011-use-GOBUILDMODE-to-set-buildmode.patch b/meta/recipes-devtools/go/go-1.9/0011-use-GOBUILDMODE-to-set-buildmode.patch<br>
new file mode 100644<br>
index 0000000..e69ce06<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/go/go-1.9/0011-use-GOBUILDMODE-to-set-buildmode.patch<br>
@@ -0,0 +1,40 @@<br>
+From b928fafab1d9425aae9341806bd2f6178ba1da1f Mon Sep 17 00:00:00 2001<br>
+From: Hongxu Jia &lt;<a href="mailto:hongxu.jia@windriver.com" target="_blank">hongxu.jia@windriver.com</a>&gt;<br>
+Date: Fri, 26 Oct 2018 16:32:50 +0800<br>
+Subject: [PATCH] use GOBUILDMODE to set buildmode<br>
+<br>
+While building go itself, the go build system does not support<br>
+to set `-buildmode=pie&#39; from environment.<br>
+<br>
+Add GOBUILDMODE to support it which make PIE executables the default<br>
+build mode, as PIE executables are required as of Yocto<br>
+<br>
+Refers: <a href="https://groups.google.com/forum/#!topic/golang-dev/gRCe5URKewI+Upstream-Status" rel="noreferrer" target="_blank">https://groups.google.com/forum/#!topic/golang-dev/gRCe5URKewI<br>
+Upstream-Status</a>: Deny [upstream choose antoher solution: `17a256b<br>
+cmd/go: -buildmode=pie for android/arm&#39;]<br>
+<br>
+Signed-off-by: Hongxu Jia &lt;<a href="mailto:hongxu.jia@windriver.com" target="_blank">hongxu.jia@windriver.com</a>&gt;<br>
+---<br>
+ src/cmd/go/internal/work/build.go | 6 +++++-<br>
+ 1 file changed, 5 insertions(+), 1 deletion(-)<br>
+<br>
+diff --git a/src/cmd/go/internal/work/build.go b/src/cmd/go/internal/work/build.go<br>
+index b276de5..1683e7e 100644<br>
+--- a/src/cmd/go/internal/work/build.go<br>
++++ b/src/cmd/go/internal/work/build.go<br>
+@@ -211,7 +211,11 @@ func AddBuildFlags(cmd *base.Command) {<br>
+ <br>
+       cmd.Flag.Var((*base.StringsFlag)(&amp;buildAsmflags), &quot;asmflags&quot;, &quot;&quot;)<br>
+       cmd.Flag.Var(buildCompiler{}, &quot;compiler&quot;, &quot;&quot;)<br>
+-      cmd.Flag.StringVar(&amp;cfg.BuildBuildmode, &quot;buildmode&quot;, &quot;default&quot;, &quot;&quot;)<br>
++      if bm := os.Getenv(&quot;GOBUILDMODE&quot;); bm != &quot;&quot; {<br>
++              cmd.Flag.StringVar(&amp;cfg.BuildBuildmode, &quot;buildmode&quot;, bm, &quot;&quot;)<br>
++      } else {<br>
++              cmd.Flag.StringVar(&amp;cfg.BuildBuildmode, &quot;buildmode&quot;, &quot;default&quot;, &quot;&quot;)<br>
++      }<br>
+       cmd.Flag.Var((*base.StringsFlag)(&amp;buildGcflags), &quot;gcflags&quot;, &quot;&quot;)<br>
+       cmd.Flag.Var((*base.StringsFlag)(&amp;buildGccgoflags), &quot;gccgoflags&quot;, &quot;&quot;)<br>
+       cmd.Flag.StringVar(&amp;cfg.BuildContext.InstallSuffix, &quot;installsuffix&quot;, &quot;&quot;, &quot;&quot;)<br>
+-- <br>
+2.7.4<br>
+<br>
diff --git a/meta/recipes-devtools/go/<a href="http://go_1.11.bb" rel="noreferrer" target="_blank">go_1.11.bb</a> b/meta/recipes-devtools/go/<a href="http://go_1.11.bb" rel="noreferrer" target="_blank">go_1.11.bb</a><br>
index c67e2cb..ce3b905 100644<br>
--- a/meta/recipes-devtools/go/<a href="http://go_1.11.bb" rel="noreferrer" target="_blank">go_1.11.bb</a><br>
+++ b/meta/recipes-devtools/go/<a href="http://go_1.11.bb" rel="noreferrer" target="_blank">go_1.11.bb</a><br>
@@ -1,2 +1,14 @@<br>
 require go-${PV}.inc<br>
 require go-target.inc<br>
+<br>
+export GOBUILDMODE=&quot;&quot;<br>
+<br>
+# Add pie to GOBUILDMODE to satisfy &quot;textrel&quot; QA checking, but mips<br>
+# doesn&#39;t support -buildmode=pie, so skip the QA checking for mips and its<br>
+# variants.<br>
+python() {<br>
+    if &#39;mips&#39; in d.getVar(&#39;TARGET_ARCH&#39;):<br>
+        d.appendVar(&#39;INSANE_SKIP_%s&#39; % d.getVar(&#39;PN&#39;), &quot; textrel&quot;)<br>
+    else:<br>
+        d.appendVar(&#39;GOBUILDMODE&#39;, &#39;pie&#39;)<br>
+}<br>
diff --git a/meta/recipes-devtools/go/<a href="http://go_1.9.bb" rel="noreferrer" target="_blank">go_1.9.bb</a> b/meta/recipes-devtools/go/<a href="http://go_1.9.bb" rel="noreferrer" target="_blank">go_1.9.bb</a><br>
index 7da7897..c5cdfb6 100644<br>
--- a/meta/recipes-devtools/go/<a href="http://go_1.9.bb" rel="noreferrer" target="_blank">go_1.9.bb</a><br>
+++ b/meta/recipes-devtools/go/<a href="http://go_1.9.bb" rel="noreferrer" target="_blank">go_1.9.bb</a><br>
@@ -5,6 +5,7 @@ export GO_TARGET_INSTALL = &quot;cmd&quot;<br>
 export GO_FLAGS = &quot;-a&quot;<br>
 export CC_FOR_TARGET = &quot;${CC}&quot;<br>
 export CXX_FOR_TARGET = &quot;${CXX}&quot;<br>
+export GOBUILDMODE=&quot;&quot;<br>
<br>
 do_compile() {<br>
        export GOBIN=&quot;${B}/bin&quot;<br>
@@ -16,9 +17,12 @@ do_compile() {<br>
        cd ${B}<br>
 }<br>
<br>
-# for aarch64 ends with textrel in ${PN}<br>
-# <a href="http://errors.yoctoproject.org/Errors/Details/185634/" rel="noreferrer" target="_blank">http://errors.yoctoproject.org/Errors/Details/185634/</a><br>
-# ERROR: QA Issue: ELF binary &#39;/work/aarch64-oe-linux/go/1.9.7-r0/packages-split/go/usr/lib/go/bin/go&#39; has relocations in .text<br>
-# ELF binary &#39;/work/aarch64-oe-linux/go/1.9.7-r0/packages-split/go/usr/lib/go/pkg/tool/linux_arm64/trace&#39; has relocations in .text<br>
-# ELF binary &#39;/work/aarch64-oe-linux/go/1.9.7-r0/packages-split/go/usr/lib/go/pkg/tool/linux_arm64/pprof&#39; has relocations in .text [textrel]<br>
-INSANE_SKIP_${PN} += &quot;textrel&quot;<br>
+# Add pie to GOBUILDMODE to satisfy &quot;textrel&quot; QA checking, but mips<br>
+# doesn&#39;t support -buildmode=pie, so skip the QA checking for mips and its<br>
+# variants.<br>
+python() {<br>
+    if &#39;mips&#39; in d.getVar(&#39;TARGET_ARCH&#39;):<br>
+        d.appendVar(&#39;INSANE_SKIP_%s&#39; % d.getVar(&#39;PN&#39;), &quot; textrel&quot;)<br>
+    else:<br>
+        d.appendVar(&#39;GOBUILDMODE&#39;, &#39;pie&#39;)<br>
+}<br>
-- <br>
2.7.4<br>
<br>
-- <br>
_______________________________________________<br>
Openembedded-core mailing list<br>
<a href="mailto:Openembedded-core@lists.openembedded.org" target="_blank">Openembedded-core@lists.openembedded.org</a><br>
<a href="http://lists.openembedded.org/mailman/listinfo/openembedded-core" rel="noreferrer" target="_blank">http://lists.openembedded.org/mailman/listinfo/openembedded-core</a><br>
</blockquote></div>
</blockquote></div>