summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Neyman <stilor@att.net>2018-12-05 03:12:59 (GMT)
committerGitHub <noreply@github.com>2018-12-05 03:12:59 (GMT)
commitf8874f447e40852d33d65c1f443a90b0760901df (patch)
treef506cfa723b6e3baa28ac30e2be4a314516f5950
parentdc9fa6ad64f81e3314a469fc434f1dd4abcff0cc (diff)
parent1e5c48f190f5f0da9177a1137113b8d4a836ab9e (diff)
Merge pull request #1108 from stilor/config-fixes
Config fixes
-rw-r--r--config/binutils/binutils.in12
-rw-r--r--config/libc/glibc.in39
-rw-r--r--config/libc/mingw-w64.in1
-rw-r--r--config/libc/uClibc.in17
-rw-r--r--packages/binutils/binutils-ld.in (renamed from scripts/build/binutils/binutils-ld.in)0
-rw-r--r--packages/binutils/package.desc2
-rw-r--r--packages/uClibc-ng/config (renamed from contrib/uClibc-defconfigs/uClibc-ng.config)0
-rw-r--r--packages/uClibc/config (renamed from contrib/uClibc-defconfigs/uClibc.config)0
-rw-r--r--scripts/build/binutils/binutils.sh7
-rw-r--r--scripts/build/libc/glibc.sh4
-rw-r--r--scripts/build/libc/uClibc.sh9
11 files changed, 85 insertions, 6 deletions
diff --git a/config/binutils/binutils.in b/config/binutils/binutils.in
index bd32bd6..928659a 100644
--- a/config/binutils/binutils.in
+++ b/config/binutils/binutils.in
@@ -79,7 +79,7 @@ config BINUTILS_LINKER_LD_GOLD
config BINUTILS_LINKER_GOLD_LD
bool
prompt "gold, ld"
- depends on !BINUTILS_FORCE_LD_BFD_ONLY
+ depends on !BINUTILS_FORCE_LD_BFD_DEFAULT && !BINUTILS_FORCE_LD_BFD_ONLY
depends on BINUTILS_GOLD_SUPPORT
select BINUTILS_GOLD_INSTALLED
select BINUTILS_LINKER_BOTH
@@ -146,6 +146,16 @@ config BINUTILS_PLUGINS
Especially, gold can use the lto-plugin, as installed
by gcc, to handle LTO.
+config BINUTILS_RELRO
+ tristate
+ prompt "Enable -z relro in ELF linker by default" if BINUTILS_2_27_or_later
+ default m
+ help
+ Setting this option forces "-z relro" by default in the ELF linker.
+ Clearing this option forces "-z norelro" by default in the ELF linker.
+ Setting this option to 'M' configures binutils with their internal
+ default for the selected architecture.
+
config BINUTILS_EXTRA_CONFIG_ARRAY
string
prompt "binutils extra config"
diff --git a/config/libc/glibc.in b/config/libc/glibc.in
index 5916a83..527063f 100644
--- a/config/libc/glibc.in
+++ b/config/libc/glibc.in
@@ -320,6 +320,45 @@ config GLIBC_MIN_KERNEL
default LINUX_VERSION if GLIBC_KERNEL_VERSION_AS_HEADERS
default GLIBC_MIN_KERNEL_VERSION if GLIBC_KERNEL_VERSION_CHOSEN
+
+choice
+ bool "Stack-smashing protection (SSP) in glibc"
+ default GLIBC_SSP_DEFAULT
+
+config GLIBC_SSP_DEFAULT
+ bool "default"
+ help
+ Glibc's configure script determines the stack protection level.
+
+config GLIBC_SSP_NO
+ bool "no"
+ help
+ Glibc functions are not protected against stack-smashing.
+
+config GLIBC_SSP_YES
+ bool "yes"
+ help
+ Glibc is compiled with -fstack-protector option.
+
+config GLIBC_SSP_ALL
+ bool "all"
+ help
+ Glibc is compiled with -fstack-protector-all option.
+
+config GLIBC_SSP_STRONG
+ bool "strong"
+ help
+ Glibc is compiled with -fstack-protector-strong option.
+
+endchoice
+
+config GLIBC_SSP
+ string
+ default "no" if GLIBC_SSP_NO
+ default "yes" if GLIBC_SSP_YES
+ default "all" if GLIBC_SSP_ALL
+ default "strong" if GLIBC_SSP_STRONG
+
# All supported versions of glibc build cleanly with GCC7 and earlier.
# GCC8-related fixes were only available in glibc 2.27.
config GLIBC_ENABLE_WERROR
diff --git a/config/libc/mingw-w64.in b/config/libc/mingw-w64.in
index 02b18a2..d176e47 100644
--- a/config/libc/mingw-w64.in
+++ b/config/libc/mingw-w64.in
@@ -5,6 +5,7 @@
## select LIBC_SUPPORT_THREADS_NATIVE
## select LIBC_SUPPORT_THREADS_POSIX
## select CC_CORE_PASS_2_NEEDED
+## select BINUTILS_FORCE_LD_BFD_DEFAULT
##
## help The de-facto standard for Mingw distributions.
diff --git a/config/libc/uClibc.in b/config/libc/uClibc.in
index 7bdd03f..2b11e0c 100644
--- a/config/libc/uClibc.in
+++ b/config/libc/uClibc.in
@@ -207,6 +207,23 @@ config LIBC_UCLIBC_RPC
help
Enable support for remote procedure calls (RPC) in uClibc.
+config LIBC_UCLIBC_HAS_SSP
+ bool
+ prompt "Support stack smashing protection (SSP)"
+ default y
+ help
+ Enable support for building programs with -fstack-protector family
+ of options. If this option is disabled, one can also use a standalone
+ libssp library from GCC.
+
+config LIBC_UCLIBC_BUILD_SSP
+ bool
+ prompt "Build uClibc with SSP"
+ depends on LIBC_UCLIBC_HAS_SSP
+ help
+ Build uClibc with -fstack-protector. This adds runtime overhead
+ to many function calls and is disabled by default.
+
if ARCH_ARM
config LIBC_UCLIBC_USE_GNU_SUFFIX
bool
diff --git a/scripts/build/binutils/binutils-ld.in b/packages/binutils/binutils-ld.in
index 30f4591..30f4591 100644
--- a/scripts/build/binutils/binutils-ld.in
+++ b/packages/binutils/binutils-ld.in
diff --git a/packages/binutils/package.desc b/packages/binutils/package.desc
index cf38889..317cd6c 100644
--- a/packages/binutils/package.desc
+++ b/packages/binutils/package.desc
@@ -1,6 +1,6 @@
repository='git git://sourceware.org/git/binutils-gdb.git'
mirrors='$(CT_Mirrors GNU binutils) $(CT_Mirrors sourceware binutils/releases)'
origin='GNU'
-milestones='2.23 2.25 2.30'
+milestones='2.23 2.25 2.27 2.30'
archive_formats='.tar.xz .tar.bz2 .tar.gz'
signature_format='packed/.sig'
diff --git a/contrib/uClibc-defconfigs/uClibc-ng.config b/packages/uClibc-ng/config
index 1f0a8c1..1f0a8c1 100644
--- a/contrib/uClibc-defconfigs/uClibc-ng.config
+++ b/packages/uClibc-ng/config
diff --git a/contrib/uClibc-defconfigs/uClibc.config b/packages/uClibc/config
index 104eb5c..104eb5c 100644
--- a/contrib/uClibc-defconfigs/uClibc.config
+++ b/packages/uClibc/config
diff --git a/scripts/build/binutils/binutils.sh b/scripts/build/binutils/binutils.sh
index f61b556..d1745a3 100644
--- a/scripts/build/binutils/binutils.sh
+++ b/scripts/build/binutils/binutils.sh
@@ -153,6 +153,11 @@ do_binutils_backend() {
if [ "${CT_BINUTILS_PLUGINS}" = "y" ]; then
extra_config+=( --enable-plugins )
fi
+ if [ "${CT_BINUTILES_RELRO}" = "y" ]; then
+ extra_config+=( --enable-relro )
+ elif [ "${CT_BINUTILS_RELRO}" != "m" ]; then
+ extra_config+=( --disable-relro )
+ fi
if [ "${CT_BINUTILS_HAS_PKGVERSION_BUGURL}" = "y" ]; then
[ -n "${CT_PKGVERSION}" ] && extra_config+=("--with-pkgversion=${CT_PKGVERSION}")
[ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}")
@@ -221,7 +226,7 @@ do_binutils_backend() {
rm -f "${prefix}/bin/${CT_TARGET}-ld"
rm -f "${prefix}/${CT_TARGET}/bin/ld"
sed -r -e "s/@@DEFAULT_LD@@/${CT_BINUTILS_LINKER_DEFAULT}/" \
- "${CT_LIB_DIR}/scripts/build/binutils/binutils-ld.in" \
+ "${CT_LIB_DIR}/packages/binutils/binutils-ld.in" \
>"${prefix}/bin/${CT_TARGET}-ld"
chmod a+x "${prefix}/bin/${CT_TARGET}-ld"
cp -a "${prefix}/bin/${CT_TARGET}-ld" \
diff --git a/scripts/build/libc/glibc.sh b/scripts/build/libc/glibc.sh
index a9adbbb..4d44fea 100644
--- a/scripts/build/libc/glibc.sh
+++ b/scripts/build/libc/glibc.sh
@@ -176,6 +176,10 @@ glibc_backend_once()
[ -n "${CT_PKGVERSION}" ] && extra_config+=("--with-pkgversion=${CT_PKGVERSION}")
[ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}")
+ if [ -n "${CT_GLIBC_SSP}" ]; then
+ extra_config+=("--enable-stack-protector=${CT_GLIBC_SSP}")
+ fi
+
touch config.cache
# Hide host C++ binary from configure
diff --git a/scripts/build/libc/uClibc.sh b/scripts/build/libc/uClibc.sh
index 7b66204..ccadfeb 100644
--- a/scripts/build/libc/uClibc.sh
+++ b/scripts/build/libc/uClibc.sh
@@ -94,7 +94,7 @@ uClibc_backend_once()
# Use the default config if the user did not provide one.
if [ -z "${CT_LIBC_UCLIBC_CONFIG_FILE}" ]; then
- CT_LIBC_UCLIBC_CONFIG_FILE="${CT_LIB_DIR}/contrib/uClibc-defconfigs/${uClibc_name}.config"
+ CT_LIBC_UCLIBC_CONFIG_FILE="${CT_LIB_DIR}/packages/${uClibc_name}/config"
fi
manage_uClibc_config "${CT_LIBC_UCLIBC_CONFIG_FILE}" .config "${multi_flags}"
@@ -324,11 +324,14 @@ manage_uClibc_config()
fi
# Stack Smash Protection (SSP)
- if [ "${CT_CC_GCC_LIBSSP}" = "y" ]; then
+ if [ "${CT_LIBC_UCLIBC_HAS_SSP}" = "y" ]; then
CT_KconfigEnableOption "UCLIBC_HAS_SSP" "${dst}"
- CT_KconfigEnableOption "UCLIBC_BUILD_SSP" "${dst}"
else
CT_KconfigDisableOption "UCLIBC_HAS_SSP" "${dst}"
+ fi
+ if [ "${CT_LIBC_UCLIBC_BUILD_SSP}" = "y" ]; then
+ CT_KconfigEnableOption "UCLIBC_BUILD_SSP" "${dst}"
+ else
CT_KconfigDisableOption "UCLIBC_BUILD_SSP" "${dst}"
fi