[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] ui/cocoa.m: Fix recent compile breakage
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH] ui/cocoa.m: Fix recent compile breakage |
Date: |
Mon, 22 Apr 2013 14:32:19 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130311 Thunderbird/17.0.4 |
Il 22/04/2013 13:51, Peter Maydell ha scritto:
> On 22 April 2013 00:03, Andreas Färber <address@hidden> wrote:
>> Even after this has been applied, things are still not building for me.
>>
>> I'm seeing CC trace/generated-events.o failing with "error: parameter
>> name omitted" for trace_apic_local_deliver, trace_usb_xhci_queue_event,
>> trace_megasas_msix_raise and trace_spapr_pci_msi_setup, plus a warning
>> that trace_event_count is being declared twice.
>
> I suspect that whatever compiler you're using here treats 'vector'
> as a magic word, so when it sees a prototype like
> static inline void trace_megasas_msix_raise(int vector)
>
> it's expecting that 'vector' is an attribute of the type and
> it wants "int vector foo", hence the error message.
>
> You could test this theory by changing all the 'vector's in
> trace-events to 'vec' instead and rebuilding.
The culprit is likely altivec.h.
Something like this should fix it:
diff --git a/include/qemu-common.h b/include/qemu-common.h
index 2cfb1f0..6c23b1b 100644
--- a/include/qemu-common.h
+++ b/include/qemu-common.h
@@ -436,12 +436,18 @@
/* vector definitions */
#ifdef __ALTIVEC__
#include <altivec.h>
-#define VECTYPE vector unsigned char
+/* The altivec.h header says we're allowed to undef these for
+ * C++ compatibility. Here we don't care about C++, but we
+ * undef them anyway to avoid namespace pollution.
+ */
+#undef vector
+#undef pixel
+#undef bool
+#define VECTYPE __vector unsigned char
#define SPLAT(p) vec_splat(vec_ld(0, p), 0)
#define ALL_EQ(v1, v2) vec_all_eq(v1, v2)
/* altivec.h may redefine the bool macro as vector type.
* Reset it to POSIX semantics. */
-#undef bool
#define bool _Bool
#elif defined __SSE2__
#include <emmintrin.h>
Paolo