Re: [PATCH] selftests: filesystems: add missing stddef header
From: Amer Al Shanawany
Date: Sat Apr 20 2024 - 11:56:32 EST
On 4/19/24 18:45, Muhammad Usama Anjum wrote:
> On 4/17/24 9:16 PM, Amer Al Shanawany wrote:
>> fix compiler warning and errors when compiling statmount test.
> The error description or the compiler with version is required to reproduce
> the error easily. I'm unable to reproduce the error by gcc 12 and clang 17.
I'm using gcc 12.3 (Ubuntu 12.3.0-1ubuntu1~22.04), for the error please see the attached log file (statmount.txt)
I was wondering if it's worth adding this include to kselftest.h
>>
>> Signed-off-by: Amer Al Shanawany <amer.shanawany@xxxxxxxxx>
>> ---
>> tools/testing/selftests/filesystems/statmount/statmount_test.c | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/tools/testing/selftests/filesystems/statmount/statmount_test.c b/tools/testing/selftests/filesystems/statmount/statmount_test.c
>> index 3eafd7da58e2..e6d7c4f1c85b 100644
>> --- a/tools/testing/selftests/filesystems/statmount/statmount_test.c
>> +++ b/tools/testing/selftests/filesystems/statmount/statmount_test.c
>> @@ -3,6 +3,7 @@
>> #define _GNU_SOURCE
>>
>> #include <assert.h>
>> +#include <stddef.h>
>> #include <stdint.h>
>> #include <sched.h>
>> #include <fcntl.h>
>
Thanks
Amergcc (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
make --no-print-directory -C /home/amer/Desktop/linux-next \
-f /home/amer/Desktop/linux-next/Makefile kselftest
set -e; mkdir -p include/generated/uapi/linux/; trap "rm -f include/generated/uapi/linux/.tmp_version.h" EXIT; { if [ 0 -gt 255 ]; then echo \#define LINUX_VERSION_CODE 395775; else echo \#define LINUX_VERSION_CODE 395520; fi; echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + ((c) > 255 ? 255 : (c)))'; echo \#define LINUX_VERSION_MAJOR 6; echo \#define LINUX_VERSION_PATCHLEVEL 9; echo \#define LINUX_VERSION_SUBLEVEL 0; } > include/generated/uapi/linux/.tmp_version.h; if [ ! -r include/generated/uapi/linux/version.h ] || ! cmp -s include/generated/uapi/linux/version.h include/generated/uapi/linux/.tmp_version.h; then : ' UPD include/generated/uapi/linux/version.h'; mv -f include/generated/uapi/linux/.tmp_version.h include/generated/uapi/linux/version.h; fi
make -f ./scripts/Makefile.build obj=scripts/basic
make -f ./scripts/Makefile.build obj=scripts scripts/unifdef
make -f ./scripts/Makefile.asm-generic obj=arch/x86/include/generated/uapi/asm \
generic=include/uapi/asm-generic
make -f ./scripts/Makefile.build obj=arch/x86/entry/syscalls all
make -f ./scripts/Makefile.build obj=arch/x86/tools relocs
make -f ./scripts/Makefile.headersinst obj=include/uapi
make -f ./scripts/Makefile.headersinst obj=arch/x86/include/uapi
make -C ./tools/testing/selftests run_tests
make[3]: Entering directory '/home/amer/Desktop/linux-next/tools/testing/selftests/filesystems/statmount'
gcc -Wall -O2 -g -isystem /home/amer/Desktop/linux-next/usr/include statmount_test.c -o /home/amer/Desktop/linux-next/tools/testing/selftests/filesystems/statmount/statmount_test
statmount_test.c: In function ‘main’:
statmount_test.c:572:24: warning: implicit declaration of function ‘offsetof’ [-Wimplicit-function-declaration]
572 | #define str_off(memb) (offsetof(struct statmount, memb) / sizeof(uint32_t))
| ^~~~~~~~
statmount_test.c:598:51: note: in expansion of macro ‘str_off’
598 | test_statmount_string(STATMOUNT_MNT_ROOT, str_off(mnt_root), "mount root");
| ^~~~~~~
statmount_test.c:18:1: note: ‘offsetof’ is defined in header ‘<stddef.h>’; did you forget to ‘#include <stddef.h>’?
17 | #include "../../kselftest.h"
+++ |+#include <stddef.h>
18 |
statmount_test.c:572:33: error: expected expression before ‘struct’
572 | #define str_off(memb) (offsetof(struct statmount, memb) / sizeof(uint32_t))
| ^~~~~~
statmount_test.c:598:51: note: in expansion of macro ‘str_off’
598 | test_statmount_string(STATMOUNT_MNT_ROOT, str_off(mnt_root), "mount root");
| ^~~~~~~
statmount_test.c:572:33: error: expected expression before ‘struct’
572 | #define str_off(memb) (offsetof(struct statmount, memb) / sizeof(uint32_t))
| ^~~~~~
statmount_test.c:599:52: note: in expansion of macro ‘str_off’
599 | test_statmount_string(STATMOUNT_MNT_POINT, str_off(mnt_point), "mount point");
| ^~~~~~~
statmount_test.c:572:33: error: expected expression before ‘struct’
572 | #define str_off(memb) (offsetof(struct statmount, memb) / sizeof(uint32_t))
| ^~~~~~
statmount_test.c:600:50: note: in expansion of macro ‘str_off’
600 | test_statmount_string(STATMOUNT_FS_TYPE, str_off(fs_type), "fs type");
| ^~~~~~~
statmount_test.c:572:33: error: expected expression before ‘struct’
572 | #define str_off(memb) (offsetof(struct statmount, memb) / sizeof(uint32_t))
| ^~~~~~
statmount_test.c:601:41: note: in expansion of macro ‘str_off’
601 | test_statmount_string(all_mask, str_off(mnt_root), "mount root & all");
| ^~~~~~~
statmount_test.c:572:33: error: expected expression before ‘struct’
572 | #define str_off(memb) (offsetof(struct statmount, memb) / sizeof(uint32_t))
| ^~~~~~
statmount_test.c:602:41: note: in expansion of macro ‘str_off’
602 | test_statmount_string(all_mask, str_off(mnt_point), "mount point & all");
| ^~~~~~~
statmount_test.c:572:33: error: expected expression before ‘struct’
572 | #define str_off(memb) (offsetof(struct statmount, memb) / sizeof(uint32_t))
| ^~~~~~
statmount_test.c:603:41: note: in expansion of macro ‘str_off’
603 | test_statmount_string(all_mask, str_off(fs_type), "fs type & all");
| ^~~~~~~
statmount_test.c: In function ‘cleanup_namespace’:
statmount_test.c:127:9: warning: ignoring return value of ‘fchdir’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
127 | fchdir(orig_root);
| ^~~~~~~~~~~~~~~~~
statmount_test.c:128:9: warning: ignoring return value of ‘chroot’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
128 | chroot(".");
| ^~~~~~~~~~~
make[3]: *** [../../lib.mk:203: /home/amer/Desktop/linux-next/tools/testing/selftests/filesystems/statmount/statmount_test] Error 1
make[3]: Leaving directory '/home/amer/Desktop/linux-next/tools/testing/selftests/filesystems/statmount'
make[2]: *** [Makefile:191: all] Error 2
make[1]: *** [/home/amer/Desktop/linux-next/Makefile:1370: kselftest] Error 2
make: *** [Makefile:240: __sub-make] Error 2