[buildfix,for-1.5] qemu-common: Resolve vector build breakes for AltiVec
diff mbox

Message ID 1368632771-4328-1-git-send-email-andreas.faerber@web.de
State New
Headers show

Commit Message

Andreas Färber May 15, 2013, 3:46 p.m. UTC
From: Paolo Bonzini <pbonzini@redhat.com>

On Mac OS X ppc, altivec.h defines "vector", leading to build breakage
when used as variable name, e.g. in tracing code.
Fix this by undefining identifiers after altivec.h inclusion.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Andreas Färber <andreas.faerber@web.de>
 include/qemu-common.h | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)


Anthony Liguori May 16, 2013, 12:50 p.m. UTC | #1
Applied.  Thanks.


Anthony Liguori

diff mbox

diff --git a/include/qemu-common.h b/include/qemu-common.h
index b399d85..9aff292 100644
--- a/include/qemu-common.h
+++ b/include/qemu-common.h
@@ -436,12 +436,18 @@  void hexdump(const char *buf, FILE *fp, const char *prefix, size_t size);
 /* 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>