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>
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
ifneq ($(CONFIG_USE_SSTRIP),)
ifneq ($(CONFIG_DEBUG),)
pkg_ldflags="$$$$pkg_ldflags -X $$$$def" ; \
done ; \
go install \
+ $(if $(GO_PKG_ENABLE_PIE),-buildmode pie) \
$$$${installsuffix:+-installsuffix $$$$installsuffix} \
-trimpath \
-ldflags "all=$$$$ldflags" \