Home Home > GIT Browse > SLE12-SP3
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Suchanek <msuchanek@suse.de>2019-01-16 11:17:23 +0100
committerMichal Suchanek <msuchanek@suse.de>2019-01-16 11:17:23 +0100
commit3b35f95766e050b354cceb9e2a3b6428125b1951 (patch)
tree2f2f64206116957cccb5a610fd600f5fd5236701
parent67e7ae95e7780590054db8b1b019772f6363f672 (diff)
powerpc/boot: Request no dynamic linker for boot wrapper
(bsc#1070805).
-rw-r--r--patches.rpmify/powerpc-boot-Request-no-dynamic-linker-for-boot-wrap.patch78
-rw-r--r--series.conf1
2 files changed, 79 insertions, 0 deletions
diff --git a/patches.rpmify/powerpc-boot-Request-no-dynamic-linker-for-boot-wrap.patch b/patches.rpmify/powerpc-boot-Request-no-dynamic-linker-for-boot-wrap.patch
new file mode 100644
index 0000000000..4fe8ea4f6d
--- /dev/null
+++ b/patches.rpmify/powerpc-boot-Request-no-dynamic-linker-for-boot-wrap.patch
@@ -0,0 +1,78 @@
+From 1d2c031c6a487bc3564a44e746e8b0e2f7d3187d Mon Sep 17 00:00:00 2001
+From: Nicholas Piggin <npiggin@gmail.com>
+Date: Mon, 28 Nov 2016 12:42:26 +1100
+Subject: [PATCH] powerpc/boot: Request no dynamic linker for boot wrapper
+
+References: bsc#1070805
+Patch-mainline: v4.10-rc1
+Git-commit: ff45000fcb56b5b0f1a14a865d3541746d838a0a
+
+The boot wrapper performs its own relocations and does not require
+PT_INTERP segment. However currently we don't tell the linker that.
+
+Prior to binutils 2.28 that works OK. But since binutils commit
+1a9ccd70f9a7 ("Fix the linker so that it will not silently generate ELF
+binaries with invalid program headers. Fix readelf to report such
+invalid binaries.") binutils tries to create a program header segment
+due to PT_INTERP, and the link fails because there is no space for it:
+
+ ld: arch/powerpc/boot/zImage.pseries: Not enough room for program headers, try linking with -N
+ ld: final link failed: Bad value
+
+So tell the linker not to do that, by passing --no-dynamic-linker.
+
+Cc: stable@vger.kernel.org
+Reported-by: Anton Blanchard <anton@samba.org>
+Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
+[mpe: Drop dependency on ld-version.sh and massage change log]
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/powerpc/boot/wrapper | 24 +++++++++++++++++++++++-
+ 1 file changed, 23 insertions(+), 1 deletion(-)
+
+diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper
+index ceaa75d5a684..be4831acda22 100755
+--- a/arch/powerpc/boot/wrapper
++++ b/arch/powerpc/boot/wrapper
+@@ -161,6 +161,28 @@ case "$elfformat" in
+ elf32-powerpc) format=elf32ppc ;;
+ esac
+
++ld_version()
++{
++ # Poached from scripts/ld-version.sh, but we don't want to call that because
++ # this script (wrapper) is distributed separately from the kernel source.
++ # Extract linker version number from stdin and turn into single number.
++ awk '{
++ gsub(".*\\)", "");
++ gsub(".*version ", "");
++ gsub("-.*", "");
++ split($1,a, ".");
++ print a[1]*100000000 + a[2]*1000000 + a[3]*10000;
++ exit
++ }'
++}
++
++# Do not include PT_INTERP segment when linking pie. Non-pie linking
++# just ignores this option.
++LD_VERSION=$(${CROSS}ld --version | ld_version)
++LD_NO_DL_MIN_VERSION=$(echo 2.26 | ld_version)
++if [ "$LD_VERSION" -ge "$LD_NO_DL_MIN_VERSION" ] ; then
++ nodl="--no-dynamic-linker"
++fi
+
+ platformo=$object/"$platform".o
+ lds=$object/zImage.lds
+@@ -412,7 +434,7 @@ if [ "$platform" != "miboot" ]; then
+ if [ -n "$link_address" ] ; then
+ text_start="-Ttext $link_address"
+ fi
+- ${CROSS}ld -m $format -T $lds $text_start $pie -o "$ofile" \
++ ${CROSS}ld -m $format -T $lds $text_start $pie $nodl -o "$ofile" \
+ $platformo $tmp $object/wrapper.a
+ rm $tmp
+ fi
+--
+2.19.2
+
diff --git a/series.conf b/series.conf
index db5084691f..bd5e91b3b2 100644
--- a/series.conf
+++ b/series.conf
@@ -123,6 +123,7 @@
# and patched flavors.
########################################################
patches.rpmify/lustre-lloop-dont-change-logical-size
+ patches.rpmify/powerpc-boot-Request-no-dynamic-linker-for-boot-wrap.patch
########################################################
# kABI placeholders & consistency patches