Re: [PATCH v3 14/14] selftests/nolibc: enable compiler warnings

From: Willy Tarreau
Date: Sat Aug 05 2023 - 12:23:54 EST


On Thu, Aug 03, 2023 at 09:28:58AM +0200, Thomas Weißschuh wrote:
> It will help the developers to avoid cruft and detect some bugs.
>
> Signed-off-by: Thomas Weißschuh <linux@xxxxxxxxxxxxxx>
> ---
> tools/testing/selftests/nolibc/Makefile | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile
> index b82d29b6c37f..e8d09cbee2ab 100644
> --- a/tools/testing/selftests/nolibc/Makefile
> +++ b/tools/testing/selftests/nolibc/Makefile
> @@ -79,7 +79,7 @@ endif
> CFLAGS_s390 = -m64
> CFLAGS_mips = -EL
> CFLAGS_STACKPROTECTOR ?= $(call cc-option,-mstack-protector-guard=global $(call cc-option,-fstack-protector-all))
> -CFLAGS ?= -Os -fno-ident -fno-asynchronous-unwind-tables -std=c89 \
> +CFLAGS ?= -Os -fno-ident -fno-asynchronous-unwind-tables -std=c89 -W -Wall -Wextra \
> $(call cc-option,-fno-stack-protector) \
> $(CFLAGS_$(ARCH)) $(CFLAGS_STACKPROTECTOR)
> LDFLAGS :=

I'm now getting this with gcc < 9:

nolibc-test.c: In function 'test_pipe':
nolibc-test.c:811:10: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (len != strlen(msg))
^
The reason is that len is ssize_t and strlen() is size_t. I tried different
approaches here but the cleanest remains turning len to size_t (we don't
use its sign anyway), so I'll do that one as well.

Cheers,
Willy