lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-id: <alpine.LFD.2.02.1203161746250.24151@xanadu.home>
Date:	Fri, 16 Mar 2012 17:47:56 -0400 (EDT)
From:	Nicolas Pitre <nico@...xnic.net>
To:	Stephen Warren <swarren@...dotorg.org>
Cc:	Michal Marek <mmarek@...e.cz>,
	Russell King <linux@....linux.org.uk>,
	Haavard Skinnemoen <hskinnemoen@...il.com>,
	Hans-Christian Egtvedt <egtvedt@...fundet.no>,
	Mike Frysinger <vapier@...too.org>,
	Michal Simek <monstr@...str.eu>,
	Paul Mundt <lethal@...ux-sh.org>,
	"David S. Miller" <davem@...emloft.net>,
	Guan Xuetao <gxt@...c.pku.edu.cn>,
	linux-kernel@...r.kernel.org, linux-kbuild@...r.kernel.org,
	linux-arm-kernel@...ts.infradead.org,
	uclinux-dist-devel@...ckfin.uclinux.org,
	microblaze-uclinux@...e.uq.edu.au, linux-sh@...r.kernel.org,
	sparclinux@...r.kernel.org, linux-arch@...r.kernel.org
Subject: Re: [PATCH] Kbuild: centralize MKIMAGE and cmd_uimage definitions

On Fri, 16 Mar 2012, Stephen Warren wrote:

> All ARCHs have the same definition of MKIMAGE. Move it to Makefile.lib
> to avoid duplication.
> 
> All ARCHs have similar definitions of cmd_uimage. Place a sufficiently
> parameterized version in Makefile.lib to avoid duplication.
> 
> Signed-off-by: Stephen Warren <swarren@...dotorg.org>

Acked-by: Nicolas Pitre <nico@...aro.org>


> ---
> v2:
> * Fix blackfin's UIMAGE_LOADADDR in the ROMKERNEL case.
> * Fix missing ) on a variable reference in avr32 and sparc.
> * Only set those UIMAGE_* variables that the arch-specific Makefile hasn't
>   already set.
> * The patch series is now just this single patch which removes duplication;
>   I've dropped the Kconfig feature to allow use of -T kernel_noload for
>   now, since it looks like U-Boot is gaining direct zImage support.
> 
>  arch/arm/boot/Makefile          |   23 +++++++++--------------
>  arch/avr32/boot/images/Makefile |    9 +++------
>  arch/blackfin/boot/Makefile     |   19 ++++++++-----------
>  arch/microblaze/boot/Makefile   |   10 +++-------
>  arch/sh/boot/Makefile           |    8 ++------
>  arch/sparc/boot/Makefile        |    9 +++------
>  arch/unicore32/boot/Makefile    |   12 ++----------
>  scripts/Makefile.lib            |   24 ++++++++++++++++++++++++
>  8 files changed, 54 insertions(+), 60 deletions(-)
> 
> diff --git a/arch/arm/boot/Makefile b/arch/arm/boot/Makefile
> index fc871e7..c877087 100644
> --- a/arch/arm/boot/Makefile
> +++ b/arch/arm/boot/Makefile
> @@ -11,8 +11,6 @@
>  # Copyright (C) 1995-2002 Russell King
>  #
>  
> -MKIMAGE         := $(srctree)/scripts/mkuboot.sh
> -
>  ifneq ($(MACHINE),)
>  include $(srctree)/$(MACHINE)/Makefile.boot
>  endif
> @@ -69,22 +67,19 @@ $(obj)/dtbs: $(addprefix $(obj)/, $(dtb-y))
>  
>  clean-files := *.dtb
>  
> -quiet_cmd_uimage = UIMAGE  $@
> -      cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel \
> -		   -C none -a $(LOADADDR) -e $(STARTADDR) \
> -		   -n 'Linux-$(KERNELRELEASE)' -d $< $@
> -
> -ifeq ($(CONFIG_ZBOOT_ROM),y)
> -$(obj)/uImage: LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)
> +ifneq ($(LOADADDR),)
> +  UIMAGE_LOADADDR=$(LOADADDR)
>  else
> -$(obj)/uImage: LOADADDR=$(ZRELADDR)
> +  ifeq ($(CONFIG_ZBOOT_ROM),y)
> +    UIMAGE_LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)
> +  else
> +    UIMAGE_LOADADDR=$(ZRELADDR)
> +  endif
>  endif
>  
> -$(obj)/uImage: STARTADDR=$(LOADADDR)
> -
>  check_for_multiple_loadaddr = \
> -if [ $(words $(LOADADDR)) -gt 1 ]; then \
> -	echo 'multiple load addresses: $(LOADADDR)'; \
> +if [ $(words $(UIMAGE_LOADADDR)) -gt 1 ]; then \
> +	echo 'multiple load addresses: $(UIMAGE_LOADADDR)'; \
>  	echo 'This is incompatible with uImages'; \
>  	echo 'Specify LOADADDR on the commandline to build an uImage'; \
>  	false; \
> diff --git a/arch/avr32/boot/images/Makefile b/arch/avr32/boot/images/Makefile
> index 1848bf0..2a3b539 100644
> --- a/arch/avr32/boot/images/Makefile
> +++ b/arch/avr32/boot/images/Makefile
> @@ -6,8 +6,6 @@
>  # for more details.
>  #
>  
> -MKIMAGE		:= $(srctree)/scripts/mkuboot.sh
> -
>  extra-y		:= vmlinux.bin vmlinux.gz
>  
>  OBJCOPYFLAGS_vmlinux.bin := -O binary -R .note.gnu.build-id
> @@ -17,10 +15,9 @@ $(obj)/vmlinux.bin: vmlinux FORCE
>  $(obj)/vmlinux.gz: $(obj)/vmlinux.bin FORCE
>  	$(call if_changed,gzip)
>  
> -quiet_cmd_uimage = UIMAGE $@
> -      cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A avr32 -O linux -T kernel	\
> -		-C gzip -a $(CONFIG_LOAD_ADDRESS) -e $(CONFIG_ENTRY_ADDRESS)	\
> -		-n 'Linux-$(KERNELRELEASE)' -d $< $@
> +UIMAGE_LOADADDR = $(CONFIG_LOAD_ADDRESS)
> +UIMAGE_ENTRYADDR = $(CONFIG_ENTRY_ADDRESS)
> +UIMAGE_COMPRESSION = gzip
>  
>  targets += uImage uImage.srec
>  $(obj)/uImage: $(obj)/vmlinux.gz
> diff --git a/arch/blackfin/boot/Makefile b/arch/blackfin/boot/Makefile
> index 0a49279..f7d27d5 100644
> --- a/arch/blackfin/boot/Makefile
> +++ b/arch/blackfin/boot/Makefile
> @@ -6,20 +6,17 @@
>  # for more details.
>  #
>  
> -MKIMAGE := $(srctree)/scripts/mkuboot.sh
> -
>  targets := vmImage vmImage.bin vmImage.bz2 vmImage.gz vmImage.lzma vmImage.lzo vmImage.xip
>  extra-y += vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma vmlinux.bin.lzo vmlinux.bin.xip
>  
> -UIMAGE_OPTS-y :=
> -UIMAGE_OPTS-$(CONFIG_RAMKERNEL) += -a $(CONFIG_BOOT_LOAD)
> -UIMAGE_OPTS-$(CONFIG_ROMKERNEL) += -a $(CONFIG_ROM_BASE) -x
> -
> -quiet_cmd_uimage = UIMAGE  $@
> -      cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A $(ARCH) -O linux -T kernel \
> -                   -C $(2) -n '$(CPU_REV)-$(KERNELRELEASE)' \
> -                   -e $(shell $(NM) vmlinux | awk '$$NF == "__start" {print $$1}') \
> -                   $(UIMAGE_OPTS-y) -d $< $@
> +ifeq ($(CONFIG_RAMKERNEL),y)
> +UIMAGE_LOADADDR = $(CONFIG_BOOT_LOAD)
> +else # CONFIG_ROMKERNEL must be set
> +UIMAGE_LOADADDR = $(CONFIG_ROM_BASE)
> +endif
> +UIMAGE_ENTRYADDR = $(shell $(NM) vmlinux | awk '$$NF == "__start" {print $$1}')
> +UIMAGE_NAME = '$(CPU_REV)-$(KERNELRELEASE)'
> +UIMAGE_OPTS-$(CONFIG_ROMKERNEL) += -x
>  
>  $(obj)/vmlinux.bin: vmlinux FORCE
>  	$(call if_changed,objcopy)
> diff --git a/arch/microblaze/boot/Makefile b/arch/microblaze/boot/Makefile
> index 0c796cf..ca76ecd 100644
> --- a/arch/microblaze/boot/Makefile
> +++ b/arch/microblaze/boot/Makefile
> @@ -2,8 +2,6 @@
>  # arch/microblaze/boot/Makefile
>  #
>  
> -MKIMAGE := $(srctree)/scripts/mkuboot.sh
> -
>  obj-y += linked_dtb.o
>  
>  targets := linux.bin linux.bin.gz simpleImage.%
> @@ -35,11 +33,9 @@ quiet_cmd_strip = STRIP   $@
>  	cmd_strip = $(STRIP) -K microblaze_start -K _end -K __log_buf \
>  				-K _fdt_start vmlinux -o $@
>  
> -quiet_cmd_uimage = UIMAGE  $@.ub
> -	cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A microblaze -O linux -T kernel \
> -		-C none -n 'Linux-$(KERNELRELEASE)' \
> -		-a $(CONFIG_KERNEL_BASE_ADDR) -e $(CONFIG_KERNEL_BASE_ADDR) \
> -		-d $@ $@.ub
> +UIMAGE_IN = $@
> +UIMAGE_OUT = $@.ub
> +UIMAGE_LOADADDR = $(CONFIG_KERNEL_BASE_ADDR)
>  
>  $(obj)/simpleImage.%: vmlinux FORCE
>  	$(call if_changed,cp,.unstrip)
> diff --git a/arch/sh/boot/Makefile b/arch/sh/boot/Makefile
> index e4ea31a..58592df 100644
> --- a/arch/sh/boot/Makefile
> +++ b/arch/sh/boot/Makefile
> @@ -8,8 +8,6 @@
>  # Copyright (C) 1999 Stuart Menefy
>  #
>  
> -MKIMAGE := $(srctree)/scripts/mkuboot.sh
> -
>  #
>  # Assign safe dummy values if these variables are not defined,
>  # in order to suppress error message.
> @@ -61,10 +59,8 @@ KERNEL_ENTRY	:= $(shell /bin/bash -c 'printf "0x%08x" \
>  			$(KERNEL_MEMORY) + \
>  			$(CONFIG_ZERO_PAGE_OFFSET) + $(CONFIG_ENTRY_OFFSET)]')
>  
> -quiet_cmd_uimage = UIMAGE  $@
> -      cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A sh -O linux -T kernel \
> -		   -C $(2) -a $(KERNEL_LOAD) -e $(KERNEL_ENTRY) \
> -		   -n 'Linux-$(KERNELRELEASE)' -d $< $@
> +UIMAGE_LOADADDR = $(KERNEL_LOAD)
> +UIMAGE_ENTRYADDR = $(KERNEL_ENTRY)
>  
>  $(obj)/vmlinux.bin: vmlinux FORCE
>  	$(call if_changed,objcopy)
> diff --git a/arch/sparc/boot/Makefile b/arch/sparc/boot/Makefile
> index 9205416..d56d199 100644
> --- a/arch/sparc/boot/Makefile
> +++ b/arch/sparc/boot/Makefile
> @@ -5,7 +5,6 @@
>  
>  ROOT_IMG	:= /usr/src/root.img
>  ELFTOAOUT	:= elftoaout
> -MKIMAGE 	:= $(srctree)/scripts/mkuboot.sh
>  
>  hostprogs-y	:= piggyback btfixupprep
>  targets		:= tftpboot.img btfix.o btfix.S image zImage vmlinux.aout
> @@ -92,11 +91,9 @@ $(obj)/image.bin: $(obj)/image FORCE
>  $(obj)/image.gz: $(obj)/image.bin
>  	$(call if_changed,gzip)
>  
> -quiet_cmd_uimage = UIMAGE  $@
> -      cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A sparc -O linux -T kernel \
> -               -C gzip -a $(CONFIG_UBOOT_LOAD_ADDR) \
> -	       -e $(CONFIG_UBOOT_ENTRY_ADDR) -n 'Linux-$(KERNELRELEASE)' \
> -               -d $< $@
> +UIMAGE_LOADADDR = $(CONFIG_UBOOT_LOAD_ADDR)
> +UIMAGE_ENTRYADDR = $(CONFIG_UBOOT_ENTRY_ADDR)
> +UIMAGE_COMPRESSION = gzip
>  
>  quiet_cmd_uimage.o = UIMAGE.O $@
>        cmd_uimage.o = $(LD) -Tdata $(CONFIG_UBOOT_FLASH_ADDR) \
> diff --git a/arch/unicore32/boot/Makefile b/arch/unicore32/boot/Makefile
> index 79e5f88..ec7fb70 100644
> --- a/arch/unicore32/boot/Makefile
> +++ b/arch/unicore32/boot/Makefile
> @@ -11,8 +11,6 @@
>  # Copyright (C) 2001~2010 GUAN Xue-tao
>  #
>  
> -MKIMAGE := $(srctree)/scripts/mkuboot.sh
> -
>  targets := Image zImage uImage
>  
>  $(obj)/Image: vmlinux FORCE
> @@ -26,14 +24,8 @@ $(obj)/zImage: $(obj)/compressed/vmlinux FORCE
>  	$(call if_changed,objcopy)
>  	@echo '  Kernel: $@ is ready'
>  
> -quiet_cmd_uimage = UIMAGE  $@
> -      cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A unicore -O linux -T kernel \
> -		   -C none -a $(LOADADDR) -e $(STARTADDR) \
> -		   -n 'Linux-$(KERNELRELEASE)' -d $< $@
> -
> -$(obj)/uImage: LOADADDR=0x0
> -
> -$(obj)/uImage: STARTADDR=$(LOADADDR)
> +UIMAGE_ARCH = unicore
> +UIMAGE_LOADADDR = 0x0
>  
>  $(obj)/uImage: $(obj)/zImage FORCE
>  	$(call if_changed,uimage)
> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> index 00c368c..0be6f11 100644
> --- a/scripts/Makefile.lib
> +++ b/scripts/Makefile.lib
> @@ -304,6 +304,30 @@ cmd_lzo = (cat $(filter-out FORCE,$^) | \
>  	lzop -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \
>  	(rm -f $@ ; false)
>  
> +# U-Boot mkimage
> +# ---------------------------------------------------------------------------
> +
> +MKIMAGE := $(srctree)/scripts/mkuboot.sh
> +
> +# SRCARCH just happens to match slightly more than ARCH (on sparc), so reduces
> +# the number of overrides in arch makefiles
> +UIMAGE_ARCH ?= $(SRCARCH)
> +UIMAGE_COMPRESSION ?= $(if $(2),$(2),none)
> +UIMAGE_OPTS-y ?=
> +UIMAGE_TYPE ?= kernel
> +UIMAGE_LOADADDR ?= arch_must_set_this
> +UIMAGE_ENTRYADDR ?= $(UIMAGE_LOADADDR)
> +UIMAGE_NAME ?= 'Linux-$(KERNELRELEASE)'
> +UIMAGE_IN ?= $<
> +UIMAGE_OUT ?= $@
> +
> +quiet_cmd_uimage = UIMAGE  $(UIMAGE_OUT)
> +      cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A $(UIMAGE_ARCH) -O linux \
> +			-C $(UIMAGE_COMPRESSION) $(UIMAGE_OPTS-y) \
> +			-T $(UIMAGE_TYPE) \
> +			-a $(UIMAGE_LOADADDR) -e $(UIMAGE_ENTRYADDR) \
> +			-n $(UIMAGE_NAME) -d $(UIMAGE_IN) $(UIMAGE_OUT)
> +
>  # XZ
>  # ---------------------------------------------------------------------------
>  # Use xzkern to compress the kernel image and xzmisc to compress other things.
> -- 
> 1.7.0.4
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ