[PATCH] makedumpfile: inhibit predefined macros when cross building

Wang Nan wangnan0 at huawei.com
Tue Apr 1 00:39:09 EDT 2014


On 2014/4/1 12:28, Wang Nan wrote:
> When cross building makedumpfile, for example, build x86_64 exec for
> dealing with arm vmcore, makefile passes a "-D__arm__" to gcc, but gcc
> predefined macros still take effect, defines "__x86_64__". Which makes
> definitions for x86_64 and arm mixed together in makedumpfile.h, causes
> many problems.
> 
> This patch changes Makefile: if host arch and target arch are different,
> passes "-U__$(HOST_ARCH)__" to gcc.
> 
> I have tested by running following command on x86_64 machine:
> 
> make ARCH=arm

Sorry, should be TARGET=arm. I have tested and build okay.
> 
> Signed-off-by: Wang Nan <wangnan0 at huawei.com>
> Cc: Atsushi Kumagai <kumagai-atsushi at mxc.nes.nec.co.jp>
> Cc: kexec at lists.infradead.org
> Cc: Geng Hui <hui.geng at huawei.com>
> ---
>  Makefile | 12 +++++++++---
>  1 file changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 2f4845c..f85cc21 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -15,10 +15,11 @@ CFLAGS_ARCH	= -g -O2 -Wall -D_FILE_OFFSET_BITS=64 \
>  		    -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
>  # LDFLAGS = -L/usr/local/lib -I/usr/local/include
>  
> +HOST_ARCH := $(shell uname -m)
>  # Use TARGET as the target architecture if specified.
>  # Defaults to uname -m
>  ifeq ($(strip($TARGET)),)
> -TARGET := $(shell uname -m)
> +TARGET := $(HOST_ARCH)
>  endif
>  
>  ARCH := $(shell echo ${TARGET}  | sed -e s/i.86/x86/ -e s/sun4u/sparc64/ \
> @@ -26,8 +27,13 @@ ARCH := $(shell echo ${TARGET}  | sed -e s/i.86/x86/ -e s/sun4u/sparc64/ \
>  			       -e s/s390x/s390/ -e s/parisc64/parisc/ \
>  			       -e s/ppc64/powerpc64/ -e s/ppc/powerpc32/)
>  
> -CFLAGS += -D__$(ARCH)__
> -CFLAGS_ARCH += -D__$(ARCH)__
> +CROSS :=
> +ifneq ($(TARGET), $(HOST_ARCH))
> +CROSS := -U__$(HOST_ARCH)__
> +endif
> +
> +CFLAGS += -D__$(ARCH)__ $(CROSS)
> +CFLAGS_ARCH += -D__$(ARCH)__ $(CROSS)
>  
>  ifeq ($(ARCH), powerpc64)
>  CFLAGS += -m64
> 





More information about the kexec mailing list