[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