[OE-core] [rocko PATCH 1/3] Revert "go: Fix build with PIE on musl"

Anibal Limón limon.anibal at gmail.com
Wed Dec 6 18:56:54 UTC 2017


On Wed, Dec 6, 2017 at 5:17 AM, Otavio Salvador <otavio at ossystems.com.br>
wrote:

> This reverts commit d6fcf91c06a3d118e8741273fac6903100141db4.
>
> This commit was included on the rocko update by mistake. It ended
> being dropped from master merge queue but forgotten in rocko one.
>

Also causes a build failure on sd-600 [1] when linking containerd-docker
(meta-virtualization) to libgcc due to pass -shared and -pie by default.

...
08:51:05 | cd ctr && go build -ldflags "-w -extldflags -static -X
github.com/containerd/containerd.GitCommit=3addd840653146c90a254301d6c3a663c7fd6429
" -tags "" -o ../bin/ctr
08:51:05 | cd containerd && go build -ldflags "-w -extldflags -static -X
github.com/containerd/containerd.GitCommit=3addd840653146c90a254301d6c3a663c7fd6429
" -tags "" -o ../bin/containerd
08:51:05 | cd containerd-shim && go build -ldflags "-w -extldflags -static
-X
github.com/containerd/containerd.GitCommit=3addd840653146c90a254301d6c3a663c7fd6429
" -tags "" -o ../bin/containerd-shim
08:51:05 | # github.com/containerd/containerd/containerd-shim
08:51:05 |
/srv/oe/build/tmp-rpb_wayland-glibc/work/armv7ahf-neon-linaro-linux-gnueabi/containerd-docker/v0.2.x+git3addd840653146c90a254301d6c3a663c7fd6429-r0/recipe-sysroot-native/usr/lib/arm-linaro-linux-gnueabi/go/pkg/tool/linux_amd64/link:
running arm-linaro-linux-gnueabi-gcc failed: exit status 1
08:51:05 |
/srv/oe/build/tmp-rpb_wayland-glibc/work/armv7ahf-neon-linaro-linux-gnueabi/containerd-docker/v0.2.x+git3addd840653146c90a254301d6c3a663c7fd6429-r0/recipe-sysroot-native/usr/bin/arm-linaro-linux-gnueabi/../../libexec/arm-linaro-linux-gnueabi/gcc/arm-linaro-linux-gnueabi/7.1.1/ld:
/srv/oe/build/tmp-rpb_wayland-glibc/work/armv7ahf-neon-linaro-linux-gnueabi/containerd-docker/v0.2.x+git3addd840653146c90a254301d6c3a663c7fd6429-r0/recipe-sysroot/usr/lib/arm-linaro-linux-gnueabi/7.1.1/crtbeginT.o:
relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used when
making a shared object; recompile with -fPIC
...

[1]
https://ci.linaro.org/job/lt-qcom-openembedded-rpb-rocko/6/DISTRO=rpb-wayland,MACHINE=sd-600eval,label=docker-stretch-amd64/console

Cheers,
Anibal


>
> Signed-off-by: Otavio Salvador <otavio at ossystems.com.br>
> ---
>
>  meta/recipes-devtools/go/go-1.9.inc                |   3 -
>  .../go/go-1.9/default-buildmode-pie.patch          |  18 ----
>  .../go/go-1.9/set-external-linker.patch            | 111
> ---------------------
>  3 files changed, 132 deletions(-)
>  delete mode 100644 meta/recipes-devtools/go/go-1.
> 9/default-buildmode-pie.patch
>  delete mode 100644 meta/recipes-devtools/go/go-1.
> 9/set-external-linker.patch
>
> diff --git a/meta/recipes-devtools/go/go-1.9.inc
> b/meta/recipes-devtools/go/go-1.9.inc
> index f52abb5735..65adaa8d72 100644
> --- a/meta/recipes-devtools/go/go-1.9.inc
> +++ b/meta/recipes-devtools/go/go-1.9.inc
> @@ -15,9 +15,6 @@ SRC_URI += "\
>          file://0007-ld-add-soname-to-shareable-objects.patch \
>          file://0008-make.bash-add-GOHOSTxx-indirection-for-cross-canadia.patch
> \
>          file://0009-cmd-go-buildmode-pie-forces-external-linking-mode-on.patch
> \
> -        file://default-buildmode-pie.patch \
>  "
> -SRC_URI_append_libc-musl = " file://set-external-linker.patch"
> -
>  SRC_URI[main.md5sum] = "da2d44ea384076efec43ee1f8b7d45d2"
>  SRC_URI[main.sha256sum] = "a4ab229028ed167ba1986825751463
> 605264e44868362ca8e7accc8be057e993"
> diff --git a/meta/recipes-devtools/go/go-1.9/default-buildmode-pie.patch
> b/meta/recipes-devtools/go/go-1.9/default-buildmode-pie.patch
> deleted file mode 100644
> index a7933bd39e..0000000000
> --- a/meta/recipes-devtools/go/go-1.9/default-buildmode-pie.patch
> +++ /dev/null
> @@ -1,18 +0,0 @@
> -Default to PIE on linux platforms
> -
> -Upstream-Status: Pending
> -Signed-off-by: Khem Raj <raj.khem at gmail.com>
> -
> -diff -upr src/go.orig/src/cmd/go/internal/work/build.go
> src/go/src/cmd/go/internal/work/build.go
> ---- go.orig/src/cmd/go/internal/work/build.go  2017-08-27
> 17:38:26.354750979 +0200
> -+++ go/src/cmd/go/internal/work/build.go       2017-08-27
> 17:40:27.555130105 +0200
> -@@ -304,7 +304,8 @@ func BuildModeInit() {
> -               ldBuildmode = "c-shared"
> -       case "default":
> -               switch platform {
> --              case "android/arm", "android/arm64", "android/amd64",
> "android/386":
> -+              case "linux/386", "linux/amd64", "linux/arm",
> "linux/arm64", "linux/ppc64le", "linux/s390x",
> -+                      "android/arm", "android/arm64", "android/amd64",
> "android/386":
> -                       codegenArg = "-shared"
> -                       ldBuildmode = "pie"
> -               case "darwin/arm", "darwin/arm64":
> diff --git a/meta/recipes-devtools/go/go-1.9/set-external-linker.patch
> b/meta/recipes-devtools/go/go-1.9/set-external-linker.patch
> deleted file mode 100644
> index d6bd7fa39c..0000000000
> --- a/meta/recipes-devtools/go/go-1.9/set-external-linker.patch
> +++ /dev/null
> @@ -1,111 +0,0 @@
> -Change the dynamic linker hardcoding to use musl when not using glibc
> -this should be applied conditional to musl being the system C library
> -
> -Upstream-Status: Inappropriate [Real Fix should be portable across libcs]
> -
> -Signed-off-by: Khem Raj <raj.khem at gmail.com>
> -
> -Index: go/src/cmd/link/internal/amd64/obj.go
> -===================================================================
> ---- go.orig/src/cmd/link/internal/amd64/obj.go
> -+++ go/src/cmd/link/internal/amd64/obj.go
> -@@ -67,7 +67,7 @@ func Init() {
> -       ld.Thearch.Append64 = ld.Append64l
> -       ld.Thearch.TLSIEtoLE = tlsIEtoLE
> -
> --      ld.Thearch.Linuxdynld = "/lib64/ld-linux-x86-64.so.2"
> -+      ld.Thearch.Linuxdynld = "/lib/ld-musl-x86_64.so.1"
> -       ld.Thearch.Freebsddynld = "/libexec/ld-elf.so.1"
> -       ld.Thearch.Openbsddynld = "/usr/libexec/ld.so"
> -       ld.Thearch.Netbsddynld = "/libexec/ld.elf_so"
> -Index: go/src/cmd/link/internal/arm/obj.go
> -===================================================================
> ---- go.orig/src/cmd/link/internal/arm/obj.go
> -+++ go/src/cmd/link/internal/arm/obj.go
> -@@ -63,7 +63,7 @@ func Init() {
> -       ld.Thearch.Append32 = ld.Append32l
> -       ld.Thearch.Append64 = ld.Append64l
> -
> --      ld.Thearch.Linuxdynld = "/lib/ld-linux.so.3" // 2 for OABI, 3 for
> EABI
> -+      ld.Thearch.Linuxdynld = "/lib/ld-musl-armhf.so.1"
> -       ld.Thearch.Freebsddynld = "/usr/libexec/ld-elf.so.1"
> -       ld.Thearch.Openbsddynld = "/usr/libexec/ld.so"
> -       ld.Thearch.Netbsddynld = "/libexec/ld.elf_so"
> -Index: go/src/cmd/link/internal/arm64/obj.go
> -===================================================================
> ---- go.orig/src/cmd/link/internal/arm64/obj.go
> -+++ go/src/cmd/link/internal/arm64/obj.go
> -@@ -62,7 +62,7 @@ func Init() {
> -       ld.Thearch.Append32 = ld.Append32l
> -       ld.Thearch.Append64 = ld.Append64l
> -
> --      ld.Thearch.Linuxdynld = "/lib/ld-linux-aarch64.so.1"
> -+      ld.Thearch.Linuxdynld = "/lib/ld-musl-aarch64.so.1"
> -
> -       ld.Thearch.Freebsddynld = "XXX"
> -       ld.Thearch.Openbsddynld = "XXX"
> -Index: go/src/cmd/link/internal/mips/obj.go
> -===================================================================
> ---- go.orig/src/cmd/link/internal/mips/obj.go
> -+++ go/src/cmd/link/internal/mips/obj.go
> -@@ -77,7 +77,7 @@ func Init() {
> -               ld.Thearch.Append64 = ld.Append64b
> -       }
> -
> --      ld.Thearch.Linuxdynld = "/lib/ld.so.1"
> -+      ld.Thearch.Linuxdynld = "/lib/ld-musl-mipsle.so.1"
> -
> -       ld.Thearch.Freebsddynld = "XXX"
> -       ld.Thearch.Openbsddynld = "XXX"
> -Index: go/src/cmd/link/internal/mips64/obj.go
> -===================================================================
> ---- go.orig/src/cmd/link/internal/mips64/obj.go
> -+++ go/src/cmd/link/internal/mips64/obj.go
> -@@ -75,7 +75,7 @@ func Init() {
> -               ld.Thearch.Append64 = ld.Append64b
> -       }
> -
> --      ld.Thearch.Linuxdynld = "/lib64/ld64.so.1"
> -+      ld.Thearch.Linuxdynld = "/lib64/ld-musl-mips64le.so.1"
> -
> -       ld.Thearch.Freebsddynld = "XXX"
> -       ld.Thearch.Openbsddynld = "XXX"
> -Index: go/src/cmd/link/internal/ppc64/obj.go
> -===================================================================
> ---- go.orig/src/cmd/link/internal/ppc64/obj.go
> -+++ go/src/cmd/link/internal/ppc64/obj.go
> -@@ -77,7 +77,7 @@ func Init() {
> -       }
> -
> -       // TODO(austin): ABI v1 uses /usr/lib/ld.so.1
> --      ld.Thearch.Linuxdynld = "/lib64/ld64.so.1"
> -+      ld.Thearch.Linuxdynld = "/lib/ld-musl-powerpc64le.so.1"
> -
> -       ld.Thearch.Freebsddynld = "XXX"
> -       ld.Thearch.Openbsddynld = "XXX"
> -Index: go/src/cmd/link/internal/s390x/obj.go
> -===================================================================
> ---- go.orig/src/cmd/link/internal/s390x/obj.go
> -+++ go/src/cmd/link/internal/s390x/obj.go
> -@@ -62,7 +62,7 @@ func Init() {
> -       ld.Thearch.Append32 = ld.Append32b
> -       ld.Thearch.Append64 = ld.Append64b
> -
> --      ld.Thearch.Linuxdynld = "/lib64/ld64.so.1"
> -+      ld.Thearch.Linuxdynld = "/lib/ld-musl-s390x.so.1"
> -
> -       // not relevant for s390x
> -       ld.Thearch.Freebsddynld = "XXX"
> -Index: go/src/cmd/link/internal/x86/obj.go
> -===================================================================
> ---- go.orig/src/cmd/link/internal/x86/obj.go
> -+++ go/src/cmd/link/internal/x86/obj.go
> -@@ -63,7 +63,7 @@ func Init() {
> -       ld.Thearch.Append32 = ld.Append32l
> -       ld.Thearch.Append64 = ld.Append64l
> -
> --      ld.Thearch.Linuxdynld = "/lib/ld-linux.so.2"
> -+      ld.Thearch.Linuxdynld = "/lib/ld-musl-i386.so.1"
> -       ld.Thearch.Freebsddynld = "/usr/libexec/ld-elf.so.1"
> -       ld.Thearch.Openbsddynld = "/usr/libexec/ld.so"
> -       ld.Thearch.Netbsddynld = "/usr/libexec/ld.elf_so"
> --
> 2.15.1
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20171206/8f491528/attachment-0002.html>


More information about the Openembedded-core mailing list