From 241e6dd3e92c4f215b8ac75379a4b5aeaeb92171 Mon Sep 17 00:00:00 2001 From: Julien Dusser Date: Sun, 7 Jan 2018 18:47:21 +0100 Subject: [PATCH] build: cleanup SSP_SUPPORT configure option Configure variable SSP_SUPPORT is ambiguous for packages (tor, openssh, avahi, freeswitch). It means 'toolchain supporting SSP', but for toolchain and depends it means 'build gcc with libssp'. Musl no longer uses libssp (1877bc9d8f), it has internal support, so SSP_SUPPORT was disabled leading some package to not use SSP. No information why Glibc and uClibc use libssp, but they may also provide their own SSP support. uClibc used it own with commit 933b588e25 but it was reverted in f3cacb9e84 without details. Create an new configure GCC_LIBSSP and automatically enable SSP_SUPPORT if either USE_MUSL or GCC_LIBSSP. Signed-off-by: Julien Dusser --- config/Config-build.in | 4 ++-- include/package-defaults.mk | 2 +- package/libs/toolchain/Makefile | 2 +- toolchain/Config.in | 4 ++++ toolchain/gcc/Config.in | 4 ++-- toolchain/gcc/common.mk | 2 +- 6 files changed, 11 insertions(+), 7 deletions(-) diff --git a/config/Config-build.in b/config/Config-build.in index 660da1c47f4d..a082a5e0e2ed 100644 --- a/config/Config-build.in +++ b/config/Config-build.in @@ -210,11 +210,11 @@ menu "Global build settings" bool "None" config PKG_CC_STACKPROTECTOR_REGULAR bool "Regular" - select SSP_SUPPORT if !USE_MUSL + select GCC_LIBSSP if !USE_MUSL depends on KERNEL_CC_STACKPROTECTOR_REGULAR config PKG_CC_STACKPROTECTOR_STRONG bool "Strong" - select SSP_SUPPORT if !USE_MUSL + select GCC_LIBSSP if !USE_MUSL depends on !GCC_VERSION_4_8 depends on KERNEL_CC_STACKPROTECTOR_STRONG endchoice diff --git a/include/package-defaults.mk b/include/package-defaults.mk index 0bca076e72d1..6bbfdcc3cc22 100644 --- a/include/package-defaults.mk +++ b/include/package-defaults.mk @@ -5,7 +5,7 @@ # See /LICENSE for more information. # -PKG_DEFAULT_DEPENDS = +libc +SSP_SUPPORT:libssp +USE_GLIBC:librt +USE_GLIBC:libpthread +PKG_DEFAULT_DEPENDS = +libc +GCC_LIBSSP:libssp +USE_GLIBC:librt +USE_GLIBC:libpthread ifneq ($(PKG_NAME),toolchain) PKG_FIXUP_DEPENDS = $(if $(filter kmod-%,$(1)),$(2),$(PKG_DEFAULT_DEPENDS) $(filter-out $(PKG_DEFAULT_DEPENDS),$(2))) diff --git a/package/libs/toolchain/Makefile b/package/libs/toolchain/Makefile index ce0acd19b2d2..febc7c2dbcae 100644 --- a/package/libs/toolchain/Makefile +++ b/package/libs/toolchain/Makefile @@ -83,7 +83,7 @@ endef define Package/libssp $(call Package/gcc/Default) - DEPENDS+=@SSP_SUPPORT + DEPENDS+=@GCC_LIBSSP TITLE:=GCC support library endef diff --git a/toolchain/Config.in b/toolchain/Config.in index bf7b9c33d02c..3de2b108b7b8 100644 --- a/toolchain/Config.in +++ b/toolchain/Config.in @@ -286,6 +286,10 @@ config USE_MUSL default y if !TOOLCHAINOPTS && !EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN && !(arc || powerpc64) bool +config SSP_SUPPORT + default y if USE_MUSL || GCC_LIBSSP + bool + config USE_EXTERNAL_LIBC bool default y if EXTERNAL_TOOLCHAIN || NATIVE_TOOLCHAIN diff --git a/toolchain/gcc/Config.in b/toolchain/gcc/Config.in index 0fe0ea2957c3..30ac1378737c 100644 --- a/toolchain/gcc/Config.in +++ b/toolchain/gcc/Config.in @@ -52,9 +52,9 @@ config GCC_DEFAULT_SSP help Use gcc configure option --enable-default-ssp to turn on -fstack-protector-strong by default. -config SSP_SUPPORT +config GCC_LIBSSP bool - prompt "Enable Stack-Smashing Protection support" if TOOLCHAINOPTS + prompt "Build gcc libssp" if TOOLCHAINOPTS depends on !USE_MUSL default y if !USE_MUSL help diff --git a/toolchain/gcc/common.mk b/toolchain/gcc/common.mk index ece71ef0289c..fafc0c167192 100644 --- a/toolchain/gcc/common.mk +++ b/toolchain/gcc/common.mk @@ -143,7 +143,7 @@ ifneq ($(CONFIG_GCC_DEFAULT_SSP),) --enable-default-ssp endif -ifneq ($(CONFIG_SSP_SUPPORT),) +ifneq ($(CONFIG_GCC_LIBSSP),) GCC_CONFIGURE+= \ --enable-libssp else -- 2.30.2