Re: [PATCH v2] selftests/net: suppress clang's "variable-sized type not at the end" warning

From: Nathan Chancellor
Date: Tue May 28 2024 - 16:39:50 EST


On Mon, May 27, 2024 at 02:36:41PM -0700, John Hubbard wrote:
> When building with clang, via:
>
> make LLVM=1 -C tools/testing/selftest
>
> ...clang warns that "a variable sized type not at the end of a struct or
> class is a GNU extension".
>
> These cases are not easily changed, because they involve structs that
> are part of the API. Fortunately, however, the tests seem to be doing
> just fine (specifically, neither affected test runs any differently with
> gcc vs. clang builds, on my test system) regardless of the warning. So,
> all the warning is doing is preventing a clean build of selftests/net.
>
> Fix this by suppressing this particular clang warning for the
> selftests/net suite.
>
> Signed-off-by: John Hubbard <jhubbard@xxxxxxxxxx>
> ---
>
> Changes since the first version:
>
> 1) Rebased onto Linux 6.10-rc1
>
> thanks,
> John Hubbard
>
>
> tools/testing/selftests/net/Makefile | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/tools/testing/selftests/net/Makefile b/tools/testing/selftests/net/Makefile
> index bd01e4a0be2c..9a3b766c8781 100644
> --- a/tools/testing/selftests/net/Makefile
> +++ b/tools/testing/selftests/net/Makefile
> @@ -6,6 +6,10 @@ CFLAGS += -I../../../../usr/include/ $(KHDR_INCLUDES)
> # Additional include paths needed by kselftest.h
> CFLAGS += -I../
>
> +ifneq ($(LLVM),)
> + CFLAGS += -Wno-gnu-variable-sized-type-not-at-end

For what it's worth, the main kernel has -Wno-gnu because there is
little point in warning about the use of GNU extensions when building
with '-std=gnu...'. It may be worth doing this anywhere that uses a GNU
standard in the selftests but I guess it depends on how noisy things
are.

> +endif
> +
> TEST_PROGS := run_netsocktests run_afpackettests test_bpf.sh netdevice.sh \
> rtnetlink.sh xfrm_policy.sh test_blackhole_dev.sh
> TEST_PROGS += fib_tests.sh fib-onlink-tests.sh pmtu.sh udpgso.sh ip_defrag.sh
>
> base-commit: 2bfcfd584ff5ccc8bb7acde19b42570414bf880b
> --
> 2.45.1
>
>