Temporary workaround for ppc on ppc
authormalc <malc@c046a42c-6fe2-441c-8c8c-71466251a162>
Thu, 2 Apr 2009 01:16:39 +0000 (01:16 +0000)
committermalc <malc@c046a42c-6fe2-441c-8c8c-71466251a162>
Thu, 2 Apr 2009 01:16:39 +0000 (01:16 +0000)
target-ppc/translate.c puts values of type opcode_t into .opcodes
section, using GCC extension to do so, and hoping that this will make
them appear contiguously and in the source order in the resulting
executable. This assumption is not safe and is known to be violated
with certain versions of GCC, certain flags passed to it and on
certain platforms (gcc 4.3.0, -O and PPC/PPC64 for instance)

The workaround consists of adding -fno-unit-at-a-time to the list of
GCC command line options while building PPC translate.o on a PPC.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6967 c046a42c-6fe2-441c-8c8c-71466251a162

Makefile.target

index 046427d4fc40ae670ad302e054f2198193afb09c..e855dc33b454523d8e006c935ca373d9c7af6961 100644 (file)
@@ -84,6 +84,10 @@ ifeq ($(ARCH),i386)
 HELPER_CFLAGS+=-fomit-frame-pointer
 endif
 
+ifeq ($(subst ppc64,ppc,$(ARCH))$(TARGET_BASE_ARCH),ppcppc)
+translate.o: CFLAGS := $(CFLAGS) $(call cc-option, $(CFLAGS), -fno-unit-at-a-time,)
+endif
+
 ifeq ($(ARCH),sparc)
   CFLAGS+=-ffixed-g2 -ffixed-g3
   ifneq ($(CONFIG_SOLARIS),yes)