Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6cea14f5 authored by Russell King's avatar Russell King
Browse files

ARM: replace unnecessary perl with sed and the shell $(( )) operator



You can build a kernel in a cross compiling environment that doesn't
have perl in the $PATH. Commit 429f7a06 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: 429f7a06 ("ARM: decompressor: fix BSS size calculation")
Reported-by: default avatarRob Landley <rob@landley.net>
Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
Acked-by: default avatarRob Landley <rob@landley.net>
Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
parent 1c37963b
Loading
Loading
Loading
Loading
+3 −5
Original line number Original line Diff line number Diff line
@@ -117,11 +117,9 @@ ccflags-y := -fpic -mno-single-pic-base -fno-builtin -I$(obj)
asflags-y := -DZIMAGE
asflags-y := -DZIMAGE


# Supply kernel BSS size to the decompressor via a linker symbol.
# Supply kernel BSS size to the decompressor via a linker symbol.
KBSS_SZ = $(shell $(CROSS_COMPILE)nm $(obj)/../../../../vmlinux | \
KBSS_SZ = $(shell echo $$(($$($(CROSS_COMPILE)nm $(obj)/../../../../vmlinux | \
		perl -e 'while (<>) { \
		sed -n -e 's/^\([^ ]*\) [AB] __bss_start$$/-0x\1/p' \
			$$bss_start=hex($$1) if /^([[:xdigit:]]+) B __bss_start$$/; \
		       -e 's/^\([^ ]*\) [AB] __bss_stop$$/+0x\1/p') )) )
			$$bss_end=hex($$1) if /^([[:xdigit:]]+) B __bss_stop$$/; \
		}; printf "%d\n", $$bss_end - $$bss_start;')
LDFLAGS_vmlinux = --defsym _kernel_bss_size=$(KBSS_SZ)
LDFLAGS_vmlinux = --defsym _kernel_bss_size=$(KBSS_SZ)
# Supply ZRELADDR to the decompressor via a linker symbol.
# Supply ZRELADDR to the decompressor via a linker symbol.
ifneq ($(CONFIG_AUTO_ZRELADDR),y)
ifneq ($(CONFIG_AUTO_ZRELADDR),y)