Hello Wang, >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. I'm curious to know is it possible to analyze arm vmcores with x86_64 binaries even if using the logic for arm ? In such cases, is it not needed to build an arm binary with a cross compiler ? I worry about endian issues. Thanks Atsushi Kumagai >> 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 >> >