I am not able to reproduce this using 64bit arch., although Sparse does work 
for me.
   (I guess I should install a 32 bit VM at some point, but I am low on disk 
space - too many 64bit VMs)
I tried tip of master and about 2 months old master

Based on the above data point and the error output below, it seems like this 
noise only afflicts 32 bit arch
Maybe specify in the commit message that this helps on 32 bit arch, unless 
others can see this or 
something similar on 64bit.

Acked-by: Darrell Ball <[email protected]>



On 5/5/17, 9:39 PM, "[email protected] on behalf of Ben Pfaff" 
<[email protected] on behalf of [email protected]> wrote:

    Without this replacement header, building netdev-dpdk.c provokes several
    "sparse" warnings:
    
    /usr/include/dpdk/rte_memcpy.h:515:33: warning: incorrect type in argument 
1 (different type sizes)
    /usr/include/dpdk/rte_memcpy.h:515:33:    expected long long const 
[usertype] *__P
    /usr/include/dpdk/rte_memcpy.h:515:33:    got int const [usertype] 
*<noident>
    /usr/lib/gcc/i686-linux-gnu/6//include/emmintrin.h:698:20: error: undefined 
identifier '__builtin_ia32_loaddqu'
    /usr/lib/gcc/i686-linux-gnu/6//include/emmintrin.h:698:11: error: cast from 
unknown type
    /usr/lib/gcc/i686-linux-gnu/6//include/emmintrin.h:716:3: error: undefined 
identifier '__builtin_ia32_storedqu'
    /usr/lib/gcc/i686-linux-gnu/6//include/emmintrin.h:698:43: error: not a 
function <noident>
    /usr/lib/gcc/i686-linux-gnu/6//include/emmintrin.h:716:27: error: not a 
function <noident>
    ...
    
    Signed-off-by: Ben Pfaff <[email protected]>
    ---
     include/sparse/automake.mk  |  1 +
     include/sparse/rte_memcpy.h | 39 +++++++++++++++++++++++++++++++++++++++
     2 files changed, 40 insertions(+)
     create mode 100644 include/sparse/rte_memcpy.h
    
    diff --git a/include/sparse/automake.mk b/include/sparse/automake.mk
    index 0456ee67d481..f3282c260414 100644
    --- a/include/sparse/automake.mk
    +++ b/include/sparse/automake.mk
    @@ -10,6 +10,7 @@ noinst_HEADERS += \
             include/sparse/pthread.h \
             include/sparse/rte_atomic.h \
             include/sparse/rte_lcore.h \
    +        include/sparse/rte_memcpy.h \
             include/sparse/rte_vect.h \
             include/sparse/sys/socket.h \
             include/sparse/sys/wait.h
    diff --git a/include/sparse/rte_memcpy.h b/include/sparse/rte_memcpy.h
    new file mode 100644
    index 000000000000..5cd3f013ea8b
    --- /dev/null
    +++ b/include/sparse/rte_memcpy.h
    @@ -0,0 +1,39 @@
    +/* Copyright (c) 2017 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_licenses_LICENSE-2D2.0&d=DwICAg&c=uilaK90D4TOVoH58JNXRgQ&r=BVhFA09CGX7JQ5Ih-uZnsw&m=Qv-3YRHpSQuMTnL-vRyqF0jCaFIpiuYqPGtkgPYEwxA&s=AzghyY07JReCfJwWQShu12qMFGiOML9IpKTIdvsOTu0&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 RTE_MEMCPY_H
    +#define RTE_MEMCPY_H 1
    +
    +#ifndef __CHECKER__
    +#error "Use this header only with sparse.  It is not a correct 
implementation."
    +#endif
    +
    +/* Include the same headers as the real rte_memcpy(). */
    +#include <stdio.h>
    +#include <stdint.h>
    +#include <string.h>
    +#include <rte_vect.h>
    +
    +/* Declare the same functions as the real rte_memcpy.h, without defining 
them.
    + * This gives sparse the information it needs without provoking sparse's
    + * complaints about the implementations. */
    +void rte_mov16(uint8_t *, const uint8_t *);
    +void rte_mov32(uint8_t *, const uint8_t *);
    +void rte_mov64(uint8_t *, const uint8_t *);
    +void rte_mov128(uint8_t *, const uint8_t *);
    +void rte_mov256(uint8_t *, const uint8_t *);
    +void *rte_memcpy(void *, const void *, size_t);
    +
    +#endif  /* RTE_MEMCPY_H_WRAPPER */
    -- 
    2.10.2
    
    _______________________________________________
    dev mailing list
    [email protected]
    
https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.openvswitch.org_mailman_listinfo_ovs-2Ddev&d=DwICAg&c=uilaK90D4TOVoH58JNXRgQ&r=BVhFA09CGX7JQ5Ih-uZnsw&m=Qv-3YRHpSQuMTnL-vRyqF0jCaFIpiuYqPGtkgPYEwxA&s=Nij03EBjSF5Amp8_Hg_3XzcIOE0lgMzzhGfJXVAzHhU&e=
 
    

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to