Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
cbcbb7aab1 | ||
![]() |
b35091298f |
@ -2,9 +2,7 @@
|
|||||||
|
|
||||||
## How to use?
|
## How to use?
|
||||||
|
|
||||||
After the `./scripts/feeds install -a` operation is completed, execute the following command:
|
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
rm -rf feeds/packages/lang/golang
|
rm -rf feeds/packages/lang/golang
|
||||||
git clone https://github.com/sbwml/packages_lang_golang -b 25.x feeds/packages/lang/golang
|
git clone https://github.com/sbwml/packages_lang_golang -b 20.x feeds/packages/lang/golang
|
||||||
```
|
```
|
||||||
|
8
golang-build.sh
Executable file → Normal file
8
golang-build.sh
Executable file → Normal file
@ -1,10 +1,4 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
|
||||||
# Copyright (C) 2020, 2022 Jeffery To
|
|
||||||
#
|
|
||||||
# This is free software, licensed under the GNU General Public License v2.
|
|
||||||
# See /LICENSE for more information.
|
|
||||||
#
|
|
||||||
|
|
||||||
nl="
|
nl="
|
||||||
"
|
"
|
||||||
@ -120,7 +114,7 @@ build() {
|
|||||||
if [ "$GO_GO_GENERATE" = 1 ]; then
|
if [ "$GO_GO_GENERATE" = 1 ]; then
|
||||||
log "Calling go generate"
|
log "Calling go generate"
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
GOOS='' GOARCH='' GO386='' GOARM='' GOARM64='' GOMIPS='' GOMIPS64='' GORISCV64=''\
|
GOOS='' GOARCH='' GO386='' GOARM='' GOMIPS='' GOMIPS64='' \
|
||||||
go generate -v $targets
|
go generate -v $targets
|
||||||
log
|
log
|
||||||
fi
|
fi
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2018, 2020-2021, 2023 Jeffery To
|
# Copyright (C) 2018, 2020 Jeffery To
|
||||||
#
|
#
|
||||||
# This is free software, licensed under the GNU General Public License v2.
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
# See /LICENSE for more information.
|
# See /LICENSE for more information.
|
||||||
@ -19,15 +19,15 @@ define GoCompiler/Default/CheckHost
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
# $(1) source go root
|
# $(1) source go root
|
||||||
# $(2) additional environment variables (optional)
|
# $(2) destination prefix
|
||||||
|
# $(3) go version id
|
||||||
|
# $(4) additional environment variables (optional)
|
||||||
define GoCompiler/Default/Make
|
define GoCompiler/Default/Make
|
||||||
( \
|
( \
|
||||||
cd "$(1)/src" ; \
|
cd "$(1)/src" ; \
|
||||||
$(2) \
|
$(if $(2),GOROOT_FINAL="$(2)/lib/go-$(3)") \
|
||||||
$(BASH) make.bash \
|
$(4) \
|
||||||
$(if $(findstring s,$(OPENWRT_VERBOSE)),-v) \
|
$(BASH) make.bash --no-banner ; \
|
||||||
--no-banner \
|
|
||||||
; \
|
|
||||||
)
|
)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
@ -57,10 +57,9 @@ 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 CONTRIBUTING.md LICENSE PATENTS README.md SECURITY.md; do \
|
for file in AUTHORS CONTRIBUTING.md CONTRIBUTORS 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 ; \
|
||||||
@ -74,11 +73,6 @@ define GoCompiler/Default/Install/Bin
|
|||||||
$(INSTALL_BIN) -p "$(1)/bin/$(4)"/* "$(2)/lib/go-$(3)/bin/"
|
$(INSTALL_BIN) -p "$(1)/bin/$(4)"/* "$(2)/lib/go-$(3)/bin/"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if [ -d "$(1)/pkg/$(4)$(if $(5),_$(5))" ]; then \
|
|
||||||
$(INSTALL_DIR) "$(2)/lib/go-$(3)/pkg" ; \
|
|
||||||
$(CP) "$(1)/pkg/$(4)$(if $(5),_$(5))" "$(2)/lib/go-$(3)/pkg/" ; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
$(INSTALL_DIR) "$(2)/lib/go-$(3)/pkg/tool/$(4)"
|
$(INSTALL_DIR) "$(2)/lib/go-$(3)/pkg/tool/$(4)"
|
||||||
$(INSTALL_BIN) -p "$(1)/pkg/tool/$(4)"/* "$(2)/lib/go-$(3)/pkg/tool/$(4)/"
|
$(INSTALL_BIN) -p "$(1)/pkg/tool/$(4)"/* "$(2)/lib/go-$(3)/pkg/tool/$(4)/"
|
||||||
endef
|
endef
|
||||||
@ -153,7 +147,7 @@ define GoCompiler/AddProfile
|
|||||||
|
|
||||||
# $$(1) additional environment variables (optional)
|
# $$(1) additional environment variables (optional)
|
||||||
define GoCompiler/$(1)/Make
|
define GoCompiler/$(1)/Make
|
||||||
$$(call GoCompiler/Default/Make,$(2),$$(1))
|
$$(call GoCompiler/Default/Make,$(2),$(3),$(4),$$(1))
|
||||||
endef
|
endef
|
||||||
|
|
||||||
# $$(1) override install prefix (optional)
|
# $$(1) override install prefix (optional)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2020, 2022 Jeffery To
|
# Copyright (C) 2020 Jeffery To
|
||||||
#
|
#
|
||||||
# This is free software, licensed under the GNU General Public License v2.
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
# See /LICENSE for more information.
|
# See /LICENSE for more information.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2018-2022 Jeffery To
|
# Copyright (C) 2018-2020 Jeffery To
|
||||||
#
|
#
|
||||||
# This is free software, licensed under the GNU General Public License v2.
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
# See /LICENSE for more information.
|
# See /LICENSE for more information.
|
||||||
@ -215,8 +215,7 @@ 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) \
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2018-2023 Jeffery To
|
# Copyright (C) 2018, 2020 Jeffery To
|
||||||
#
|
#
|
||||||
# This is free software, licensed under the GNU General Public License v2.
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
# See /LICENSE for more information.
|
# See /LICENSE for more information.
|
||||||
@ -29,7 +29,6 @@ unexport \
|
|||||||
GOOS \
|
GOOS \
|
||||||
GOPATH \
|
GOPATH \
|
||||||
GOROOT \
|
GOROOT \
|
||||||
GOTOOLCHAIN \
|
|
||||||
GOTMPDIR \
|
GOTMPDIR \
|
||||||
GOWORK
|
GOWORK
|
||||||
# Unmodified:
|
# Unmodified:
|
||||||
@ -59,19 +58,13 @@ unexport \
|
|||||||
# Architecture-specific environment variables:
|
# Architecture-specific environment variables:
|
||||||
unexport \
|
unexport \
|
||||||
GOARM \
|
GOARM \
|
||||||
GOARM64 \
|
|
||||||
GO386 \
|
GO386 \
|
||||||
GOAMD64 \
|
GOAMD64 \
|
||||||
GOMIPS \
|
GOMIPS \
|
||||||
GOMIPS64 \
|
GOMIPS64 \
|
||||||
GOPPC64 \
|
GOPPC64 \
|
||||||
GORISCV64 \
|
|
||||||
GOWASM
|
GOWASM
|
||||||
|
|
||||||
# Environment variables for use with code coverage:
|
|
||||||
unexport \
|
|
||||||
GOCOVERDIR
|
|
||||||
|
|
||||||
# Special-purpose environment variables:
|
# Special-purpose environment variables:
|
||||||
unexport \
|
unexport \
|
||||||
GCCGOTOOLDIR \
|
GCCGOTOOLDIR \
|
||||||
@ -84,7 +77,6 @@ unexport \
|
|||||||
# From https://pkg.go.dev/runtime#hdr-Environment_Variables
|
# From https://pkg.go.dev/runtime#hdr-Environment_Variables
|
||||||
unexport \
|
unexport \
|
||||||
GOGC \
|
GOGC \
|
||||||
GOMEMLIMIT \
|
|
||||||
GOMAXPROCS \
|
GOMAXPROCS \
|
||||||
GORACE \
|
GORACE \
|
||||||
GOTRACEBACK
|
GOTRACEBACK
|
||||||
@ -130,11 +122,10 @@ unexport \
|
|||||||
go_arch=$(subst \
|
go_arch=$(subst \
|
||||||
aarch64,arm64,$(subst \
|
aarch64,arm64,$(subst \
|
||||||
i386,386,$(subst \
|
i386,386,$(subst \
|
||||||
loongarch64,loong64,$(subst \
|
|
||||||
mipsel,mipsle,$(subst \
|
mipsel,mipsle,$(subst \
|
||||||
mips64el,mips64le,$(subst \
|
mips64el,mips64le,$(subst \
|
||||||
powerpc64,ppc64,$(subst \
|
powerpc64,ppc64,$(subst \
|
||||||
x86_64,amd64,$(1))))))))
|
x86_64,amd64,$(1)))))))
|
||||||
|
|
||||||
GO_OS:=linux
|
GO_OS:=linux
|
||||||
GO_ARCH:=$(call go_arch,$(ARCH))
|
GO_ARCH:=$(call go_arch,$(ARCH))
|
||||||
@ -205,16 +196,17 @@ endif
|
|||||||
|
|
||||||
# Target Go
|
# Target Go
|
||||||
|
|
||||||
GO_ARCH_DEPENDS:=@(aarch64||arm||i386||i686||loongarch64||mips||mips64||mips64el||mipsel||powerpc64||riscv64||x86_64)
|
GO_ARCH_DEPENDS:=@(aarch64||arm||i386||i686||mips||mips64||mips64el||mipsel||powerpc64||x86_64)
|
||||||
|
|
||||||
|
|
||||||
# ASLR/PIE
|
# ASLR/PIE
|
||||||
|
|
||||||
# From https://go.dev/src/internal/platform/supported.go
|
# From https://go.dev/src/cmd/internal/sys/supported.go
|
||||||
GO_PIE_SUPPORTED_OS_ARCH:= \
|
GO_PIE_SUPPORTED_OS_ARCH:= \
|
||||||
android_386 android_amd64 android_arm android_arm64 \
|
android_386 android_amd64 android_arm android_arm64 \
|
||||||
linux_386 linux_amd64 linux_arm linux_arm64 \
|
linux_386 linux_amd64 linux_arm linux_arm64 \
|
||||||
windows_386 windows_amd64 windows_arm windows_arm64 \
|
\
|
||||||
|
windows_386 windows_amd64 windows_arm \
|
||||||
\
|
\
|
||||||
darwin_amd64 darwin_arm64 \
|
darwin_amd64 darwin_arm64 \
|
||||||
ios_amd64 ios_arm64 \
|
ios_amd64 ios_arm64 \
|
||||||
@ -223,10 +215,10 @@ GO_PIE_SUPPORTED_OS_ARCH:= \
|
|||||||
\
|
\
|
||||||
aix_ppc64 \
|
aix_ppc64 \
|
||||||
\
|
\
|
||||||
linux_loong64 linux_ppc64le linux_riscv64 linux_s390x
|
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),,shared)
|
||||||
|
|
||||||
ifneq ($(filter $(GO_HOST_OS_ARCH),$(GO_PIE_SUPPORTED_OS_ARCH)),)
|
ifneq ($(filter $(GO_HOST_OS_ARCH),$(GO_PIE_SUPPORTED_OS_ARCH)),)
|
||||||
GO_HOST_PIE_SUPPORTED:=1
|
GO_HOST_PIE_SUPPORTED:=1
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2018-2023 Jeffery To
|
# Copyright (C) 2018, 2020 Jeffery To
|
||||||
#
|
#
|
||||||
# This is free software, licensed under the GNU General Public License v2.
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
# See /LICENSE for more information.
|
# See /LICENSE for more information.
|
||||||
@ -7,8 +7,8 @@
|
|||||||
|
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
GO_VERSION_MAJOR_MINOR:=1.25rc1
|
GO_VERSION_MAJOR_MINOR:=1.20
|
||||||
GO_VERSION_PATCH:=
|
GO_VERSION_PATCH:=9
|
||||||
|
|
||||||
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:=0cd6772fe133a784fbb7a09d6da3089897fef48d03a21721434bf88188a58629
|
PKG_HASH:=4923920381cd71d68b527761afefa523ea18c5831b4795034c827e18b685cdcf
|
||||||
|
|
||||||
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
|
||||||
@ -30,10 +30,11 @@ PKG_CPE_ID:=cpe:/a:golang:go
|
|||||||
PKG_BUILD_DEPENDS:=golang/host
|
PKG_BUILD_DEPENDS:=golang/host
|
||||||
PKG_BUILD_DIR:=$(BUILD_DIR)/go-$(PKG_VERSION)
|
PKG_BUILD_DIR:=$(BUILD_DIR)/go-$(PKG_VERSION)
|
||||||
PKG_BUILD_PARALLEL:=1
|
PKG_BUILD_PARALLEL:=1
|
||||||
PKG_BUILD_FLAGS:=no-mips16
|
PKG_USE_MIPS16:=0
|
||||||
|
|
||||||
PKG_GO_PREFIX:=/usr
|
PKG_GO_PREFIX:=/usr
|
||||||
PKG_GO_VERSION_ID:=$(GO_VERSION_MAJOR_MINOR)
|
PKG_GO_VERSION_ID:=$(GO_VERSION_MAJOR_MINOR)
|
||||||
|
PKG_GO_ROOT:=$(PKG_GO_PREFIX)/lib/go-$(PKG_GO_VERSION_ID)
|
||||||
|
|
||||||
HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/go-$(PKG_VERSION)
|
HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/go-$(PKG_VERSION)
|
||||||
HOST_BUILD_PARALLEL:=1
|
HOST_BUILD_PARALLEL:=1
|
||||||
@ -57,33 +58,32 @@ HOST_GO_VALID_OS_ARCH:= \
|
|||||||
\
|
\
|
||||||
dragonfly_amd64 \
|
dragonfly_amd64 \
|
||||||
illumos_amd64 \
|
illumos_amd64 \
|
||||||
|
freebsd_riscv64 \
|
||||||
solaris_amd64 \
|
solaris_amd64 \
|
||||||
\
|
\
|
||||||
aix_ppc64 \
|
aix_ppc64 \
|
||||||
js_wasm \
|
js_wasm \
|
||||||
wasip1_wasm \
|
|
||||||
\
|
|
||||||
freebsd_riscv64 \
|
|
||||||
openbsd_riscv64 \
|
|
||||||
\
|
\
|
||||||
linux_ppc64 linux_ppc64le \
|
linux_ppc64 linux_ppc64le \
|
||||||
linux_mips linux_mipsle linux_mips64 linux_mips64le \
|
linux_mips linux_mipsle linux_mips64 linux_mips64le \
|
||||||
linux_loong64 linux_riscv64 linux_s390x \
|
linux_riscv64 linux_s390x \
|
||||||
|
linux_loong64 \
|
||||||
\
|
\
|
||||||
openbsd_mips64
|
openbsd_mips64
|
||||||
|
|
||||||
ifeq ($(HOST_ARCH),x86_64)
|
ifeq ($(HOST_ARCH),x86_64)
|
||||||
PKG_ARCH:=amd64
|
PKG_ARCH:=amd64
|
||||||
BOOTSTRAP_HASH:=999805bed7d9039ec3da1a53bfbcafc13e367da52aa823cb60b68ba22d44c616
|
SHA256:=550f9845451c0c94be679faf116291e7807a8d78b43149f9506c1b15eb89008c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(HOST_ARCH),aarch64)
|
ifeq ($(HOST_ARCH),aarch64)
|
||||||
PKG_ARCH:=arm64
|
PKG_ARCH:=arm64
|
||||||
BOOTSTRAP_HASH:=c15fa895341b8eaf7f219fada25c36a610eb042985dc1a912410c1c90098eaf2
|
SHA256:=06f505c8d27203f78706ad04e47050b49092f1b06dc9ac4fbee4f0e4d015c8d4
|
||||||
endif
|
endif
|
||||||
|
|
||||||
BOOTSTRAP_SOURCE:=go1.22.6.linux-$(PKG_ARCH).tar.gz
|
BOOTSTRAP_SOURCE:=go1.17.3.linux-$(PKG_ARCH).tar.gz
|
||||||
BOOTSTRAP_SOURCE_URL:=$(GO_SOURCE_URLS)
|
BOOTSTRAP_SOURCE_URL:=$(GO_SOURCE_URLS)
|
||||||
|
BOOTSTRAP_HASH:=$(SHA256)
|
||||||
|
|
||||||
BOOTSTRAP_BUILD_DIR:=$(HOST_BUILD_DIR)/.go_bootstrap
|
BOOTSTRAP_BUILD_DIR:=$(HOST_BUILD_DIR)/.go_bootstrap
|
||||||
|
|
||||||
@ -193,7 +193,8 @@ ifeq ($(BOOTSTRAP_ROOT_DIR),)
|
|||||||
$(eval $(call Download,golang-bootstrap))
|
$(eval $(call Download,golang-bootstrap))
|
||||||
|
|
||||||
define Bootstrap/Prepare
|
define Bootstrap/Prepare
|
||||||
mkdir -p "$(BOOTSTRAP_BUILD_DIR)" && $(BOOTSTRAP_UNPACK) ;
|
mkdir -p "$(BOOTSTRAP_BUILD_DIR)"
|
||||||
|
$(BOOTSTRAP_UNPACK)
|
||||||
endef
|
endef
|
||||||
Hooks/HostPrepare/Post+=Bootstrap/Prepare
|
Hooks/HostPrepare/Post+=Bootstrap/Prepare
|
||||||
|
|
||||||
@ -213,7 +214,6 @@ endif
|
|||||||
$(eval $(call GoCompiler/AddProfile,Host,$(HOST_BUILD_DIR),$(HOST_GO_PREFIX),$(HOST_GO_VERSION_ID),$(GO_HOST_OS_ARCH),$(HOST_GO_INSTALL_SUFFIX)))
|
$(eval $(call GoCompiler/AddProfile,Host,$(HOST_BUILD_DIR),$(HOST_GO_PREFIX),$(HOST_GO_VERSION_ID),$(GO_HOST_OS_ARCH),$(HOST_GO_INSTALL_SUFFIX)))
|
||||||
|
|
||||||
HOST_GO_VARS= \
|
HOST_GO_VARS= \
|
||||||
GOHOSTARCH="$(GO_HOST_ARCH)" \
|
|
||||||
GOCACHE="$(GO_BUILD_CACHE_DIR)" \
|
GOCACHE="$(GO_BUILD_CACHE_DIR)" \
|
||||||
GOENV=off \
|
GOENV=off \
|
||||||
CC="$(HOSTCC_NOCACHE)" \
|
CC="$(HOSTCC_NOCACHE)" \
|
||||||
@ -271,7 +271,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),7)`/; \
|
s/defaultGOARM = `[^`]*`/defaultGOARM = `$(or $(GO_ARM),5)`/; \
|
||||||
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)`/;
|
||||||
@ -279,7 +279,6 @@ PKG_GO_ZBOOTSTRAP_MODS:= \
|
|||||||
PKG_GO_ZBOOTSTRAP_PATH:=$(PKG_BUILD_DIR)/src/internal/buildcfg/zbootstrap.go
|
PKG_GO_ZBOOTSTRAP_PATH:=$(PKG_BUILD_DIR)/src/internal/buildcfg/zbootstrap.go
|
||||||
|
|
||||||
PKG_GO_VARS= \
|
PKG_GO_VARS= \
|
||||||
GOHOSTARCH="$(GO_HOST_ARCH)" \
|
|
||||||
GOCACHE="$(GO_BUILD_CACHE_DIR)" \
|
GOCACHE="$(GO_BUILD_CACHE_DIR)" \
|
||||||
GOENV=off \
|
GOENV=off \
|
||||||
GO_GCC_HELPER_PATH="$$$$PATH" \
|
GO_GCC_HELPER_PATH="$$$$PATH" \
|
||||||
@ -339,6 +338,7 @@ define Build/Compile
|
|||||||
cd "$(PKG_BUILD_DIR)/bin" ; \
|
cd "$(PKG_BUILD_DIR)/bin" ; \
|
||||||
export $(GO_PKG_TARGET_VARS) ; \
|
export $(GO_PKG_TARGET_VARS) ; \
|
||||||
$(CP) go go-host ; \
|
$(CP) go go-host ; \
|
||||||
|
GOROOT_FINAL="$(PKG_GO_ROOT)" \
|
||||||
GO_GCC_HELPER_CC="$(TARGET_CC)" \
|
GO_GCC_HELPER_CC="$(TARGET_CC)" \
|
||||||
GO_GCC_HELPER_CXX="$(TARGET_CXX)" \
|
GO_GCC_HELPER_CXX="$(TARGET_CXX)" \
|
||||||
$(PKG_GO_VARS) \
|
$(PKG_GO_VARS) \
|
||||||
|
@ -0,0 +1,48 @@
|
|||||||
|
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
|
||||||
|
@@ -1393,25 +1393,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…
x
Reference in New Issue
Block a user