•DPDK version: commit 2e40fdc2d305e6864c8840a0985018edc94562d5 Author: Karra Satwik <kaara.satwik@chelsio.com> Date: Sat Jun 13 03:40:20 2020 +0530 net/cxgbe: always enable HASH filter support •OS: Linux ub2004-i686 5.4.0-26-generic #30-Ubuntu SMP Mon Apr 20 16:58:30 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux •Compiler: gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0 clang version 10.0.0-4ubuntu1 Test Setup: export CFLAGS="-m32" export PKG_CONFIG_LIBDIR="/usr/lib/pkgconfig" ./devtools/test-meson-builds.sh Show the output from the previous commands: ninja -C ./build-clang-static ninja: Entering directory `./build-clang-static' [36/1953] Compiling C object 'lib/76b5a35@@rte_eal@sta/librte_eal_common_eal_common_trace.c.o'. FAILED: lib/76b5a35@@rte_eal@sta/librte_eal_common_eal_common_trace.c.o clang -Ilib/76b5a35@@rte_eal@sta -Ilib -I../lib -I. -I../ -Iconfig -I../config -Ilib/librte_eal/include -I../lib/librte_eal/include -Ilib/librte_eal/linux/include -I../lib/librte_eal/linux/include -Ilib/librte_eal/x86/include -I../lib/librte_eal/x86/include -Ilib/librte_eal/common -I../lib/librte_eal/common -Ilib/librte_eal -I../lib/librte_eal -Ilib/librte_kvargs -I../lib/librte_kvargs -Ilib/librte_telemetry/../librte_metrics -I../lib/librte_telemetry/../librte_metrics -Ilib/librte_telemetry -I../lib/librte_telemetry -Xclang -fcolor-diagnostics -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Werror -O2 -g -include rte_config.h -Wextra -Wcast-qual -Wdeprecated -Wformat-nonliteral -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wpointer-arith -Wsign-compare -Wstrict-prototypes -Wundef -Wwrite-strings -Wno-address-of-packed-member -Wno-missing-field-initializers -Wno-pointer-to-int-cast -D_GNU_SOURCE -m32 -fPIC -march=native -DALLOW_EXPERIMENTAL_API -DALLOW_INTERNAL_API -DRTE_LIBEAL_USE_GETENTROPY -DHAVE_GETOPT_H -DHAVE_GETOPT -DHAVE_GETOPT_LONG -MD -MQ 'lib/76b5a35@@rte_eal@sta/librte_eal_common_eal_common_trace.c.o' -MF 'lib/76b5a35@@rte_eal@sta/librte_eal_common_eal_common_trace.c.o.d' -o 'lib/76b5a35@@rte_eal@sta/librte_eal_common_eal_common_trace.c.o' -c ../lib/librte_eal/common/eal_common_trace.c ../lib/librte_eal/common/eal_common_trace.c:160:8: error: misaligned atomic operation may incur significant performance penalty [-Werror,-Watomic-alignment] val = __atomic_load_n(trace, __ATOMIC_ACQUIRE); ^ 1 error generated. [41/1953] Compiling C object 'lib/76b5a35@@rte_eal@sta/librte_eal_common_eal_common_options.c.o'.
I've indeed verified that there is a problem, but it's not a meson issue, but a clang one. I suspect if we had a 32-bit make build using clang it would show the exact same issue. Here's how I tested and the results. First a 32-bit GCC build, which works fine: $ PKG_CONFIG_LIBDIR=/usr/lib/i386-linux-gnu/pkgconfig/ CFLAGS=-m32 LDFFLAGS=-m32 meson -Dexamples=l3fwd --werror 32-bit-build $ ninja -C 32-bit-build ninja: Entering directory `32-bit-build/' [1982/1982] Linking target app/test/dpdk-test then the same command just with CC=clang added gives an error. $ CC=clang PKG_CONFIG_LIBDIR=/usr/lib/i386-linux-gnu/pkgconfig/ CFLAGS=-m32 LDFFLAGS=-m32 meson -Dexamples=l3fwd --werror 32-bit-build $ ninja -C 32-bit-build ninja: Entering directory `32-bit-build/' [23/1982] Compiling C object 'lib/76b5a35@@rte_eal@sta/librte_eal_common_eal_common_trace.c.o' FAILED: lib/76b5a35@@rte_eal@sta/librte_eal_common_eal_common_trace.c.o clang -Ilib/76b5a35@@rte_eal@sta -Ilib -I../lib -I. -I.. -Iconfig -I../config -Ilib/librte_eal/include -I../lib/librte_eal/include -Ilib/librte_eal/linux/include -I../lib/librte_eal/linux/include -Ilib/librte_eal/x86/include -I../lib/librte_eal/x86/include -Ilib/librte_eal/common -I../lib/librte_eal/common -Ilib/librte_eal -I../lib/librte_eal -Ilib/librte_kvargs -I../lib/librte_kvargs -Ilib/librte_metrics -I../lib/librte_metrics -Ilib/librte_telemetry -I../lib/librte_telemetry -Xclang -fcolor-diagnostics -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Werror -O3 -include rte_config.h -Wextra -Wcast-qual -Wdeprecated -Wformat-nonliteral -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wpointer-arith -Wsign-compare -Wstrict-prototypes -Wundef -Wwrite-strings -Wno-address-of-packed-member -Wno-missing-field-initializers -Wno-pointer-to-int-cast -D_GNU_SOURCE -m32 -fPIC -march=native -DALLOW_EXPERIMENTAL_API -DALLOW_INTERNAL_API -DRTE_LIBEAL_USE_GETENTROPY -DHAVE_GETOPT_H -DHAVE_GETOPT -DHAVE_GETOPT_LONG -MD -MQ 'lib/76b5a35@@rte_eal@sta/librte_eal_common_eal_common_trace.c.o' -MF 'lib/76b5a35@@rte_eal@sta/librte_eal_common_eal_common_trace.c.o.d' -o 'lib/76b5a35@@rte_eal@sta/librte_eal_common_eal_common_trace.c.o' -c ../lib/librte_eal/common/eal_common_trace.c ../lib/librte_eal/common/eal_common_trace.c:160:8: error: misaligned atomic operation may incur significant performance penalty [-Werror,-Watomic-alignment] val = __atomic_load_n(trace, __ATOMIC_ACQUIRE); ^ 1 error generated.
I try use clang build dpdk, but build error, please see the error log, thanks. [DPDK version] commit 41f8e803bf65b7b45f78adb57c371ca99c3bc98f (HEAD, tag: v22.11-rc2) Author: Thomas Monjalon <thomas@monjalon.net> Date: Tue Nov 1 00:23:56 2022 +0100 version: 22.11-rc2 Signed-off-by: Thomas Monjalon <thomas@monjalon.net> [OS] Ubuntu 20.04.2 LTS/5.4.0-74-generic clang version 10.0.0 [Error log] [42/2317] Compiling C object 'lib/76b5a35@@rte_eal@sta/eal_common_rte_service.c.o' FAILED: lib/76b5a35@@rte_eal@sta/eal_common_rte_service.c.o clang -Ilib/76b5a35@@rte_eal@sta -Ilib -I../lib -I. -I.. -Iconfig -I../config -Ilib/eal/include -I../lib/eal/include -Ilib/eal/linux/include -I../lib/eal/linux/include -Ilib/eal/x86/include -I../lib/eal/x86/include -Ilib/eal/common -I../lib/eal/common -Ilib/eal -I../lib/eal -Ilib/kvargs -I../lib/kvargs -Ilib/metrics -I../lib/metrics -Ilib/telemetry -I../lib/telemetry -Xclang -fcolor-diagnostics -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Werror -O3 -include rte_config.h -Wcast-qual -Wdeprecated -Wformat -Wformat-nonliteral -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wpointer-arith -Wsign-compare -Wstrict-prototypes -Wundef -Wwrite-strings -Wno-address-of-packed-member -Wno-missing-field-initializers -Wno-pointer-to-int-cast -D_GNU_SOURCE -m32 -fPIC -march=native -DALLOW_EXPERIMENTAL_API -DALLOW_INTERNAL_API '-DABI_VERSION="23.0"' -DRTE_LIBEAL_USE_GETENTROPY -DRTE_LOG_DEFAULT_LOGTYPE=lib.eal -MD -MQ 'lib/76b5a35@@rte_eal@sta/eal_common_rte_service.c.o' -MF 'lib/76b5a35@@rte_eal@sta/eal_common_rte_service.c.o.d' -o 'lib/76b5a35@@rte_eal@sta/eal_common_rte_service.c.o' -c ../lib/eal/common/rte_service.c ../lib/eal/common/rte_service.c:391:4: error: misaligned atomic operation may incur significant performance penalty [-Werror,-Watomic-alignment] __atomic_store_n(&cs->cycles, cs->cycles + cycles, ^ ../lib/eal/common/rte_service.c:393:4: error: misaligned atomic operation may incur significant performance penalty [-Werror,-Watomic-alignment] __atomic_store_n(&service_stats->cycles, ^ ../lib/eal/common/rte_service.c:398:3: error: misaligned atomic operation may incur significant performance penalty [-Werror,-Watomic-alignment] __atomic_store_n(&service_stats->calls, ^ ../lib/eal/common/rte_service.c:510:3: error: misaligned atomic operation may incur significant performance penalty [-Werror,-Watomic-alignment] __atomic_store_n(&cs->loops, cs->loops + 1, __ATOMIC_RELAXED); ^ ../lib/eal/common/rte_service.c:853:9: error: misaligned atomic operation may incur significant performance penalty [-Werror,-Watomic-alignment] return __atomic_load_n(&cs->service_stats[service_id].calls, ^ ../lib/eal/common/rte_service.c:862:9: error: misaligned atomic operation may incur significant performance penalty [-Werror,-Watomic-alignment] return __atomic_load_n(&cs->service_stats[service_id].cycles, ^ ../lib/eal/common/rte_service.c:837:9: error: misaligned atomic operation may incur significant performance penalty [-Werror,-Watomic-alignment] return __atomic_load_n(&cs->loops, __ATOMIC_RELAXED); ^ ../lib/eal/common/rte_service.c:845:9: error: misaligned atomic operation may incur significant performance penalty [-Werror,-Watomic-alignment] return __atomic_load_n(&cs->cycles, __ATOMIC_RELAXED); ^ 8 errors generated. [44/2317] Compiling C object 'lib/76b5a35@@rte_eal@sta/eal_common_eal_common_trace.c.o' FAILED: lib/76b5a35@@rte_eal@sta/eal_common_eal_common_trace.c.o clang -Ilib/76b5a35@@rte_eal@sta -Ilib -I../lib -I. -I.. -Iconfig -I../config -Ilib/eal/include -I../lib/eal/include -Ilib/eal/linux/include -I../lib/eal/linux/include -Ilib/eal/x86/include -I../lib/eal/x86/include -Ilib/eal/common -I../lib/eal/common -Ilib/eal -I../lib/eal -Ilib/kvargs -I../lib/kvargs -Ilib/metrics -I../lib/metrics -Ilib/telemetry -I../lib/telemetry -Xclang -fcolor-diagnostics -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Werror -O3 -include rte_config.h -Wcast-qual -Wdeprecated -Wformat -Wformat-nonliteral -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wpointer-arith -Wsign-compare -Wstrict-prototypes -Wundef -Wwrite-strings -Wno-address-of-packed-member -Wno-missing-field-initializers -Wno-pointer-to-int-cast -D_GNU_SOURCE -m32 -fPIC -march=native -DALLOW_EXPERIMENTAL_API -DALLOW_INTERNAL_API '-DABI_VERSION="23.0"' -DRTE_LIBEAL_USE_GETENTROPY -DRTE_LOG_DEFAULT_LOGTYPE=lib.eal -MD -MQ 'lib/76b5a35@@rte_eal@sta/eal_common_eal_common_trace.c.o' -MF 'lib/76b5a35@@rte_eal@sta/eal_common_eal_common_trace.c.o.d' -o 'lib/76b5a35@@rte_eal@sta/eal_common_eal_common_trace.c.o' -c ../lib/eal/common/eal_common_trace.c ../lib/eal/common/eal_common_trace.c:144:8: error: misaligned atomic operation may incur significant performance penalty [-Werror,-Watomic-alignment] val = __atomic_load_n(t, __ATOMIC_ACQUIRE); ^ 1 error generated. [51/2317] Compiling C object 'lib/76b5a35@@rte_eal@sta/eal_common_malloc_heap.c.o'