From 03a1f875496d11e7f3fbba8c148ef33969f6ec03 Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Tue, 15 Sep 2020 23:32:53 +0800 Subject: [PATCH] golang: Use GO_LDFLAGS to set buildmode=pie for host Go Signed-off-by: Jeffery To --- lang/golang/golang/Makefile | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/lang/golang/golang/Makefile b/lang/golang/golang/Makefile index 162b5ad5ef..5610ccafb7 100644 --- a/lang/golang/golang/Makefile +++ b/lang/golang/golang/Makefile @@ -189,9 +189,8 @@ ifeq ($(GO_HOST_PIE_SUPPORTED),1) HOST_GO_ENABLE_PIE:=1 endif -ifeq ($(HOST_GO_ENABLE_PIE),1) - HOST_GO_INSTALL_SUFFIX:=$(GO_HOST_PIE_INSTALL_SUFFIX) -endif +# when using GO_LDFLAGS to set buildmode=pie, the PIE install suffix +# does not apply (we also delete the std lib during Host/Install) $(eval $(call GoCompiler/AddProfile,Host,$(HOST_BUILD_DIR),$(HOST_GO_PREFIX),$(HOST_GO_VERSION_ID),$(GO_HOST_OS_ARCH),$(HOST_GO_INSTALL_SUFFIX))) @@ -201,9 +200,6 @@ HOST_GO_VARS= \ CC=$(HOSTCC_NOCACHE) \ CXX=$(HOSTCXX_NOCACHE) -# when https://github.com/golang/go/issues/31544 is fixed, -# we should be able to set GO_LDFLAGS=-buildmode=pie for host make -# instead of doing a rebuild for pie define Host/Compile $(call GoCompiler/Bootstrap/CheckHost,$(BOOTSTRAP_GO_VALID_OS_ARCH)) $(call GoCompiler/Host/CheckHost,$(HOST_GO_VALID_OS_ARCH)) @@ -216,22 +212,9 @@ define Host/Compile $(call GoCompiler/Host/Make, \ GOROOT_BOOTSTRAP=$(BOOTSTRAP_ROOT_DIR) \ + $(if $(HOST_GO_ENABLE_PIE),GO_LDFLAGS="-buildmode pie") \ $(HOST_GO_VARS) \ ) - - ifneq ($(HOST_GO_ENABLE_PIE),) - @echo "Rebuilding host Go with PIE" - - ( \ - cd $(HOST_BUILD_DIR)/bin ; \ - $(CP) go go-nopie ; \ - $(HOST_GO_VARS) \ - ./go-nopie install -a -buildmode pie std cmd ; \ - retval=$$$$? ; \ - rm -f go-nopie ; \ - exit $$$$retval ; \ - ) - endif endef # if host and target os/arch are the same, -- 2.30.2