poison TARGET_<ARCH> for compile once.
PATCH 1/1 poison TARGET_<ARCH> for compile once.
poison TARGET_<ARCH> for compile once object
to prevent those ifdef from creeping in again.
--- Makefile.objs | 9 +++++++++ poison-arch.h | 25 +++++++++++++++++++++++++ poison.h | 16 +--------------- 3 files changed, 35 insertions(+), 15 deletions(-) create mode 100644 poison-arch.h
Makefile.objs +9 -0
@@ -265,3 +265,12 @@ os-win32.o: qemu-options.def qemu-options.def: $(SRC_PATH)/qemu-options.hx $(call quiet-command,sh $(SRC_PATH)/hxtool -h < $< > $@," GEN $(TARGET_DIR)$@") + +###################################################################### +# poison TARGET_arch to prevent from creeping those defines again. + +POISON_CFLAGS = -include poison-arch.h +$(qobject-obj-y) $(block-obj-y) $(block-nested-y) $(block-obj-y) \ +$(net-obj-y) $(net-nested-y) $(fsdev-nested-y) $(fsdev-obj-y) \ +$(common-obj-y) $(audio-obj-y) $(slirp-obj-y) $(user-obj-y) \ +$(hw-obj-y) $(sound-obj-y) $(libdis-y) vl.o: QEMU_CFLAGS += $(POISON_CFLAGS)
poison-arch.h new file +25 -0
@@ -0,0 +1,25 @@ +/* Poison identifiers that should not be used when building +target independent device code. */ + +#ifndef HW_POISON_ARCH_H +#define HW_POISON_ARCH_H +#ifdef __GNUC__ + +#pragma GCC poison TARGET_I386 +#pragma GCC poison TARGET_X86_64 +#pragma GCC poison TARGET_ALPHA +#pragma GCC poison TARGET_ARM +#pragma GCC poison TARGET_CRIS +#pragma GCC poison TARGET_M68K +#pragma GCC poison TARGET_MIPS +#pragma GCC poison TARGET_MIPS64 +#pragma GCC poison TARGET_PPC +#pragma GCC poison TARGET_PPCEMB +#pragma GCC poison TARGET_PPC64 +#pragma GCC poison TARGET_ABI32 +#pragma GCC poison TARGET_SH4 +#pragma GCC poison TARGET_SPARC +#pragma GCC poison TARGET_SPARC64 + +#endif +#endif
poison.h +1 -15
@@ -5,21 +5,7 @@#define HW_POISON_H #ifdef __GNUC__ -#pragma GCC poison TARGET_I386 -#pragma GCC poison TARGET_X86_64 -#pragma GCC poison TARGET_ALPHA -#pragma GCC poison TARGET_ARM -#pragma GCC poison TARGET_CRIS -#pragma GCC poison TARGET_M68K -#pragma GCC poison TARGET_MIPS -#pragma GCC poison TARGET_MIPS64 -#pragma GCC poison TARGET_PPC -#pragma GCC poison TARGET_PPCEMB -#pragma GCC poison TARGET_PPC64 -#pragma GCC poison TARGET_ABI32 -#pragma GCC poison TARGET_SH4 -#pragma GCC poison TARGET_SPARC -#pragma GCC poison TARGET_SPARC64 +#include "poison-arch.h" #pragma GCC poison TARGET_WORDS_BIGENDIAN#pragma GCC poison BSWAP_NEEDED
Signature · 1 line
1.6.6.1
Sorry, I sent out the old patch. Here is the right one.
Subject: [PATCH] poison TARGET_arch for compile once.
poison TARGET_arch for compile once object
to prevent those ifdef from creeping in again.
--- Makefile | 6 +++--- Makefile.objs | 11 ++++++++++- Makefile.target | 4 ++-- poison-arch.h | 25 +++++++++++++++++++++++++ poison.h | 16 +--------------- 5 files changed, 41 insertions(+), 21 deletions(-) create mode 100644 poison-arch.h
Makefile +3 -3
@@ -137,11 +137,11 @@ iov.o: iov.c iov.h qemu-img.o: qemu-img-cmds.h qemu-img.o qemu-tool.o qemu-nbd.o qemu-io.o: $(GENERATED_HEADERS) -qemu-img$(EXESUF): qemu-img.o qemu-tool.o qemu-error.o $(block-obj-y) $(qobject-obj-y) +qemu-img$(EXESUF): qemu-img.o qemu-tool.o qemu-error.o qemu-malloc.o $(block-obj-y) $(qobject-obj-y) -qemu-nbd$(EXESUF): qemu-nbd.o qemu-tool.o qemu-error.o $(block-obj-y) $(qobject-obj-y) +qemu-nbd$(EXESUF): qemu-nbd.o qemu-tool.o qemu-error.o qemu-malloc.o $(block-obj-y) $(qobject-obj-y) -qemu-io$(EXESUF): qemu-io.o cmd.o qemu-tool.o qemu-error.o $(block-obj-y) $(qobject-obj-y) +qemu-io$(EXESUF): qemu-io.o cmd.o qemu-tool.o qemu-error.o qemu-malloc.o $(block-obj-y) $(qobject-obj-y) qemu-img-cmds.h: $(SRC_PATH)/qemu-img-cmds.hx $(call quiet-command,sh $(SRC_PATH)/hxtool -h < $< > $@," GEN $@")
Makefile.objs +10 -1
@@ -7,7 +7,7 @@ qobject-obj-y += qerror.o ####################################################################### # block-obj-y is code used by both qemu system emulation and qemu-img -block-obj-y = cutils.o cache-utils.o qemu-malloc.o qemu-option.o module.o +block-obj-y = cutils.o cache-utils.o qemu-option.o module.o block-obj-y += nbd.o block.o aio.o aes.o osdep.o qemu-config.o block-obj-$(CONFIG_POSIX) += posix-aio-compat.o block-obj-$(CONFIG_LINUX_AIO) += linux-aio.o
@@ -265,3 +265,12 @@ os-win32.o: qemu-options.def qemu-options.def: $(SRC_PATH)/qemu-options.hx $(call quiet-command,sh $(SRC_PATH)/hxtool -h < $< > $@," GEN $(TARGET_DIR)$@") + +###################################################################### +# poison TARGET_arch to prevent from creeping those defines again. + +POISON_CFLAGS = -include poison-arch.h +$(qobject-obj-y) $(block-obj-y) $(block-nested-y) $(block-obj-y) \ +$(net-obj-y) $(net-nested-y) $(fsdev-nested-y) $(fsdev-obj-y) \ +$(common-obj-y) $(audio-obj-y) $(slirp-obj-y) $(user-obj-y) \ +$(hw-obj-y) $(sound-obj-y) $(libdis-y) vl.o: QEMU_CFLAGS += $(POISON_CFLAGS)
Makefile.target +2 -2
@@ -85,8 +85,7 @@ $(call set-vpath, $(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR QEMU_CFLAGS+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR) obj-y = main.o syscall.o strace.o mmap.o signal.o thunk.o \ - elfload.o linuxload.o uaccess.o gdbstub.o cpu-uname.o \ - qemu-malloc.o + elfload.o linuxload.o uaccess.o gdbstub.o cpu-uname.o obj-$(TARGET_HAS_BFLT) += flatload.o
@@ -302,6 +301,7 @@ obj-y += $(addprefix $(HWDIR)/, $(hw-obj-y)) endif # CONFIG_SOFTMMU +obj-y += qemu-malloc.o obj-$(CONFIG_GDBSTUB_XML) += gdbstub-xml.o $(QEMU_PROG): $(obj-y) $(obj-$(TARGET_BASE_ARCH)-y)
poison-arch.h new file +25 -0
@@ -0,0 +1,25 @@ +/* Poison identifiers that should not be used when building +target independent device code. */ + +#ifndef HW_POISON_ARCH_H +#define HW_POISON_ARCH_H +#ifdef __GNUC__ + +#pragma GCC poison TARGET_I386 +#pragma GCC poison TARGET_X86_64 +#pragma GCC poison TARGET_ALPHA +#pragma GCC poison TARGET_ARM +#pragma GCC poison TARGET_CRIS +#pragma GCC poison TARGET_M68K +#pragma GCC poison TARGET_MIPS +#pragma GCC poison TARGET_MIPS64 +#pragma GCC poison TARGET_PPC +#pragma GCC poison TARGET_PPCEMB +#pragma GCC poison TARGET_PPC64 +#pragma GCC poison TARGET_ABI32 +#pragma GCC poison TARGET_SH4 +#pragma GCC poison TARGET_SPARC +#pragma GCC poison TARGET_SPARC64 + +#endif +#endif
poison.h +1 -15
@@ -5,21 +5,7 @@#define HW_POISON_H #ifdef __GNUC__ -#pragma GCC poison TARGET_I386 -#pragma GCC poison TARGET_X86_64 -#pragma GCC poison TARGET_ALPHA -#pragma GCC poison TARGET_ARM -#pragma GCC poison TARGET_CRIS -#pragma GCC poison TARGET_M68K -#pragma GCC poison TARGET_MIPS -#pragma GCC poison TARGET_MIPS64 -#pragma GCC poison TARGET_PPC -#pragma GCC poison TARGET_PPCEMB -#pragma GCC poison TARGET_PPC64 -#pragma GCC poison TARGET_ABI32 -#pragma GCC poison TARGET_SH4 -#pragma GCC poison TARGET_SPARC -#pragma GCC poison TARGET_SPARC64 +#include "poison-arch.h" #pragma GCC poison TARGET_WORDS_BIGENDIAN#pragma GCC poison BSWAP_NEEDED
Signature · 1 line
1.6.6.1
Quoted 6 lines · Isaku Yamahata
Sorry, I sent out the old patch. Here is the right one.
Subject: [PATCH] poison
TARGET_archfor compile once.poison
TARGET_archfor compile once object
to prevent those ifdef from creeping in again.
Why do you need to split poison.h? Are there identifiers that are not in your new poison-arch.h and can be legitimately used in target-independent code?
Paolo
Quoted 9 lines · Isaku Yamahata
QEMU_CFLAGS+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR) obj-y = main.o syscall.o strace.o mmap.o signal.o thunk.o \
Makefile.target +1
-2- elfload.o linuxload.o uaccess.o gdbstub.o cpu-uname.o \ - qemu-malloc.o + elfload.o linuxload.o uaccess.o gdbstub.o cpu-uname.o obj-$(TARGET_HAS_BFLT) += flatload.o
Makefile.target obj-y += $(addprefix $(HWDIR)/, $(hw-obj-y)) · line 306
Quoted 6 lines
Makefile.target +1
-0@@ -302,6 +301,7 @@ obj-y += $(addprefix $(HWDIR)/, $(hw-obj-y)) endif # CONFIG_SOFTMMU +obj-y += qemu-malloc.o obj-$(CONFIG_GDBSTUB_XML) += gdbstub-xml.o
Does this break BSD compile? That host still has qemu_malloc defined in bsd-user/mmap.c.
r~