golang: Update to 1.21.0, remove patch
Upstream has updated the Go compiler to not use gold when building for arm, and is waiting for a fix to binutils (released in 2.41) before doing the same for aarch64.[1] Based on the above, it does not appear that https://github.com/golang/go/pull/49748 will be merged. This removes the patch from that pull request. [1]: https://github.com/golang/go/issues/22040 Signed-off-by: Jeffery To <jeffery.to@gmail.com>
This commit is contained in:
parent
4917405d34
commit
a80af7e443
|
@ -60,9 +60,10 @@ define GoCompiler/Default/Install/Bin
|
||||||
|
|
||||||
$(call GoCompiler/Default/Install/install-share-data,$(1),$(2),$(3),api)
|
$(call GoCompiler/Default/Install/install-share-data,$(1),$(2),$(3),api)
|
||||||
|
|
||||||
|
$(INSTALL_DATA) -p "$(1)/go.env" "$(2)/lib/go-$(3)/"
|
||||||
$(INSTALL_DATA) -p "$(1)/VERSION" "$(2)/lib/go-$(3)/"
|
$(INSTALL_DATA) -p "$(1)/VERSION" "$(2)/lib/go-$(3)/"
|
||||||
|
|
||||||
for file in AUTHORS CONTRIBUTING.md CONTRIBUTORS LICENSE PATENTS README.md SECURITY.md; do \
|
for file in CONTRIBUTING.md LICENSE PATENTS README.md SECURITY.md; do \
|
||||||
if [ -f "$(1)/$$$$file" ]; then \
|
if [ -f "$(1)/$$$$file" ]; then \
|
||||||
$(INSTALL_DATA) -p "$(1)/$$$$file" "$(2)/share/go-$(3)/" ; \
|
$(INSTALL_DATA) -p "$(1)/$$$$file" "$(2)/share/go-$(3)/" ; \
|
||||||
fi ; \
|
fi ; \
|
||||||
|
|
|
@ -215,7 +215,8 @@ GO_PKG_BUILD_VARS= \
|
||||||
GOPATH="$(GO_PKG_BUILD_DIR)" \
|
GOPATH="$(GO_PKG_BUILD_DIR)" \
|
||||||
GOCACHE="$(GO_BUILD_CACHE_DIR)" \
|
GOCACHE="$(GO_BUILD_CACHE_DIR)" \
|
||||||
GOMODCACHE="$(GO_MOD_CACHE_DIR)" \
|
GOMODCACHE="$(GO_MOD_CACHE_DIR)" \
|
||||||
GOENV=off
|
GOENV=off \
|
||||||
|
GOTOOLCHAIN=local
|
||||||
|
|
||||||
GO_PKG_VARS= \
|
GO_PKG_VARS= \
|
||||||
$(GO_PKG_TARGET_VARS) \
|
$(GO_PKG_TARGET_VARS) \
|
||||||
|
|
|
@ -29,6 +29,7 @@ unexport \
|
||||||
GOOS \
|
GOOS \
|
||||||
GOPATH \
|
GOPATH \
|
||||||
GOROOT \
|
GOROOT \
|
||||||
|
GOTOOLCHAIN \
|
||||||
GOTMPDIR \
|
GOTMPDIR \
|
||||||
GOWORK
|
GOWORK
|
||||||
# Unmodified:
|
# Unmodified:
|
||||||
|
@ -219,7 +220,7 @@ GO_PIE_SUPPORTED_OS_ARCH:= \
|
||||||
\
|
\
|
||||||
aix_ppc64 \
|
aix_ppc64 \
|
||||||
\
|
\
|
||||||
linux_ppc64le linux_riscv64 linux_s390x
|
linux_loong64 linux_ppc64le linux_riscv64 linux_s390x
|
||||||
|
|
||||||
# From https://go.dev/src/cmd/go/internal/work/init.go
|
# From https://go.dev/src/cmd/go/internal/work/init.go
|
||||||
go_pie_install_suffix=$(if $(filter $(1),aix_ppc64 windows_386 windows_amd64 windows_arm windows_arm64),,shared)
|
go_pie_install_suffix=$(if $(filter $(1),aix_ppc64 windows_386 windows_amd64 windows_arm windows_arm64),,shared)
|
||||||
|
|
|
@ -7,8 +7,8 @@
|
||||||
|
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
GO_VERSION_MAJOR_MINOR:=1.20
|
GO_VERSION_MAJOR_MINOR:=1.21
|
||||||
GO_VERSION_PATCH:=7
|
GO_VERSION_PATCH:=0
|
||||||
|
|
||||||
PKG_NAME:=golang
|
PKG_NAME:=golang
|
||||||
PKG_VERSION:=$(GO_VERSION_MAJOR_MINOR)$(if $(GO_VERSION_PATCH),.$(GO_VERSION_PATCH))
|
PKG_VERSION:=$(GO_VERSION_MAJOR_MINOR)$(if $(GO_VERSION_PATCH),.$(GO_VERSION_PATCH))
|
||||||
|
@ -20,7 +20,7 @@ GO_SOURCE_URLS:=https://dl.google.com/go/ \
|
||||||
|
|
||||||
PKG_SOURCE:=go$(PKG_VERSION).src.tar.gz
|
PKG_SOURCE:=go$(PKG_VERSION).src.tar.gz
|
||||||
PKG_SOURCE_URL:=$(GO_SOURCE_URLS)
|
PKG_SOURCE_URL:=$(GO_SOURCE_URLS)
|
||||||
PKG_HASH:=2c5ee9c9ec1e733b0dbbc2bdfed3f62306e51d8172bf38f4f4e542b27520f597
|
PKG_HASH:=818d46ede85682dd551ad378ef37a4d247006f12ec59b5b755601d2ce114369a
|
||||||
|
|
||||||
PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
|
PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
|
||||||
PKG_LICENSE:=BSD-3-Clause
|
PKG_LICENSE:=BSD-3-Clause
|
||||||
|
@ -62,6 +62,7 @@ HOST_GO_VALID_OS_ARCH:= \
|
||||||
\
|
\
|
||||||
aix_ppc64 \
|
aix_ppc64 \
|
||||||
js_wasm \
|
js_wasm \
|
||||||
|
wasip1_wasm \
|
||||||
\
|
\
|
||||||
freebsd_riscv64 \
|
freebsd_riscv64 \
|
||||||
\
|
\
|
||||||
|
@ -296,7 +297,7 @@ $(eval $(call GoCompiler/AddProfile,Package,$(PKG_BUILD_DIR),$(PKG_GO_PREFIX),$(
|
||||||
PKG_GO_ZBOOTSTRAP_MODS:= \
|
PKG_GO_ZBOOTSTRAP_MODS:= \
|
||||||
s/defaultGO386 = `[^`]*`/defaultGO386 = `$(or $(GO_386),sse2)`/; \
|
s/defaultGO386 = `[^`]*`/defaultGO386 = `$(or $(GO_386),sse2)`/; \
|
||||||
s/defaultGOAMD64 = `[^`]*`/defaultGOAMD64 = `$(or $(GO_AMD64),v1)`/; \
|
s/defaultGOAMD64 = `[^`]*`/defaultGOAMD64 = `$(or $(GO_AMD64),v1)`/; \
|
||||||
s/defaultGOARM = `[^`]*`/defaultGOARM = `$(or $(GO_ARM),5)`/; \
|
s/defaultGOARM = `[^`]*`/defaultGOARM = `$(or $(GO_ARM),7)`/; \
|
||||||
s/defaultGOMIPS = `[^`]*`/defaultGOMIPS = `$(or $(GO_MIPS),hardfloat)`/; \
|
s/defaultGOMIPS = `[^`]*`/defaultGOMIPS = `$(or $(GO_MIPS),hardfloat)`/; \
|
||||||
s/defaultGOMIPS64 = `[^`]*`/defaultGOMIPS64 = `$(or $(GO_MIPS64),hardfloat)`/; \
|
s/defaultGOMIPS64 = `[^`]*`/defaultGOMIPS64 = `$(or $(GO_MIPS64),hardfloat)`/; \
|
||||||
s/defaultGOPPC64 = `[^`]*`/defaultGOPPC64 = `$(or $(GO_PPC64),power8)`/;
|
s/defaultGOPPC64 = `[^`]*`/defaultGOPPC64 = `$(or $(GO_PPC64),power8)`/;
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
From 5ccf9f47bf4f5ba53e0ab7338a7fd4626714cfb2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jeffery To <jeffery.to@gmail.com>
|
|
||||||
Date: Tue, 23 Nov 2021 15:05:37 +0800
|
|
||||||
Subject: [PATCH] cmd/link: use gold on ARM/ARM64 only if gold is available
|
|
||||||
|
|
||||||
COPY relocation handling on ARM/ARM64 has been fixed in recent versions
|
|
||||||
of the GNU linker. This switches to gold only if gold is available.
|
|
||||||
|
|
||||||
Fixes #22040.
|
|
||||||
---
|
|
||||||
src/cmd/link/internal/ld/lib.go | 19 +++++++------------
|
|
||||||
1 file changed, 7 insertions(+), 12 deletions(-)
|
|
||||||
|
|
||||||
--- a/src/cmd/link/internal/ld/lib.go
|
|
||||||
+++ b/src/cmd/link/internal/ld/lib.go
|
|
||||||
@@ -1548,25 +1548,20 @@ func (ctxt *Link) hostlink() {
|
|
||||||
}
|
|
||||||
|
|
||||||
if ctxt.Arch.InFamily(sys.ARM, sys.ARM64) && buildcfg.GOOS == "linux" {
|
|
||||||
- // On ARM, the GNU linker will generate COPY relocations
|
|
||||||
- // even with -znocopyreloc set.
|
|
||||||
+ // On ARM, older versions of the GNU linker will generate
|
|
||||||
+ // COPY relocations even with -znocopyreloc set.
|
|
||||||
// https://sourceware.org/bugzilla/show_bug.cgi?id=19962
|
|
||||||
//
|
|
||||||
- // On ARM64, the GNU linker will fail instead of
|
|
||||||
- // generating COPY relocations.
|
|
||||||
+ // On ARM64, older versions of the GNU linker will fail
|
|
||||||
+ // instead of generating COPY relocations.
|
|
||||||
//
|
|
||||||
- // In both cases, switch to gold.
|
|
||||||
- altLinker = "gold"
|
|
||||||
-
|
|
||||||
- // If gold is not installed, gcc will silently switch
|
|
||||||
- // back to ld.bfd. So we parse the version information
|
|
||||||
- // and provide a useful error if gold is missing.
|
|
||||||
+ // In both cases, switch to gold if gold is available.
|
|
||||||
name, args := flagExtld[0], flagExtld[1:]
|
|
||||||
args = append(args, "-fuse-ld=gold", "-Wl,--version")
|
|
||||||
cmd := exec.Command(name, args...)
|
|
||||||
if out, err := cmd.CombinedOutput(); err == nil {
|
|
||||||
- if !bytes.Contains(out, []byte("GNU gold")) {
|
|
||||||
- log.Fatalf("ARM external linker must be gold (issue #15696), but is not: %s", out)
|
|
||||||
+ if bytes.Contains(out, []byte("GNU gold")) {
|
|
||||||
+ altLinker = "gold"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue