From de3fa43891bc679da14f8d14dda835180a8e977c Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Sun, 27 Oct 2019 23:03:34 +0100 Subject: [PATCH] Config.in: disable PIC/PIE if the toolchain does not support PIE m68k does not seem to really support PIE as it raises the following build failure with aer-inject: /usr/lfs/hdd_v1/rc-buildroot-test/scripts/instance-1/output/host/opt/ext-toolchain/bin/../lib/gcc/m68k-buildroot-linux-uclibc/7.4.0/../../../../m68k-buildroot-linux-uclibc/bin/ld: /usr/lfs/hdd_v1/rc-buildroot-test/scripts/instance-1/output/host/m68k-buildroot-linux-uclibc/sysroot/usr/lib/Scrt1.o: in function `lib_main': (.text+0x4): undefined reference to `__shared_flat_add_library' /usr/lfs/hdd_v1/rc-buildroot-test/scripts/instance-1/output/host/opt/ext-toolchain/bin/../lib/gcc/m68k-buildroot-linux-uclibc/7.4.0/../../../../m68k-buildroot-linux-uclibc/bin/ld: final link failed: bad value We also have another build failure with uclibc on microblazeel: /home/buildroot/autobuild/instance-1/output-1/host/lib/gcc/microblazeel-buildroot-linux-uclibc/8.3.0/../../../../microblazeel-buildroot-linux-uclibc/bin/ld: final link failed: bad value collect2: error: ld returned 1 exit status Makefile.in:114: recipe for target '../utils/getconf' failed So add a BR2_TOOLCHAIN_SUPPORTS_PIE dependency on BR2_PIC_PIE Fixes: - http://autobuild.buildroot.net/results/4cdd6f0368cc9d3c6e88f01b1a8929eb0839b638 - http://autobuild.buildroot.net/results/a82a484409149d7f9aff6140ddcb89f627f508c7 Signed-off-by: Fabrice Fontaine Reviewed-by: Yann E. MORIN Signed-off-by: Peter Korsgaard --- Config.in | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Config.in b/Config.in index ebbb6b41f4..010b0774e3 100644 --- a/Config.in +++ b/Config.in @@ -697,10 +697,15 @@ comment "Security Hardening Options" config BR2_PIC_PIE bool "Build code with PIC/PIE" depends on BR2_SHARED_LIBS + depends on BR2_TOOLCHAIN_SUPPORTS_PIE help Generate Position-Independent Code (PIC) and link Position-Independent Executables (PIE). +comment "PIC/PIE needs a toolchain w/ PIE" + depends on BR2_SHARED_LIBS + depends on !BR2_TOOLCHAIN_SUPPORTS_PIE + choice bool "Stack Smashing Protection" default BR2_SSP_ALL if BR2_ENABLE_SSP # legacy @@ -783,12 +788,16 @@ config BR2_RELRO_PARTIAL config BR2_RELRO_FULL bool "Full" + depends on BR2_TOOLCHAIN_SUPPORTS_PIE select BR2_PIC_PIE help This option includes the partial configuration, but also marks the GOT as read-only at the cost of initialization time during program loading, i.e every time an executable is started. +comment "RELRO Full needs a toolchain w/ PIE" + depends on !BR2_TOOLCHAIN_SUPPORTS_PIE + endchoice comment "RELocation Read Only (RELRO) needs shared libraries" -- 2.30.2