From b251bb76308f664c24a3dffd55236e92a2230901 Mon Sep 17 00:00:00 2001 From: Thomas Monjalon Date: Wed, 25 May 2022 11:53:07 +0200 Subject: [PATCH] eal/ppc: undefine AltiVec keyword vector The AltiVec header file is defining "vector", except in C++ build. The keyword "vector" may conflict easily. As a rule, it is better to use the alternative keyword "__vector". The DPDK header file rte_altivec.h takes care of undefining "vector", so the applications and dependencies are free to define the name "vector". This is a compatibility breakage for applications which were using the keyword "vector" for its AltiVec meaning. Signed-off-by: Thomas Monjalon Tested-by: Ali Alnubani Acked-by: Tyler Retzlaff Acked-by: Ray Kinsella --- doc/guides/rel_notes/release_22_07.rst | 5 +++++ lib/eal/ppc/include/rte_altivec.h | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/doc/guides/rel_notes/release_22_07.rst b/doc/guides/rel_notes/release_22_07.rst index e49cacecef..ee60b17821 100644 --- a/doc/guides/rel_notes/release_22_07.rst +++ b/doc/guides/rel_notes/release_22_07.rst @@ -133,6 +133,11 @@ API Changes Also, make sure to start the actual text at the margin. ======================================================= +* The DPDK header file ``rte_altivec.h``, + which is a wrapper for the PPC header file ``altivec.h``, + undefines the AltiVec keyword ``vector``. + The alternative keyword ``__vector`` should be used instead. + ABI Changes ----------- diff --git a/lib/eal/ppc/include/rte_altivec.h b/lib/eal/ppc/include/rte_altivec.h index 1551a94544..7c088d2d16 100644 --- a/lib/eal/ppc/include/rte_altivec.h +++ b/lib/eal/ppc/include/rte_altivec.h @@ -9,6 +9,13 @@ /* To include altivec.h, GCC version must be >= 4.8 */ #include +/* + * The keyword "vector" is defined in altivec.h, + * and often conflicts with code in applications or dependencies. + * It is preferred to use the alternative keyword "__vector". + */ +#undef vector + /* * Compilation workaround for PPC64 when AltiVec is fully enabled, e.g. std=c11. * Otherwise there would be a type conflict between stdbool and altivec. -- 2.20.1