DPDK 使用 GCC 为数组边界构建错误
DPDK built error with GCC for array bounds
当我将 dpdk 安装到我的 Debian 服务器时
make install T=x86_64-native-linux-gcc
会报错:
error: array subscript is above array bounds [-Werror=array-bounds]
rte_mov32((uint8_t *)dst + 2 * 32, (const uint8_t *)src + 2 * 32)
so,怎么解决的,为什么会出现dpdk?
谢谢!
os: x86_64 GNU/Linux 4.14.52.bm.6-amd64
Gcc 版本:6.3.0 20170516 (Debian 6.3.0-18+deb9u1)
DPDK 版本:20.05-4c
错误信息:
In file included from /root/zeh/dpdk/x86_64-native-linux-gcc/include/rte_ether.h:21:0,
from /root/zeh/dpdk/drivers/net/ena/ena_ethdev.c:7:
/root/zeh/dpdk/drivers/net/ena/ena_ethdev.c:
In function ‘ena_rss_key_fill’:/root/zeh/dpdk/x86_64-native-linux-gcc/include/rte_memcpy.h:343:2: error: array subscript is above array bounds [-Werror=array-bounds]
rte_mov32((uint8_t *)dst + 2 * 32, (const uint8_t *)src + 2 * 32);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/root/zeh/dpdk/x86_64-native-linux-gcc/include/rte_memcpy.h:344:2: error: array subscript is above array bounds [-Werror=array-bounds]
rte_mov32((uint8_t *)dst + 3 * 32, (const uint8_t *)src + 3 * 32);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/root/zeh/dpdk/drivers/net/ena/ena_ethdev.c: At top level:
cc1: error: unrecognized command line option ‘-Wno-address-of-packed-member’ [-Werror]
我可以使用 DPDK-19.11 安装成功。
编辑:数组绑定被忽略的唯一地方是 rte_memcpy.h
for
#if (GCC_VERSION >= 90000 && GCC_VERSION < 90400)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Warray-bounds"
#endif
我能够在
上成功构建 make
和 meson
DPDK:dpdk-20.05-rc4
OS: 4.15.0-99-generic
gcc: 7.5.0
目标:x86_64-native-linuxapp-gcc
二进制:static and shared
这看起来更像是与平台和环境相关的问题。您可以打开此 DPDK Bugzilla
并通过 http://core.dpdk.org/contribute/ 共享相同的 dev@dpdk.org
吗?他们会为 CI 和 CD 配置类似的设置(因此可以更好地帮助您)
当我将 dpdk 安装到我的 Debian 服务器时
make install T=x86_64-native-linux-gcc
会报错:
error: array subscript is above array bounds [-Werror=array-bounds]
rte_mov32((uint8_t *)dst + 2 * 32, (const uint8_t *)src + 2 * 32)
so,怎么解决的,为什么会出现dpdk? 谢谢!
os: x86_64 GNU/Linux 4.14.52.bm.6-amd64
Gcc 版本:6.3.0 20170516 (Debian 6.3.0-18+deb9u1)
DPDK 版本:20.05-4c
错误信息:
In file included from /root/zeh/dpdk/x86_64-native-linux-gcc/include/rte_ether.h:21:0,
from /root/zeh/dpdk/drivers/net/ena/ena_ethdev.c:7:
/root/zeh/dpdk/drivers/net/ena/ena_ethdev.c:
In function ‘ena_rss_key_fill’:/root/zeh/dpdk/x86_64-native-linux-gcc/include/rte_memcpy.h:343:2: error: array subscript is above array bounds [-Werror=array-bounds]
rte_mov32((uint8_t *)dst + 2 * 32, (const uint8_t *)src + 2 * 32);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/root/zeh/dpdk/x86_64-native-linux-gcc/include/rte_memcpy.h:344:2: error: array subscript is above array bounds [-Werror=array-bounds]
rte_mov32((uint8_t *)dst + 3 * 32, (const uint8_t *)src + 3 * 32);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/root/zeh/dpdk/drivers/net/ena/ena_ethdev.c: At top level:
cc1: error: unrecognized command line option ‘-Wno-address-of-packed-member’ [-Werror]
我可以使用 DPDK-19.11 安装成功。
编辑:数组绑定被忽略的唯一地方是 rte_memcpy.h
for
#if (GCC_VERSION >= 90000 && GCC_VERSION < 90400)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Warray-bounds"
#endif
我能够在
上成功构建make
和 meson
DPDK:dpdk-20.05-rc4
OS: 4.15.0-99-generic
gcc: 7.5.0
目标:x86_64-native-linuxapp-gcc
二进制:static and shared
这看起来更像是与平台和环境相关的问题。您可以打开此 DPDK Bugzilla
并通过 http://core.dpdk.org/contribute/ 共享相同的 dev@dpdk.org
吗?他们会为 CI 和 CD 配置类似的设置(因此可以更好地帮助您)