Ошибка сборки DPDK с G CC для границ массива - PullRequest
0 голосов
/ 26 мая 2020

при установке 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)

Итак, как ее решить и почему это случилось с dpdk? спасибо!

os: x86_64 GNU / Linux 4.14.52.bm.6-amd64

G cc версия: 6.3.0 20170516 (Debian 6.3.0-18 + deb9u1 )

Версия DPDK: 20.05-4 c

Сообщение об ошибке:

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.

1 Ответ

0 голосов
/ 26 мая 2020

РЕДАКТИРОВАТЬ: единственное место, где игнорируется привязка к массиву, находится в rte_memcpy.h для

 #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

g cc: 7.5.0

TAREGT: x86_64-native-linuxapp-gcc

Двоичный: static and shared

Это больше похоже на проблему, связанную с платформой и средой. Можете ли вы открыть этот DPDK Bugzilla и поделиться тем же dev@dpdk.org через http://core.dpdk.org/contribute/? У них будет аналогичная настройка для CI и CD (следовательно, поможет вам лучше)

...