<div dir="ltr">Sorry for noise, I've double checked and your fix wasn't included yet in the build which triggered the QA warning for me.<div><br></div><div>I've re-triggered to test with the fix really included, will let you know if it didn'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 <<a href="mailto:martin.jansa@gmail.com">martin.jansa@gmail.com</a>> 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 '/work/aarch64/go/1.11.1-r0/packages-split/go/usr/lib/go/bin/go' has relocations in .text<br>ELF binary '/work/aarch64/go/1.11.1-r0/packages-split/go/usr/lib/go/bin/go' has relocations in .text
ELF binary '/work/aarch64/go/1.11.1-r0/packages-split/go/usr/lib/go/pkg/tool/linux_arm64/trace' has relocations in .text<br>ELF binary '/work/aarch64/go/1.11.1-r0/packages-split/go/usr/lib/go/pkg/tool/linux_arm64/trace' has relocations in .text<br>ELF binary '/work/aarch64/go/1.11.1-r0/packages-split/go/usr/lib/go/pkg/tool/linux_arm64/pprof' has relocations in .text<br>ELF binary '/work/aarch64/go/1.11.1-r0/packages-split/go/usr/lib/go/pkg/tool/linux_arm64/pprof' 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 <<a href="mailto:hongxu.jia@windriver.com" target="_blank">hongxu.jia@windriver.com</a>> 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' 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't support -buildmode=pie, so skip the QA checking for<br>
mips and its variants<br>
<br>
Signed-off-by: Hongxu Jia <<a href="mailto:hongxu.jia@windriver.com" target="_blank">hongxu.jia@windriver.com</a>><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 += "\<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>
"<br>
<br>
SRC_URI_append_libc-musl = " file://0009-ld-replace-glibc-dynamic-linker-with-musl.patch"<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 <<a href="mailto:hongxu.jia@windriver.com" target="_blank">hongxu.jia@windriver.com</a>><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' 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']<br>
+<br>
+Signed-off-by: Hongxu Jia <<a href="mailto:hongxu.jia@windriver.com" target="_blank">hongxu.jia@windriver.com</a>><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(&load.BuildAsmflags, "asmflags", "")<br>
+ cmd.Flag.Var(buildCompiler{}, "compiler", "")<br>
+- cmd.Flag.StringVar(&cfg.BuildBuildmode, "buildmode", "default", "")<br>
++ if bm := os.Getenv("GOBUILDMODE"); bm != "" {<br>
++ cmd.Flag.StringVar(&cfg.BuildBuildmode, "buildmode", bm, "")<br>
++ } else {<br>
++ cmd.Flag.StringVar(&cfg.BuildBuildmode, "buildmode", "default", "")<br>
++ }<br>
+ cmd.Flag.Var(&load.BuildGcflags, "gcflags", "")<br>
+ cmd.Flag.Var(&load.BuildGccgoflags, "gccgoflags", "")<br>
+ cmd.Flag.StringVar(&cfg.BuildMod, "mod", "", "")<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 += "\<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>
"<br>
SRC_URI_append_libc-musl = " file://set-external-linker.patch"<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 <<a href="mailto:hongxu.jia@windriver.com" target="_blank">hongxu.jia@windriver.com</a>><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' 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']<br>
+<br>
+Signed-off-by: Hongxu Jia <<a href="mailto:hongxu.jia@windriver.com" target="_blank">hongxu.jia@windriver.com</a>><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)(&buildAsmflags), "asmflags", "")<br>
+ cmd.Flag.Var(buildCompiler{}, "compiler", "")<br>
+- cmd.Flag.StringVar(&cfg.BuildBuildmode, "buildmode", "default", "")<br>
++ if bm := os.Getenv("GOBUILDMODE"); bm != "" {<br>
++ cmd.Flag.StringVar(&cfg.BuildBuildmode, "buildmode", bm, "")<br>
++ } else {<br>
++ cmd.Flag.StringVar(&cfg.BuildBuildmode, "buildmode", "default", "")<br>
++ }<br>
+ cmd.Flag.Var((*base.StringsFlag)(&buildGcflags), "gcflags", "")<br>
+ cmd.Flag.Var((*base.StringsFlag)(&buildGccgoflags), "gccgoflags", "")<br>
+ cmd.Flag.StringVar(&cfg.BuildContext.InstallSuffix, "installsuffix", "", "")<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=""<br>
+<br>
+# Add pie to GOBUILDMODE to satisfy "textrel" QA checking, but mips<br>
+# doesn't support -buildmode=pie, so skip the QA checking for mips and its<br>
+# variants.<br>
+python() {<br>
+ if 'mips' in d.getVar('TARGET_ARCH'):<br>
+ d.appendVar('INSANE_SKIP_%s' % d.getVar('PN'), " textrel")<br>
+ else:<br>
+ d.appendVar('GOBUILDMODE', 'pie')<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 = "cmd"<br>
export GO_FLAGS = "-a"<br>
export CC_FOR_TARGET = "${CC}"<br>
export CXX_FOR_TARGET = "${CXX}"<br>
+export GOBUILDMODE=""<br>
<br>
do_compile() {<br>
export GOBIN="${B}/bin"<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 '/work/aarch64-oe-linux/go/1.9.7-r0/packages-split/go/usr/lib/go/bin/go' has relocations in .text<br>
-# ELF binary '/work/aarch64-oe-linux/go/1.9.7-r0/packages-split/go/usr/lib/go/pkg/tool/linux_arm64/trace' has relocations in .text<br>
-# ELF binary '/work/aarch64-oe-linux/go/1.9.7-r0/packages-split/go/usr/lib/go/pkg/tool/linux_arm64/pprof' has relocations in .text [textrel]<br>
-INSANE_SKIP_${PN} += "textrel"<br>
+# Add pie to GOBUILDMODE to satisfy "textrel" QA checking, but mips<br>
+# doesn't support -buildmode=pie, so skip the QA checking for mips and its<br>
+# variants.<br>
+python() {<br>
+ if 'mips' in d.getVar('TARGET_ARCH'):<br>
+ d.appendVar('INSANE_SKIP_%s' % d.getVar('PN'), " textrel")<br>
+ else:<br>
+ d.appendVar('GOBUILDMODE', 'pie')<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>