diff --git a/config/Config-build.in b/config/Config-build.in index 2d08f4ccd2..caeae79944 100644 --- a/config/Config-build.in +++ b/config/Config-build.in @@ -383,6 +383,15 @@ menu "Global build settings" bool "Full" endchoice + config PKG_DT_RELR + bool "Link with relative relocations (RELR)" + depends on (aarch64 || i386 || loongarch64 || x86_64) + default y + help + Link all applications with -Wl,-z,pack-relative-relocs. + This will reduce the size of many applications. + This is only supported on a limited number of architectures. + config TARGET_ROOTFS_SECURITY_LABELS bool select KERNEL_SQUASHFS_XATTR diff --git a/include/hardening.mk b/include/hardening.mk index a2be5eabd0..1565e5aa27 100644 --- a/include/hardening.mk +++ b/include/hardening.mk @@ -8,6 +8,7 @@ PKG_ASLR_PIE_REGULAR ?= 0 PKG_SSP ?= 1 PKG_FORTIFY_SOURCE ?= 1 PKG_RELRO ?= 1 +PKG_DT_RELR ?= 1 ifdef CONFIG_PKG_CHECK_FORMAT_SECURITY ifeq ($(strip $(PKG_CHECK_FORMAT_SECURITY)),1) @@ -69,3 +70,10 @@ ifdef CONFIG_PKG_RELRO_FULL endif endif +ifdef CONFIG_PKG_DT_RELR + ifeq ($(strip $(PKG_DT_RELR)),1) + TARGET_CFLAGS += -Wl,-z,pack-relative-relocs + TARGET_LDFLAGS += -zpack-relative-relocs + endif +endif +