aboutsummaryrefslogtreecommitdiff
path: root/resources
diff options
context:
space:
mode:
Diffstat (limited to 'resources')
-rw-r--r--resources/libreboot/patch/crossgcc/gccfix.diff27
-rw-r--r--resources/libreboot/patch/crossgcc/libelf.patch25
-rw-r--r--resources/libreboot/patch/crossgcc/looking_for_pie.patch32
-rwxr-xr-xresources/scripts/helpers/download/crossgcc7
4 files changed, 61 insertions, 30 deletions
diff --git a/resources/libreboot/patch/crossgcc/gccfix.diff b/resources/libreboot/patch/crossgcc/gccfix.diff
deleted file mode 100644
index 49e6227b..00000000
--- a/resources/libreboot/patch/crossgcc/gccfix.diff
+++ /dev/null
@@ -1,27 +0,0 @@
-From ea0c2d76c4f16eccaafcb2c0741f76825505bafc Mon Sep 17 00:00:00 2001
-From: Nico Huber <nico.huber@secunet.com>
-Date: Thu, 22 Dec 2016 16:05:54 +0100
-Subject: [PATCH] DONOTMERGE buildgcc: Build GMP `--with-pic` if GCC defaults to `-pie`
-
-Change-Id: I5f3185af9c8d599379a628e18724b217b88be974
-Signed-off-by: Nico Huber <nico.huber@secunet.com>
----
-
-diff --git a/util/crossgcc/buildgcc b/util/crossgcc/buildgcc
-index 97c38b8..4eefd43 100755
---- a/util/crossgcc/buildgcc
-+++ b/util/crossgcc/buildgcc
-@@ -515,6 +515,13 @@
- }
-
- build_GMP() {
-+ # Check if GCC enables `-pie` by default (likely on Debian Stretch).
-+ # We have to use `--with-pic` 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
diff --git a/resources/libreboot/patch/crossgcc/libelf.patch b/resources/libreboot/patch/crossgcc/libelf.patch
new file mode 100644
index 00000000..af954446
--- /dev/null
+++ b/resources/libreboot/patch/crossgcc/libelf.patch
@@ -0,0 +1,25 @@
+From e2896721cff5af4d869a7c900e748c803f25a2ce Mon Sep 17 00:00:00 2001
+From: Andrew Robbins <contact@andrewrobbins.info>
+Date: Thu, 26 Sep 2019 18:19:07 -0500
+Subject: [PATCH] buildgcc: Replace dead libelf archive URI
+
+---
+ util/crossgcc/buildgcc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/util/crossgcc/buildgcc b/util/crossgcc/buildgcc
+index 97c38b8d95..54f87972e6 100755
+--- a/util/crossgcc/buildgcc
++++ b/util/crossgcc/buildgcc
+@@ -57,7 +57,7 @@ MAKE_VERSION=4.2.1
+ GMP_ARCHIVE="http://ftpmirror.gnu.org/gmp/gmp-${GMP_VERSION}.tar.xz"
+ MPFR_ARCHIVE="http://ftpmirror.gnu.org/mpfr/mpfr-${MPFR_VERSION}.tar.xz"
+ MPC_ARCHIVE="http://ftpmirror.gnu.org/mpc/mpc-${MPC_VERSION}.tar.gz"
+-LIBELF_ARCHIVE="http://www.mr511.de/software/libelf-${LIBELF_VERSION}.tar.gz"
++LIBELF_ARCHIVE="https://fossies.org/linux/misc/old/libelf-${LIBELF_VERSION}.tar.gz"
+ GCC_ARCHIVE="http://ftpmirror.gnu.org/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.bz2"
+ BINUTILS_ARCHIVE="http://ftpmirror.gnu.org/binutils/binutils-${BINUTILS_VERSION}.tar.bz2"
+ GDB_ARCHIVE="http://ftpmirror.gnu.org/gdb/gdb-${GDB_VERSION}.tar.xz"
+--
+2.23.0
+
diff --git a/resources/libreboot/patch/crossgcc/looking_for_pie.patch b/resources/libreboot/patch/crossgcc/looking_for_pie.patch
new file mode 100644
index 00000000..942edac2
--- /dev/null
+++ b/resources/libreboot/patch/crossgcc/looking_for_pie.patch
@@ -0,0 +1,32 @@
+From e64fb0ce10d01d99154fb4bd95529e5cd8dfd4be Mon Sep 17 00:00:00 2001
+From: Andrew Robbins <contact@andrewrobbins.info>
+Date: Fri, 27 Sep 2019 09:38:09 -0500
+Subject: [PATCH] buildgcc: Check for '-pie' when building gmp
+
+The regex formerly used was not flexible enough to catch some
+instances where the '-pie' flag would be enabled.
+---
+ util/crossgcc/buildgcc | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/util/crossgcc/buildgcc b/util/crossgcc/buildgcc
+index 97c38b8d95..a6e4728514 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:]]*\(!no-pie\)\?:-pie\>'
++ then
++ OPTIONS="$OPTIONS --with-pic"
++ fi
++
+ CC="$CC" ../${GMP_DIR}/configure --disable-shared --enable-fat \
+ --prefix=$TARGETDIR $OPTIONS \
+ || touch .failed
+--
+2.23.0
+
diff --git a/resources/scripts/helpers/download/crossgcc b/resources/scripts/helpers/download/crossgcc
index 54f55439..8522458a 100755
--- a/resources/scripts/helpers/download/crossgcc
+++ b/resources/scripts/helpers/download/crossgcc
@@ -46,9 +46,10 @@ rm -Rf "crossgcc/"
cd 3rdparty/vboot/
git reset --hard ${vbootrevision}
)
- # workaround to fix the error on debian stretch and later, when building
- # GMP. If -pie is enabled in GCC, then --with-pic must be used when compiling
- git am ../resources/libreboot/patch/crossgcc/gccfix.diff
+ # If -pie is enabled in GCC, then --with-pic must be used when compiling
+ git am ../resources/libreboot/patch/crossgcc/looking_for_pie.patch
+ # Update URI pointing to the version of libelf we need
+ git am ../resources/libreboot/patch/crossgcc/libelf.patch
#Patch to add hash checking to buildgcc
git apply ../resources/libreboot/patch/crossgcc/buildgcc_hash_patch.diff
rm -Rf .git* */*/.git*