mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2025-12-09 06:02:10 -05:00
This adds the -Wl,-z,pack-relative-relocs linking options. This reduces the size of some binaries. This is only supported on i386, x86_64, aarch64 and loongarch64 in binutils. This feature is not support for MIPS. musl libc supports it since version 1.2.4 . glibc supports it since vesion 2.36. binutils ld supports it since version 2.38 for x86 and since version 2.43 for LoongArch. This reduces the size of the armsr default root file system from 5,262,198 bytes to 5,200,950 bytes by 61,248 bytes. Link: https://github.com/openwrt/openwrt/pull/20679 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
80 lines
2.0 KiB
Makefile
80 lines
2.0 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0-only
|
|
#
|
|
# Copyright (C) 2015-2020 OpenWrt.org
|
|
|
|
PKG_CHECK_FORMAT_SECURITY ?= 1
|
|
PKG_ASLR_PIE ?= 1
|
|
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)
|
|
TARGET_CFLAGS += -Wformat -Werror=format-security
|
|
endif
|
|
endif
|
|
ifdef CONFIG_PKG_ASLR_PIE_ALL
|
|
ifeq ($(strip $(PKG_ASLR_PIE)),1)
|
|
TARGET_CFLAGS += $(FPIC)
|
|
TARGET_LDFLAGS += $(FPIC) -specs=$(INCLUDE_DIR)/hardened-ld-pie.specs
|
|
endif
|
|
endif
|
|
ifdef CONFIG_PKG_ASLR_PIE_REGULAR
|
|
ifeq ($(strip $(PKG_ASLR_PIE_REGULAR)),1)
|
|
TARGET_CFLAGS += $(FPIC)
|
|
TARGET_LDFLAGS += $(FPIC) -specs=$(INCLUDE_DIR)/hardened-ld-pie.specs
|
|
endif
|
|
endif
|
|
ifdef CONFIG_PKG_CC_STACKPROTECTOR_REGULAR
|
|
ifeq ($(strip $(PKG_SSP)),1)
|
|
TARGET_CFLAGS += -fstack-protector
|
|
endif
|
|
endif
|
|
ifdef CONFIG_PKG_CC_STACKPROTECTOR_STRONG
|
|
ifeq ($(strip $(PKG_SSP)),1)
|
|
TARGET_CFLAGS += -fstack-protector-strong
|
|
endif
|
|
endif
|
|
ifdef CONFIG_PKG_CC_STACKPROTECTOR_ALL
|
|
ifeq ($(strip $(PKG_SSP)),1)
|
|
TARGET_CFLAGS += -fstack-protector-all
|
|
endif
|
|
endif
|
|
ifdef CONFIG_PKG_FORTIFY_SOURCE_1
|
|
ifeq ($(strip $(PKG_FORTIFY_SOURCE)),1)
|
|
TARGET_CFLAGS += -D_FORTIFY_SOURCE=1
|
|
endif
|
|
endif
|
|
ifdef CONFIG_PKG_FORTIFY_SOURCE_2
|
|
ifeq ($(strip $(PKG_FORTIFY_SOURCE)),1)
|
|
TARGET_CFLAGS += -D_FORTIFY_SOURCE=2
|
|
endif
|
|
endif
|
|
ifdef CONFIG_PKG_FORTIFY_SOURCE_3
|
|
ifeq ($(strip $(PKG_FORTIFY_SOURCE)),1)
|
|
TARGET_CFLAGS += -D_FORTIFY_SOURCE=3
|
|
endif
|
|
endif
|
|
ifdef CONFIG_PKG_RELRO_PARTIAL
|
|
ifeq ($(strip $(PKG_RELRO)),1)
|
|
TARGET_CFLAGS += -Wl,-z,relro
|
|
TARGET_LDFLAGS += -zrelro
|
|
endif
|
|
endif
|
|
ifdef CONFIG_PKG_RELRO_FULL
|
|
ifeq ($(strip $(PKG_RELRO)),1)
|
|
TARGET_CFLAGS += -Wl,-z,now -Wl,-z,relro
|
|
TARGET_LDFLAGS += -znow -zrelro
|
|
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
|
|
|