golang: Use GO_LDFLAGS to set buildmode=pie for host Go
authorJeffery To <jeffery.to@gmail.com>
Tue, 15 Sep 2020 15:32:53 +0000 (23:32 +0800)
committerJeffery To <jeffery.to@gmail.com>
Tue, 6 Oct 2020 08:28:07 +0000 (16:28 +0800)
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
lang/golang/golang/Makefile

index 162b5ad5ef55913ce931cb25f7a436b8af932499..5610ccafb73f6b021781e712792ee5300bf9c91c 100644 (file)
@@ -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,