On 14 March 2018 at 02:09, Mike Kravetz mike.kravetz@oracle.com wrote:
On 03/13/2018 04:42 AM, Anders Roxell wrote:
gcc warns about implicit declaration.
gcc -D_FILE_OFFSET_BITS=64 -I../../../../include/uapi/ -I../../../../include/ -I../../../../usr/include/ memfd_test.c common.o -o memfd_test memfd_test.c: In function ‘mfd_assert_get_seals’: memfd_test.c:74:6: warning: implicit declaration of function ‘fcntl’ [-Wimplicit-function-declaration] r = fcntl(fd, F_GET_SEALS); ^~~~~ memfd_test.c: In function ‘mfd_assert_open’: memfd_test.c:197:6: warning: implicit declaration of function ‘open’ [-Wimplicit-function-declaration] r = open(buf, flags, mode); ^~~~ memfd_test.c: In function ‘mfd_assert_write’: memfd_test.c:328:6: warning: implicit declaration of function ‘fallocate’ [-Wimplicit-function-declaration] r = fallocate(fd, ^~~~~~~~~
In the current code, we include the headers that the functions want according to the man pages, and we add some defines that will be used if they isn't found in glibc. The defines was added into the kernel source in kernel >= 3.16 and glibc requires kernel header files >= 3.2.
Fixes: 4f5ce5e8d7e2 ("selftests: add memfd_create() + sealing tests") Signed-off-by: Anders Roxell anders.roxell@linaro.org
tools/testing/selftests/memfd/memfd_test.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/memfd/memfd_test.c b/tools/testing/selftests/memfd/memfd_test.c index 10baa1652fc2..0dbeb29c094c 100644 --- a/tools/testing/selftests/memfd/memfd_test.c +++ b/tools/testing/selftests/memfd/memfd_test.c @@ -6,7 +6,6 @@ #include <inttypes.h> #include <limits.h> #include <linux/falloc.h> -#include <linux/fcntl.h> #include <linux/memfd.h> #include <sched.h> #include <stdio.h> @@ -14,13 +13,37 @@ #include <signal.h> #include <string.h> #include <sys/mman.h> +#include <sys/types.h> #include <sys/stat.h> #include <sys/syscall.h> #include <sys/wait.h> +#include <fcntl.h> #include <unistd.h>
I suspect there is some guiding philosophy for selftests that I am unfamiliar with. However, it seems that tests should use as much of the header files in the current kernel source tree as possible. This change removes the include of a header in the current source tree <linux/fcntl.h>. It replaces that with the header <fcntl.h> from the host system (and some other changes).
To me, this seems like step in the wrong direction. But, I could be totally wrong and perhaps self tests should primarily target the host system header files.
So in a way I agree with you. However, what was the design decisions internal kernel headers vs. headers from Host System ? For me it isn't clear how/when we use them, its a mix today is it not?
To ignore warnings with -Wno-implicit-function-declaration wont be an alternative I think.
Cheers, Anders
-- Mike Kravetz
-- To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html