From f34c6ca3d543968e900d6327d8b5900db63f08ad Mon Sep 17 00:00:00 2001 From: Petr Vorel Date: Thu, 1 Oct 2020 23:28:39 +0200 Subject: [PATCH] lapi: Add sysinfo.h to fix build with MUSL libc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The reason is to avoid indirect include when using some network headers: or others -> -> This indirect include causes on MUSL redefinition of struct sysinfo when included both and some of UAPI headers: In file included from x86_64-buildroot-linux-musl/sysroot/usr/include/linux/kernel.h:5, from x86_64-buildroot-linux-musl/sysroot/usr/include/linux/netlink.h:5, from ../include/tst_netlink.h:14, from tst_crypto.c:13: x86_64-buildroot-linux-musl/sysroot/usr/include/linux/sysinfo.h:8:8: error: redefinition of ‘struct sysinfo’ struct sysinfo { ^~~~~~~ In file included from ../include/tst_safe_macros.h:15, from ../include/tst_test.h:93, from tst_crypto.c:11: x86_64-buildroot-linux-musl/sysroot/usr/include/sys/sysinfo.h:10:8: note: originally defined here Signed-off-by: Petr Vorel [ upstream status: https://patchwork.ozlabs.org/project/ltp/patch/20201001231256.6930-1-petr.vorel@gmail.com/, rebased for 20210927 ] But this patch is not going to get upstreamed because it got fixed in Linux kernel: a85cbe6159ff "uapi: move constants from to " This patch was also backported to stable and LTS versions, which we use since buildroot 54584d233b "{linux, linux-headers}: bump 5.{4, 10}.x 4.{4, 9, 14, 19} series". We just wait for all musl based toolchains to be rebuilt. ] Signed-off-by: Petr Vorel --- include/lapi/sysinfo.h | 22 +++++++++++++++++++ include/tst_safe_macros.h | 2 +- lib/safe_macros.c | 2 +- lib/tst_memutils.c | 2 +- testcases/kernel/mem/mtest01/mtest01.c | 2 +- testcases/kernel/syscalls/madvise/madvise06.c | 2 +- testcases/kernel/syscalls/sysinfo/sysinfo01.c | 2 +- testcases/kernel/syscalls/sysinfo/sysinfo02.c | 2 +- testcases/kernel/syscalls/sysinfo/sysinfo03.c | 2 +- .../interfaces/pthread_cond_broadcast/1-2.c | 2 +- 10 files changed, 31 insertions(+), 9 deletions(-) create mode 100644 include/lapi/sysinfo.h diff --git a/include/lapi/sysinfo.h b/include/lapi/sysinfo.h new file mode 100644 index 0000000000..d0e0e93d7f --- /dev/null +++ b/include/lapi/sysinfo.h @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) 2020 Petr Vorel + */ + +#ifndef SYSINFO_H__ + +/* + * Don't use as it breaks build MUSL toolchain. + * Use instead. + * + * Some kernel UAPI headers do indirect include: + * or others -> -> + * + * This indirect include causes on MUSL redefinition of struct sysinfo when + * included both and some of UAPI headers: + */ +#include + +#define SYSINFO_H__ + +#endif /* SYSINFO_H__ */ diff --git a/include/tst_safe_macros.h b/include/tst_safe_macros.h index d99441c86f..0d26e9d455 100644 --- a/include/tst_safe_macros.h +++ b/include/tst_safe_macros.h @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/lib/safe_macros.c b/lib/safe_macros.c index a5b6bc5047..87d922a928 100644 --- a/lib/safe_macros.c +++ b/lib/safe_macros.c @@ -11,7 +11,7 @@ #include #include #include -#include +#include "lapi/sysinfo.h" #include #include #include diff --git a/lib/tst_memutils.c b/lib/tst_memutils.c index 4a49747613..000688f5a3 100644 --- a/lib/tst_memutils.c +++ b/lib/tst_memutils.c @@ -6,7 +6,7 @@ #include #include #include -#include +#include "lapi/sysinfo.h" #include #define TST_NO_DEFAULT_MAIN diff --git a/testcases/kernel/mem/mtest01/mtest01.c b/testcases/kernel/mem/mtest01/mtest01.c index 20cb95191d..3462dc3f82 100644 --- a/testcases/kernel/mem/mtest01/mtest01.c +++ b/testcases/kernel/mem/mtest01/mtest01.c @@ -20,7 +20,6 @@ */ #include -#include #include #include #include @@ -29,6 +28,7 @@ #include #include "lapi/abisize.h" +#include "lapi/sysinfo.h" #include "tst_test.h" #define FIVE_HUNDRED_MB (500ULL*1024*1024) diff --git a/testcases/kernel/syscalls/madvise/madvise06.c b/testcases/kernel/syscalls/madvise/madvise06.c index 263b8e78bf..4fa52e6eae 100644 --- a/testcases/kernel/syscalls/madvise/madvise06.c +++ b/testcases/kernel/syscalls/madvise/madvise06.c @@ -46,7 +46,7 @@ #include #include #include -#include +#include "lapi/sysinfo.h" #include "tst_test.h" #include "tst_cgroup.h" diff --git a/testcases/kernel/syscalls/sysinfo/sysinfo01.c b/testcases/kernel/syscalls/sysinfo/sysinfo01.c index 2ea44a2beb..a237345ef7 100644 --- a/testcases/kernel/syscalls/sysinfo/sysinfo01.c +++ b/testcases/kernel/syscalls/sysinfo/sysinfo01.c @@ -69,7 +69,7 @@ #include #include #include -#include +#include "lapi/sysinfo.h" #include "test.h" diff --git a/testcases/kernel/syscalls/sysinfo/sysinfo02.c b/testcases/kernel/syscalls/sysinfo/sysinfo02.c index 7ad0e8bdcf..61fa1ab757 100644 --- a/testcases/kernel/syscalls/sysinfo/sysinfo02.c +++ b/testcases/kernel/syscalls/sysinfo/sysinfo02.c @@ -65,7 +65,7 @@ #include #include #include -#include +#include "lapi/sysinfo.h" #include #include "test.h" diff --git a/testcases/kernel/syscalls/sysinfo/sysinfo03.c b/testcases/kernel/syscalls/sysinfo/sysinfo03.c index af7cb6421e..dc5ae65e35 100644 --- a/testcases/kernel/syscalls/sysinfo/sysinfo03.c +++ b/testcases/kernel/syscalls/sysinfo/sysinfo03.c @@ -13,7 +13,7 @@ */ -#include +#include "lapi/sysinfo.h" #include "lapi/namespaces_constants.h" #include "lapi/posix_clocks.h" #include "tst_test.h" diff --git a/testcases/open_posix_testsuite/conformance/interfaces/pthread_cond_broadcast/1-2.c b/testcases/open_posix_testsuite/conformance/interfaces/pthread_cond_broadcast/1-2.c index 22e7c36386..572701f9fd 100644 --- a/testcases/open_posix_testsuite/conformance/interfaces/pthread_cond_broadcast/1-2.c +++ b/testcases/open_posix_testsuite/conformance/interfaces/pthread_cond_broadcast/1-2.c @@ -43,7 +43,7 @@ #include #include #ifdef __linux__ -#include +#include "lapi/sysinfo.h" #endif #include "../testfrmw/testfrmw.h" -- 2.34.1