I was running an old version, getting it from the upstream repo helped, thanks!
I manage to compile everything without warnings if I apply the following incremental ---8<--- diff --git a/include/sparse/automake.mk b/include/sparse/automake.mk index c80c4c2..0456ee6 100644 --- a/include/sparse/automake.mk +++ b/include/sparse/automake.mk @@ -1,6 +1,7 @@ noinst_HEADERS += \ include/sparse/arpa/inet.h \ include/sparse/assert.h \ + include/sparse/bmi2intrin.h \ include/sparse/emmintrin.h \ include/sparse/math.h \ include/sparse/netinet/in.h \ diff --git a/include/sparse/bmi2intrin.h b/include/sparse/bmi2intrin.h new file mode 100644 index 0000000..3ee37bb --- /dev/null +++ b/include/sparse/bmi2intrin.h @@ -0,0 +1,25 @@ +/* Copyright (c) 2015 Nicira, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CHECKER__ +#error "Use this header only with sparse. It is not a correct implementation." +#endif + +/* Sparse doesn't know the __int128 type used by GCC 4.9 *intrin.h headers. + * We cannot use a typedef because the type is used with a qualifier + * ('unsigned __int128') */ +#define __int128 int +#include_next <bmi2intrin.h> +#undef __int128 diff --git a/include/sparse/emmintrin.h b/include/sparse/emmintrin.h index 7c788dc..3810f55 100644 --- a/include/sparse/emmintrin.h +++ b/include/sparse/emmintrin.h @@ -17,5 +17,11 @@ #error "Use this header only with sparse. It is not a correct implementation." #endif -/* Sparse doesn't support SSE2 so the "real" header file quits with an error. - * Instead, we simply do nothing thereby surpressing the message. */ +/* GCC 4.8 *intrin.h headers do not work if these are not defined */ +#define __SSE2__ +#define __SSE__ +#define __MMX__ +#include_next <emmintrin.h> +#undef __MMX__ +#undef __SSE__ +#undef __SSE2__ ---8<--- I have tested this with GCC 4.8 and GCC 4.9 headers. If you're happy with the above change feel free to merge it: Acked-by: Daniele Di Proietto <diproiet...@vmware.com> On 19/05/2015 22:34, "Ethan Jackson" <et...@nicira.com> wrote: >I think you're running into the issue that sparse doesn't understand >the "gnu_inline" macro which is used extensively in the DPDK header >files. If you run tip of master sparse >(git://git.kernel.org/pub/scm/devel/sparse/sparse.git) it should work >for you. > >In the past we've typically required relatively bleeding edge sparse >builds due to similar reasons, so IMO I'm fine with making this >requirement. Also, it's unclear to me how to auto generate these >stubs, it's actually somewhat difficult requiring a lot of manually >tuning. > >Ethan > >On Mon, May 18, 2015 at 1:20 PM, Daniele Di Proietto ><diproiet...@vmware.com> wrote: >> On my system (I'm using GCC 4.9 and sparse 0.4.5) I need >> lots of other headers like emmintrin.h to compile without >> warnings. >> >> The complete list is: >> >> adxintrin.h,ammintrin.h,avx2intrin.h,avx512fintrin.h, >> avxintrin.h,bmi2intrin.h,bmiintrin.h,f16cintrin.h, >> fma4intrin.h,fmaintrin.h,fxsrintrin.h,ia32intrin.h, >> immintrin.h,lwpintrin.h,lzcntintrin.h,mm3dnow.h, >> mmintrin.h,pmmintrin.h,popcntintrin.h,prfchwintrin.h, >> rdseedintrin.h,smmintrin.h,tbmintrin.h,tmmintrin.h, >> wmmintrin.h,xmmintrin.h,xopintrin.h,xsaveintrin.h, >> xsaveoptintrin.h >> >> Do we want to generate these at build time, maybe? >> >> On 18/05/2015 16:53, "Ethan Jackson" <et...@nicira.com> wrote: >> >>>Sparse doesn't like several of the DPDK header files. This patch >>>works around it so we can get analysis when compiling DPDK. >>> >>>Signed-off-by: Ethan Jackson <et...@nicira.com> >>>--- >>> include/sparse/automake.mk | 4 ++++ >>> include/sparse/emmintrin.h | 21 +++++++++++++++++++++ >>> include/sparse/rte_atomic.h | 25 +++++++++++++++++++++++++ >>> include/sparse/rte_lcore.h | 23 +++++++++++++++++++++++ >>> include/sparse/rte_vect.h | 23 +++++++++++++++++++++++ >>> 5 files changed, 96 insertions(+) >>> create mode 100644 include/sparse/emmintrin.h >>> create mode 100644 include/sparse/rte_atomic.h >>> create mode 100644 include/sparse/rte_lcore.h >>> create mode 100644 include/sparse/rte_vect.h >>> >>>diff --git a/include/sparse/automake.mk b/include/sparse/automake.mk >>>index 572c7c2..c80c4c2 100644 >>>--- a/include/sparse/automake.mk >>>+++ b/include/sparse/automake.mk >>>@@ -1,10 +1,14 @@ >>> noinst_HEADERS += \ >>> include/sparse/arpa/inet.h \ >>> include/sparse/assert.h \ >>>+ include/sparse/emmintrin.h \ >>> include/sparse/math.h \ >>> include/sparse/netinet/in.h \ >>> include/sparse/netinet/ip6.h \ >>> include/sparse/netpacket/packet.h \ >>> include/sparse/pthread.h \ >>>+ include/sparse/rte_atomic.h \ >>>+ include/sparse/rte_lcore.h \ >>>+ include/sparse/rte_vect.h \ >>> include/sparse/sys/socket.h \ >>> include/sparse/sys/wait.h >>>diff --git a/include/sparse/emmintrin.h b/include/sparse/emmintrin.h >>>new file mode 100644 >>>index 0000000..7c788dc >>>--- /dev/null >>>+++ b/include/sparse/emmintrin.h >>>@@ -0,0 +1,21 @@ >>>+/* Copyright (c) 2015 Nicira, Inc. >>>+ * >>>+ * Licensed under the Apache License, Version 2.0 (the "License"); >>>+ * you may not use this file except in compliance with the License. >>>+ * You may obtain a copy of the License at: >>>+ * >>>+ * >>>https://urldefense.proofpoint.com/v2/url?u=http-3A__www.apache.org_licen >>>se >>>s_LICENSE-2D2.0&d=AwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r >>>=S >>>mB5nZacmXNq0gKCC1s_Cw5yUNjxgD4v5kJqZ2uWLlE&m=B8EAybkydoKA6-zjSe0T_2cshiu >>>mC >>>E9wwf7RTwL7R6E&s=XbDR6JeYnydOdBUZ9vrXLn17h0EOW9wIF7lhpFjM_fo&e= >>>+ * >>>+ * Unless required by applicable law or agreed to in writing, software >>>+ * distributed under the License is distributed on an "AS IS" BASIS, >>>+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >>>implied. >>>+ * See the License for the specific language governing permissions and >>>+ * limitations under the License. >>>+ */ >>>+ >>>+#ifndef __CHECKER__ >>>+#error "Use this header only with sparse. It is not a correct >>>implementation." >>>+#endif >>>+ >>>+/* Sparse doesn't support SSE2 so the "real" header file quits with an >>>error. >>>+ * Instead, we simply do nothing thereby surpressing the message. */ >>>diff --git a/include/sparse/rte_atomic.h b/include/sparse/rte_atomic.h >>>new file mode 100644 >>>index 0000000..ae49fe5 >>>--- /dev/null >>>+++ b/include/sparse/rte_atomic.h >>>@@ -0,0 +1,25 @@ >>>+/* Copyright (c) 2015 Nicira, Inc. >>>+ * >>>+ * Licensed under the Apache License, Version 2.0 (the "License"); >>>+ * you may not use this file except in compliance with the License. >>>+ * You may obtain a copy of the License at: >>>+ * >>>+ * >>>https://urldefense.proofpoint.com/v2/url?u=http-3A__www.apache.org_licen >>>se >>>s_LICENSE-2D2.0&d=AwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r >>>=S >>>mB5nZacmXNq0gKCC1s_Cw5yUNjxgD4v5kJqZ2uWLlE&m=B8EAybkydoKA6-zjSe0T_2cshiu >>>mC >>>E9wwf7RTwL7R6E&s=XbDR6JeYnydOdBUZ9vrXLn17h0EOW9wIF7lhpFjM_fo&e= >>>+ * >>>+ * Unless required by applicable law or agreed to in writing, software >>>+ * distributed under the License is distributed on an "AS IS" BASIS, >>>+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >>>implied. >>>+ * See the License for the specific language governing permissions and >>>+ * limitations under the License. >>>+ */ >>>+ >>>+#ifndef __CHECKER__ >>>+#error "Use this header only with sparse. It is not a correct >>>implementation." >>>+#endif >>>+ >>>+/* Fix sparse technicality about types in one of the function calls by >>>just >>>+ * ignoring it. */ >>>+#define __sync_add_and_fetch(a, b) (0) >>>+ >>>+/* Get actual <rte_atomic.h> definitions for us to annotate and build >>>on. */ >>>+#include_next <rte_atomic.h> >>>diff --git a/include/sparse/rte_lcore.h b/include/sparse/rte_lcore.h >>>new file mode 100644 >>>index 0000000..584bfe1 >>>--- /dev/null >>>+++ b/include/sparse/rte_lcore.h >>>@@ -0,0 +1,23 @@ >>>+/* Copyright (c) 2015 Nicira, Inc. >>>+ * >>>+ * Licensed under the Apache License, Version 2.0 (the "License"); >>>+ * you may not use this file except in compliance with the License. >>>+ * You may obtain a copy of the License at: >>>+ * >>>+ * >>>https://urldefense.proofpoint.com/v2/url?u=http-3A__www.apache.org_licen >>>se >>>s_LICENSE-2D2.0&d=AwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r >>>=S >>>mB5nZacmXNq0gKCC1s_Cw5yUNjxgD4v5kJqZ2uWLlE&m=B8EAybkydoKA6-zjSe0T_2cshiu >>>mC >>>E9wwf7RTwL7R6E&s=XbDR6JeYnydOdBUZ9vrXLn17h0EOW9wIF7lhpFjM_fo&e= >>>+ * >>>+ * Unless required by applicable law or agreed to in writing, software >>>+ * distributed under the License is distributed on an "AS IS" BASIS, >>>+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >>>implied. >>>+ * See the License for the specific language governing permissions and >>>+ * limitations under the License. >>>+ */ >>>+ >>>+#ifndef __CHECKER__ >>>+#error "Use this header only with sparse. It is not a correct >>>implementation." >>>+#endif >>>+ >>>+typedef int rte_cpuset_t; >>>+ >>>+/* Get actual <rte_lcore.h> definitions for us to annotate and build >>>on. >>>*/ >>>+#include_next <rte_lcore.h> >>>diff --git a/include/sparse/rte_vect.h b/include/sparse/rte_vect.h >>>new file mode 100644 >>>index 0000000..6f6625b >>>--- /dev/null >>>+++ b/include/sparse/rte_vect.h >>>@@ -0,0 +1,23 @@ >>>+/* Copyright (c) 2015 Nicira, Inc. >>>+ * >>>+ * Licensed under the Apache License, Version 2.0 (the "License"); >>>+ * you may not use this file except in compliance with the License. >>>+ * You may obtain a copy of the License at: >>>+ * >>>+ * >>>https://urldefense.proofpoint.com/v2/url?u=http-3A__www.apache.org_licen >>>se >>>s_LICENSE-2D2.0&d=AwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r >>>=S >>>mB5nZacmXNq0gKCC1s_Cw5yUNjxgD4v5kJqZ2uWLlE&m=B8EAybkydoKA6-zjSe0T_2cshiu >>>mC >>>E9wwf7RTwL7R6E&s=XbDR6JeYnydOdBUZ9vrXLn17h0EOW9wIF7lhpFjM_fo&e= >>>+ * >>>+ * Unless required by applicable law or agreed to in writing, software >>>+ * distributed under the License is distributed on an "AS IS" BASIS, >>>+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >>>implied. >>>+ * See the License for the specific language governing permissions and >>>+ * limitations under the License. >>>+ */ >>>+ >>>+#ifndef __CHECKER__ >>>+#error "Use this header only with sparse. It is not a correct >>>implementation." >>>+#endif >>>+ >>>+typedef int __m128i; >>>+ >>>+/* Get actual <rte_vect.h> definitions for us to annotate and build on. >>>*/ >>>+#include_next <rte_vect.h> >>>-- >>>1.9.1 >>> >>>_______________________________________________ >>>dev mailing list >>>dev@openvswitch.org >>>https://urldefense.proofpoint.com/v2/url?u=http-3A__openvswitch.org_mail >>>ma >>>n_listinfo_dev&d=AwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r= >>>Sm >>>B5nZacmXNq0gKCC1s_Cw5yUNjxgD4v5kJqZ2uWLlE&m=B8EAybkydoKA6-zjSe0T_2cshium >>>CE >>>9wwf7RTwL7R6E&s=oleBRmY2dr-PG6K8DPzFmAQrpw7AwfLUqGMNhho-KH0&e= >> _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev