From 8bbd596de631adc8b677e69603e978b848eb1708 Mon Sep 17 00:00:00 2001 From: Nico Huber Date: Thu, 22 Dec 2016 16:05:54 +0100 Subject: buildgcc: Build GMP `--with-pic` if GCC defaults to `-pie` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GCC 6 can optionally default to building all binaries as position independent executables (PIE). This breaks linking against static libraries that are compiled without position independent code (PIC). Building GMP `--with-pic` in this case seems to be the least fragile solution. TEST=Run `make all` and `make BUILDGCC_OPTIONS=-b build-i386` in util/crossgcc on Debian Stretch. Change-Id: I5f3185af9c8d599379a628e18724b217b88be974 Signed-off-by: Nico Huber Reviewed-on: https://review.coreboot.org/17936 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel Reviewed-by: Jonathan Neuschäfer --- util/crossgcc/buildgcc | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'util') diff --git a/util/crossgcc/buildgcc b/util/crossgcc/buildgcc index 97c38b8d95..30e2188111 100755 --- a/util/crossgcc/buildgcc +++ b/util/crossgcc/buildgcc @@ -515,6 +515,13 @@ set_hostcflags_from_gmp() { } build_GMP() { + # Check if GCC enables `-pie` by default (possible since GCC 6). + # We need PIC in all static libraries then. + if "${CC}" -dumpspecs 2>/dev/null | grep -q '[{;][[:space:]]*:-pie\>' + then + OPTIONS="$OPTIONS --with-pic" + fi + CC="$CC" ../${GMP_DIR}/configure --disable-shared --enable-fat \ --prefix=$TARGETDIR $OPTIONS \ || touch .failed -- cgit v1.2.3