From: Ethan Jackson Date: Sun, 17 May 2015 13:06:01 +0000 (-0700) Subject: sparse: Fix sparse when compiling DPDK. X-Git-Tag: v2.4.0~208 X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Fovs.git;a=commitdiff_plain;h=f046804891635d497e5b91a3b90340951132c1d9 sparse: Fix sparse when compiling DPDK. 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 Acked-by: Daniele Di Proietto --- diff --git a/include/sparse/automake.mk b/include/sparse/automake.mk index 572c7c2c7..0456ee67d 100644 --- a/include/sparse/automake.mk +++ b/include/sparse/automake.mk @@ -1,10 +1,15 @@ 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 \ 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/bmi2intrin.h b/include/sparse/bmi2intrin.h new file mode 100644 index 000000000..3ee37bb72 --- /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 +#undef __int128 diff --git a/include/sparse/emmintrin.h b/include/sparse/emmintrin.h new file mode 100644 index 000000000..3810f55a2 --- /dev/null +++ b/include/sparse/emmintrin.h @@ -0,0 +1,27 @@ +/* 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 + +/* GCC 4.8 *intrin.h headers do not work if these are not defined */ +#define __SSE2__ +#define __SSE__ +#define __MMX__ +#include_next +#undef __MMX__ +#undef __SSE__ +#undef __SSE2__ diff --git a/include/sparse/rte_atomic.h b/include/sparse/rte_atomic.h new file mode 100644 index 000000000..ae49fe5c0 --- /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: + * + * 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 + +/* 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 definitions for us to annotate and build on. */ +#include_next diff --git a/include/sparse/rte_lcore.h b/include/sparse/rte_lcore.h new file mode 100644 index 000000000..584bfe12c --- /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: + * + * 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 + +typedef int rte_cpuset_t; + +/* Get actual definitions for us to annotate and build on. */ +#include_next diff --git a/include/sparse/rte_vect.h b/include/sparse/rte_vect.h new file mode 100644 index 000000000..6f6625b7d --- /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: + * + * 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 + +typedef int __m128i; + +/* Get actual definitions for us to annotate and build on. */ +#include_next