Cool, I've folded the change in, thanks! Ethan
On Fri, May 22, 2015 at 10:08 AM, Daniele Di Proietto <diproiet...@vmware.com> wrote: > 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