golang: Add support for ASLR/PIE for Go packages
This adds support to compile position-independent executables for packages that use golang-package.mk. Go packages will have PIE enabled if: * Go supports PIE on the target platform; * CONFIG_PKG_ASLR_PIE is selected; and * PKG_ASLR_PIE (for the package) is not set to 0 Go 1.13 supports PIE for x86 and arm targets; mips support is in progress[1]. [1]: https://github.com/golang/go/issues/21222#issuecomment-542064462 Signed-off-by: Jeffery To <jeffery.to@gmail.com>
This commit is contained in:
parent
b36f27716f
commit
c18adadd91
1 changed files with 9 additions and 0 deletions
|
@ -120,6 +120,14 @@ GO_PKG_BUILD_BIN_DIR:=$(GO_PKG_BUILD_DIR)/bin$(if $(GO_HOST_TARGET_DIFFERENT),/$
|
||||||
|
|
||||||
GO_PKG_BUILD_DEPENDS_SRC:=$(STAGING_DIR)$(GO_PKG_PATH)/src
|
GO_PKG_BUILD_DEPENDS_SRC:=$(STAGING_DIR)$(GO_PKG_PATH)/src
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_PKG_ASLR_PIE),y)
|
||||||
|
ifeq ($(strip $(PKG_ASLR_PIE)),1)
|
||||||
|
ifeq ($(GO_TARGET_PIE_SUPPORTED),1)
|
||||||
|
GO_PKG_ENABLE_PIE:=1
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
# sstrip causes corrupted section header size
|
# sstrip causes corrupted section header size
|
||||||
ifneq ($(CONFIG_USE_SSTRIP),)
|
ifneq ($(CONFIG_USE_SSTRIP),)
|
||||||
ifneq ($(CONFIG_DEBUG),)
|
ifneq ($(CONFIG_DEBUG),)
|
||||||
|
@ -281,6 +289,7 @@ define GoPackage/Build/Compile
|
||||||
pkg_ldflags="$$$$pkg_ldflags -X $$$$def" ; \
|
pkg_ldflags="$$$$pkg_ldflags -X $$$$def" ; \
|
||||||
done ; \
|
done ; \
|
||||||
go install \
|
go install \
|
||||||
|
$(if $(GO_PKG_ENABLE_PIE),-buildmode pie) \
|
||||||
$$$${installsuffix:+-installsuffix $$$$installsuffix} \
|
$$$${installsuffix:+-installsuffix $$$$installsuffix} \
|
||||||
-trimpath \
|
-trimpath \
|
||||||
-ldflags "all=$$$$ldflags" \
|
-ldflags "all=$$$$ldflags" \
|
||||||
|
|
Loading…
Reference in a new issue