diff mbox series

[1/2] go: bump 1.21.0

Message ID 20231207100712.67076-1-jose.quaresma@foundries.io
State New
Headers show
Series [1/2] go: bump 1.21.0 | expand

Commit Message

Jose Quaresma Dec. 7, 2023, 10:07 a.m. UTC
Go 1.21 Release Notes
https://go.dev/doc/go1.21

Rework the patch 0005-cmd-dist-separate-host-and-target-builds.patch
to avoid identation, it's more hard to read but easy to rebase.

Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
---
 meta/conf/distro/include/tcmode-default.inc   |   2 +-
 .../go/{go-1.20.12.inc => go-1.21.0.inc}      |   2 +-
 ..._1.20.12.bb => go-binary-native_1.21.0.bb} |   6 +-
 ...1.20.12.bb => go-cross-canadian_1.21.0.bb} |   0
 ...go-cross_1.20.12.bb => go-cross_1.21.0.bb} |   0
 ...sssdk_1.20.12.bb => go-crosssdk_1.21.0.bb} |   0
 ...-native_1.20.12.bb => go-native_1.21.0.bb} |   0
 ...untime_1.20.12.bb => go-runtime_1.21.0.bb} |   0
 ...ent-based-hash-generation-less-pedan.patch |  35 ++--
 ...OOLDIR-to-be-overridden-in-the-envir.patch |  17 +-
 ...3-ld-add-soname-to-shareable-objects.patch |  13 +-
 ...de-CC-when-building-dist-and-go_boot.patch |  15 +-
 ...dist-separate-host-and-target-builds.patch | 192 ++++++------------
 ...d-go-make-GOROOT-precious-by-default.patch |  27 +--
 ...not-write-linker-flags-into-buildids.patch |  12 +-
 ...ldgo.go-do-not-hardcode-host-compile.patch |  12 +-
 ...uild-paths-on-staticly-linked-arches.patch |  23 ++-
 .../go/{go_1.20.12.bb => go_1.21.0.bb}        |   0
 18 files changed, 152 insertions(+), 204 deletions(-)
 rename meta/recipes-devtools/go/{go-1.20.12.inc => go-1.21.0.inc} (89%)
 rename meta/recipes-devtools/go/{go-binary-native_1.20.12.bb => go-binary-native_1.21.0.bb} (78%)
 rename meta/recipes-devtools/go/{go-cross-canadian_1.20.12.bb => go-cross-canadian_1.21.0.bb} (100%)
 rename meta/recipes-devtools/go/{go-cross_1.20.12.bb => go-cross_1.21.0.bb} (100%)
 rename meta/recipes-devtools/go/{go-crosssdk_1.20.12.bb => go-crosssdk_1.21.0.bb} (100%)
 rename meta/recipes-devtools/go/{go-native_1.20.12.bb => go-native_1.21.0.bb} (100%)
 rename meta/recipes-devtools/go/{go-runtime_1.20.12.bb => go-runtime_1.21.0.bb} (100%)
 rename meta/recipes-devtools/go/{go_1.20.12.bb => go_1.21.0.bb} (100%)

Comments

Alexandre Belloni Dec. 7, 2023, 11:23 p.m. UTC | #1
Hello Jose,

go.GoHelloworldTest.test_gohelloworld fails after this series:

https://autobuilder.yoctoproject.org/typhoon/#/builders/76/builds/8211/steps/13/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/80/builds/6104/steps/14/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/79/builds/6154/steps/14/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/87/builds/6169/steps/14/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/53/builds/8256/steps/14/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/110/builds/7125/steps/13/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/131/builds/3614/steps/13/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/59/builds/8186/steps/13/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/73/builds/8193/steps/13/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/109/builds/7085/steps/14/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/101/builds/6998/steps/14/logs/stdio
https://autobuilder.yoctoproject.org/typhoon/#/builders/86/builds/6159/steps/14/logs/stdio


On 07/12/2023 10:07:11+0000, Jose Quaresma wrote:
> Go 1.21 Release Notes
> https://go.dev/doc/go1.21
> 
> Rework the patch 0005-cmd-dist-separate-host-and-target-builds.patch
> to avoid identation, it's more hard to read but easy to rebase.
> 
> Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
> ---
>  meta/conf/distro/include/tcmode-default.inc   |   2 +-
>  .../go/{go-1.20.12.inc => go-1.21.0.inc}      |   2 +-
>  ..._1.20.12.bb => go-binary-native_1.21.0.bb} |   6 +-
>  ...1.20.12.bb => go-cross-canadian_1.21.0.bb} |   0
>  ...go-cross_1.20.12.bb => go-cross_1.21.0.bb} |   0
>  ...sssdk_1.20.12.bb => go-crosssdk_1.21.0.bb} |   0
>  ...-native_1.20.12.bb => go-native_1.21.0.bb} |   0
>  ...untime_1.20.12.bb => go-runtime_1.21.0.bb} |   0
>  ...ent-based-hash-generation-less-pedan.patch |  35 ++--
>  ...OOLDIR-to-be-overridden-in-the-envir.patch |  17 +-
>  ...3-ld-add-soname-to-shareable-objects.patch |  13 +-
>  ...de-CC-when-building-dist-and-go_boot.patch |  15 +-
>  ...dist-separate-host-and-target-builds.patch | 192 ++++++------------
>  ...d-go-make-GOROOT-precious-by-default.patch |  27 +--
>  ...not-write-linker-flags-into-buildids.patch |  12 +-
>  ...ldgo.go-do-not-hardcode-host-compile.patch |  12 +-
>  ...uild-paths-on-staticly-linked-arches.patch |  23 ++-
>  .../go/{go_1.20.12.bb => go_1.21.0.bb}        |   0
>  18 files changed, 152 insertions(+), 204 deletions(-)
>  rename meta/recipes-devtools/go/{go-1.20.12.inc => go-1.21.0.inc} (89%)
>  rename meta/recipes-devtools/go/{go-binary-native_1.20.12.bb => go-binary-native_1.21.0.bb} (78%)
>  rename meta/recipes-devtools/go/{go-cross-canadian_1.20.12.bb => go-cross-canadian_1.21.0.bb} (100%)
>  rename meta/recipes-devtools/go/{go-cross_1.20.12.bb => go-cross_1.21.0.bb} (100%)
>  rename meta/recipes-devtools/go/{go-crosssdk_1.20.12.bb => go-crosssdk_1.21.0.bb} (100%)
>  rename meta/recipes-devtools/go/{go-native_1.20.12.bb => go-native_1.21.0.bb} (100%)
>  rename meta/recipes-devtools/go/{go-runtime_1.20.12.bb => go-runtime_1.21.0.bb} (100%)
>  rename meta/recipes-devtools/go/{go_1.20.12.bb => go_1.21.0.bb} (100%)
> 
> diff --git a/meta/conf/distro/include/tcmode-default.inc b/meta/conf/distro/include/tcmode-default.inc
> index 707402e6eb..feebe5d30e 100644
> --- a/meta/conf/distro/include/tcmode-default.inc
> +++ b/meta/conf/distro/include/tcmode-default.inc
> @@ -23,7 +23,7 @@ GDBVERSION ?= "13.%"
>  GLIBCVERSION ?= "2.38%"
>  LINUXLIBCVERSION ?= "6.5%"
>  QEMUVERSION ?= "8.1%"
> -GOVERSION ?= "1.20%"
> +GOVERSION ?= "1.21%"
>  LLVMVERSION ?= "17.%"
>  RUSTVERSION ?= "1.70%"
>  
> diff --git a/meta/recipes-devtools/go/go-1.20.12.inc b/meta/recipes-devtools/go/go-1.21.0.inc
> similarity index 89%
> rename from meta/recipes-devtools/go/go-1.20.12.inc
> rename to meta/recipes-devtools/go/go-1.21.0.inc
> index 9be56c6707..2933793b8b 100644
> --- a/meta/recipes-devtools/go/go-1.20.12.inc
> +++ b/meta/recipes-devtools/go/go-1.21.0.inc
> @@ -15,4 +15,4 @@ SRC_URI += "\
>      file://0008-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch \
>      file://0009-go-Filter-build-paths-on-staticly-linked-arches.patch \
>  "
> -SRC_URI[main.sha256sum] = "c5bf934751d31c315c1d0bb5fb02296545fa6d08923566f7a5afec81f2ed27d6"
> +SRC_URI[main.sha256sum] = "818d46ede85682dd551ad378ef37a4d247006f12ec59b5b755601d2ce114369a"
> diff --git a/meta/recipes-devtools/go/go-binary-native_1.20.12.bb b/meta/recipes-devtools/go/go-binary-native_1.21.0.bb
> similarity index 78%
> rename from meta/recipes-devtools/go/go-binary-native_1.20.12.bb
> rename to meta/recipes-devtools/go/go-binary-native_1.21.0.bb
> index e555412a19..0b8086e7b9 100644
> --- a/meta/recipes-devtools/go/go-binary-native_1.20.12.bb
> +++ b/meta/recipes-devtools/go/go-binary-native_1.21.0.bb
> @@ -9,9 +9,9 @@ PROVIDES = "go-native"
>  
>  # Checksums available at https://go.dev/dl/
>  SRC_URI = "https://dl.google.com/go/go${PV}.${BUILD_GOOS}-${BUILD_GOARCH}.tar.gz;name=go_${BUILD_GOTUPLE}"
> -SRC_URI[go_linux_amd64.sha256sum] = "9c5d48c54dd8b0a3b2ef91b0f92a1190aa01f11d26e98033efa64c46a30bba7b"
> -SRC_URI[go_linux_arm64.sha256sum] = "8afe8e3fb6972eaa2179ef0a71678c67f26509fab4f0f67c4b00f4cdfa92dc87"
> -SRC_URI[go_linux_ppc64le.sha256sum] = "2ae0ec3736216dfbd7b01ff679842dc1bed365e53a024d522645bcffd01c7328"
> +SRC_URI[go_linux_amd64.sha256sum] = "d0398903a16ba2232b389fb31032ddf57cac34efda306a0eebac34f0965a0742"
> +SRC_URI[go_linux_arm64.sha256sum] = "f3d4548edf9b22f26bbd49720350bbfe59d75b7090a1a2bff1afad8214febaf3"
> +SRC_URI[go_linux_ppc64le.sha256sum] = "e938ffc81d8ebe5efc179240960ba22da6a841ff05d5cab7ce2547112b14a47f"
>  
>  UPSTREAM_CHECK_URI = "https://golang.org/dl/"
>  UPSTREAM_CHECK_REGEX = "go(?P<pver>\d+(\.\d+)+)\.linux"
> diff --git a/meta/recipes-devtools/go/go-cross-canadian_1.20.12.bb b/meta/recipes-devtools/go/go-cross-canadian_1.21.0.bb
> similarity index 100%
> rename from meta/recipes-devtools/go/go-cross-canadian_1.20.12.bb
> rename to meta/recipes-devtools/go/go-cross-canadian_1.21.0.bb
> diff --git a/meta/recipes-devtools/go/go-cross_1.20.12.bb b/meta/recipes-devtools/go/go-cross_1.21.0.bb
> similarity index 100%
> rename from meta/recipes-devtools/go/go-cross_1.20.12.bb
> rename to meta/recipes-devtools/go/go-cross_1.21.0.bb
> diff --git a/meta/recipes-devtools/go/go-crosssdk_1.20.12.bb b/meta/recipes-devtools/go/go-crosssdk_1.21.0.bb
> similarity index 100%
> rename from meta/recipes-devtools/go/go-crosssdk_1.20.12.bb
> rename to meta/recipes-devtools/go/go-crosssdk_1.21.0.bb
> diff --git a/meta/recipes-devtools/go/go-native_1.20.12.bb b/meta/recipes-devtools/go/go-native_1.21.0.bb
> similarity index 100%
> rename from meta/recipes-devtools/go/go-native_1.20.12.bb
> rename to meta/recipes-devtools/go/go-native_1.21.0.bb
> diff --git a/meta/recipes-devtools/go/go-runtime_1.20.12.bb b/meta/recipes-devtools/go/go-runtime_1.21.0.bb
> similarity index 100%
> rename from meta/recipes-devtools/go/go-runtime_1.20.12.bb
> rename to meta/recipes-devtools/go/go-runtime_1.21.0.bb
> diff --git a/meta/recipes-devtools/go/go/0001-cmd-go-make-content-based-hash-generation-less-pedan.patch b/meta/recipes-devtools/go/go/0001-cmd-go-make-content-based-hash-generation-less-pedan.patch
> index 9a2551031a..3bd756449e 100644
> --- a/meta/recipes-devtools/go/go/0001-cmd-go-make-content-based-hash-generation-less-pedan.patch
> +++ b/meta/recipes-devtools/go/go/0001-cmd-go-make-content-based-hash-generation-less-pedan.patch
> @@ -1,4 +1,4 @@
> -From 10766ca6f4007b96e3f6bf4fb496e5df74397eb9 Mon Sep 17 00:00:00 2001
> +From 9a6c5040cbcd88b10ceb8ceaebc8d6158c086670 Mon Sep 17 00:00:00 2001
>  From: Khem Raj <raj.khem@gmail.com>
>  Date: Mon, 28 Mar 2022 10:59:03 -0700
>  Subject: [PATCH 1/9] cmd/go: make content-based hash generation less pedantic
> @@ -25,16 +25,17 @@ Upstream-Status: Inappropriate [OE specific]
>  Signed-off-by: Alex Kube <alexander.j.kube@gmail.com>
>  Signed-off-by: Matt Madison <matt@madison.systems>
>  Signed-off-by: Khem Raj <raj.khem@gmail.com>
> +Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
>  ---
>   src/cmd/go/internal/envcmd/env.go |  2 +-
>   src/cmd/go/internal/work/exec.go  | 44 ++++++++++++++++++++++++-------
>   2 files changed, 36 insertions(+), 10 deletions(-)
>  
>  diff --git a/src/cmd/go/internal/envcmd/env.go b/src/cmd/go/internal/envcmd/env.go
> -index 66ef5ce..fb7448a 100644
> +index c7c2e83..4a90d9d 100644
>  --- a/src/cmd/go/internal/envcmd/env.go
>  +++ b/src/cmd/go/internal/envcmd/env.go
> -@@ -183,7 +183,7 @@ func ExtraEnvVarsCostly() []cfg.EnvVar {
> +@@ -189,7 +189,7 @@ func ExtraEnvVarsCostly() []cfg.EnvVar {
>   		}
>   	}()
>   
> @@ -44,10 +45,10 @@ index 66ef5ce..fb7448a 100644
>   		// Should not happen - b.CFlags was given an empty package.
>   		fmt.Fprintf(os.Stderr, "go: invalid cflags: %v\n", err)
>  diff --git a/src/cmd/go/internal/work/exec.go b/src/cmd/go/internal/work/exec.go
> -index 67d1193..62e1774 100644
> +index 13d2a78..e3dd486 100644
>  --- a/src/cmd/go/internal/work/exec.go
>  +++ b/src/cmd/go/internal/work/exec.go
> -@@ -223,6 +223,8 @@ func (b *Builder) Do(ctx context.Context, root *Action) {
> +@@ -231,6 +231,8 @@ func (b *Builder) Do(ctx context.Context, root *Action) {
>   	writeActionGraph()
>   }
>   
> @@ -56,7 +57,7 @@ index 67d1193..62e1774 100644
>   // buildActionID computes the action ID for a build action.
>   func (b *Builder) buildActionID(a *Action) cache.ActionID {
>   	p := a.Package
> -@@ -244,7 +246,7 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
> +@@ -252,7 +254,7 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
>   		if p.Module != nil {
>   			fmt.Fprintf(h, "module %s@%s\n", p.Module.Path, p.Module.Version)
>   		}
> @@ -65,7 +66,7 @@ index 67d1193..62e1774 100644
>   		// The Go compiler always hides the exact value of $GOROOT
>   		// when building things in GOROOT.
>   		//
> -@@ -276,9 +278,9 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
> +@@ -284,9 +286,9 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
>   	}
>   	if len(p.CgoFiles)+len(p.SwigFiles)+len(p.SwigCXXFiles) > 0 {
>   		fmt.Fprintf(h, "cgo %q\n", b.toolID("cgo"))
> @@ -77,7 +78,7 @@ index 67d1193..62e1774 100644
>   		fmt.Fprintf(h, "CC=%q %q %q %q\n", ccExe, cppflags, cflags, ldflags)
>   		// Include the C compiler tool ID so that if the C
>   		// compiler changes we rebuild the package.
> -@@ -286,14 +288,14 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
> +@@ -294,14 +296,14 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
>   			fmt.Fprintf(h, "CC ID=%q\n", ccID)
>   		}
>   		if len(p.CXXFiles)+len(p.SwigCXXFiles) > 0 {
> @@ -94,16 +95,16 @@ index 67d1193..62e1774 100644
>   			fmt.Fprintf(h, "FC=%q %q\n", fcExe, fflags)
>   			if fcID, _, err := b.gccToolID(fcExe[0], "f95"); err == nil {
>   				fmt.Fprintf(h, "FC ID=%q\n", fcID)
> -@@ -310,7 +312,7 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
> +@@ -318,7 +320,7 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
>   		}
>   	}
> - 	if p.Internal.BuildInfo != "" {
> --		fmt.Fprintf(h, "modinfo %q\n", p.Internal.BuildInfo)
> -+		//fmt.Fprintf(h, "modinfo %q\n", p.Internal.BuildInfo)
> + 	if p.Internal.BuildInfo != nil {
> +-		fmt.Fprintf(h, "modinfo %q\n", p.Internal.BuildInfo.String())
> ++		//fmt.Fprintf(h, "modinfo %q\n", p.Internal.BuildInfo.String())
>   	}
>   
>   	// Configuration specific to compiler toolchain.
> -@@ -2989,8 +2991,25 @@ func envList(key, def string) []string {
> +@@ -3137,8 +3139,25 @@ func envList(key, def string) []string {
>   	return args
>   }
>   
> @@ -130,7 +131,7 @@ index 67d1193..62e1774 100644
>   	if cppflags, err = buildFlags("CPPFLAGS", "", p.CgoCPPFLAGS, checkCompilerFlags); err != nil {
>   		return
>   	}
> -@@ -3006,6 +3025,13 @@ func (b *Builder) CFlags(p *load.Package) (cppflags, cflags, cxxflags, fflags, l
> +@@ -3154,6 +3173,13 @@ func (b *Builder) CFlags(p *load.Package) (cppflags, cflags, cxxflags, fflags, l
>   	if ldflags, err = buildFlags("LDFLAGS", defaultCFlags, p.CgoLDFLAGS, checkLinkerFlags); err != nil {
>   		return
>   	}
> @@ -144,7 +145,7 @@ index 67d1193..62e1774 100644
>   
>   	return
>   }
> -@@ -3021,7 +3047,7 @@ var cgoRe = lazyregexp.New(`[/\\:]`)
> +@@ -3169,7 +3195,7 @@ var cgoRe = lazyregexp.New(`[/\\:]`)
>   
>   func (b *Builder) cgo(a *Action, cgoExe, objdir string, pcCFLAGS, pcLDFLAGS, cgofiles, gccfiles, gxxfiles, mfiles, ffiles []string) (outGo, outObj []string, err error) {
>   	p := a.Package
> @@ -153,7 +154,7 @@ index 67d1193..62e1774 100644
>   	if err != nil {
>   		return nil, nil, err
>   	}
> -@@ -3577,7 +3603,7 @@ func (b *Builder) swigIntSize(objdir string) (intsize string, err error) {
> +@@ -3725,7 +3751,7 @@ func (b *Builder) swigIntSize(objdir string) (intsize string, err error) {
>   
>   // Run SWIG on one SWIG input file.
>   func (b *Builder) swigOne(a *Action, p *load.Package, file, objdir string, pcCFLAGS []string, cxx bool, intgosize string) (outGo, outC string, err error) {
> @@ -163,5 +164,5 @@ index 67d1193..62e1774 100644
>   		return "", "", err
>   	}
>  -- 
> -2.30.2
> +2.43.0
>  
> diff --git a/meta/recipes-devtools/go/go/0002-cmd-go-Allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch b/meta/recipes-devtools/go/go/0002-cmd-go-Allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch
> index 6abd424733..cf7ad02f86 100644
> --- a/meta/recipes-devtools/go/go/0002-cmd-go-Allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch
> +++ b/meta/recipes-devtools/go/go/0002-cmd-go-Allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch
> @@ -1,4 +1,4 @@
> -From 5cca2fa5997292a87302bdc7e7ed3231371e98bd Mon Sep 17 00:00:00 2001
> +From e3f9a8a69d3a340c1a1d0bba566e71f20f635a43 Mon Sep 17 00:00:00 2001
>  From: Alex Kube <alexander.j.kube@gmail.com>
>  Date: Wed, 23 Oct 2019 21:15:37 +0430
>  Subject: [PATCH 2/9] cmd/go: Allow GOTOOLDIR to be overridden in the
> @@ -13,16 +13,17 @@ Matt Madison <matt@madison.systems>.
>  Upstream-Status: Inappropriate [OE specific]
>  
>  Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
> +Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
>  ---
>   src/cmd/dist/build.go          | 4 +++-
>   src/cmd/go/internal/cfg/cfg.go | 6 +++++-
>   2 files changed, 8 insertions(+), 2 deletions(-)
>  
>  diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go
> -index c36a12e..5d31718 100644
> +index 8973a87..adc9fd2 100644
>  --- a/src/cmd/dist/build.go
>  +++ b/src/cmd/dist/build.go
> -@@ -264,7 +264,9 @@ func xinit() {
> +@@ -259,7 +259,9 @@ func xinit() {
>   	}
>   	xatexit(rmworkdir)
>   
> @@ -30,14 +31,14 @@ index c36a12e..5d31718 100644
>  +	if tooldir = os.Getenv("GOTOOLDIR"); tooldir == "" {
>  +		tooldir = pathf("%s/pkg/tool/%s_%s", goroot, gohostos, gohostarch)
>  +	}
> - }
>   
> - // compilerEnv returns a map from "goos/goarch" to the
> + 	goversion := findgoversion()
> + 	isRelease = strings.HasPrefix(goversion, "release.") || strings.HasPrefix(goversion, "go")
>  diff --git a/src/cmd/go/internal/cfg/cfg.go b/src/cmd/go/internal/cfg/cfg.go
> -index 3257140..bb46253 100644
> +index 8a82e55..1141fc2 100644
>  --- a/src/cmd/go/internal/cfg/cfg.go
>  +++ b/src/cmd/go/internal/cfg/cfg.go
> -@@ -229,7 +229,11 @@ func SetGOROOT(goroot string, isTestGo bool) {
> +@@ -231,7 +231,11 @@ func SetGOROOT(goroot string, isTestGo bool) {
>   			// This matches the initialization of ToolDir in go/build, except for
>   			// using ctxt.GOROOT and the installed GOOS and GOARCH rather than the
>   			// GOROOT, GOOS, and GOARCH reported by the runtime package.
> @@ -51,5 +52,5 @@ index 3257140..bb46253 100644
>   	}
>   }
>  -- 
> -2.30.2
> +2.43.0
>  
> diff --git a/meta/recipes-devtools/go/go/0003-ld-add-soname-to-shareable-objects.patch b/meta/recipes-devtools/go/go/0003-ld-add-soname-to-shareable-objects.patch
> index ced0be1998..8afa28aab0 100644
> --- a/meta/recipes-devtools/go/go/0003-ld-add-soname-to-shareable-objects.patch
> +++ b/meta/recipes-devtools/go/go/0003-ld-add-soname-to-shareable-objects.patch
> @@ -1,4 +1,4 @@
> -From c7536a820f713013ab1d4acef74a4c8bd970bf8f Mon Sep 17 00:00:00 2001
> +From 7dde77b3ce8138314dd2736604b1b110dbcc0ac1 Mon Sep 17 00:00:00 2001
>  From: Alex Kube <alexander.j.kube@gmail.com>
>  Date: Wed, 23 Oct 2019 21:16:32 +0430
>  Subject: [PATCH 3/9] ld: add soname to shareable objects
> @@ -13,15 +13,16 @@ Matt Madison <matt@madison.systems>.
>  Upstream-Status: Inappropriate [OE specific]
>  
>  Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
> +Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
>  ---
>   src/cmd/link/internal/ld/lib.go | 3 +++
>   1 file changed, 3 insertions(+)
>  
>  diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go
> -index 03b9f11..e91c92f 100644
> +index 91e2d51..e98b912 100644
>  --- a/src/cmd/link/internal/ld/lib.go
>  +++ b/src/cmd/link/internal/ld/lib.go
> -@@ -1504,6 +1504,7 @@ func (ctxt *Link) hostlink() {
> +@@ -1554,6 +1554,7 @@ func (ctxt *Link) hostlink() {
>   				argv = append(argv, "-Wl,-z,relro")
>   			}
>   			argv = append(argv, "-shared")
> @@ -29,7 +30,7 @@ index 03b9f11..e91c92f 100644
>   			if ctxt.HeadType == objabi.Hwindows {
>   				argv = addASLRargs(argv, *flagAslr)
>   			} else {
> -@@ -1519,6 +1520,7 @@ func (ctxt *Link) hostlink() {
> +@@ -1569,6 +1570,7 @@ func (ctxt *Link) hostlink() {
>   			argv = append(argv, "-Wl,-z,relro")
>   		}
>   		argv = append(argv, "-shared")
> @@ -37,7 +38,7 @@ index 03b9f11..e91c92f 100644
>   	case BuildModePlugin:
>   		if ctxt.HeadType == objabi.Hdarwin {
>   			argv = append(argv, "-dynamiclib")
> -@@ -1527,6 +1529,7 @@ func (ctxt *Link) hostlink() {
> +@@ -1577,6 +1579,7 @@ func (ctxt *Link) hostlink() {
>   				argv = append(argv, "-Wl,-z,relro")
>   			}
>   			argv = append(argv, "-shared")
> @@ -46,5 +47,5 @@ index 03b9f11..e91c92f 100644
>   	}
>   
>  -- 
> -2.30.2
> +2.43.0
>  
> diff --git a/meta/recipes-devtools/go/go/0004-make.bash-override-CC-when-building-dist-and-go_boot.patch b/meta/recipes-devtools/go/go/0004-make.bash-override-CC-when-building-dist-and-go_boot.patch
> index 85e42f7660..5dd2621adc 100644
> --- a/meta/recipes-devtools/go/go/0004-make.bash-override-CC-when-building-dist-and-go_boot.patch
> +++ b/meta/recipes-devtools/go/go/0004-make.bash-override-CC-when-building-dist-and-go_boot.patch
> @@ -1,4 +1,4 @@
> -From 31ff609cc3d3bfcc2f2257fda1dbaafaec31eb0b Mon Sep 17 00:00:00 2001
> +From 9f59e46991074d3e3c4d00f3971e62bfcd707167 Mon Sep 17 00:00:00 2001
>  From: Alex Kube <alexander.j.kube@gmail.com>
>  Date: Wed, 23 Oct 2019 21:17:16 +0430
>  Subject: [PATCH 4/9] make.bash: override CC when building dist and
> @@ -13,24 +13,25 @@ Matt Madison <matt@madison.systems>.
>  Upstream-Status: Inappropriate [OE specific]
>  
>  Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
> +Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
>  ---
>   src/make.bash | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
>  
>  diff --git a/src/make.bash b/src/make.bash
> -index c07f39b..6ca7242 100755
> +index 755b3b0..eddfc3c 100755
>  --- a/src/make.bash
>  +++ b/src/make.bash
> -@@ -194,7 +194,7 @@ if [ "$GOROOT_BOOTSTRAP" = "$GOROOT" ]; then
> +@@ -198,7 +198,7 @@ if [ "$GOROOT_BOOTSTRAP" = "$GOROOT" ]; then
>   	exit 1
>   fi
>   rm -f cmd/dist/dist
> --GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" GO111MODULE=off GOEXPERIMENT="" GOENV=off GOFLAGS="" "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist
> -+CC="${BUILD_CC:-${CC}}" GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" GO111MODULE=off GOEXPERIMENT="" GOENV=off GOFLAGS="" "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist
> +-GOROOT="$GOROOT_BOOTSTRAP" nogoenv "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist
> ++CC="${BUILD_CC:-${CC}}" GOROOT="$GOROOT_BOOTSTRAP" nogoenv "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist
>   
>   # -e doesn't propagate out of eval, so check success by hand.
>   eval $(./cmd/dist/dist env -p || echo FAIL=true)
> -@@ -219,7 +219,7 @@ fi
> +@@ -223,7 +223,7 @@ fi
>   # Run dist bootstrap to complete make.bash.
>   # Bootstrap installs a proper cmd/dist, built with the new toolchain.
>   # Throw ours, built with the bootstrap toolchain, away after bootstrap.
> @@ -40,5 +41,5 @@ index c07f39b..6ca7242 100755
>   
>   # DO NOT ADD ANY NEW CODE HERE.
>  -- 
> -2.30.2
> +2.43.0
>  
> diff --git a/meta/recipes-devtools/go/go/0005-cmd-dist-separate-host-and-target-builds.patch b/meta/recipes-devtools/go/go/0005-cmd-dist-separate-host-and-target-builds.patch
> index 29598449da..f8dca65ed4 100644
> --- a/meta/recipes-devtools/go/go/0005-cmd-dist-separate-host-and-target-builds.patch
> +++ b/meta/recipes-devtools/go/go/0005-cmd-dist-separate-host-and-target-builds.patch
> @@ -1,10 +1,8 @@
> -From 7a191e5191c8b813e929caedb3f3918bb08692a1 Mon Sep 17 00:00:00 2001
> +From 6dda78d528e60993a4688cd9d49440a726378ac8 Mon Sep 17 00:00:00 2001
>  From: Alex Kube <alexander.j.kube@gmail.com>
>  Date: Wed, 23 Oct 2019 21:18:12 +0430
>  Subject: [PATCH 5/9] cmd/dist: separate host and target builds
>  
> -Upstream-Status: Inappropriate [OE specific]
> -
>  Change the dist tool to allow for OE-style cross-
>  and cross-canadian builds:
>  
> @@ -33,41 +31,48 @@ Adapted to Go 1.13 from patches originally submitted to
>  the meta/recipes-devtools/go tree by
>  Matt Madison <matt@madison.systems>.
>  
> +Rework the patch to avoid identation, it's more hard to read but
> +easy to rebase.
> +Jose Quaresma <jose.quaresma@foundries.io>
> +
> +Upstream-Status: Inappropriate [OE specific]
> +
>  Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
> +Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
>  ---
> - src/cmd/dist/build.go | 152 +++++++++++++++++++++++++++++++-----------
> - 1 file changed, 113 insertions(+), 39 deletions(-)
> + src/cmd/dist/build.go | 76 ++++++++++++++++++++++++++++++++++++++++++-
> + 1 file changed, 75 insertions(+), 1 deletion(-)
>  
>  diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go
> -index 5d31718..1c7f308 100644
> +index adc9fd2..5fff592 100644
>  --- a/src/cmd/dist/build.go
>  +++ b/src/cmd/dist/build.go
> -@@ -44,6 +44,7 @@ var (
> +@@ -46,6 +46,7 @@ var (
>   	goexperiment     string
>   	workdir          string
>   	tooldir          string
>  +	build_tooldir    string
>   	oldgoos          string
>   	oldgoarch        string
> - 	exe              string
> -@@ -55,6 +56,7 @@ var (
> - 	rebuildall   bool
> - 	defaultclang bool
> - 	noOpt        bool
> -+	crossBuild   bool
> + 	oldgocache       string
> +@@ -58,6 +59,7 @@ var (
> + 	rebuildall bool
> + 	noOpt      bool
> + 	isRelease  bool
> ++	crossBuild bool
>   
>   	vflag int // verbosity
>   )
> -@@ -267,6 +269,8 @@ func xinit() {
> - 	if tooldir = os.Getenv("GOTOOLDIR"); tooldir == "" {
> - 		tooldir = pathf("%s/pkg/tool/%s_%s", goroot, gohostos, gohostarch)
> - 	}
> +@@ -265,6 +267,8 @@ func xinit() {
> + 
> + 	goversion := findgoversion()
> + 	isRelease = strings.HasPrefix(goversion, "release.") || strings.HasPrefix(goversion, "go")
>  +
>  +	build_tooldir = pathf("%s/pkg/tool/native_native", goroot)
>   }
>   
>   // compilerEnv returns a map from "goos/goarch" to the
> -@@ -468,8 +472,10 @@ func setup() {
> +@@ -499,8 +503,10 @@ func setup() {
>   	goosGoarch := pathf("%s/pkg/%s_%s", goroot, gohostos, gohostarch)
>   	if rebuildall {
>   		xremoveall(goosGoarch)
> @@ -78,16 +83,18 @@ index 5d31718..1c7f308 100644
>   	xatexit(func() {
>   		if files := xreaddir(goosGoarch); len(files) == 0 {
>   			xremove(goosGoarch)
> -@@ -1276,17 +1282,35 @@ func cmdbootstrap() {
> +@@ -1344,14 +1350,20 @@ func cmdbootstrap() {
> + 	defer timelog("end", "dist bootstrap")
>   
> - 	var noBanner, noClean bool
> - 	var debug bool
> + 	var debug, distpack, force, noBanner, noClean bool
>  +	var hostOnly bool
>  +	var targetOnly bool
>  +	var toBuild = []string{"std", "cmd"}
>  +
>   	flag.BoolVar(&rebuildall, "a", rebuildall, "rebuild all")
>   	flag.BoolVar(&debug, "d", debug, "enable debugging of bootstrap process")
> + 	flag.BoolVar(&distpack, "distpack", distpack, "write distribution files to pkg/distpack")
> + 	flag.BoolVar(&force, "force", force, "build even if the port is marked as broken")
>   	flag.BoolVar(&noBanner, "no-banner", noBanner, "do not print banner")
>   	flag.BoolVar(&noClean, "no-clean", noClean, "print deprecation warning")
>  +	flag.BoolVar(&hostOnly, "host-only", hostOnly, "build only host binaries, not target")
> @@ -98,6 +105,8 @@ index 5d31718..1c7f308 100644
>   
>   	if noClean {
>   		xprintf("warning: --no-clean is deprecated and has no effect; use 'go install std cmd' instead\n")
> +@@ -1363,6 +1375,18 @@ func cmdbootstrap() {
> + 			"Use the -force flag to build anyway.\n", goos, goarch)
>   	}
>   
>  +	if hostOnly && targetOnly {
> @@ -115,47 +124,46 @@ index 5d31718..1c7f308 100644
>   	// Set GOPATH to an internal directory. We shouldn't actually
>   	// need to store files here, since the toolchain won't
>   	// depend on modules outside of vendor directories, but if
> -@@ -1354,9 +1378,14 @@ func cmdbootstrap() {
> +@@ -1440,9 +1464,14 @@ func cmdbootstrap() {
>   		xprintf("\n")
>   	}
>   
> --	gogcflags = os.Getenv("GO_GCFLAGS") // we were using $BOOT_GO_GCFLAGS until now
> --	setNoOpt()
> --	goldflags = os.Getenv("GO_LDFLAGS") // we were using $BOOT_GO_LDFLAGS until now
>  +	// For split host/target cross/cross-canadian builds, we don't
>  +	// want to be setting these flags until after we have compiled
>  +	// the toolchain that runs on the build host.
>  +	if !crossBuild {
> -+		gogcflags = os.Getenv("GO_GCFLAGS") // we were using $BOOT_GO_GCFLAGS until now
> -+		setNoOpt()
> -+		goldflags = os.Getenv("GO_LDFLAGS") // we were using $BOOT_GO_LDFLAGS until now
> -+	}
> + 	gogcflags = os.Getenv("GO_GCFLAGS") // we were using $BOOT_GO_GCFLAGS until now
> + 	setNoOpt()
> + 	goldflags = os.Getenv("GO_LDFLAGS") // we were using $BOOT_GO_LDFLAGS until now
> ++}
>   	goBootstrap := pathf("%s/go_bootstrap", tooldir)
> - 	cmdGo := pathf("%s/go", gorootBin)
>   	if debug {
> -@@ -1385,7 +1414,11 @@ func cmdbootstrap() {
> + 		run("", ShowOutput|CheckExit, pathf("%s/compile", tooldir), "-V=full")
> +@@ -1470,7 +1499,11 @@ func cmdbootstrap() {
>   		xprintf("\n")
>   	}
>   	xprintf("Building Go toolchain2 using go_bootstrap and Go toolchain1.\n")
> --	os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))
> -+	if crossBuild {
> ++	if !crossBuild {
> + 	os.Setenv("CC", compilerEnvLookup("CC", defaultcc, goos, goarch))
> ++} else {
>  +		os.Setenv("CC", defaultcc[""])
> -+	} else {
> -+		os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))
>  +	}
>   	// Now that cmd/go is in charge of the build process, enable GOEXPERIMENT.
>   	os.Setenv("GOEXPERIMENT", goexperiment)
> - 	goInstall(goBootstrap, toolchain...)
> -@@ -1421,46 +1454,84 @@ func cmdbootstrap() {
> - 		copyfile(pathf("%s/compile3", tooldir), pathf("%s/compile", tooldir), writeExec)
> + 	// No need to enable PGO for toolchain2.
> +@@ -1523,6 +1556,7 @@ func cmdbootstrap() {
> + 		os.Setenv("GOCACHE", oldgocache)
>   	}
>   
> --	if goos == oldgoos && goarch == oldgoarch {
> --		// Common case - not setting up for cross-compilation.
> --		timelog("build", "toolchain")
> --		if vflag > 0 {
> --			xprintf("\n")
> -+	if crossBuild {
> ++	if !crossBuild {
> + 	if goos == oldgoos && goarch == oldgoarch {
> + 		// Common case - not setting up for cross-compilation.
> + 		timelog("build", "toolchain")
> +@@ -1566,6 +1600,42 @@ func cmdbootstrap() {
> + 		checkNotStale(toolenv(), goBootstrap, toolchain...)
> + 		copyfile(pathf("%s/compile4", tooldir), pathf("%s/compile", tooldir), writeExec)
> + 	}
> ++} else {
>  +		gogcflags = os.Getenv("GO_GCFLAGS")
>  +		goldflags = os.Getenv("GO_LDFLAGS")
>  +		tool_files, _ := filepath.Glob(pathf("%s/*", tooldir))
> @@ -171,8 +179,8 @@ index 5d31718..1c7f308 100644
>  +				xprintf("\n")
>  +			}
>  +			xprintf("Building %s for host, %s/%s.\n", strings.Join(toBuild, ","), goos, goarch)
> -+			goInstall(goBootstrap, toBuild...)
> -+			checkNotStale(goBootstrap, toBuild...)
> ++			goInstall(toolenv(), goBootstrap, toBuild...)
> ++			checkNotStale(toolenv(), goBootstrap, toBuild...)
>  +			// Skip cmdGo staleness checks here, since we can't necessarily run the cmdGo binary
>  +
>  +			timelog("build", "target toolchain")
> @@ -184,99 +192,29 @@ index 5d31718..1c7f308 100644
>  +			goarch = oldgoarch
>  +			os.Setenv("GOOS", goos)
>  +			os.Setenv("GOARCH", goarch)
> -+			os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))
> ++			os.Setenv("CC", compilerEnvLookup("CC", defaultcc, goos, goarch))
>  +			xprintf("Building %s for target, %s/%s.\n", strings.Join(toBuild, ","), goos, goarch)
> -+			goInstall(goBootstrap, toBuild...)
> -+			checkNotStale(goBootstrap, toBuild...)
> ++			goInstall(toolenv(), goBootstrap, toBuild...)
> ++			checkNotStale(toolenv(), goBootstrap, toBuild...)
>  +			// Skip cmdGo staleness checks here, since we can't run the target's cmdGo binary
> - 		}
> --		xprintf("Building packages and commands for %s/%s.\n", goos, goarch)
> - 	} else {
> --		// GOOS/GOARCH does not match GOHOSTOS/GOHOSTARCH.
> --		// Finish GOHOSTOS/GOHOSTARCH installation and then
> --		// run GOOS/GOARCH installation.
> --		timelog("build", "host toolchain")
> --		if vflag > 0 {
> --			xprintf("\n")
> -+
> -+		if goos == oldgoos && goarch == oldgoarch {
> -+			// Common case - not setting up for cross-compilation.
> -+			timelog("build", "toolchain")
> -+			if vflag > 0 {
> -+				xprintf("\n")
> -+			}
> -+			xprintf("Building packages and commands for %s/%s.\n", goos, goarch)
> -+		} else {
> -+			// GOOS/GOARCH does not match GOHOSTOS/GOHOSTARCH.
> -+			// Finish GOHOSTOS/GOHOSTARCH installation and then
> -+			// run GOOS/GOARCH installation.
> -+			timelog("build", "host toolchain")
> -+			if vflag > 0 {
> -+				xprintf("\n")
> -+			}
> -+			xprintf("Building packages and commands for host, %s/%s.\n", goos, goarch)
> -+			goInstall(goBootstrap, "std", "cmd")
> -+			checkNotStale(goBootstrap, "std", "cmd")
> -+			checkNotStale(cmdGo, "std", "cmd")
> -+
> -+			timelog("build", "target toolchain")
> -+			if vflag > 0 {
> -+				xprintf("\n")
> -+			}
> -+			goos = oldgoos
> -+			goarch = oldgoarch
> -+			os.Setenv("GOOS", goos)
> -+			os.Setenv("GOARCH", goarch)
> -+			os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))
> -+			xprintf("Building packages and commands for target, %s/%s.\n", goos, goarch)
> - 		}
> --		xprintf("Building packages and commands for host, %s/%s.\n", goos, goarch)
> - 		goInstall(goBootstrap, "std", "cmd")
> - 		checkNotStale(goBootstrap, "std", "cmd")
> - 		checkNotStale(cmdGo, "std", "cmd")
> - 
> --		timelog("build", "target toolchain")
> --		if vflag > 0 {
> --			xprintf("\n")
> -+		if debug {
> -+			run("", ShowOutput|CheckExit, pathf("%s/compile", tooldir), "-V=full")
> -+			run("", ShowOutput|CheckExit, pathf("%s/buildid", tooldir), pathf("%s/pkg/%s_%s/runtime/internal/sys.a", goroot, goos, goarch))
> -+			checkNotStale(goBootstrap, append(toolchain, "runtime/internal/sys")...)
> -+			copyfile(pathf("%s/compile4", tooldir), pathf("%s/compile", tooldir), writeExec)
> - 		}
> --		goos = oldgoos
> --		goarch = oldgoarch
> --		os.Setenv("GOOS", goos)
> --		os.Setenv("GOARCH", goarch)
> --		os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))
> --		xprintf("Building packages and commands for target, %s/%s.\n", goos, goarch)
> --	}
> --	targets := []string{"std", "cmd"}
> --	goInstall(goBootstrap, targets...)
> --	checkNotStale(goBootstrap, append(toolchain, "runtime/internal/sys")...)
> --	checkNotStale(goBootstrap, targets...)
> --	checkNotStale(cmdGo, targets...)
> --	if debug {
> --		run("", ShowOutput|CheckExit, pathf("%s/compile", tooldir), "-V=full")
> --		checkNotStale(goBootstrap, append(toolchain, "runtime/internal/sys")...)
> --		copyfile(pathf("%s/compile4", tooldir), pathf("%s/compile", tooldir), writeExec)
> - 	}
> ++		}
> ++	}
>   
>   	// Check that there are no new files in $GOROOT/bin other than
> -@@ -1477,8 +1548,11 @@ func cmdbootstrap() {
> + 	// go and gofmt and $GOOS_$GOARCH (target bin when cross-compiling).
> +@@ -1585,8 +1655,12 @@ func cmdbootstrap() {
>   		}
>   	}
>   
> --	// Remove go_bootstrap now that we're done.
> --	xremove(pathf("%s/go_bootstrap", tooldir))
>  +	// Except that for split host/target cross-builds, we need to
>  +	// keep it.
>  +	if !crossBuild {
> -+		xremove(pathf("%s/go_bootstrap", tooldir))
> -+	}
> + 	// Remove go_bootstrap now that we're done.
> + 	xremove(pathf("%s/go_bootstrap"+exe, tooldir))
> ++}
>   
>   	if goos == "android" {
>   		// Make sure the exec wrapper will sync a fresh $GOROOT to the device.
>  -- 
> -2.30.2
> +2.43.0
>  
> diff --git a/meta/recipes-devtools/go/go/0006-cmd-go-make-GOROOT-precious-by-default.patch b/meta/recipes-devtools/go/go/0006-cmd-go-make-GOROOT-precious-by-default.patch
> index 520e41da86..d118e726c6 100644
> --- a/meta/recipes-devtools/go/go/0006-cmd-go-make-GOROOT-precious-by-default.patch
> +++ b/meta/recipes-devtools/go/go/0006-cmd-go-make-GOROOT-precious-by-default.patch
> @@ -1,10 +1,8 @@
> -From efab470498bb0a30ee2d00455a0c8c10459f6347 Mon Sep 17 00:00:00 2001
> +From aff5a740d6286c04beb0593fc68b0aea5a95ad39 Mon Sep 17 00:00:00 2001
>  From: Alex Kube <alexander.j.kube@gmail.com>
>  Date: Wed, 23 Oct 2019 21:18:56 +0430
>  Subject: [PATCH 6/9] cmd/go: make GOROOT precious by default
>  
> -Upstream-Status: Inappropriate [OE specific]
> -
>  The go build tool normally rebuilds whatever it detects is
>  stale.  This can be a problem when GOROOT is intended to
>  be read-only and the go runtime has been built as a shared
> @@ -20,7 +18,10 @@ Adapted to Go 1.13 from patches originally submitted to
>  the meta/recipes-devtools/go tree by
>  Matt Madison <matt@madison.systems>.
>  
> +Upstream-Status: Inappropriate [OE specific]
> +
>  Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
> +Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
>  ---
>   src/cmd/go/internal/work/action.go |  3 +++
>   src/cmd/go/internal/work/build.go  |  6 ++++++
> @@ -28,10 +29,10 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
>   3 files changed, 34 insertions(+)
>  
>  diff --git a/src/cmd/go/internal/work/action.go b/src/cmd/go/internal/work/action.go
> -index 8beb134..68a8cfe 100644
> +index d4d0a71..42149d2 100644
>  --- a/src/cmd/go/internal/work/action.go
>  +++ b/src/cmd/go/internal/work/action.go
> -@@ -718,6 +718,9 @@ func (b *Builder) addTransitiveLinkDeps(a, a1 *Action, shlib string) {
> +@@ -730,6 +730,9 @@ func (b *Builder) addTransitiveLinkDeps(a, a1 *Action, shlib string) {
>   			if p1 == nil || p1.Shlib == "" || haveShlib[filepath.Base(p1.Shlib)] {
>   				continue
>   			}
> @@ -42,10 +43,10 @@ index 8beb134..68a8cfe 100644
>   			// TODO(rsc): The use of ModeInstall here is suspect, but if we only do ModeBuild,
>   			// we'll end up building an overall library or executable that depends at runtime
>  diff --git a/src/cmd/go/internal/work/build.go b/src/cmd/go/internal/work/build.go
> -index 2f2860a..8cc6166 100644
> +index e2e0e07..1c84137 100644
>  --- a/src/cmd/go/internal/work/build.go
>  +++ b/src/cmd/go/internal/work/build.go
> -@@ -217,6 +217,8 @@ See also: go install, go get, go clean.
> +@@ -228,6 +228,8 @@ See also: go install, go get, go clean.
>   
>   const concurrentGCBackendCompilationEnabledByDefault = true
>   
> @@ -54,7 +55,7 @@ index 2f2860a..8cc6166 100644
>   func init() {
>   	// break init cycle
>   	CmdBuild.Run = runBuild
> -@@ -230,6 +232,10 @@ func init() {
> +@@ -241,6 +243,10 @@ func init() {
>   		AddCoverFlags(CmdBuild, nil)
>   		AddCoverFlags(CmdInstall, nil)
>   	}
> @@ -66,11 +67,11 @@ index 2f2860a..8cc6166 100644
>   
>   // Note that flags consulted by other parts of the code
>  diff --git a/src/cmd/go/internal/work/exec.go b/src/cmd/go/internal/work/exec.go
> -index 62e1774..cde867b 100644
> +index e3dd486..0ea5316 100644
>  --- a/src/cmd/go/internal/work/exec.go
>  +++ b/src/cmd/go/internal/work/exec.go
> -@@ -546,6 +546,23 @@ func (b *Builder) build(ctx context.Context, a *Action) (err error) {
> - 		return errors.New("cannot compile Go " + p.Module.GoVersion + " code")
> +@@ -539,6 +539,23 @@ func (b *Builder) build(ctx context.Context, a *Action) (err error) {
> + 		return err
>   	}
>   
>  +	if goRootPrecious && (a.Package.Standard || a.Package.Goroot) {
> @@ -93,7 +94,7 @@ index 62e1774..cde867b 100644
>   	if err := b.Mkdir(a.Objdir); err != nil {
>   		return err
>   	}
> -@@ -1643,6 +1660,14 @@ func (b *Builder) linkShared(ctx context.Context, a *Action) (err error) {
> +@@ -1722,6 +1739,14 @@ func (b *Builder) linkShared(ctx context.Context, a *Action) (err error) {
>   		return err
>   	}
>   
> @@ -109,5 +110,5 @@ index 62e1774..cde867b 100644
>   		return err
>   	}
>  -- 
> -2.30.2
> +2.43.0
>  
> diff --git a/meta/recipes-devtools/go/go/0007-exec.go-do-not-write-linker-flags-into-buildids.patch b/meta/recipes-devtools/go/go/0007-exec.go-do-not-write-linker-flags-into-buildids.patch
> index 7d9869b536..3e0ba35d81 100644
> --- a/meta/recipes-devtools/go/go/0007-exec.go-do-not-write-linker-flags-into-buildids.patch
> +++ b/meta/recipes-devtools/go/go/0007-exec.go-do-not-write-linker-flags-into-buildids.patch
> @@ -1,4 +1,4 @@
> -From 0ba747e6a4b251a0d9eed0cfd8f8c491bb508040 Mon Sep 17 00:00:00 2001
> +From 619991feab04f331d081a91243434ccd859f611d Mon Sep 17 00:00:00 2001
>  From: Alexander Kanavin <alex.kanavin@gmail.com>
>  Date: Mon, 23 Nov 2020 19:22:04 +0000
>  Subject: [PATCH 7/9] exec.go: do not write linker flags into buildids
> @@ -9,16 +9,18 @@ To make this acceptable to upstream, we probably need to trim the flags,
>  removing those known to be buildhost-specific.
>  
>  Upstream-Status: Inappropriate [needs upstream discussion]
> +
>  Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> +Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
>  ---
>   src/cmd/go/internal/work/exec.go | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
>  
>  diff --git a/src/cmd/go/internal/work/exec.go b/src/cmd/go/internal/work/exec.go
> -index cde867b..5cb1812 100644
> +index 0ea5316..d7e2d51 100644
>  --- a/src/cmd/go/internal/work/exec.go
>  +++ b/src/cmd/go/internal/work/exec.go
> -@@ -1331,7 +1331,7 @@ func (b *Builder) linkActionID(a *Action) cache.ActionID {
> +@@ -1357,7 +1357,7 @@ func (b *Builder) linkActionID(a *Action) cache.ActionID {
>   	}
>   
>   	// Toolchain-dependent configuration, shared with b.linkSharedActionID.
> @@ -27,7 +29,7 @@ index cde867b..5cb1812 100644
>   
>   	// Input files.
>   	for _, a1 := range a.Deps {
> -@@ -1626,7 +1626,7 @@ func (b *Builder) linkSharedActionID(a *Action) cache.ActionID {
> +@@ -1705,7 +1705,7 @@ func (b *Builder) linkSharedActionID(a *Action) cache.ActionID {
>   	fmt.Fprintf(h, "goos %s goarch %s\n", cfg.Goos, cfg.Goarch)
>   
>   	// Toolchain-dependent configuration, shared with b.linkActionID.
> @@ -37,5 +39,5 @@ index cde867b..5cb1812 100644
>   	// Input files.
>   	for _, a1 := range a.Deps {
>  -- 
> -2.30.2
> +2.43.0
>  
> diff --git a/meta/recipes-devtools/go/go/0008-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch b/meta/recipes-devtools/go/go/0008-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch
> index fe830ce35c..58512207a8 100644
> --- a/meta/recipes-devtools/go/go/0008-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch
> +++ b/meta/recipes-devtools/go/go/0008-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch
> @@ -1,4 +1,4 @@
> -From 1cbb416538a9c7c3fbedcb23f4d90d5c48becca8 Mon Sep 17 00:00:00 2001
> +From e0999902687e2e394499f7153db8d62440c4dab0 Mon Sep 17 00:00:00 2001
>  From: Alexander Kanavin <alex.kanavin@gmail.com>
>  Date: Tue, 10 Nov 2020 16:33:27 +0000
>  Subject: [PATCH 8/9] src/cmd/dist/buildgo.go: do not hardcode host compilers
> @@ -8,16 +8,18 @@ These come from $CC/$CXX on the build host and are not useful on targets;
>  additionally as they contain host specific paths, this helps reproducibility.
>  
>  Upstream-Status: Inappropriate [needs upstream discussion]
> +
>  Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> +Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
>  ---
>   src/cmd/dist/buildgo.go | 8 ++++----
>   1 file changed, 4 insertions(+), 4 deletions(-)
>  
>  diff --git a/src/cmd/dist/buildgo.go b/src/cmd/dist/buildgo.go
> -index 29b0167..63a49f0 100644
> +index 884e9d7..2f52eda 100644
>  --- a/src/cmd/dist/buildgo.go
>  +++ b/src/cmd/dist/buildgo.go
> -@@ -33,8 +33,8 @@ func mkzdefaultcc(dir, file string) {
> +@@ -51,8 +51,8 @@ func mkzdefaultcc(dir, file string) {
>   		fmt.Fprintf(&buf, "package cfg\n")
>   		fmt.Fprintln(&buf)
>   		fmt.Fprintf(&buf, "const DefaultPkgConfig = `%s`\n", defaultpkgconfig)
> @@ -28,7 +30,7 @@ index 29b0167..63a49f0 100644
>   		writefile(buf.String(), file, writeSkipSame)
>   		return
>   	}
> -@@ -45,8 +45,8 @@ func mkzdefaultcc(dir, file string) {
> +@@ -62,8 +62,8 @@ func mkzdefaultcc(dir, file string) {
>   	fmt.Fprintf(&buf, "package main\n")
>   	fmt.Fprintln(&buf)
>   	fmt.Fprintf(&buf, "const defaultPkgConfig = `%s`\n", defaultpkgconfig)
> @@ -40,5 +42,5 @@ index 29b0167..63a49f0 100644
>   }
>   
>  -- 
> -2.30.2
> +2.43.0
>  
> diff --git a/meta/recipes-devtools/go/go/0009-go-Filter-build-paths-on-staticly-linked-arches.patch b/meta/recipes-devtools/go/go/0009-go-Filter-build-paths-on-staticly-linked-arches.patch
> index 49da5f6297..597a4e2104 100644
> --- a/meta/recipes-devtools/go/go/0009-go-Filter-build-paths-on-staticly-linked-arches.patch
> +++ b/meta/recipes-devtools/go/go/0009-go-Filter-build-paths-on-staticly-linked-arches.patch
> @@ -1,4 +1,4 @@
> -From 18011f72125bbea273d07ee5d792ac0ce6059572 Mon Sep 17 00:00:00 2001
> +From 6c2438f187ca912c54a71b4ac65ab98999a019d2 Mon Sep 17 00:00:00 2001
>  From: Richard Purdie <richard.purdie@linuxfoundation.org>
>  Date: Sat, 2 Jul 2022 23:08:13 +0100
>  Subject: [PATCH 9/9] go: Filter build paths on staticly linked arches
> @@ -11,17 +11,18 @@ on mips/ppc.
>  Upstream-Status: Submitted [https://github.com/golang/go/pull/56410]
>  
>  Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
> +Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
>  ---
>   src/cmd/go/internal/load/pkg.go | 15 +++++++++++++--
>   1 file changed, 13 insertions(+), 2 deletions(-)
>  
>  diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go
> -index f427e29..6d6dc4e 100644
> +index c0e6265..b199fee 100644
>  --- a/src/cmd/go/internal/load/pkg.go
>  +++ b/src/cmd/go/internal/load/pkg.go
> -@@ -2270,6 +2270,17 @@ func (p *Package) collectDeps() {
> - // to their VCS information (vcsStatusError).
> - var vcsStatusCache par.Cache
> +@@ -2269,6 +2269,17 @@ func appendBuildSetting(info *debug.BuildInfo, key, value string) {
> + 	info.Settings = append(info.Settings, debug.BuildSetting{Key: key, Value: value})
> + }
>   
>  +func filterCompilerFlags(flags string) string {
>  +	var newflags []string
> @@ -34,10 +35,10 @@ index f427e29..6d6dc4e 100644
>  +	return strings.Join(newflags, " ")
>  +}
>  +
> - // setBuildInfo gathers build information, formats it as a string to be
> - // embedded in the binary, then sets p.Internal.BuildInfo to that string.
> - // setBuildInfo should only be called on a main package with no errors.
> -@@ -2376,7 +2387,7 @@ func (p *Package) setBuildInfo(autoVCS bool) {
> + // setBuildInfo gathers build information and sets it into
> + // p.Internal.BuildInfo, which will later be formatted as a string and embedded
> + // in the binary. setBuildInfo should only be called on a main package with no
> +@@ -2376,7 +2387,7 @@ func (p *Package) setBuildInfo(ctx context.Context, autoVCS bool) {
>   	if gcflags := BuildGcflags.String(); gcflags != "" && cfg.BuildContext.Compiler == "gc" {
>   		appendSetting("-gcflags", gcflags)
>   	}
> @@ -46,7 +47,7 @@ index f427e29..6d6dc4e 100644
>   		// https://go.dev/issue/52372: only include ldflags if -trimpath is not set,
>   		// since it can include system paths through various linker flags (notably
>   		// -extar, -extld, and -extldflags).
> -@@ -2422,7 +2433,7 @@ func (p *Package) setBuildInfo(autoVCS bool) {
> +@@ -2419,7 +2430,7 @@ func (p *Package) setBuildInfo(ctx context.Context, autoVCS bool) {
>   	// subset of flags that are known not to be paths?
>   	if cfg.BuildContext.CgoEnabled && !cfg.BuildTrimpath {
>   		for _, name := range []string{"CGO_CFLAGS", "CGO_CPPFLAGS", "CGO_CXXFLAGS", "CGO_LDFLAGS"} {
> @@ -56,5 +57,5 @@ index f427e29..6d6dc4e 100644
>   	}
>   	appendSetting("GOARCH", cfg.BuildContext.GOARCH)
>  -- 
> -2.30.2
> +2.43.0
>  
> diff --git a/meta/recipes-devtools/go/go_1.20.12.bb b/meta/recipes-devtools/go/go_1.21.0.bb
> similarity index 100%
> rename from meta/recipes-devtools/go/go_1.20.12.bb
> rename to meta/recipes-devtools/go/go_1.21.0.bb
> -- 
> 2.43.0
> 

> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#191943): https://lists.openembedded.org/g/openembedded-core/message/191943
> Mute This Topic: https://lists.openembedded.org/mt/103031554/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Jose Quaresma Dec. 11, 2023, 10:01 a.m. UTC | #2
Hi Alexandre,

I will investigate and try to address all the issues.
Thanks for reporting.

Jose

Alexandre Belloni <alexandre.belloni@bootlin.com> escreveu no dia quinta,
7/12/2023 à(s) 23:23:

> Hello Jose,
>
> go.GoHelloworldTest.test_gohelloworld fails after this series:
>
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/76/builds/8211/steps/13/logs/stdio
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/80/builds/6104/steps/14/logs/stdio
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/79/builds/6154/steps/14/logs/stdio
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/87/builds/6169/steps/14/logs/stdio
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/53/builds/8256/steps/14/logs/stdio
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/110/builds/7125/steps/13/logs/stdio
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/131/builds/3614/steps/13/logs/stdio
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/59/builds/8186/steps/13/logs/stdio
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/73/builds/8193/steps/13/logs/stdio
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/109/builds/7085/steps/14/logs/stdio
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/101/builds/6998/steps/14/logs/stdio
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/86/builds/6159/steps/14/logs/stdio
>
>
> On 07/12/2023 10:07:11+0000, Jose Quaresma wrote:
> > Go 1.21 Release Notes
> > https://go.dev/doc/go1.21
> >
> > Rework the patch 0005-cmd-dist-separate-host-and-target-builds.patch
> > to avoid identation, it's more hard to read but easy to rebase.
> >
> > Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
> > ---
> >  meta/conf/distro/include/tcmode-default.inc   |   2 +-
> >  .../go/{go-1.20.12.inc => go-1.21.0.inc}      |   2 +-
> >  ..._1.20.12.bb => go-binary-native_1.21.0.bb} |   6 +-
> >  ...1.20.12.bb => go-cross-canadian_1.21.0.bb} |   0
> >  ...go-cross_1.20.12.bb => go-cross_1.21.0.bb} |   0
> >  ...sssdk_1.20.12.bb => go-crosssdk_1.21.0.bb} |   0
> >  ...-native_1.20.12.bb => go-native_1.21.0.bb} |   0
> >  ...untime_1.20.12.bb => go-runtime_1.21.0.bb} |   0
> >  ...ent-based-hash-generation-less-pedan.patch |  35 ++--
> >  ...OOLDIR-to-be-overridden-in-the-envir.patch |  17 +-
> >  ...3-ld-add-soname-to-shareable-objects.patch |  13 +-
> >  ...de-CC-when-building-dist-and-go_boot.patch |  15 +-
> >  ...dist-separate-host-and-target-builds.patch | 192 ++++++------------
> >  ...d-go-make-GOROOT-precious-by-default.patch |  27 +--
> >  ...not-write-linker-flags-into-buildids.patch |  12 +-
> >  ...ldgo.go-do-not-hardcode-host-compile.patch |  12 +-
> >  ...uild-paths-on-staticly-linked-arches.patch |  23 ++-
> >  .../go/{go_1.20.12.bb => go_1.21.0.bb}        |   0
> >  18 files changed, 152 insertions(+), 204 deletions(-)
> >  rename meta/recipes-devtools/go/{go-1.20.12.inc => go-1.21.0.inc} (89%)
> >  rename meta/recipes-devtools/go/{go-binary-native_1.20.12.bb =>
> go-binary-native_1.21.0.bb} (78%)
> >  rename meta/recipes-devtools/go/{go-cross-canadian_1.20.12.bb =>
> go-cross-canadian_1.21.0.bb} (100%)
> >  rename meta/recipes-devtools/go/{go-cross_1.20.12.bb =>
> go-cross_1.21.0.bb} (100%)
> >  rename meta/recipes-devtools/go/{go-crosssdk_1.20.12.bb =>
> go-crosssdk_1.21.0.bb} (100%)
> >  rename meta/recipes-devtools/go/{go-native_1.20.12.bb =>
> go-native_1.21.0.bb} (100%)
> >  rename meta/recipes-devtools/go/{go-runtime_1.20.12.bb =>
> go-runtime_1.21.0.bb} (100%)
> >  rename meta/recipes-devtools/go/{go_1.20.12.bb => go_1.21.0.bb} (100%)
> >
> > diff --git a/meta/conf/distro/include/tcmode-default.inc
> b/meta/conf/distro/include/tcmode-default.inc
> > index 707402e6eb..feebe5d30e 100644
> > --- a/meta/conf/distro/include/tcmode-default.inc
> > +++ b/meta/conf/distro/include/tcmode-default.inc
> > @@ -23,7 +23,7 @@ GDBVERSION ?= "13.%"
> >  GLIBCVERSION ?= "2.38%"
> >  LINUXLIBCVERSION ?= "6.5%"
> >  QEMUVERSION ?= "8.1%"
> > -GOVERSION ?= "1.20%"
> > +GOVERSION ?= "1.21%"
> >  LLVMVERSION ?= "17.%"
> >  RUSTVERSION ?= "1.70%"
> >
> > diff --git a/meta/recipes-devtools/go/go-1.20.12.inc
> b/meta/recipes-devtools/go/go-1.21.0.inc
> > similarity index 89%
> > rename from meta/recipes-devtools/go/go-1.20.12.inc
> > rename to meta/recipes-devtools/go/go-1.21.0.inc
> > index 9be56c6707..2933793b8b 100644
> > --- a/meta/recipes-devtools/go/go-1.20.12.inc
> > +++ b/meta/recipes-devtools/go/go-1.21.0.inc
> > @@ -15,4 +15,4 @@ SRC_URI += "\
> >
> file://0008-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch \
> >      file://0009-go-Filter-build-paths-on-staticly-linked-arches.patch \
> >  "
> > -SRC_URI[main.sha256sum] =
> "c5bf934751d31c315c1d0bb5fb02296545fa6d08923566f7a5afec81f2ed27d6"
> > +SRC_URI[main.sha256sum] =
> "818d46ede85682dd551ad378ef37a4d247006f12ec59b5b755601d2ce114369a"
> > diff --git a/meta/recipes-devtools/go/go-binary-native_1.20.12.bb
> b/meta/recipes-devtools/go/go-binary-native_1.21.0.bb
> > similarity index 78%
> > rename from meta/recipes-devtools/go/go-binary-native_1.20.12.bb
> > rename to meta/recipes-devtools/go/go-binary-native_1.21.0.bb
> > index e555412a19..0b8086e7b9 100644
> > --- a/meta/recipes-devtools/go/go-binary-native_1.20.12.bb
> > +++ b/meta/recipes-devtools/go/go-binary-native_1.21.0.bb
> > @@ -9,9 +9,9 @@ PROVIDES = "go-native"
> >
> >  # Checksums available at https://go.dev/dl/
> >  SRC_URI = "
> https://dl.google.com/go/go${PV}.${BUILD_GOOS}-${BUILD_GOARCH}.tar.gz;name=go_${BUILD_GOTUPLE}
> "
> > -SRC_URI[go_linux_amd64.sha256sum] =
> "9c5d48c54dd8b0a3b2ef91b0f92a1190aa01f11d26e98033efa64c46a30bba7b"
> > -SRC_URI[go_linux_arm64.sha256sum] =
> "8afe8e3fb6972eaa2179ef0a71678c67f26509fab4f0f67c4b00f4cdfa92dc87"
> > -SRC_URI[go_linux_ppc64le.sha256sum] =
> "2ae0ec3736216dfbd7b01ff679842dc1bed365e53a024d522645bcffd01c7328"
> > +SRC_URI[go_linux_amd64.sha256sum] =
> "d0398903a16ba2232b389fb31032ddf57cac34efda306a0eebac34f0965a0742"
> > +SRC_URI[go_linux_arm64.sha256sum] =
> "f3d4548edf9b22f26bbd49720350bbfe59d75b7090a1a2bff1afad8214febaf3"
> > +SRC_URI[go_linux_ppc64le.sha256sum] =
> "e938ffc81d8ebe5efc179240960ba22da6a841ff05d5cab7ce2547112b14a47f"
> >
> >  UPSTREAM_CHECK_URI = "https://golang.org/dl/"
> >  UPSTREAM_CHECK_REGEX = "go(?P<pver>\d+(\.\d+)+)\.linux"
> > diff --git a/meta/recipes-devtools/go/go-cross-canadian_1.20.12.bb
> b/meta/recipes-devtools/go/go-cross-canadian_1.21.0.bb
> > similarity index 100%
> > rename from meta/recipes-devtools/go/go-cross-canadian_1.20.12.bb
> > rename to meta/recipes-devtools/go/go-cross-canadian_1.21.0.bb
> > diff --git a/meta/recipes-devtools/go/go-cross_1.20.12.bb
> b/meta/recipes-devtools/go/go-cross_1.21.0.bb
> > similarity index 100%
> > rename from meta/recipes-devtools/go/go-cross_1.20.12.bb
> > rename to meta/recipes-devtools/go/go-cross_1.21.0.bb
> > diff --git a/meta/recipes-devtools/go/go-crosssdk_1.20.12.bb
> b/meta/recipes-devtools/go/go-crosssdk_1.21.0.bb
> > similarity index 100%
> > rename from meta/recipes-devtools/go/go-crosssdk_1.20.12.bb
> > rename to meta/recipes-devtools/go/go-crosssdk_1.21.0.bb
> > diff --git a/meta/recipes-devtools/go/go-native_1.20.12.bb
> b/meta/recipes-devtools/go/go-native_1.21.0.bb
> > similarity index 100%
> > rename from meta/recipes-devtools/go/go-native_1.20.12.bb
> > rename to meta/recipes-devtools/go/go-native_1.21.0.bb
> > diff --git a/meta/recipes-devtools/go/go-runtime_1.20.12.bb
> b/meta/recipes-devtools/go/go-runtime_1.21.0.bb
> > similarity index 100%
> > rename from meta/recipes-devtools/go/go-runtime_1.20.12.bb
> > rename to meta/recipes-devtools/go/go-runtime_1.21.0.bb
> > diff --git
> a/meta/recipes-devtools/go/go/0001-cmd-go-make-content-based-hash-generation-less-pedan.patch
> b/meta/recipes-devtools/go/go/0001-cmd-go-make-content-based-hash-generation-less-pedan.patch
> > index 9a2551031a..3bd756449e 100644
> > ---
> a/meta/recipes-devtools/go/go/0001-cmd-go-make-content-based-hash-generation-less-pedan.patch
> > +++
> b/meta/recipes-devtools/go/go/0001-cmd-go-make-content-based-hash-generation-less-pedan.patch
> > @@ -1,4 +1,4 @@
> > -From 10766ca6f4007b96e3f6bf4fb496e5df74397eb9 Mon Sep 17 00:00:00 2001
> > +From 9a6c5040cbcd88b10ceb8ceaebc8d6158c086670 Mon Sep 17 00:00:00 2001
> >  From: Khem Raj <raj.khem@gmail.com>
> >  Date: Mon, 28 Mar 2022 10:59:03 -0700
> >  Subject: [PATCH 1/9] cmd/go: make content-based hash generation less
> pedantic
> > @@ -25,16 +25,17 @@ Upstream-Status: Inappropriate [OE specific]
> >  Signed-off-by: Alex Kube <alexander.j.kube@gmail.com>
> >  Signed-off-by: Matt Madison <matt@madison.systems>
> >  Signed-off-by: Khem Raj <raj.khem@gmail.com>
> > +Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
> >  ---
> >   src/cmd/go/internal/envcmd/env.go |  2 +-
> >   src/cmd/go/internal/work/exec.go  | 44 ++++++++++++++++++++++++-------
> >   2 files changed, 36 insertions(+), 10 deletions(-)
> >
> >  diff --git a/src/cmd/go/internal/envcmd/env.go
> b/src/cmd/go/internal/envcmd/env.go
> > -index 66ef5ce..fb7448a 100644
> > +index c7c2e83..4a90d9d 100644
> >  --- a/src/cmd/go/internal/envcmd/env.go
> >  +++ b/src/cmd/go/internal/envcmd/env.go
> > -@@ -183,7 +183,7 @@ func ExtraEnvVarsCostly() []cfg.EnvVar {
> > +@@ -189,7 +189,7 @@ func ExtraEnvVarsCostly() []cfg.EnvVar {
> >               }
> >       }()
> >
> > @@ -44,10 +45,10 @@ index 66ef5ce..fb7448a 100644
> >               // Should not happen - b.CFlags was given an empty package.
> >               fmt.Fprintf(os.Stderr, "go: invalid cflags: %v\n", err)
> >  diff --git a/src/cmd/go/internal/work/exec.go
> b/src/cmd/go/internal/work/exec.go
> > -index 67d1193..62e1774 100644
> > +index 13d2a78..e3dd486 100644
> >  --- a/src/cmd/go/internal/work/exec.go
> >  +++ b/src/cmd/go/internal/work/exec.go
> > -@@ -223,6 +223,8 @@ func (b *Builder) Do(ctx context.Context, root
> *Action) {
> > +@@ -231,6 +231,8 @@ func (b *Builder) Do(ctx context.Context, root
> *Action) {
> >       writeActionGraph()
> >   }
> >
> > @@ -56,7 +57,7 @@ index 67d1193..62e1774 100644
> >   // buildActionID computes the action ID for a build action.
> >   func (b *Builder) buildActionID(a *Action) cache.ActionID {
> >       p := a.Package
> > -@@ -244,7 +246,7 @@ func (b *Builder) buildActionID(a *Action)
> cache.ActionID {
> > +@@ -252,7 +254,7 @@ func (b *Builder) buildActionID(a *Action)
> cache.ActionID {
> >               if p.Module != nil {
> >                       fmt.Fprintf(h, "module %s@%s\n", p.Module.Path,
> p.Module.Version)
> >               }
> > @@ -65,7 +66,7 @@ index 67d1193..62e1774 100644
> >               // The Go compiler always hides the exact value of $GOROOT
> >               // when building things in GOROOT.
> >               //
> > -@@ -276,9 +278,9 @@ func (b *Builder) buildActionID(a *Action)
> cache.ActionID {
> > +@@ -284,9 +286,9 @@ func (b *Builder) buildActionID(a *Action)
> cache.ActionID {
> >       }
> >       if len(p.CgoFiles)+len(p.SwigFiles)+len(p.SwigCXXFiles) > 0 {
> >               fmt.Fprintf(h, "cgo %q\n", b.toolID("cgo"))
> > @@ -77,7 +78,7 @@ index 67d1193..62e1774 100644
> >               fmt.Fprintf(h, "CC=%q %q %q %q\n", ccExe, cppflags,
> cflags, ldflags)
> >               // Include the C compiler tool ID so that if the C
> >               // compiler changes we rebuild the package.
> > -@@ -286,14 +288,14 @@ func (b *Builder) buildActionID(a *Action)
> cache.ActionID {
> > +@@ -294,14 +296,14 @@ func (b *Builder) buildActionID(a *Action)
> cache.ActionID {
> >                       fmt.Fprintf(h, "CC ID=%q\n", ccID)
> >               }
> >               if len(p.CXXFiles)+len(p.SwigCXXFiles) > 0 {
> > @@ -94,16 +95,16 @@ index 67d1193..62e1774 100644
> >                       fmt.Fprintf(h, "FC=%q %q\n", fcExe, fflags)
> >                       if fcID, _, err := b.gccToolID(fcExe[0], "f95");
> err == nil {
> >                               fmt.Fprintf(h, "FC ID=%q\n", fcID)
> > -@@ -310,7 +312,7 @@ func (b *Builder) buildActionID(a *Action)
> cache.ActionID {
> > +@@ -318,7 +320,7 @@ func (b *Builder) buildActionID(a *Action)
> cache.ActionID {
> >               }
> >       }
> > -     if p.Internal.BuildInfo != "" {
> > --            fmt.Fprintf(h, "modinfo %q\n", p.Internal.BuildInfo)
> > -+            //fmt.Fprintf(h, "modinfo %q\n", p.Internal.BuildInfo)
> > +     if p.Internal.BuildInfo != nil {
> > +-            fmt.Fprintf(h, "modinfo %q\n",
> p.Internal.BuildInfo.String())
> > ++            //fmt.Fprintf(h, "modinfo %q\n",
> p.Internal.BuildInfo.String())
> >       }
> >
> >       // Configuration specific to compiler toolchain.
> > -@@ -2989,8 +2991,25 @@ func envList(key, def string) []string {
> > +@@ -3137,8 +3139,25 @@ func envList(key, def string) []string {
> >       return args
> >   }
> >
> > @@ -130,7 +131,7 @@ index 67d1193..62e1774 100644
> >       if cppflags, err = buildFlags("CPPFLAGS", "", p.CgoCPPFLAGS,
> checkCompilerFlags); err != nil {
> >               return
> >       }
> > -@@ -3006,6 +3025,13 @@ func (b *Builder) CFlags(p *load.Package)
> (cppflags, cflags, cxxflags, fflags, l
> > +@@ -3154,6 +3173,13 @@ func (b *Builder) CFlags(p *load.Package)
> (cppflags, cflags, cxxflags, fflags, l
> >       if ldflags, err = buildFlags("LDFLAGS", defaultCFlags,
> p.CgoLDFLAGS, checkLinkerFlags); err != nil {
> >               return
> >       }
> > @@ -144,7 +145,7 @@ index 67d1193..62e1774 100644
> >
> >       return
> >   }
> > -@@ -3021,7 +3047,7 @@ var cgoRe = lazyregexp.New(`[/\\:]`)
> > +@@ -3169,7 +3195,7 @@ var cgoRe = lazyregexp.New(`[/\\:]`)
> >
> >   func (b *Builder) cgo(a *Action, cgoExe, objdir string, pcCFLAGS,
> pcLDFLAGS, cgofiles, gccfiles, gxxfiles, mfiles, ffiles []string) (outGo,
> outObj []string, err error) {
> >       p := a.Package
> > @@ -153,7 +154,7 @@ index 67d1193..62e1774 100644
> >       if err != nil {
> >               return nil, nil, err
> >       }
> > -@@ -3577,7 +3603,7 @@ func (b *Builder) swigIntSize(objdir string)
> (intsize string, err error) {
> > +@@ -3725,7 +3751,7 @@ func (b *Builder) swigIntSize(objdir string)
> (intsize string, err error) {
> >
> >   // Run SWIG on one SWIG input file.
> >   func (b *Builder) swigOne(a *Action, p *load.Package, file, objdir
> string, pcCFLAGS []string, cxx bool, intgosize string) (outGo, outC string,
> err error) {
> > @@ -163,5 +164,5 @@ index 67d1193..62e1774 100644
> >               return "", "", err
> >       }
> >  --
> > -2.30.2
> > +2.43.0
> >
> > diff --git
> a/meta/recipes-devtools/go/go/0002-cmd-go-Allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch
> b/meta/recipes-devtools/go/go/0002-cmd-go-Allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch
> > index 6abd424733..cf7ad02f86 100644
> > ---
> a/meta/recipes-devtools/go/go/0002-cmd-go-Allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch
> > +++
> b/meta/recipes-devtools/go/go/0002-cmd-go-Allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch
> > @@ -1,4 +1,4 @@
> > -From 5cca2fa5997292a87302bdc7e7ed3231371e98bd Mon Sep 17 00:00:00 2001
> > +From e3f9a8a69d3a340c1a1d0bba566e71f20f635a43 Mon Sep 17 00:00:00 2001
> >  From: Alex Kube <alexander.j.kube@gmail.com>
> >  Date: Wed, 23 Oct 2019 21:15:37 +0430
> >  Subject: [PATCH 2/9] cmd/go: Allow GOTOOLDIR to be overridden in the
> > @@ -13,16 +13,17 @@ Matt Madison <matt@madison.systems>.
> >  Upstream-Status: Inappropriate [OE specific]
> >
> >  Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
> > +Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
> >  ---
> >   src/cmd/dist/build.go          | 4 +++-
> >   src/cmd/go/internal/cfg/cfg.go | 6 +++++-
> >   2 files changed, 8 insertions(+), 2 deletions(-)
> >
> >  diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go
> > -index c36a12e..5d31718 100644
> > +index 8973a87..adc9fd2 100644
> >  --- a/src/cmd/dist/build.go
> >  +++ b/src/cmd/dist/build.go
> > -@@ -264,7 +264,9 @@ func xinit() {
> > +@@ -259,7 +259,9 @@ func xinit() {
> >       }
> >       xatexit(rmworkdir)
> >
> > @@ -30,14 +31,14 @@ index c36a12e..5d31718 100644
> >  +    if tooldir = os.Getenv("GOTOOLDIR"); tooldir == "" {
> >  +            tooldir = pathf("%s/pkg/tool/%s_%s", goroot, gohostos,
> gohostarch)
> >  +    }
> > - }
> >
> > - // compilerEnv returns a map from "goos/goarch" to the
> > +     goversion := findgoversion()
> > +     isRelease = strings.HasPrefix(goversion, "release.") ||
> strings.HasPrefix(goversion, "go")
> >  diff --git a/src/cmd/go/internal/cfg/cfg.go
> b/src/cmd/go/internal/cfg/cfg.go
> > -index 3257140..bb46253 100644
> > +index 8a82e55..1141fc2 100644
> >  --- a/src/cmd/go/internal/cfg/cfg.go
> >  +++ b/src/cmd/go/internal/cfg/cfg.go
> > -@@ -229,7 +229,11 @@ func SetGOROOT(goroot string, isTestGo bool) {
> > +@@ -231,7 +231,11 @@ func SetGOROOT(goroot string, isTestGo bool) {
> >                       // This matches the initialization of ToolDir in
> go/build, except for
> >                       // using ctxt.GOROOT and the installed GOOS and
> GOARCH rather than the
> >                       // GOROOT, GOOS, and GOARCH reported by the
> runtime package.
> > @@ -51,5 +52,5 @@ index 3257140..bb46253 100644
> >       }
> >   }
> >  --
> > -2.30.2
> > +2.43.0
> >
> > diff --git
> a/meta/recipes-devtools/go/go/0003-ld-add-soname-to-shareable-objects.patch
> b/meta/recipes-devtools/go/go/0003-ld-add-soname-to-shareable-objects.patch
> > index ced0be1998..8afa28aab0 100644
> > ---
> a/meta/recipes-devtools/go/go/0003-ld-add-soname-to-shareable-objects.patch
> > +++
> b/meta/recipes-devtools/go/go/0003-ld-add-soname-to-shareable-objects.patch
> > @@ -1,4 +1,4 @@
> > -From c7536a820f713013ab1d4acef74a4c8bd970bf8f Mon Sep 17 00:00:00 2001
> > +From 7dde77b3ce8138314dd2736604b1b110dbcc0ac1 Mon Sep 17 00:00:00 2001
> >  From: Alex Kube <alexander.j.kube@gmail.com>
> >  Date: Wed, 23 Oct 2019 21:16:32 +0430
> >  Subject: [PATCH 3/9] ld: add soname to shareable objects
> > @@ -13,15 +13,16 @@ Matt Madison <matt@madison.systems>.
> >  Upstream-Status: Inappropriate [OE specific]
> >
> >  Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
> > +Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
> >  ---
> >   src/cmd/link/internal/ld/lib.go | 3 +++
> >   1 file changed, 3 insertions(+)
> >
> >  diff --git a/src/cmd/link/internal/ld/lib.go
> b/src/cmd/link/internal/ld/lib.go
> > -index 03b9f11..e91c92f 100644
> > +index 91e2d51..e98b912 100644
> >  --- a/src/cmd/link/internal/ld/lib.go
> >  +++ b/src/cmd/link/internal/ld/lib.go
> > -@@ -1504,6 +1504,7 @@ func (ctxt *Link) hostlink() {
> > +@@ -1554,6 +1554,7 @@ func (ctxt *Link) hostlink() {
> >                               argv = append(argv, "-Wl,-z,relro")
> >                       }
> >                       argv = append(argv, "-shared")
> > @@ -29,7 +30,7 @@ index 03b9f11..e91c92f 100644
> >                       if ctxt.HeadType == objabi.Hwindows {
> >                               argv = addASLRargs(argv, *flagAslr)
> >                       } else {
> > -@@ -1519,6 +1520,7 @@ func (ctxt *Link) hostlink() {
> > +@@ -1569,6 +1570,7 @@ func (ctxt *Link) hostlink() {
> >                       argv = append(argv, "-Wl,-z,relro")
> >               }
> >               argv = append(argv, "-shared")
> > @@ -37,7 +38,7 @@ index 03b9f11..e91c92f 100644
> >       case BuildModePlugin:
> >               if ctxt.HeadType == objabi.Hdarwin {
> >                       argv = append(argv, "-dynamiclib")
> > -@@ -1527,6 +1529,7 @@ func (ctxt *Link) hostlink() {
> > +@@ -1577,6 +1579,7 @@ func (ctxt *Link) hostlink() {
> >                               argv = append(argv, "-Wl,-z,relro")
> >                       }
> >                       argv = append(argv, "-shared")
> > @@ -46,5 +47,5 @@ index 03b9f11..e91c92f 100644
> >       }
> >
> >  --
> > -2.30.2
> > +2.43.0
> >
> > diff --git
> a/meta/recipes-devtools/go/go/0004-make.bash-override-CC-when-building-dist-and-go_boot.patch
> b/meta/recipes-devtools/go/go/0004-make.bash-override-CC-when-building-dist-and-go_boot.patch
> > index 85e42f7660..5dd2621adc 100644
> > ---
> a/meta/recipes-devtools/go/go/0004-make.bash-override-CC-when-building-dist-and-go_boot.patch
> > +++
> b/meta/recipes-devtools/go/go/0004-make.bash-override-CC-when-building-dist-and-go_boot.patch
> > @@ -1,4 +1,4 @@
> > -From 31ff609cc3d3bfcc2f2257fda1dbaafaec31eb0b Mon Sep 17 00:00:00 2001
> > +From 9f59e46991074d3e3c4d00f3971e62bfcd707167 Mon Sep 17 00:00:00 2001
> >  From: Alex Kube <alexander.j.kube@gmail.com>
> >  Date: Wed, 23 Oct 2019 21:17:16 +0430
> >  Subject: [PATCH 4/9] make.bash: override CC when building dist and
> > @@ -13,24 +13,25 @@ Matt Madison <matt@madison.systems>.
> >  Upstream-Status: Inappropriate [OE specific]
> >
> >  Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
> > +Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
> >  ---
> >   src/make.bash | 4 ++--
> >   1 file changed, 2 insertions(+), 2 deletions(-)
> >
> >  diff --git a/src/make.bash b/src/make.bash
> > -index c07f39b..6ca7242 100755
> > +index 755b3b0..eddfc3c 100755
> >  --- a/src/make.bash
> >  +++ b/src/make.bash
> > -@@ -194,7 +194,7 @@ if [ "$GOROOT_BOOTSTRAP" = "$GOROOT" ]; then
> > +@@ -198,7 +198,7 @@ if [ "$GOROOT_BOOTSTRAP" = "$GOROOT" ]; then
> >       exit 1
> >   fi
> >   rm -f cmd/dist/dist
> > --GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" GO111MODULE=off
> GOEXPERIMENT="" GOENV=off GOFLAGS="" "$GOROOT_BOOTSTRAP/bin/go" build -o
> cmd/dist/dist ./cmd/dist
> > -+CC="${BUILD_CC:-${CC}}" GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH=""
> GO111MODULE=off GOEXPERIMENT="" GOENV=off GOFLAGS=""
> "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist
> > +-GOROOT="$GOROOT_BOOTSTRAP" nogoenv "$GOROOT_BOOTSTRAP/bin/go" build -o
> cmd/dist/dist ./cmd/dist
> > ++CC="${BUILD_CC:-${CC}}" GOROOT="$GOROOT_BOOTSTRAP" nogoenv
> "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist
> >
> >   # -e doesn't propagate out of eval, so check success by hand.
> >   eval $(./cmd/dist/dist env -p || echo FAIL=true)
> > -@@ -219,7 +219,7 @@ fi
> > +@@ -223,7 +223,7 @@ fi
> >   # Run dist bootstrap to complete make.bash.
> >   # Bootstrap installs a proper cmd/dist, built with the new toolchain.
> >   # Throw ours, built with the bootstrap toolchain, away after bootstrap.
> > @@ -40,5 +41,5 @@ index c07f39b..6ca7242 100755
> >
> >   # DO NOT ADD ANY NEW CODE HERE.
> >  --
> > -2.30.2
> > +2.43.0
> >
> > diff --git
> a/meta/recipes-devtools/go/go/0005-cmd-dist-separate-host-and-target-builds.patch
> b/meta/recipes-devtools/go/go/0005-cmd-dist-separate-host-and-target-builds.patch
> > index 29598449da..f8dca65ed4 100644
> > ---
> a/meta/recipes-devtools/go/go/0005-cmd-dist-separate-host-and-target-builds.patch
> > +++
> b/meta/recipes-devtools/go/go/0005-cmd-dist-separate-host-and-target-builds.patch
> > @@ -1,10 +1,8 @@
> > -From 7a191e5191c8b813e929caedb3f3918bb08692a1 Mon Sep 17 00:00:00 2001
> > +From 6dda78d528e60993a4688cd9d49440a726378ac8 Mon Sep 17 00:00:00 2001
> >  From: Alex Kube <alexander.j.kube@gmail.com>
> >  Date: Wed, 23 Oct 2019 21:18:12 +0430
> >  Subject: [PATCH 5/9] cmd/dist: separate host and target builds
> >
> > -Upstream-Status: Inappropriate [OE specific]
> > -
> >  Change the dist tool to allow for OE-style cross-
> >  and cross-canadian builds:
> >
> > @@ -33,41 +31,48 @@ Adapted to Go 1.13 from patches originally submitted
> to
> >  the meta/recipes-devtools/go tree by
> >  Matt Madison <matt@madison.systems>.
> >
> > +Rework the patch to avoid identation, it's more hard to read but
> > +easy to rebase.
> > +Jose Quaresma <jose.quaresma@foundries.io>
> > +
> > +Upstream-Status: Inappropriate [OE specific]
> > +
> >  Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
> > +Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
> >  ---
> > - src/cmd/dist/build.go | 152 +++++++++++++++++++++++++++++++-----------
> > - 1 file changed, 113 insertions(+), 39 deletions(-)
> > + src/cmd/dist/build.go | 76 ++++++++++++++++++++++++++++++++++++++++++-
> > + 1 file changed, 75 insertions(+), 1 deletion(-)
> >
> >  diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go
> > -index 5d31718..1c7f308 100644
> > +index adc9fd2..5fff592 100644
> >  --- a/src/cmd/dist/build.go
> >  +++ b/src/cmd/dist/build.go
> > -@@ -44,6 +44,7 @@ var (
> > +@@ -46,6 +46,7 @@ var (
> >       goexperiment     string
> >       workdir          string
> >       tooldir          string
> >  +    build_tooldir    string
> >       oldgoos          string
> >       oldgoarch        string
> > -     exe              string
> > -@@ -55,6 +56,7 @@ var (
> > -     rebuildall   bool
> > -     defaultclang bool
> > -     noOpt        bool
> > -+    crossBuild   bool
> > +     oldgocache       string
> > +@@ -58,6 +59,7 @@ var (
> > +     rebuildall bool
> > +     noOpt      bool
> > +     isRelease  bool
> > ++    crossBuild bool
> >
> >       vflag int // verbosity
> >   )
> > -@@ -267,6 +269,8 @@ func xinit() {
> > -     if tooldir = os.Getenv("GOTOOLDIR"); tooldir == "" {
> > -             tooldir = pathf("%s/pkg/tool/%s_%s", goroot, gohostos,
> gohostarch)
> > -     }
> > +@@ -265,6 +267,8 @@ func xinit() {
> > +
> > +     goversion := findgoversion()
> > +     isRelease = strings.HasPrefix(goversion, "release.") ||
> strings.HasPrefix(goversion, "go")
> >  +
> >  +    build_tooldir = pathf("%s/pkg/tool/native_native", goroot)
> >   }
> >
> >   // compilerEnv returns a map from "goos/goarch" to the
> > -@@ -468,8 +472,10 @@ func setup() {
> > +@@ -499,8 +503,10 @@ func setup() {
> >       goosGoarch := pathf("%s/pkg/%s_%s", goroot, gohostos, gohostarch)
> >       if rebuildall {
> >               xremoveall(goosGoarch)
> > @@ -78,16 +83,18 @@ index 5d31718..1c7f308 100644
> >       xatexit(func() {
> >               if files := xreaddir(goosGoarch); len(files) == 0 {
> >                       xremove(goosGoarch)
> > -@@ -1276,17 +1282,35 @@ func cmdbootstrap() {
> > +@@ -1344,14 +1350,20 @@ func cmdbootstrap() {
> > +     defer timelog("end", "dist bootstrap")
> >
> > -     var noBanner, noClean bool
> > -     var debug bool
> > +     var debug, distpack, force, noBanner, noClean bool
> >  +    var hostOnly bool
> >  +    var targetOnly bool
> >  +    var toBuild = []string{"std", "cmd"}
> >  +
> >       flag.BoolVar(&rebuildall, "a", rebuildall, "rebuild all")
> >       flag.BoolVar(&debug, "d", debug, "enable debugging of bootstrap
> process")
> > +     flag.BoolVar(&distpack, "distpack", distpack, "write distribution
> files to pkg/distpack")
> > +     flag.BoolVar(&force, "force", force, "build even if the port is
> marked as broken")
> >       flag.BoolVar(&noBanner, "no-banner", noBanner, "do not print
> banner")
> >       flag.BoolVar(&noClean, "no-clean", noClean, "print deprecation
> warning")
> >  +    flag.BoolVar(&hostOnly, "host-only", hostOnly, "build only host
> binaries, not target")
> > @@ -98,6 +105,8 @@ index 5d31718..1c7f308 100644
> >
> >       if noClean {
> >               xprintf("warning: --no-clean is deprecated and has no
> effect; use 'go install std cmd' instead\n")
> > +@@ -1363,6 +1375,18 @@ func cmdbootstrap() {
> > +                     "Use the -force flag to build anyway.\n", goos,
> goarch)
> >       }
> >
> >  +    if hostOnly && targetOnly {
> > @@ -115,47 +124,46 @@ index 5d31718..1c7f308 100644
> >       // Set GOPATH to an internal directory. We shouldn't actually
> >       // need to store files here, since the toolchain won't
> >       // depend on modules outside of vendor directories, but if
> > -@@ -1354,9 +1378,14 @@ func cmdbootstrap() {
> > +@@ -1440,9 +1464,14 @@ func cmdbootstrap() {
> >               xprintf("\n")
> >       }
> >
> > --    gogcflags = os.Getenv("GO_GCFLAGS") // we were using
> $BOOT_GO_GCFLAGS until now
> > --    setNoOpt()
> > --    goldflags = os.Getenv("GO_LDFLAGS") // we were using
> $BOOT_GO_LDFLAGS until now
> >  +    // For split host/target cross/cross-canadian builds, we don't
> >  +    // want to be setting these flags until after we have compiled
> >  +    // the toolchain that runs on the build host.
> >  +    if !crossBuild {
> > -+            gogcflags = os.Getenv("GO_GCFLAGS") // we were using
> $BOOT_GO_GCFLAGS until now
> > -+            setNoOpt()
> > -+            goldflags = os.Getenv("GO_LDFLAGS") // we were using
> $BOOT_GO_LDFLAGS until now
> > -+    }
> > +     gogcflags = os.Getenv("GO_GCFLAGS") // we were using
> $BOOT_GO_GCFLAGS until now
> > +     setNoOpt()
> > +     goldflags = os.Getenv("GO_LDFLAGS") // we were using
> $BOOT_GO_LDFLAGS until now
> > ++}
> >       goBootstrap := pathf("%s/go_bootstrap", tooldir)
> > -     cmdGo := pathf("%s/go", gorootBin)
> >       if debug {
> > -@@ -1385,7 +1414,11 @@ func cmdbootstrap() {
> > +             run("", ShowOutput|CheckExit, pathf("%s/compile",
> tooldir), "-V=full")
> > +@@ -1470,7 +1499,11 @@ func cmdbootstrap() {
> >               xprintf("\n")
> >       }
> >       xprintf("Building Go toolchain2 using go_bootstrap and Go
> toolchain1.\n")
> > --    os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))
> > -+    if crossBuild {
> > ++    if !crossBuild {
> > +     os.Setenv("CC", compilerEnvLookup("CC", defaultcc, goos, goarch))
> > ++} else {
> >  +            os.Setenv("CC", defaultcc[""])
> > -+    } else {
> > -+            os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))
> >  +    }
> >       // Now that cmd/go is in charge of the build process, enable
> GOEXPERIMENT.
> >       os.Setenv("GOEXPERIMENT", goexperiment)
> > -     goInstall(goBootstrap, toolchain...)
> > -@@ -1421,46 +1454,84 @@ func cmdbootstrap() {
> > -             copyfile(pathf("%s/compile3", tooldir),
> pathf("%s/compile", tooldir), writeExec)
> > +     // No need to enable PGO for toolchain2.
> > +@@ -1523,6 +1556,7 @@ func cmdbootstrap() {
> > +             os.Setenv("GOCACHE", oldgocache)
> >       }
> >
> > --    if goos == oldgoos && goarch == oldgoarch {
> > --            // Common case - not setting up for cross-compilation.
> > --            timelog("build", "toolchain")
> > --            if vflag > 0 {
> > --                    xprintf("\n")
> > -+    if crossBuild {
> > ++    if !crossBuild {
> > +     if goos == oldgoos && goarch == oldgoarch {
> > +             // Common case - not setting up for cross-compilation.
> > +             timelog("build", "toolchain")
> > +@@ -1566,6 +1600,42 @@ func cmdbootstrap() {
> > +             checkNotStale(toolenv(), goBootstrap, toolchain...)
> > +             copyfile(pathf("%s/compile4", tooldir),
> pathf("%s/compile", tooldir), writeExec)
> > +     }
> > ++} else {
> >  +            gogcflags = os.Getenv("GO_GCFLAGS")
> >  +            goldflags = os.Getenv("GO_LDFLAGS")
> >  +            tool_files, _ := filepath.Glob(pathf("%s/*", tooldir))
> > @@ -171,8 +179,8 @@ index 5d31718..1c7f308 100644
> >  +                            xprintf("\n")
> >  +                    }
> >  +                    xprintf("Building %s for host, %s/%s.\n",
> strings.Join(toBuild, ","), goos, goarch)
> > -+                    goInstall(goBootstrap, toBuild...)
> > -+                    checkNotStale(goBootstrap, toBuild...)
> > ++                    goInstall(toolenv(), goBootstrap, toBuild...)
> > ++                    checkNotStale(toolenv(), goBootstrap, toBuild...)
> >  +                    // Skip cmdGo staleness checks here, since we
> can't necessarily run the cmdGo binary
> >  +
> >  +                    timelog("build", "target toolchain")
> > @@ -184,99 +192,29 @@ index 5d31718..1c7f308 100644
> >  +                    goarch = oldgoarch
> >  +                    os.Setenv("GOOS", goos)
> >  +                    os.Setenv("GOARCH", goarch)
> > -+                    os.Setenv("CC", compilerEnvLookup(defaultcc, goos,
> goarch))
> > ++                    os.Setenv("CC", compilerEnvLookup("CC", defaultcc,
> goos, goarch))
> >  +                    xprintf("Building %s for target, %s/%s.\n",
> strings.Join(toBuild, ","), goos, goarch)
> > -+                    goInstall(goBootstrap, toBuild...)
> > -+                    checkNotStale(goBootstrap, toBuild...)
> > ++                    goInstall(toolenv(), goBootstrap, toBuild...)
> > ++                    checkNotStale(toolenv(), goBootstrap, toBuild...)
> >  +                    // Skip cmdGo staleness checks here, since we
> can't run the target's cmdGo binary
> > -             }
> > --            xprintf("Building packages and commands for %s/%s.\n",
> goos, goarch)
> > -     } else {
> > --            // GOOS/GOARCH does not match GOHOSTOS/GOHOSTARCH.
> > --            // Finish GOHOSTOS/GOHOSTARCH installation and then
> > --            // run GOOS/GOARCH installation.
> > --            timelog("build", "host toolchain")
> > --            if vflag > 0 {
> > --                    xprintf("\n")
> > -+
> > -+            if goos == oldgoos && goarch == oldgoarch {
> > -+                    // Common case - not setting up for
> cross-compilation.
> > -+                    timelog("build", "toolchain")
> > -+                    if vflag > 0 {
> > -+                            xprintf("\n")
> > -+                    }
> > -+                    xprintf("Building packages and commands for
> %s/%s.\n", goos, goarch)
> > -+            } else {
> > -+                    // GOOS/GOARCH does not match GOHOSTOS/GOHOSTARCH.
> > -+                    // Finish GOHOSTOS/GOHOSTARCH installation and then
> > -+                    // run GOOS/GOARCH installation.
> > -+                    timelog("build", "host toolchain")
> > -+                    if vflag > 0 {
> > -+                            xprintf("\n")
> > -+                    }
> > -+                    xprintf("Building packages and commands for host,
> %s/%s.\n", goos, goarch)
> > -+                    goInstall(goBootstrap, "std", "cmd")
> > -+                    checkNotStale(goBootstrap, "std", "cmd")
> > -+                    checkNotStale(cmdGo, "std", "cmd")
> > -+
> > -+                    timelog("build", "target toolchain")
> > -+                    if vflag > 0 {
> > -+                            xprintf("\n")
> > -+                    }
> > -+                    goos = oldgoos
> > -+                    goarch = oldgoarch
> > -+                    os.Setenv("GOOS", goos)
> > -+                    os.Setenv("GOARCH", goarch)
> > -+                    os.Setenv("CC", compilerEnvLookup(defaultcc, goos,
> goarch))
> > -+                    xprintf("Building packages and commands for
> target, %s/%s.\n", goos, goarch)
> > -             }
> > --            xprintf("Building packages and commands for host,
> %s/%s.\n", goos, goarch)
> > -             goInstall(goBootstrap, "std", "cmd")
> > -             checkNotStale(goBootstrap, "std", "cmd")
> > -             checkNotStale(cmdGo, "std", "cmd")
> > -
> > --            timelog("build", "target toolchain")
> > --            if vflag > 0 {
> > --                    xprintf("\n")
> > -+            if debug {
> > -+                    run("", ShowOutput|CheckExit, pathf("%s/compile",
> tooldir), "-V=full")
> > -+                    run("", ShowOutput|CheckExit, pathf("%s/buildid",
> tooldir), pathf("%s/pkg/%s_%s/runtime/internal/sys.a", goroot, goos,
> goarch))
> > -+                    checkNotStale(goBootstrap, append(toolchain,
> "runtime/internal/sys")...)
> > -+                    copyfile(pathf("%s/compile4", tooldir),
> pathf("%s/compile", tooldir), writeExec)
> > -             }
> > --            goos = oldgoos
> > --            goarch = oldgoarch
> > --            os.Setenv("GOOS", goos)
> > --            os.Setenv("GOARCH", goarch)
> > --            os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))
> > --            xprintf("Building packages and commands for target,
> %s/%s.\n", goos, goarch)
> > --    }
> > --    targets := []string{"std", "cmd"}
> > --    goInstall(goBootstrap, targets...)
> > --    checkNotStale(goBootstrap, append(toolchain,
> "runtime/internal/sys")...)
> > --    checkNotStale(goBootstrap, targets...)
> > --    checkNotStale(cmdGo, targets...)
> > --    if debug {
> > --            run("", ShowOutput|CheckExit, pathf("%s/compile",
> tooldir), "-V=full")
> > --            checkNotStale(goBootstrap, append(toolchain,
> "runtime/internal/sys")...)
> > --            copyfile(pathf("%s/compile4", tooldir),
> pathf("%s/compile", tooldir), writeExec)
> > -     }
> > ++            }
> > ++    }
> >
> >       // Check that there are no new files in $GOROOT/bin other than
> > -@@ -1477,8 +1548,11 @@ func cmdbootstrap() {
> > +     // go and gofmt and $GOOS_$GOARCH (target bin when
> cross-compiling).
> > +@@ -1585,8 +1655,12 @@ func cmdbootstrap() {
> >               }
> >       }
> >
> > --    // Remove go_bootstrap now that we're done.
> > --    xremove(pathf("%s/go_bootstrap", tooldir))
> >  +    // Except that for split host/target cross-builds, we need to
> >  +    // keep it.
> >  +    if !crossBuild {
> > -+            xremove(pathf("%s/go_bootstrap", tooldir))
> > -+    }
> > +     // Remove go_bootstrap now that we're done.
> > +     xremove(pathf("%s/go_bootstrap"+exe, tooldir))
> > ++}
> >
> >       if goos == "android" {
> >               // Make sure the exec wrapper will sync a fresh $GOROOT to
> the device.
> >  --
> > -2.30.2
> > +2.43.0
> >
> > diff --git
> a/meta/recipes-devtools/go/go/0006-cmd-go-make-GOROOT-precious-by-default.patch
> b/meta/recipes-devtools/go/go/0006-cmd-go-make-GOROOT-precious-by-default.patch
> > index 520e41da86..d118e726c6 100644
> > ---
> a/meta/recipes-devtools/go/go/0006-cmd-go-make-GOROOT-precious-by-default.patch
> > +++
> b/meta/recipes-devtools/go/go/0006-cmd-go-make-GOROOT-precious-by-default.patch
> > @@ -1,10 +1,8 @@
> > -From efab470498bb0a30ee2d00455a0c8c10459f6347 Mon Sep 17 00:00:00 2001
> > +From aff5a740d6286c04beb0593fc68b0aea5a95ad39 Mon Sep 17 00:00:00 2001
> >  From: Alex Kube <alexander.j.kube@gmail.com>
> >  Date: Wed, 23 Oct 2019 21:18:56 +0430
> >  Subject: [PATCH 6/9] cmd/go: make GOROOT precious by default
> >
> > -Upstream-Status: Inappropriate [OE specific]
> > -
> >  The go build tool normally rebuilds whatever it detects is
> >  stale.  This can be a problem when GOROOT is intended to
> >  be read-only and the go runtime has been built as a shared
> > @@ -20,7 +18,10 @@ Adapted to Go 1.13 from patches originally submitted
> to
> >  the meta/recipes-devtools/go tree by
> >  Matt Madison <matt@madison.systems>.
> >
> > +Upstream-Status: Inappropriate [OE specific]
> > +
> >  Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
> > +Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
> >  ---
> >   src/cmd/go/internal/work/action.go |  3 +++
> >   src/cmd/go/internal/work/build.go  |  6 ++++++
> > @@ -28,10 +29,10 @@ Signed-off-by: Alexander J Kube <
> alexander.j.kube@gmail.com>
> >   3 files changed, 34 insertions(+)
> >
> >  diff --git a/src/cmd/go/internal/work/action.go
> b/src/cmd/go/internal/work/action.go
> > -index 8beb134..68a8cfe 100644
> > +index d4d0a71..42149d2 100644
> >  --- a/src/cmd/go/internal/work/action.go
> >  +++ b/src/cmd/go/internal/work/action.go
> > -@@ -718,6 +718,9 @@ func (b *Builder) addTransitiveLinkDeps(a, a1
> *Action, shlib string) {
> > +@@ -730,6 +730,9 @@ func (b *Builder) addTransitiveLinkDeps(a, a1
> *Action, shlib string) {
> >                       if p1 == nil || p1.Shlib == "" ||
> haveShlib[filepath.Base(p1.Shlib)] {
> >                               continue
> >                       }
> > @@ -42,10 +43,10 @@ index 8beb134..68a8cfe 100644
> >                       // TODO(rsc): The use of ModeInstall here is
> suspect, but if we only do ModeBuild,
> >                       // we'll end up building an overall library or
> executable that depends at runtime
> >  diff --git a/src/cmd/go/internal/work/build.go
> b/src/cmd/go/internal/work/build.go
> > -index 2f2860a..8cc6166 100644
> > +index e2e0e07..1c84137 100644
> >  --- a/src/cmd/go/internal/work/build.go
> >  +++ b/src/cmd/go/internal/work/build.go
> > -@@ -217,6 +217,8 @@ See also: go install, go get, go clean.
> > +@@ -228,6 +228,8 @@ See also: go install, go get, go clean.
> >
> >   const concurrentGCBackendCompilationEnabledByDefault = true
> >
> > @@ -54,7 +55,7 @@ index 2f2860a..8cc6166 100644
> >   func init() {
> >       // break init cycle
> >       CmdBuild.Run = runBuild
> > -@@ -230,6 +232,10 @@ func init() {
> > +@@ -241,6 +243,10 @@ func init() {
> >               AddCoverFlags(CmdBuild, nil)
> >               AddCoverFlags(CmdInstall, nil)
> >       }
> > @@ -66,11 +67,11 @@ index 2f2860a..8cc6166 100644
> >
> >   // Note that flags consulted by other parts of the code
> >  diff --git a/src/cmd/go/internal/work/exec.go
> b/src/cmd/go/internal/work/exec.go
> > -index 62e1774..cde867b 100644
> > +index e3dd486..0ea5316 100644
> >  --- a/src/cmd/go/internal/work/exec.go
> >  +++ b/src/cmd/go/internal/work/exec.go
> > -@@ -546,6 +546,23 @@ func (b *Builder) build(ctx context.Context, a
> *Action) (err error) {
> > -             return errors.New("cannot compile Go " +
> p.Module.GoVersion + " code")
> > +@@ -539,6 +539,23 @@ func (b *Builder) build(ctx context.Context, a
> *Action) (err error) {
> > +             return err
> >       }
> >
> >  +    if goRootPrecious && (a.Package.Standard || a.Package.Goroot) {
> > @@ -93,7 +94,7 @@ index 62e1774..cde867b 100644
> >       if err := b.Mkdir(a.Objdir); err != nil {
> >               return err
> >       }
> > -@@ -1643,6 +1660,14 @@ func (b *Builder) linkShared(ctx
> context.Context, a *Action) (err error) {
> > +@@ -1722,6 +1739,14 @@ func (b *Builder) linkShared(ctx
> context.Context, a *Action) (err error) {
> >               return err
> >       }
> >
> > @@ -109,5 +110,5 @@ index 62e1774..cde867b 100644
> >               return err
> >       }
> >  --
> > -2.30.2
> > +2.43.0
> >
> > diff --git
> a/meta/recipes-devtools/go/go/0007-exec.go-do-not-write-linker-flags-into-buildids.patch
> b/meta/recipes-devtools/go/go/0007-exec.go-do-not-write-linker-flags-into-buildids.patch
> > index 7d9869b536..3e0ba35d81 100644
> > ---
> a/meta/recipes-devtools/go/go/0007-exec.go-do-not-write-linker-flags-into-buildids.patch
> > +++
> b/meta/recipes-devtools/go/go/0007-exec.go-do-not-write-linker-flags-into-buildids.patch
> > @@ -1,4 +1,4 @@
> > -From 0ba747e6a4b251a0d9eed0cfd8f8c491bb508040 Mon Sep 17 00:00:00 2001
> > +From 619991feab04f331d081a91243434ccd859f611d Mon Sep 17 00:00:00 2001
> >  From: Alexander Kanavin <alex.kanavin@gmail.com>
> >  Date: Mon, 23 Nov 2020 19:22:04 +0000
> >  Subject: [PATCH 7/9] exec.go: do not write linker flags into buildids
> > @@ -9,16 +9,18 @@ To make this acceptable to upstream, we probably need
> to trim the flags,
> >  removing those known to be buildhost-specific.
> >
> >  Upstream-Status: Inappropriate [needs upstream discussion]
> > +
> >  Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> > +Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
> >  ---
> >   src/cmd/go/internal/work/exec.go | 4 ++--
> >   1 file changed, 2 insertions(+), 2 deletions(-)
> >
> >  diff --git a/src/cmd/go/internal/work/exec.go
> b/src/cmd/go/internal/work/exec.go
> > -index cde867b..5cb1812 100644
> > +index 0ea5316..d7e2d51 100644
> >  --- a/src/cmd/go/internal/work/exec.go
> >  +++ b/src/cmd/go/internal/work/exec.go
> > -@@ -1331,7 +1331,7 @@ func (b *Builder) linkActionID(a *Action)
> cache.ActionID {
> > +@@ -1357,7 +1357,7 @@ func (b *Builder) linkActionID(a *Action)
> cache.ActionID {
> >       }
> >
> >       // Toolchain-dependent configuration, shared with
> b.linkSharedActionID.
> > @@ -27,7 +29,7 @@ index cde867b..5cb1812 100644
> >
> >       // Input files.
> >       for _, a1 := range a.Deps {
> > -@@ -1626,7 +1626,7 @@ func (b *Builder) linkSharedActionID(a *Action)
> cache.ActionID {
> > +@@ -1705,7 +1705,7 @@ func (b *Builder) linkSharedActionID(a *Action)
> cache.ActionID {
> >       fmt.Fprintf(h, "goos %s goarch %s\n", cfg.Goos, cfg.Goarch)
> >
> >       // Toolchain-dependent configuration, shared with b.linkActionID.
> > @@ -37,5 +39,5 @@ index cde867b..5cb1812 100644
> >       // Input files.
> >       for _, a1 := range a.Deps {
> >  --
> > -2.30.2
> > +2.43.0
> >
> > diff --git
> a/meta/recipes-devtools/go/go/0008-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch
> b/meta/recipes-devtools/go/go/0008-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch
> > index fe830ce35c..58512207a8 100644
> > ---
> a/meta/recipes-devtools/go/go/0008-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch
> > +++
> b/meta/recipes-devtools/go/go/0008-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch
> > @@ -1,4 +1,4 @@
> > -From 1cbb416538a9c7c3fbedcb23f4d90d5c48becca8 Mon Sep 17 00:00:00 2001
> > +From e0999902687e2e394499f7153db8d62440c4dab0 Mon Sep 17 00:00:00 2001
> >  From: Alexander Kanavin <alex.kanavin@gmail.com>
> >  Date: Tue, 10 Nov 2020 16:33:27 +0000
> >  Subject: [PATCH 8/9] src/cmd/dist/buildgo.go: do not hardcode host
> compilers
> > @@ -8,16 +8,18 @@ These come from $CC/$CXX on the build host and are not
> useful on targets;
> >  additionally as they contain host specific paths, this helps
> reproducibility.
> >
> >  Upstream-Status: Inappropriate [needs upstream discussion]
> > +
> >  Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> > +Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
> >  ---
> >   src/cmd/dist/buildgo.go | 8 ++++----
> >   1 file changed, 4 insertions(+), 4 deletions(-)
> >
> >  diff --git a/src/cmd/dist/buildgo.go b/src/cmd/dist/buildgo.go
> > -index 29b0167..63a49f0 100644
> > +index 884e9d7..2f52eda 100644
> >  --- a/src/cmd/dist/buildgo.go
> >  +++ b/src/cmd/dist/buildgo.go
> > -@@ -33,8 +33,8 @@ func mkzdefaultcc(dir, file string) {
> > +@@ -51,8 +51,8 @@ func mkzdefaultcc(dir, file string) {
> >               fmt.Fprintf(&buf, "package cfg\n")
> >               fmt.Fprintln(&buf)
> >               fmt.Fprintf(&buf, "const DefaultPkgConfig = `%s`\n",
> defaultpkgconfig)
> > @@ -28,7 +30,7 @@ index 29b0167..63a49f0 100644
> >               writefile(buf.String(), file, writeSkipSame)
> >               return
> >       }
> > -@@ -45,8 +45,8 @@ func mkzdefaultcc(dir, file string) {
> > +@@ -62,8 +62,8 @@ func mkzdefaultcc(dir, file string) {
> >       fmt.Fprintf(&buf, "package main\n")
> >       fmt.Fprintln(&buf)
> >       fmt.Fprintf(&buf, "const defaultPkgConfig = `%s`\n",
> defaultpkgconfig)
> > @@ -40,5 +42,5 @@ index 29b0167..63a49f0 100644
> >   }
> >
> >  --
> > -2.30.2
> > +2.43.0
> >
> > diff --git
> a/meta/recipes-devtools/go/go/0009-go-Filter-build-paths-on-staticly-linked-arches.patch
> b/meta/recipes-devtools/go/go/0009-go-Filter-build-paths-on-staticly-linked-arches.patch
> > index 49da5f6297..597a4e2104 100644
> > ---
> a/meta/recipes-devtools/go/go/0009-go-Filter-build-paths-on-staticly-linked-arches.patch
> > +++
> b/meta/recipes-devtools/go/go/0009-go-Filter-build-paths-on-staticly-linked-arches.patch
> > @@ -1,4 +1,4 @@
> > -From 18011f72125bbea273d07ee5d792ac0ce6059572 Mon Sep 17 00:00:00 2001
> > +From 6c2438f187ca912c54a71b4ac65ab98999a019d2 Mon Sep 17 00:00:00 2001
> >  From: Richard Purdie <richard.purdie@linuxfoundation.org>
> >  Date: Sat, 2 Jul 2022 23:08:13 +0100
> >  Subject: [PATCH 9/9] go: Filter build paths on staticly linked arches
> > @@ -11,17 +11,18 @@ on mips/ppc.
> >  Upstream-Status: Submitted [https://github.com/golang/go/pull/56410]
> >
> >  Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
> > +Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
> >  ---
> >   src/cmd/go/internal/load/pkg.go | 15 +++++++++++++--
> >   1 file changed, 13 insertions(+), 2 deletions(-)
> >
> >  diff --git a/src/cmd/go/internal/load/pkg.go
> b/src/cmd/go/internal/load/pkg.go
> > -index f427e29..6d6dc4e 100644
> > +index c0e6265..b199fee 100644
> >  --- a/src/cmd/go/internal/load/pkg.go
> >  +++ b/src/cmd/go/internal/load/pkg.go
> > -@@ -2270,6 +2270,17 @@ func (p *Package) collectDeps() {
> > - // to their VCS information (vcsStatusError).
> > - var vcsStatusCache par.Cache
> > +@@ -2269,6 +2269,17 @@ func appendBuildSetting(info *debug.BuildInfo,
> key, value string) {
> > +     info.Settings = append(info.Settings, debug.BuildSetting{Key: key,
> Value: value})
> > + }
> >
> >  +func filterCompilerFlags(flags string) string {
> >  +    var newflags []string
> > @@ -34,10 +35,10 @@ index f427e29..6d6dc4e 100644
> >  +    return strings.Join(newflags, " ")
> >  +}
> >  +
> > - // setBuildInfo gathers build information, formats it as a string to be
> > - // embedded in the binary, then sets p.Internal.BuildInfo to that
> string.
> > - // setBuildInfo should only be called on a main package with no errors.
> > -@@ -2376,7 +2387,7 @@ func (p *Package) setBuildInfo(autoVCS bool) {
> > + // setBuildInfo gathers build information and sets it into
> > + // p.Internal.BuildInfo, which will later be formatted as a string and
> embedded
> > + // in the binary. setBuildInfo should only be called on a main package
> with no
> > +@@ -2376,7 +2387,7 @@ func (p *Package) setBuildInfo(ctx
> context.Context, autoVCS bool) {
> >       if gcflags := BuildGcflags.String(); gcflags != "" &&
> cfg.BuildContext.Compiler == "gc" {
> >               appendSetting("-gcflags", gcflags)
> >       }
> > @@ -46,7 +47,7 @@ index f427e29..6d6dc4e 100644
> >               // https://go.dev/issue/52372: only include ldflags if
> -trimpath is not set,
> >               // since it can include system paths through various
> linker flags (notably
> >               // -extar, -extld, and -extldflags).
> > -@@ -2422,7 +2433,7 @@ func (p *Package) setBuildInfo(autoVCS bool) {
> > +@@ -2419,7 +2430,7 @@ func (p *Package) setBuildInfo(ctx
> context.Context, autoVCS bool) {
> >       // subset of flags that are known not to be paths?
> >       if cfg.BuildContext.CgoEnabled && !cfg.BuildTrimpath {
> >               for _, name := range []string{"CGO_CFLAGS",
> "CGO_CPPFLAGS", "CGO_CXXFLAGS", "CGO_LDFLAGS"} {
> > @@ -56,5 +57,5 @@ index f427e29..6d6dc4e 100644
> >       }
> >       appendSetting("GOARCH", cfg.BuildContext.GOARCH)
> >  --
> > -2.30.2
> > +2.43.0
> >
> > diff --git a/meta/recipes-devtools/go/go_1.20.12.bb
> b/meta/recipes-devtools/go/go_1.21.0.bb
> > similarity index 100%
> > rename from meta/recipes-devtools/go/go_1.20.12.bb
> > rename to meta/recipes-devtools/go/go_1.21.0.bb
> > --
> > 2.43.0
> >
>
> >
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#191943):
> https://lists.openembedded.org/g/openembedded-core/message/191943
> > Mute This Topic: https://lists.openembedded.org/mt/103031554/3617179
> > Group Owner: openembedded-core+owner@lists.openembedded.org
> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> alexandre.belloni@bootlin.com]
> > -=-=-=-=-=-=-=-=-=-=-=-
> >
>
>
> --
> Alexandre Belloni, co-owner and COO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
>
diff mbox series

Patch

diff --git a/meta/conf/distro/include/tcmode-default.inc b/meta/conf/distro/include/tcmode-default.inc
index 707402e6eb..feebe5d30e 100644
--- a/meta/conf/distro/include/tcmode-default.inc
+++ b/meta/conf/distro/include/tcmode-default.inc
@@ -23,7 +23,7 @@  GDBVERSION ?= "13.%"
 GLIBCVERSION ?= "2.38%"
 LINUXLIBCVERSION ?= "6.5%"
 QEMUVERSION ?= "8.1%"
-GOVERSION ?= "1.20%"
+GOVERSION ?= "1.21%"
 LLVMVERSION ?= "17.%"
 RUSTVERSION ?= "1.70%"
 
diff --git a/meta/recipes-devtools/go/go-1.20.12.inc b/meta/recipes-devtools/go/go-1.21.0.inc
similarity index 89%
rename from meta/recipes-devtools/go/go-1.20.12.inc
rename to meta/recipes-devtools/go/go-1.21.0.inc
index 9be56c6707..2933793b8b 100644
--- a/meta/recipes-devtools/go/go-1.20.12.inc
+++ b/meta/recipes-devtools/go/go-1.21.0.inc
@@ -15,4 +15,4 @@  SRC_URI += "\
     file://0008-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch \
     file://0009-go-Filter-build-paths-on-staticly-linked-arches.patch \
 "
-SRC_URI[main.sha256sum] = "c5bf934751d31c315c1d0bb5fb02296545fa6d08923566f7a5afec81f2ed27d6"
+SRC_URI[main.sha256sum] = "818d46ede85682dd551ad378ef37a4d247006f12ec59b5b755601d2ce114369a"
diff --git a/meta/recipes-devtools/go/go-binary-native_1.20.12.bb b/meta/recipes-devtools/go/go-binary-native_1.21.0.bb
similarity index 78%
rename from meta/recipes-devtools/go/go-binary-native_1.20.12.bb
rename to meta/recipes-devtools/go/go-binary-native_1.21.0.bb
index e555412a19..0b8086e7b9 100644
--- a/meta/recipes-devtools/go/go-binary-native_1.20.12.bb
+++ b/meta/recipes-devtools/go/go-binary-native_1.21.0.bb
@@ -9,9 +9,9 @@  PROVIDES = "go-native"
 
 # Checksums available at https://go.dev/dl/
 SRC_URI = "https://dl.google.com/go/go${PV}.${BUILD_GOOS}-${BUILD_GOARCH}.tar.gz;name=go_${BUILD_GOTUPLE}"
-SRC_URI[go_linux_amd64.sha256sum] = "9c5d48c54dd8b0a3b2ef91b0f92a1190aa01f11d26e98033efa64c46a30bba7b"
-SRC_URI[go_linux_arm64.sha256sum] = "8afe8e3fb6972eaa2179ef0a71678c67f26509fab4f0f67c4b00f4cdfa92dc87"
-SRC_URI[go_linux_ppc64le.sha256sum] = "2ae0ec3736216dfbd7b01ff679842dc1bed365e53a024d522645bcffd01c7328"
+SRC_URI[go_linux_amd64.sha256sum] = "d0398903a16ba2232b389fb31032ddf57cac34efda306a0eebac34f0965a0742"
+SRC_URI[go_linux_arm64.sha256sum] = "f3d4548edf9b22f26bbd49720350bbfe59d75b7090a1a2bff1afad8214febaf3"
+SRC_URI[go_linux_ppc64le.sha256sum] = "e938ffc81d8ebe5efc179240960ba22da6a841ff05d5cab7ce2547112b14a47f"
 
 UPSTREAM_CHECK_URI = "https://golang.org/dl/"
 UPSTREAM_CHECK_REGEX = "go(?P<pver>\d+(\.\d+)+)\.linux"
diff --git a/meta/recipes-devtools/go/go-cross-canadian_1.20.12.bb b/meta/recipes-devtools/go/go-cross-canadian_1.21.0.bb
similarity index 100%
rename from meta/recipes-devtools/go/go-cross-canadian_1.20.12.bb
rename to meta/recipes-devtools/go/go-cross-canadian_1.21.0.bb
diff --git a/meta/recipes-devtools/go/go-cross_1.20.12.bb b/meta/recipes-devtools/go/go-cross_1.21.0.bb
similarity index 100%
rename from meta/recipes-devtools/go/go-cross_1.20.12.bb
rename to meta/recipes-devtools/go/go-cross_1.21.0.bb
diff --git a/meta/recipes-devtools/go/go-crosssdk_1.20.12.bb b/meta/recipes-devtools/go/go-crosssdk_1.21.0.bb
similarity index 100%
rename from meta/recipes-devtools/go/go-crosssdk_1.20.12.bb
rename to meta/recipes-devtools/go/go-crosssdk_1.21.0.bb
diff --git a/meta/recipes-devtools/go/go-native_1.20.12.bb b/meta/recipes-devtools/go/go-native_1.21.0.bb
similarity index 100%
rename from meta/recipes-devtools/go/go-native_1.20.12.bb
rename to meta/recipes-devtools/go/go-native_1.21.0.bb
diff --git a/meta/recipes-devtools/go/go-runtime_1.20.12.bb b/meta/recipes-devtools/go/go-runtime_1.21.0.bb
similarity index 100%
rename from meta/recipes-devtools/go/go-runtime_1.20.12.bb
rename to meta/recipes-devtools/go/go-runtime_1.21.0.bb
diff --git a/meta/recipes-devtools/go/go/0001-cmd-go-make-content-based-hash-generation-less-pedan.patch b/meta/recipes-devtools/go/go/0001-cmd-go-make-content-based-hash-generation-less-pedan.patch
index 9a2551031a..3bd756449e 100644
--- a/meta/recipes-devtools/go/go/0001-cmd-go-make-content-based-hash-generation-less-pedan.patch
+++ b/meta/recipes-devtools/go/go/0001-cmd-go-make-content-based-hash-generation-less-pedan.patch
@@ -1,4 +1,4 @@ 
-From 10766ca6f4007b96e3f6bf4fb496e5df74397eb9 Mon Sep 17 00:00:00 2001
+From 9a6c5040cbcd88b10ceb8ceaebc8d6158c086670 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Mon, 28 Mar 2022 10:59:03 -0700
 Subject: [PATCH 1/9] cmd/go: make content-based hash generation less pedantic
@@ -25,16 +25,17 @@  Upstream-Status: Inappropriate [OE specific]
 Signed-off-by: Alex Kube <alexander.j.kube@gmail.com>
 Signed-off-by: Matt Madison <matt@madison.systems>
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
 ---
  src/cmd/go/internal/envcmd/env.go |  2 +-
  src/cmd/go/internal/work/exec.go  | 44 ++++++++++++++++++++++++-------
  2 files changed, 36 insertions(+), 10 deletions(-)
 
 diff --git a/src/cmd/go/internal/envcmd/env.go b/src/cmd/go/internal/envcmd/env.go
-index 66ef5ce..fb7448a 100644
+index c7c2e83..4a90d9d 100644
 --- a/src/cmd/go/internal/envcmd/env.go
 +++ b/src/cmd/go/internal/envcmd/env.go
-@@ -183,7 +183,7 @@ func ExtraEnvVarsCostly() []cfg.EnvVar {
+@@ -189,7 +189,7 @@ func ExtraEnvVarsCostly() []cfg.EnvVar {
  		}
  	}()
  
@@ -44,10 +45,10 @@  index 66ef5ce..fb7448a 100644
  		// Should not happen - b.CFlags was given an empty package.
  		fmt.Fprintf(os.Stderr, "go: invalid cflags: %v\n", err)
 diff --git a/src/cmd/go/internal/work/exec.go b/src/cmd/go/internal/work/exec.go
-index 67d1193..62e1774 100644
+index 13d2a78..e3dd486 100644
 --- a/src/cmd/go/internal/work/exec.go
 +++ b/src/cmd/go/internal/work/exec.go
-@@ -223,6 +223,8 @@ func (b *Builder) Do(ctx context.Context, root *Action) {
+@@ -231,6 +231,8 @@ func (b *Builder) Do(ctx context.Context, root *Action) {
  	writeActionGraph()
  }
  
@@ -56,7 +57,7 @@  index 67d1193..62e1774 100644
  // buildActionID computes the action ID for a build action.
  func (b *Builder) buildActionID(a *Action) cache.ActionID {
  	p := a.Package
-@@ -244,7 +246,7 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
+@@ -252,7 +254,7 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
  		if p.Module != nil {
  			fmt.Fprintf(h, "module %s@%s\n", p.Module.Path, p.Module.Version)
  		}
@@ -65,7 +66,7 @@  index 67d1193..62e1774 100644
  		// The Go compiler always hides the exact value of $GOROOT
  		// when building things in GOROOT.
  		//
-@@ -276,9 +278,9 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
+@@ -284,9 +286,9 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
  	}
  	if len(p.CgoFiles)+len(p.SwigFiles)+len(p.SwigCXXFiles) > 0 {
  		fmt.Fprintf(h, "cgo %q\n", b.toolID("cgo"))
@@ -77,7 +78,7 @@  index 67d1193..62e1774 100644
  		fmt.Fprintf(h, "CC=%q %q %q %q\n", ccExe, cppflags, cflags, ldflags)
  		// Include the C compiler tool ID so that if the C
  		// compiler changes we rebuild the package.
-@@ -286,14 +288,14 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
+@@ -294,14 +296,14 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
  			fmt.Fprintf(h, "CC ID=%q\n", ccID)
  		}
  		if len(p.CXXFiles)+len(p.SwigCXXFiles) > 0 {
@@ -94,16 +95,16 @@  index 67d1193..62e1774 100644
  			fmt.Fprintf(h, "FC=%q %q\n", fcExe, fflags)
  			if fcID, _, err := b.gccToolID(fcExe[0], "f95"); err == nil {
  				fmt.Fprintf(h, "FC ID=%q\n", fcID)
-@@ -310,7 +312,7 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
+@@ -318,7 +320,7 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
  		}
  	}
- 	if p.Internal.BuildInfo != "" {
--		fmt.Fprintf(h, "modinfo %q\n", p.Internal.BuildInfo)
-+		//fmt.Fprintf(h, "modinfo %q\n", p.Internal.BuildInfo)
+ 	if p.Internal.BuildInfo != nil {
+-		fmt.Fprintf(h, "modinfo %q\n", p.Internal.BuildInfo.String())
++		//fmt.Fprintf(h, "modinfo %q\n", p.Internal.BuildInfo.String())
  	}
  
  	// Configuration specific to compiler toolchain.
-@@ -2989,8 +2991,25 @@ func envList(key, def string) []string {
+@@ -3137,8 +3139,25 @@ func envList(key, def string) []string {
  	return args
  }
  
@@ -130,7 +131,7 @@  index 67d1193..62e1774 100644
  	if cppflags, err = buildFlags("CPPFLAGS", "", p.CgoCPPFLAGS, checkCompilerFlags); err != nil {
  		return
  	}
-@@ -3006,6 +3025,13 @@ func (b *Builder) CFlags(p *load.Package) (cppflags, cflags, cxxflags, fflags, l
+@@ -3154,6 +3173,13 @@ func (b *Builder) CFlags(p *load.Package) (cppflags, cflags, cxxflags, fflags, l
  	if ldflags, err = buildFlags("LDFLAGS", defaultCFlags, p.CgoLDFLAGS, checkLinkerFlags); err != nil {
  		return
  	}
@@ -144,7 +145,7 @@  index 67d1193..62e1774 100644
  
  	return
  }
-@@ -3021,7 +3047,7 @@ var cgoRe = lazyregexp.New(`[/\\:]`)
+@@ -3169,7 +3195,7 @@ var cgoRe = lazyregexp.New(`[/\\:]`)
  
  func (b *Builder) cgo(a *Action, cgoExe, objdir string, pcCFLAGS, pcLDFLAGS, cgofiles, gccfiles, gxxfiles, mfiles, ffiles []string) (outGo, outObj []string, err error) {
  	p := a.Package
@@ -153,7 +154,7 @@  index 67d1193..62e1774 100644
  	if err != nil {
  		return nil, nil, err
  	}
-@@ -3577,7 +3603,7 @@ func (b *Builder) swigIntSize(objdir string) (intsize string, err error) {
+@@ -3725,7 +3751,7 @@ func (b *Builder) swigIntSize(objdir string) (intsize string, err error) {
  
  // Run SWIG on one SWIG input file.
  func (b *Builder) swigOne(a *Action, p *load.Package, file, objdir string, pcCFLAGS []string, cxx bool, intgosize string) (outGo, outC string, err error) {
@@ -163,5 +164,5 @@  index 67d1193..62e1774 100644
  		return "", "", err
  	}
 -- 
-2.30.2
+2.43.0
 
diff --git a/meta/recipes-devtools/go/go/0002-cmd-go-Allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch b/meta/recipes-devtools/go/go/0002-cmd-go-Allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch
index 6abd424733..cf7ad02f86 100644
--- a/meta/recipes-devtools/go/go/0002-cmd-go-Allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch
+++ b/meta/recipes-devtools/go/go/0002-cmd-go-Allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch
@@ -1,4 +1,4 @@ 
-From 5cca2fa5997292a87302bdc7e7ed3231371e98bd Mon Sep 17 00:00:00 2001
+From e3f9a8a69d3a340c1a1d0bba566e71f20f635a43 Mon Sep 17 00:00:00 2001
 From: Alex Kube <alexander.j.kube@gmail.com>
 Date: Wed, 23 Oct 2019 21:15:37 +0430
 Subject: [PATCH 2/9] cmd/go: Allow GOTOOLDIR to be overridden in the
@@ -13,16 +13,17 @@  Matt Madison <matt@madison.systems>.
 Upstream-Status: Inappropriate [OE specific]
 
 Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
+Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
 ---
  src/cmd/dist/build.go          | 4 +++-
  src/cmd/go/internal/cfg/cfg.go | 6 +++++-
  2 files changed, 8 insertions(+), 2 deletions(-)
 
 diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go
-index c36a12e..5d31718 100644
+index 8973a87..adc9fd2 100644
 --- a/src/cmd/dist/build.go
 +++ b/src/cmd/dist/build.go
-@@ -264,7 +264,9 @@ func xinit() {
+@@ -259,7 +259,9 @@ func xinit() {
  	}
  	xatexit(rmworkdir)
  
@@ -30,14 +31,14 @@  index c36a12e..5d31718 100644
 +	if tooldir = os.Getenv("GOTOOLDIR"); tooldir == "" {
 +		tooldir = pathf("%s/pkg/tool/%s_%s", goroot, gohostos, gohostarch)
 +	}
- }
  
- // compilerEnv returns a map from "goos/goarch" to the
+ 	goversion := findgoversion()
+ 	isRelease = strings.HasPrefix(goversion, "release.") || strings.HasPrefix(goversion, "go")
 diff --git a/src/cmd/go/internal/cfg/cfg.go b/src/cmd/go/internal/cfg/cfg.go
-index 3257140..bb46253 100644
+index 8a82e55..1141fc2 100644
 --- a/src/cmd/go/internal/cfg/cfg.go
 +++ b/src/cmd/go/internal/cfg/cfg.go
-@@ -229,7 +229,11 @@ func SetGOROOT(goroot string, isTestGo bool) {
+@@ -231,7 +231,11 @@ func SetGOROOT(goroot string, isTestGo bool) {
  			// This matches the initialization of ToolDir in go/build, except for
  			// using ctxt.GOROOT and the installed GOOS and GOARCH rather than the
  			// GOROOT, GOOS, and GOARCH reported by the runtime package.
@@ -51,5 +52,5 @@  index 3257140..bb46253 100644
  	}
  }
 -- 
-2.30.2
+2.43.0
 
diff --git a/meta/recipes-devtools/go/go/0003-ld-add-soname-to-shareable-objects.patch b/meta/recipes-devtools/go/go/0003-ld-add-soname-to-shareable-objects.patch
index ced0be1998..8afa28aab0 100644
--- a/meta/recipes-devtools/go/go/0003-ld-add-soname-to-shareable-objects.patch
+++ b/meta/recipes-devtools/go/go/0003-ld-add-soname-to-shareable-objects.patch
@@ -1,4 +1,4 @@ 
-From c7536a820f713013ab1d4acef74a4c8bd970bf8f Mon Sep 17 00:00:00 2001
+From 7dde77b3ce8138314dd2736604b1b110dbcc0ac1 Mon Sep 17 00:00:00 2001
 From: Alex Kube <alexander.j.kube@gmail.com>
 Date: Wed, 23 Oct 2019 21:16:32 +0430
 Subject: [PATCH 3/9] ld: add soname to shareable objects
@@ -13,15 +13,16 @@  Matt Madison <matt@madison.systems>.
 Upstream-Status: Inappropriate [OE specific]
 
 Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
+Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
 ---
  src/cmd/link/internal/ld/lib.go | 3 +++
  1 file changed, 3 insertions(+)
 
 diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go
-index 03b9f11..e91c92f 100644
+index 91e2d51..e98b912 100644
 --- a/src/cmd/link/internal/ld/lib.go
 +++ b/src/cmd/link/internal/ld/lib.go
-@@ -1504,6 +1504,7 @@ func (ctxt *Link) hostlink() {
+@@ -1554,6 +1554,7 @@ func (ctxt *Link) hostlink() {
  				argv = append(argv, "-Wl,-z,relro")
  			}
  			argv = append(argv, "-shared")
@@ -29,7 +30,7 @@  index 03b9f11..e91c92f 100644
  			if ctxt.HeadType == objabi.Hwindows {
  				argv = addASLRargs(argv, *flagAslr)
  			} else {
-@@ -1519,6 +1520,7 @@ func (ctxt *Link) hostlink() {
+@@ -1569,6 +1570,7 @@ func (ctxt *Link) hostlink() {
  			argv = append(argv, "-Wl,-z,relro")
  		}
  		argv = append(argv, "-shared")
@@ -37,7 +38,7 @@  index 03b9f11..e91c92f 100644
  	case BuildModePlugin:
  		if ctxt.HeadType == objabi.Hdarwin {
  			argv = append(argv, "-dynamiclib")
-@@ -1527,6 +1529,7 @@ func (ctxt *Link) hostlink() {
+@@ -1577,6 +1579,7 @@ func (ctxt *Link) hostlink() {
  				argv = append(argv, "-Wl,-z,relro")
  			}
  			argv = append(argv, "-shared")
@@ -46,5 +47,5 @@  index 03b9f11..e91c92f 100644
  	}
  
 -- 
-2.30.2
+2.43.0
 
diff --git a/meta/recipes-devtools/go/go/0004-make.bash-override-CC-when-building-dist-and-go_boot.patch b/meta/recipes-devtools/go/go/0004-make.bash-override-CC-when-building-dist-and-go_boot.patch
index 85e42f7660..5dd2621adc 100644
--- a/meta/recipes-devtools/go/go/0004-make.bash-override-CC-when-building-dist-and-go_boot.patch
+++ b/meta/recipes-devtools/go/go/0004-make.bash-override-CC-when-building-dist-and-go_boot.patch
@@ -1,4 +1,4 @@ 
-From 31ff609cc3d3bfcc2f2257fda1dbaafaec31eb0b Mon Sep 17 00:00:00 2001
+From 9f59e46991074d3e3c4d00f3971e62bfcd707167 Mon Sep 17 00:00:00 2001
 From: Alex Kube <alexander.j.kube@gmail.com>
 Date: Wed, 23 Oct 2019 21:17:16 +0430
 Subject: [PATCH 4/9] make.bash: override CC when building dist and
@@ -13,24 +13,25 @@  Matt Madison <matt@madison.systems>.
 Upstream-Status: Inappropriate [OE specific]
 
 Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
+Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
 ---
  src/make.bash | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/src/make.bash b/src/make.bash
-index c07f39b..6ca7242 100755
+index 755b3b0..eddfc3c 100755
 --- a/src/make.bash
 +++ b/src/make.bash
-@@ -194,7 +194,7 @@ if [ "$GOROOT_BOOTSTRAP" = "$GOROOT" ]; then
+@@ -198,7 +198,7 @@ if [ "$GOROOT_BOOTSTRAP" = "$GOROOT" ]; then
  	exit 1
  fi
  rm -f cmd/dist/dist
--GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" GO111MODULE=off GOEXPERIMENT="" GOENV=off GOFLAGS="" "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist
-+CC="${BUILD_CC:-${CC}}" GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" GO111MODULE=off GOEXPERIMENT="" GOENV=off GOFLAGS="" "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist
+-GOROOT="$GOROOT_BOOTSTRAP" nogoenv "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist
++CC="${BUILD_CC:-${CC}}" GOROOT="$GOROOT_BOOTSTRAP" nogoenv "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist
  
  # -e doesn't propagate out of eval, so check success by hand.
  eval $(./cmd/dist/dist env -p || echo FAIL=true)
-@@ -219,7 +219,7 @@ fi
+@@ -223,7 +223,7 @@ fi
  # Run dist bootstrap to complete make.bash.
  # Bootstrap installs a proper cmd/dist, built with the new toolchain.
  # Throw ours, built with the bootstrap toolchain, away after bootstrap.
@@ -40,5 +41,5 @@  index c07f39b..6ca7242 100755
  
  # DO NOT ADD ANY NEW CODE HERE.
 -- 
-2.30.2
+2.43.0
 
diff --git a/meta/recipes-devtools/go/go/0005-cmd-dist-separate-host-and-target-builds.patch b/meta/recipes-devtools/go/go/0005-cmd-dist-separate-host-and-target-builds.patch
index 29598449da..f8dca65ed4 100644
--- a/meta/recipes-devtools/go/go/0005-cmd-dist-separate-host-and-target-builds.patch
+++ b/meta/recipes-devtools/go/go/0005-cmd-dist-separate-host-and-target-builds.patch
@@ -1,10 +1,8 @@ 
-From 7a191e5191c8b813e929caedb3f3918bb08692a1 Mon Sep 17 00:00:00 2001
+From 6dda78d528e60993a4688cd9d49440a726378ac8 Mon Sep 17 00:00:00 2001
 From: Alex Kube <alexander.j.kube@gmail.com>
 Date: Wed, 23 Oct 2019 21:18:12 +0430
 Subject: [PATCH 5/9] cmd/dist: separate host and target builds
 
-Upstream-Status: Inappropriate [OE specific]
-
 Change the dist tool to allow for OE-style cross-
 and cross-canadian builds:
 
@@ -33,41 +31,48 @@  Adapted to Go 1.13 from patches originally submitted to
 the meta/recipes-devtools/go tree by
 Matt Madison <matt@madison.systems>.
 
+Rework the patch to avoid identation, it's more hard to read but
+easy to rebase.
+Jose Quaresma <jose.quaresma@foundries.io>
+
+Upstream-Status: Inappropriate [OE specific]
+
 Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
+Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
 ---
- src/cmd/dist/build.go | 152 +++++++++++++++++++++++++++++++-----------
- 1 file changed, 113 insertions(+), 39 deletions(-)
+ src/cmd/dist/build.go | 76 ++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 75 insertions(+), 1 deletion(-)
 
 diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go
-index 5d31718..1c7f308 100644
+index adc9fd2..5fff592 100644
 --- a/src/cmd/dist/build.go
 +++ b/src/cmd/dist/build.go
-@@ -44,6 +44,7 @@ var (
+@@ -46,6 +46,7 @@ var (
  	goexperiment     string
  	workdir          string
  	tooldir          string
 +	build_tooldir    string
  	oldgoos          string
  	oldgoarch        string
- 	exe              string
-@@ -55,6 +56,7 @@ var (
- 	rebuildall   bool
- 	defaultclang bool
- 	noOpt        bool
-+	crossBuild   bool
+ 	oldgocache       string
+@@ -58,6 +59,7 @@ var (
+ 	rebuildall bool
+ 	noOpt      bool
+ 	isRelease  bool
++	crossBuild bool
  
  	vflag int // verbosity
  )
-@@ -267,6 +269,8 @@ func xinit() {
- 	if tooldir = os.Getenv("GOTOOLDIR"); tooldir == "" {
- 		tooldir = pathf("%s/pkg/tool/%s_%s", goroot, gohostos, gohostarch)
- 	}
+@@ -265,6 +267,8 @@ func xinit() {
+ 
+ 	goversion := findgoversion()
+ 	isRelease = strings.HasPrefix(goversion, "release.") || strings.HasPrefix(goversion, "go")
 +
 +	build_tooldir = pathf("%s/pkg/tool/native_native", goroot)
  }
  
  // compilerEnv returns a map from "goos/goarch" to the
-@@ -468,8 +472,10 @@ func setup() {
+@@ -499,8 +503,10 @@ func setup() {
  	goosGoarch := pathf("%s/pkg/%s_%s", goroot, gohostos, gohostarch)
  	if rebuildall {
  		xremoveall(goosGoarch)
@@ -78,16 +83,18 @@  index 5d31718..1c7f308 100644
  	xatexit(func() {
  		if files := xreaddir(goosGoarch); len(files) == 0 {
  			xremove(goosGoarch)
-@@ -1276,17 +1282,35 @@ func cmdbootstrap() {
+@@ -1344,14 +1350,20 @@ func cmdbootstrap() {
+ 	defer timelog("end", "dist bootstrap")
  
- 	var noBanner, noClean bool
- 	var debug bool
+ 	var debug, distpack, force, noBanner, noClean bool
 +	var hostOnly bool
 +	var targetOnly bool
 +	var toBuild = []string{"std", "cmd"}
 +
  	flag.BoolVar(&rebuildall, "a", rebuildall, "rebuild all")
  	flag.BoolVar(&debug, "d", debug, "enable debugging of bootstrap process")
+ 	flag.BoolVar(&distpack, "distpack", distpack, "write distribution files to pkg/distpack")
+ 	flag.BoolVar(&force, "force", force, "build even if the port is marked as broken")
  	flag.BoolVar(&noBanner, "no-banner", noBanner, "do not print banner")
  	flag.BoolVar(&noClean, "no-clean", noClean, "print deprecation warning")
 +	flag.BoolVar(&hostOnly, "host-only", hostOnly, "build only host binaries, not target")
@@ -98,6 +105,8 @@  index 5d31718..1c7f308 100644
  
  	if noClean {
  		xprintf("warning: --no-clean is deprecated and has no effect; use 'go install std cmd' instead\n")
+@@ -1363,6 +1375,18 @@ func cmdbootstrap() {
+ 			"Use the -force flag to build anyway.\n", goos, goarch)
  	}
  
 +	if hostOnly && targetOnly {
@@ -115,47 +124,46 @@  index 5d31718..1c7f308 100644
  	// Set GOPATH to an internal directory. We shouldn't actually
  	// need to store files here, since the toolchain won't
  	// depend on modules outside of vendor directories, but if
-@@ -1354,9 +1378,14 @@ func cmdbootstrap() {
+@@ -1440,9 +1464,14 @@ func cmdbootstrap() {
  		xprintf("\n")
  	}
  
--	gogcflags = os.Getenv("GO_GCFLAGS") // we were using $BOOT_GO_GCFLAGS until now
--	setNoOpt()
--	goldflags = os.Getenv("GO_LDFLAGS") // we were using $BOOT_GO_LDFLAGS until now
 +	// For split host/target cross/cross-canadian builds, we don't
 +	// want to be setting these flags until after we have compiled
 +	// the toolchain that runs on the build host.
 +	if !crossBuild {
-+		gogcflags = os.Getenv("GO_GCFLAGS") // we were using $BOOT_GO_GCFLAGS until now
-+		setNoOpt()
-+		goldflags = os.Getenv("GO_LDFLAGS") // we were using $BOOT_GO_LDFLAGS until now
-+	}
+ 	gogcflags = os.Getenv("GO_GCFLAGS") // we were using $BOOT_GO_GCFLAGS until now
+ 	setNoOpt()
+ 	goldflags = os.Getenv("GO_LDFLAGS") // we were using $BOOT_GO_LDFLAGS until now
++}
  	goBootstrap := pathf("%s/go_bootstrap", tooldir)
- 	cmdGo := pathf("%s/go", gorootBin)
  	if debug {
-@@ -1385,7 +1414,11 @@ func cmdbootstrap() {
+ 		run("", ShowOutput|CheckExit, pathf("%s/compile", tooldir), "-V=full")
+@@ -1470,7 +1499,11 @@ func cmdbootstrap() {
  		xprintf("\n")
  	}
  	xprintf("Building Go toolchain2 using go_bootstrap and Go toolchain1.\n")
--	os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))
-+	if crossBuild {
++	if !crossBuild {
+ 	os.Setenv("CC", compilerEnvLookup("CC", defaultcc, goos, goarch))
++} else {
 +		os.Setenv("CC", defaultcc[""])
-+	} else {
-+		os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))
 +	}
  	// Now that cmd/go is in charge of the build process, enable GOEXPERIMENT.
  	os.Setenv("GOEXPERIMENT", goexperiment)
- 	goInstall(goBootstrap, toolchain...)
-@@ -1421,46 +1454,84 @@ func cmdbootstrap() {
- 		copyfile(pathf("%s/compile3", tooldir), pathf("%s/compile", tooldir), writeExec)
+ 	// No need to enable PGO for toolchain2.
+@@ -1523,6 +1556,7 @@ func cmdbootstrap() {
+ 		os.Setenv("GOCACHE", oldgocache)
  	}
  
--	if goos == oldgoos && goarch == oldgoarch {
--		// Common case - not setting up for cross-compilation.
--		timelog("build", "toolchain")
--		if vflag > 0 {
--			xprintf("\n")
-+	if crossBuild {
++	if !crossBuild {
+ 	if goos == oldgoos && goarch == oldgoarch {
+ 		// Common case - not setting up for cross-compilation.
+ 		timelog("build", "toolchain")
+@@ -1566,6 +1600,42 @@ func cmdbootstrap() {
+ 		checkNotStale(toolenv(), goBootstrap, toolchain...)
+ 		copyfile(pathf("%s/compile4", tooldir), pathf("%s/compile", tooldir), writeExec)
+ 	}
++} else {
 +		gogcflags = os.Getenv("GO_GCFLAGS")
 +		goldflags = os.Getenv("GO_LDFLAGS")
 +		tool_files, _ := filepath.Glob(pathf("%s/*", tooldir))
@@ -171,8 +179,8 @@  index 5d31718..1c7f308 100644
 +				xprintf("\n")
 +			}
 +			xprintf("Building %s for host, %s/%s.\n", strings.Join(toBuild, ","), goos, goarch)
-+			goInstall(goBootstrap, toBuild...)
-+			checkNotStale(goBootstrap, toBuild...)
++			goInstall(toolenv(), goBootstrap, toBuild...)
++			checkNotStale(toolenv(), goBootstrap, toBuild...)
 +			// Skip cmdGo staleness checks here, since we can't necessarily run the cmdGo binary
 +
 +			timelog("build", "target toolchain")
@@ -184,99 +192,29 @@  index 5d31718..1c7f308 100644
 +			goarch = oldgoarch
 +			os.Setenv("GOOS", goos)
 +			os.Setenv("GOARCH", goarch)
-+			os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))
++			os.Setenv("CC", compilerEnvLookup("CC", defaultcc, goos, goarch))
 +			xprintf("Building %s for target, %s/%s.\n", strings.Join(toBuild, ","), goos, goarch)
-+			goInstall(goBootstrap, toBuild...)
-+			checkNotStale(goBootstrap, toBuild...)
++			goInstall(toolenv(), goBootstrap, toBuild...)
++			checkNotStale(toolenv(), goBootstrap, toBuild...)
 +			// Skip cmdGo staleness checks here, since we can't run the target's cmdGo binary
- 		}
--		xprintf("Building packages and commands for %s/%s.\n", goos, goarch)
- 	} else {
--		// GOOS/GOARCH does not match GOHOSTOS/GOHOSTARCH.
--		// Finish GOHOSTOS/GOHOSTARCH installation and then
--		// run GOOS/GOARCH installation.
--		timelog("build", "host toolchain")
--		if vflag > 0 {
--			xprintf("\n")
-+
-+		if goos == oldgoos && goarch == oldgoarch {
-+			// Common case - not setting up for cross-compilation.
-+			timelog("build", "toolchain")
-+			if vflag > 0 {
-+				xprintf("\n")
-+			}
-+			xprintf("Building packages and commands for %s/%s.\n", goos, goarch)
-+		} else {
-+			// GOOS/GOARCH does not match GOHOSTOS/GOHOSTARCH.
-+			// Finish GOHOSTOS/GOHOSTARCH installation and then
-+			// run GOOS/GOARCH installation.
-+			timelog("build", "host toolchain")
-+			if vflag > 0 {
-+				xprintf("\n")
-+			}
-+			xprintf("Building packages and commands for host, %s/%s.\n", goos, goarch)
-+			goInstall(goBootstrap, "std", "cmd")
-+			checkNotStale(goBootstrap, "std", "cmd")
-+			checkNotStale(cmdGo, "std", "cmd")
-+
-+			timelog("build", "target toolchain")
-+			if vflag > 0 {
-+				xprintf("\n")
-+			}
-+			goos = oldgoos
-+			goarch = oldgoarch
-+			os.Setenv("GOOS", goos)
-+			os.Setenv("GOARCH", goarch)
-+			os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))
-+			xprintf("Building packages and commands for target, %s/%s.\n", goos, goarch)
- 		}
--		xprintf("Building packages and commands for host, %s/%s.\n", goos, goarch)
- 		goInstall(goBootstrap, "std", "cmd")
- 		checkNotStale(goBootstrap, "std", "cmd")
- 		checkNotStale(cmdGo, "std", "cmd")
- 
--		timelog("build", "target toolchain")
--		if vflag > 0 {
--			xprintf("\n")
-+		if debug {
-+			run("", ShowOutput|CheckExit, pathf("%s/compile", tooldir), "-V=full")
-+			run("", ShowOutput|CheckExit, pathf("%s/buildid", tooldir), pathf("%s/pkg/%s_%s/runtime/internal/sys.a", goroot, goos, goarch))
-+			checkNotStale(goBootstrap, append(toolchain, "runtime/internal/sys")...)
-+			copyfile(pathf("%s/compile4", tooldir), pathf("%s/compile", tooldir), writeExec)
- 		}
--		goos = oldgoos
--		goarch = oldgoarch
--		os.Setenv("GOOS", goos)
--		os.Setenv("GOARCH", goarch)
--		os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))
--		xprintf("Building packages and commands for target, %s/%s.\n", goos, goarch)
--	}
--	targets := []string{"std", "cmd"}
--	goInstall(goBootstrap, targets...)
--	checkNotStale(goBootstrap, append(toolchain, "runtime/internal/sys")...)
--	checkNotStale(goBootstrap, targets...)
--	checkNotStale(cmdGo, targets...)
--	if debug {
--		run("", ShowOutput|CheckExit, pathf("%s/compile", tooldir), "-V=full")
--		checkNotStale(goBootstrap, append(toolchain, "runtime/internal/sys")...)
--		copyfile(pathf("%s/compile4", tooldir), pathf("%s/compile", tooldir), writeExec)
- 	}
++		}
++	}
  
  	// Check that there are no new files in $GOROOT/bin other than
-@@ -1477,8 +1548,11 @@ func cmdbootstrap() {
+ 	// go and gofmt and $GOOS_$GOARCH (target bin when cross-compiling).
+@@ -1585,8 +1655,12 @@ func cmdbootstrap() {
  		}
  	}
  
--	// Remove go_bootstrap now that we're done.
--	xremove(pathf("%s/go_bootstrap", tooldir))
 +	// Except that for split host/target cross-builds, we need to
 +	// keep it.
 +	if !crossBuild {
-+		xremove(pathf("%s/go_bootstrap", tooldir))
-+	}
+ 	// Remove go_bootstrap now that we're done.
+ 	xremove(pathf("%s/go_bootstrap"+exe, tooldir))
++}
  
  	if goos == "android" {
  		// Make sure the exec wrapper will sync a fresh $GOROOT to the device.
 -- 
-2.30.2
+2.43.0
 
diff --git a/meta/recipes-devtools/go/go/0006-cmd-go-make-GOROOT-precious-by-default.patch b/meta/recipes-devtools/go/go/0006-cmd-go-make-GOROOT-precious-by-default.patch
index 520e41da86..d118e726c6 100644
--- a/meta/recipes-devtools/go/go/0006-cmd-go-make-GOROOT-precious-by-default.patch
+++ b/meta/recipes-devtools/go/go/0006-cmd-go-make-GOROOT-precious-by-default.patch
@@ -1,10 +1,8 @@ 
-From efab470498bb0a30ee2d00455a0c8c10459f6347 Mon Sep 17 00:00:00 2001
+From aff5a740d6286c04beb0593fc68b0aea5a95ad39 Mon Sep 17 00:00:00 2001
 From: Alex Kube <alexander.j.kube@gmail.com>
 Date: Wed, 23 Oct 2019 21:18:56 +0430
 Subject: [PATCH 6/9] cmd/go: make GOROOT precious by default
 
-Upstream-Status: Inappropriate [OE specific]
-
 The go build tool normally rebuilds whatever it detects is
 stale.  This can be a problem when GOROOT is intended to
 be read-only and the go runtime has been built as a shared
@@ -20,7 +18,10 @@  Adapted to Go 1.13 from patches originally submitted to
 the meta/recipes-devtools/go tree by
 Matt Madison <matt@madison.systems>.
 
+Upstream-Status: Inappropriate [OE specific]
+
 Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
+Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
 ---
  src/cmd/go/internal/work/action.go |  3 +++
  src/cmd/go/internal/work/build.go  |  6 ++++++
@@ -28,10 +29,10 @@  Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
  3 files changed, 34 insertions(+)
 
 diff --git a/src/cmd/go/internal/work/action.go b/src/cmd/go/internal/work/action.go
-index 8beb134..68a8cfe 100644
+index d4d0a71..42149d2 100644
 --- a/src/cmd/go/internal/work/action.go
 +++ b/src/cmd/go/internal/work/action.go
-@@ -718,6 +718,9 @@ func (b *Builder) addTransitiveLinkDeps(a, a1 *Action, shlib string) {
+@@ -730,6 +730,9 @@ func (b *Builder) addTransitiveLinkDeps(a, a1 *Action, shlib string) {
  			if p1 == nil || p1.Shlib == "" || haveShlib[filepath.Base(p1.Shlib)] {
  				continue
  			}
@@ -42,10 +43,10 @@  index 8beb134..68a8cfe 100644
  			// TODO(rsc): The use of ModeInstall here is suspect, but if we only do ModeBuild,
  			// we'll end up building an overall library or executable that depends at runtime
 diff --git a/src/cmd/go/internal/work/build.go b/src/cmd/go/internal/work/build.go
-index 2f2860a..8cc6166 100644
+index e2e0e07..1c84137 100644
 --- a/src/cmd/go/internal/work/build.go
 +++ b/src/cmd/go/internal/work/build.go
-@@ -217,6 +217,8 @@ See also: go install, go get, go clean.
+@@ -228,6 +228,8 @@ See also: go install, go get, go clean.
  
  const concurrentGCBackendCompilationEnabledByDefault = true
  
@@ -54,7 +55,7 @@  index 2f2860a..8cc6166 100644
  func init() {
  	// break init cycle
  	CmdBuild.Run = runBuild
-@@ -230,6 +232,10 @@ func init() {
+@@ -241,6 +243,10 @@ func init() {
  		AddCoverFlags(CmdBuild, nil)
  		AddCoverFlags(CmdInstall, nil)
  	}
@@ -66,11 +67,11 @@  index 2f2860a..8cc6166 100644
  
  // Note that flags consulted by other parts of the code
 diff --git a/src/cmd/go/internal/work/exec.go b/src/cmd/go/internal/work/exec.go
-index 62e1774..cde867b 100644
+index e3dd486..0ea5316 100644
 --- a/src/cmd/go/internal/work/exec.go
 +++ b/src/cmd/go/internal/work/exec.go
-@@ -546,6 +546,23 @@ func (b *Builder) build(ctx context.Context, a *Action) (err error) {
- 		return errors.New("cannot compile Go " + p.Module.GoVersion + " code")
+@@ -539,6 +539,23 @@ func (b *Builder) build(ctx context.Context, a *Action) (err error) {
+ 		return err
  	}
  
 +	if goRootPrecious && (a.Package.Standard || a.Package.Goroot) {
@@ -93,7 +94,7 @@  index 62e1774..cde867b 100644
  	if err := b.Mkdir(a.Objdir); err != nil {
  		return err
  	}
-@@ -1643,6 +1660,14 @@ func (b *Builder) linkShared(ctx context.Context, a *Action) (err error) {
+@@ -1722,6 +1739,14 @@ func (b *Builder) linkShared(ctx context.Context, a *Action) (err error) {
  		return err
  	}
  
@@ -109,5 +110,5 @@  index 62e1774..cde867b 100644
  		return err
  	}
 -- 
-2.30.2
+2.43.0
 
diff --git a/meta/recipes-devtools/go/go/0007-exec.go-do-not-write-linker-flags-into-buildids.patch b/meta/recipes-devtools/go/go/0007-exec.go-do-not-write-linker-flags-into-buildids.patch
index 7d9869b536..3e0ba35d81 100644
--- a/meta/recipes-devtools/go/go/0007-exec.go-do-not-write-linker-flags-into-buildids.patch
+++ b/meta/recipes-devtools/go/go/0007-exec.go-do-not-write-linker-flags-into-buildids.patch
@@ -1,4 +1,4 @@ 
-From 0ba747e6a4b251a0d9eed0cfd8f8c491bb508040 Mon Sep 17 00:00:00 2001
+From 619991feab04f331d081a91243434ccd859f611d Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Mon, 23 Nov 2020 19:22:04 +0000
 Subject: [PATCH 7/9] exec.go: do not write linker flags into buildids
@@ -9,16 +9,18 @@  To make this acceptable to upstream, we probably need to trim the flags,
 removing those known to be buildhost-specific.
 
 Upstream-Status: Inappropriate [needs upstream discussion]
+
 Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
 ---
  src/cmd/go/internal/work/exec.go | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/src/cmd/go/internal/work/exec.go b/src/cmd/go/internal/work/exec.go
-index cde867b..5cb1812 100644
+index 0ea5316..d7e2d51 100644
 --- a/src/cmd/go/internal/work/exec.go
 +++ b/src/cmd/go/internal/work/exec.go
-@@ -1331,7 +1331,7 @@ func (b *Builder) linkActionID(a *Action) cache.ActionID {
+@@ -1357,7 +1357,7 @@ func (b *Builder) linkActionID(a *Action) cache.ActionID {
  	}
  
  	// Toolchain-dependent configuration, shared with b.linkSharedActionID.
@@ -27,7 +29,7 @@  index cde867b..5cb1812 100644
  
  	// Input files.
  	for _, a1 := range a.Deps {
-@@ -1626,7 +1626,7 @@ func (b *Builder) linkSharedActionID(a *Action) cache.ActionID {
+@@ -1705,7 +1705,7 @@ func (b *Builder) linkSharedActionID(a *Action) cache.ActionID {
  	fmt.Fprintf(h, "goos %s goarch %s\n", cfg.Goos, cfg.Goarch)
  
  	// Toolchain-dependent configuration, shared with b.linkActionID.
@@ -37,5 +39,5 @@  index cde867b..5cb1812 100644
  	// Input files.
  	for _, a1 := range a.Deps {
 -- 
-2.30.2
+2.43.0
 
diff --git a/meta/recipes-devtools/go/go/0008-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch b/meta/recipes-devtools/go/go/0008-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch
index fe830ce35c..58512207a8 100644
--- a/meta/recipes-devtools/go/go/0008-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch
+++ b/meta/recipes-devtools/go/go/0008-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch
@@ -1,4 +1,4 @@ 
-From 1cbb416538a9c7c3fbedcb23f4d90d5c48becca8 Mon Sep 17 00:00:00 2001
+From e0999902687e2e394499f7153db8d62440c4dab0 Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Tue, 10 Nov 2020 16:33:27 +0000
 Subject: [PATCH 8/9] src/cmd/dist/buildgo.go: do not hardcode host compilers
@@ -8,16 +8,18 @@  These come from $CC/$CXX on the build host and are not useful on targets;
 additionally as they contain host specific paths, this helps reproducibility.
 
 Upstream-Status: Inappropriate [needs upstream discussion]
+
 Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
 ---
  src/cmd/dist/buildgo.go | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 diff --git a/src/cmd/dist/buildgo.go b/src/cmd/dist/buildgo.go
-index 29b0167..63a49f0 100644
+index 884e9d7..2f52eda 100644
 --- a/src/cmd/dist/buildgo.go
 +++ b/src/cmd/dist/buildgo.go
-@@ -33,8 +33,8 @@ func mkzdefaultcc(dir, file string) {
+@@ -51,8 +51,8 @@ func mkzdefaultcc(dir, file string) {
  		fmt.Fprintf(&buf, "package cfg\n")
  		fmt.Fprintln(&buf)
  		fmt.Fprintf(&buf, "const DefaultPkgConfig = `%s`\n", defaultpkgconfig)
@@ -28,7 +30,7 @@  index 29b0167..63a49f0 100644
  		writefile(buf.String(), file, writeSkipSame)
  		return
  	}
-@@ -45,8 +45,8 @@ func mkzdefaultcc(dir, file string) {
+@@ -62,8 +62,8 @@ func mkzdefaultcc(dir, file string) {
  	fmt.Fprintf(&buf, "package main\n")
  	fmt.Fprintln(&buf)
  	fmt.Fprintf(&buf, "const defaultPkgConfig = `%s`\n", defaultpkgconfig)
@@ -40,5 +42,5 @@  index 29b0167..63a49f0 100644
  }
  
 -- 
-2.30.2
+2.43.0
 
diff --git a/meta/recipes-devtools/go/go/0009-go-Filter-build-paths-on-staticly-linked-arches.patch b/meta/recipes-devtools/go/go/0009-go-Filter-build-paths-on-staticly-linked-arches.patch
index 49da5f6297..597a4e2104 100644
--- a/meta/recipes-devtools/go/go/0009-go-Filter-build-paths-on-staticly-linked-arches.patch
+++ b/meta/recipes-devtools/go/go/0009-go-Filter-build-paths-on-staticly-linked-arches.patch
@@ -1,4 +1,4 @@ 
-From 18011f72125bbea273d07ee5d792ac0ce6059572 Mon Sep 17 00:00:00 2001
+From 6c2438f187ca912c54a71b4ac65ab98999a019d2 Mon Sep 17 00:00:00 2001
 From: Richard Purdie <richard.purdie@linuxfoundation.org>
 Date: Sat, 2 Jul 2022 23:08:13 +0100
 Subject: [PATCH 9/9] go: Filter build paths on staticly linked arches
@@ -11,17 +11,18 @@  on mips/ppc.
 Upstream-Status: Submitted [https://github.com/golang/go/pull/56410]
 
 Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
 ---
  src/cmd/go/internal/load/pkg.go | 15 +++++++++++++--
  1 file changed, 13 insertions(+), 2 deletions(-)
 
 diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go
-index f427e29..6d6dc4e 100644
+index c0e6265..b199fee 100644
 --- a/src/cmd/go/internal/load/pkg.go
 +++ b/src/cmd/go/internal/load/pkg.go
-@@ -2270,6 +2270,17 @@ func (p *Package) collectDeps() {
- // to their VCS information (vcsStatusError).
- var vcsStatusCache par.Cache
+@@ -2269,6 +2269,17 @@ func appendBuildSetting(info *debug.BuildInfo, key, value string) {
+ 	info.Settings = append(info.Settings, debug.BuildSetting{Key: key, Value: value})
+ }
  
 +func filterCompilerFlags(flags string) string {
 +	var newflags []string
@@ -34,10 +35,10 @@  index f427e29..6d6dc4e 100644
 +	return strings.Join(newflags, " ")
 +}
 +
- // setBuildInfo gathers build information, formats it as a string to be
- // embedded in the binary, then sets p.Internal.BuildInfo to that string.
- // setBuildInfo should only be called on a main package with no errors.
-@@ -2376,7 +2387,7 @@ func (p *Package) setBuildInfo(autoVCS bool) {
+ // setBuildInfo gathers build information and sets it into
+ // p.Internal.BuildInfo, which will later be formatted as a string and embedded
+ // in the binary. setBuildInfo should only be called on a main package with no
+@@ -2376,7 +2387,7 @@ func (p *Package) setBuildInfo(ctx context.Context, autoVCS bool) {
  	if gcflags := BuildGcflags.String(); gcflags != "" && cfg.BuildContext.Compiler == "gc" {
  		appendSetting("-gcflags", gcflags)
  	}
@@ -46,7 +47,7 @@  index f427e29..6d6dc4e 100644
  		// https://go.dev/issue/52372: only include ldflags if -trimpath is not set,
  		// since it can include system paths through various linker flags (notably
  		// -extar, -extld, and -extldflags).
-@@ -2422,7 +2433,7 @@ func (p *Package) setBuildInfo(autoVCS bool) {
+@@ -2419,7 +2430,7 @@ func (p *Package) setBuildInfo(ctx context.Context, autoVCS bool) {
  	// subset of flags that are known not to be paths?
  	if cfg.BuildContext.CgoEnabled && !cfg.BuildTrimpath {
  		for _, name := range []string{"CGO_CFLAGS", "CGO_CPPFLAGS", "CGO_CXXFLAGS", "CGO_LDFLAGS"} {
@@ -56,5 +57,5 @@  index f427e29..6d6dc4e 100644
  	}
  	appendSetting("GOARCH", cfg.BuildContext.GOARCH)
 -- 
-2.30.2
+2.43.0
 
diff --git a/meta/recipes-devtools/go/go_1.20.12.bb b/meta/recipes-devtools/go/go_1.21.0.bb
similarity index 100%
rename from meta/recipes-devtools/go/go_1.20.12.bb
rename to meta/recipes-devtools/go/go_1.21.0.bb