| From foo@baz Sun Jun 17 12:07:34 CEST 2018 |
| From: Russell King <rmk+kernel@armlinux.org.uk> |
| Date: Mon, 16 Apr 2018 13:21:54 +0100 |
| Subject: ARM: replace unnecessary perl with sed and the shell $(( )) operator |
| |
| From: Russell King <rmk+kernel@armlinux.org.uk> |
| |
| [ Upstream commit 6cea14f55474ec71f1098228e0ae5dd2a8f22c0a ] |
| |
| You can build a kernel in a cross compiling environment that doesn't |
| have perl in the $PATH. Commit 429f7a062e3b broke that for 32 bit |
| ARM. Fix it. |
| |
| As reported by Stephen Rothwell, it appears that the symbols can be |
| either part of the BSS section or absolute symbols depending on the |
| binutils version. When they're an absolute symbol, the $(( )) |
| operator errors out and the build fails. Fix this as well. |
| |
| Fixes: 429f7a062e3b ("ARM: decompressor: fix BSS size calculation") |
| Reported-by: Rob Landley <rob@landley.net> |
| Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> |
| Acked-by: Rob Landley <rob@landley.net> |
| Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/arm/boot/compressed/Makefile | 8 +++----- |
| 1 file changed, 3 insertions(+), 5 deletions(-) |
| |
| --- a/arch/arm/boot/compressed/Makefile |
| +++ b/arch/arm/boot/compressed/Makefile |
| @@ -117,11 +117,9 @@ ccflags-y := -fpic -mno-single-pic-base |
| asflags-y := -DZIMAGE |
| |
| # Supply kernel BSS size to the decompressor via a linker symbol. |
| -KBSS_SZ = $(shell $(CROSS_COMPILE)nm $(obj)/../../../../vmlinux | \ |
| - perl -e 'while (<>) { \ |
| - $$bss_start=hex($$1) if /^([[:xdigit:]]+) B __bss_start$$/; \ |
| - $$bss_end=hex($$1) if /^([[:xdigit:]]+) B __bss_stop$$/; \ |
| - }; printf "%d\n", $$bss_end - $$bss_start;') |
| +KBSS_SZ = $(shell echo $$(($$($(CROSS_COMPILE)nm $(obj)/../../../../vmlinux | \ |
| + sed -n -e 's/^\([^ ]*\) [AB] __bss_start$$/-0x\1/p' \ |
| + -e 's/^\([^ ]*\) [AB] __bss_stop$$/+0x\1/p') )) ) |
| LDFLAGS_vmlinux = --defsym _kernel_bss_size=$(KBSS_SZ) |
| # Supply ZRELADDR to the decompressor via a linker symbol. |
| ifneq ($(CONFIG_AUTO_ZRELADDR),y) |