Message ID | 20230506184424.105501-1-pvorel@suse.cz |
---|---|
State | Changes Requested |
Headers | show |
Series | [RFC,v2,1/1] lapi: Add sysinfo.h to fix build with older MUSL toolchain | expand |
Hi all, > diff --git a/testcases/kernel/syscalls/sysinfo/sysinfo01.c b/testcases/kernel/syscalls/sysinfo/sysinfo01.c > index 2ea44a2be..a237345ef 100644 > --- a/testcases/kernel/syscalls/sysinfo/sysinfo01.c > +++ b/testcases/kernel/syscalls/sysinfo/sysinfo01.c > @@ -69,7 +69,7 @@ > #include <sys/types.h> > #include <sys/stat.h> > #include <sys/signal.h> > -#include <sys/sysinfo.h> > +#include "lapi/sysinfo.h" NOTE: sysinfo0[1-3].c (and any new sysinfo test) will need to use <sys/sysinfo.h> due sysinfo() signature in it (that's not in <linux/sysinfo.h>). Following fix would be needed for this patch. But as there is no feedback, I don't even send v3. Kind regards, Petr diff --git testcases/kernel/syscalls/sysinfo/sysinfo01.c testcases/kernel/syscalls/sysinfo/sysinfo01.c index a237345ef..2ea44a2be 100644 --- testcases/kernel/syscalls/sysinfo/sysinfo01.c +++ testcases/kernel/syscalls/sysinfo/sysinfo01.c @@ -69,7 +69,7 @@ #include <sys/types.h> #include <sys/stat.h> #include <sys/signal.h> -#include "lapi/sysinfo.h" +#include <sys/sysinfo.h> #include "test.h" diff --git testcases/kernel/syscalls/sysinfo/sysinfo02.c testcases/kernel/syscalls/sysinfo/sysinfo02.c index 61fa1ab75..7ad0e8bdc 100644 --- testcases/kernel/syscalls/sysinfo/sysinfo02.c +++ testcases/kernel/syscalls/sysinfo/sysinfo02.c @@ -65,7 +65,7 @@ #include <sys/types.h> #include <sys/stat.h> #include <sys/signal.h> -#include "lapi/sysinfo.h" +#include <sys/sysinfo.h> #include <stdint.h> #include "test.h" diff --git testcases/kernel/syscalls/sysinfo/sysinfo03.c testcases/kernel/syscalls/sysinfo/sysinfo03.c index 0b6ffb49b..13b0de806 100644 --- testcases/kernel/syscalls/sysinfo/sysinfo03.c +++ testcases/kernel/syscalls/sysinfo/sysinfo03.c @@ -14,9 +14,9 @@ */ #include "lapi/posix_clocks.h" -#include "lapi/sched.h" -#include "lapi/sysinfo.h" +#include <sys/sysinfo.h> #include "tst_test.h" +#include "lapi/sched.h" static int offsets[] = { 10,
Hi Petr Cyril has pointed that SYSINFO_H__ should be on the top of #ifndef SYSINFO_H__ three years ago[1]. #ifndef SYSINFO_H__ #define SYSINFO_H__ ...... [1]https://lore.kernel.org/ltp/20201014143317.GC13224@yuki.lan/ > Hi all, > >> diff --git a/testcases/kernel/syscalls/sysinfo/sysinfo01.c b/testcases/kernel/syscalls/sysinfo/sysinfo01.c >> index 2ea44a2be..a237345ef 100644 >> --- a/testcases/kernel/syscalls/sysinfo/sysinfo01.c >> +++ b/testcases/kernel/syscalls/sysinfo/sysinfo01.c >> @@ -69,7 +69,7 @@ >> #include <sys/types.h> >> #include <sys/stat.h> >> #include <sys/signal.h> >> -#include <sys/sysinfo.h> >> +#include "lapi/sysinfo.h" > > NOTE: sysinfo0[1-3].c (and any new sysinfo test) will need to use > <sys/sysinfo.h> due sysinfo() signature in it (that's not in > <linux/sysinfo.h>). > Following fix would be needed for this patch. But as there is no > feedback, I don't even send v3. I guess it still will meet redefine erroron musl[2] because tst_test.h- >#include "tst_safe_macros.h" -> <linux/sysinfo.h> -> sysinfo struct <sys/sysinfo.h> -> sysinfo struct [2]http://git.musl-libc.org/cgit/musl/tree/include/sys/sysinfo.h How about use <linux/sysinfo.h> directly and add signature in lapi/sysinfo.h? Best Regards Yang Xu > > Kind regards, > Petr > > diff --git testcases/kernel/syscalls/sysinfo/sysinfo01.c > testcases/kernel/syscalls/sysinfo/sysinfo01.c > index a237345ef..2ea44a2be 100644 > --- testcases/kernel/syscalls/sysinfo/sysinfo01.c > +++ testcases/kernel/syscalls/sysinfo/sysinfo01.c > @@ -69,7 +69,7 @@ > #include <sys/types.h> > #include <sys/stat.h> > #include <sys/signal.h> > -#include "lapi/sysinfo.h" > +#include <sys/sysinfo.h> > > #include "test.h" > > diff --git testcases/kernel/syscalls/sysinfo/sysinfo02.c > testcases/kernel/syscalls/sysinfo/sysinfo02.c > index 61fa1ab75..7ad0e8bdc 100644 > --- testcases/kernel/syscalls/sysinfo/sysinfo02.c > +++ testcases/kernel/syscalls/sysinfo/sysinfo02.c > @@ -65,7 +65,7 @@ > #include <sys/types.h> > #include <sys/stat.h> > #include <sys/signal.h> > -#include "lapi/sysinfo.h" > +#include <sys/sysinfo.h> > #include <stdint.h> > > #include "test.h" > diff --git testcases/kernel/syscalls/sysinfo/sysinfo03.c > testcases/kernel/syscalls/sysinfo/sysinfo03.c > index 0b6ffb49b..13b0de806 100644 > --- testcases/kernel/syscalls/sysinfo/sysinfo03.c > +++ testcases/kernel/syscalls/sysinfo/sysinfo03.c > @@ -14,9 +14,9 @@ > */ > > #include "lapi/posix_clocks.h" > -#include "lapi/sched.h" > -#include "lapi/sysinfo.h" > +#include <sys/sysinfo.h> > #include "tst_test.h" > +#include "lapi/sched.h" > > static int offsets[] = { > 10, >
diff --git a/include/lapi/sysinfo.h b/include/lapi/sysinfo.h new file mode 100644 index 000000000..ab4e4c62a --- /dev/null +++ b/include/lapi/sysinfo.h @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) 2023 Petr Vorel <petr.vorel@gmail.com> + */ + +#ifndef SYSINFO_H__ + +/* + * Don't use <sys/sysinfo.h> as it breaks build MUSL toolchain. + * Use <linux/sysinfo.h> instead. + * + * Some kernel UAPI headers do indirect <linux/sysinfo.h> include: + * <linux/netlink.h> or others -> <linux/kernel.h> -> <linux/sysinfo.h> + * + * This indirect include causes on MUSL redefinition of struct sysinfo when + * included both <sys/sysinfo.h> and some of UAPI headers: + */ +#include <linux/sysinfo.h> + +#define SYSINFO_H__ + +#endif /* SYSINFO_H__ */ diff --git a/include/tst_safe_macros.h b/include/tst_safe_macros.h index 0cf3d7878..43da18e2a 100644 --- a/include/tst_safe_macros.h +++ b/include/tst_safe_macros.h @@ -12,7 +12,7 @@ #include <sys/resource.h> #include <sys/stat.h> #include <sys/vfs.h> -#include <sys/sysinfo.h> +#include <linux/sysinfo.h> #include <fcntl.h> #include <libgen.h> #include <signal.h> diff --git a/lib/safe_macros.c b/lib/safe_macros.c index af6dd0716..e38ff1c43 100644 --- a/lib/safe_macros.c +++ b/lib/safe_macros.c @@ -11,7 +11,6 @@ #include <sys/wait.h> #include <sys/mount.h> #include <sys/xattr.h> -#include <sys/sysinfo.h> #include <errno.h> #include <libgen.h> #include <limits.h> @@ -22,6 +21,7 @@ #include <malloc.h> #include <math.h> #include "lapi/fcntl.h" +#include "lapi/sysinfo.h" #include "test.h" #include "safe_macros.h" diff --git a/lib/tst_memutils.c b/lib/tst_memutils.c index 6fc9f6a93..a52b46a71 100644 --- a/lib/tst_memutils.c +++ b/lib/tst_memutils.c @@ -6,7 +6,7 @@ #include <stdio.h> #include <unistd.h> #include <limits.h> -#include <sys/sysinfo.h> +#include "lapi/sysinfo.h" #include <stdlib.h> #define TST_NO_DEFAULT_MAIN diff --git a/testcases/kernel/mem/mtest01/mtest01.c b/testcases/kernel/mem/mtest01/mtest01.c index fb991ce8b..0fccd5405 100644 --- a/testcases/kernel/mem/mtest01/mtest01.c +++ b/testcases/kernel/mem/mtest01/mtest01.c @@ -20,7 +20,6 @@ */ #include <sys/types.h> -#include <sys/sysinfo.h> #include <sys/wait.h> #include <limits.h> #include <signal.h> @@ -29,6 +28,7 @@ #include <unistd.h> #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 be22318ea..32fdff740 100644 --- a/testcases/kernel/syscalls/madvise/madvise06.c +++ b/testcases/kernel/syscalls/madvise/madvise06.c @@ -46,7 +46,7 @@ #include <errno.h> #include <stdio.h> #include <sys/mount.h> -#include <sys/sysinfo.h> +#include "lapi/sysinfo.h" #include "tst_test.h" #define CHUNK_SZ (400*1024*1024L) diff --git a/testcases/kernel/syscalls/sysinfo/sysinfo01.c b/testcases/kernel/syscalls/sysinfo/sysinfo01.c index 2ea44a2be..a237345ef 100644 --- a/testcases/kernel/syscalls/sysinfo/sysinfo01.c +++ b/testcases/kernel/syscalls/sysinfo/sysinfo01.c @@ -69,7 +69,7 @@ #include <sys/types.h> #include <sys/stat.h> #include <sys/signal.h> -#include <sys/sysinfo.h> +#include "lapi/sysinfo.h" #include "test.h" diff --git a/testcases/kernel/syscalls/sysinfo/sysinfo02.c b/testcases/kernel/syscalls/sysinfo/sysinfo02.c index 7ad0e8bdc..61fa1ab75 100644 --- a/testcases/kernel/syscalls/sysinfo/sysinfo02.c +++ b/testcases/kernel/syscalls/sysinfo/sysinfo02.c @@ -65,7 +65,7 @@ #include <sys/types.h> #include <sys/stat.h> #include <sys/signal.h> -#include <sys/sysinfo.h> +#include "lapi/sysinfo.h" #include <stdint.h> #include "test.h" diff --git a/testcases/kernel/syscalls/sysinfo/sysinfo03.c b/testcases/kernel/syscalls/sysinfo/sysinfo03.c index 6b8f0aef7..0b6ffb49b 100644 --- a/testcases/kernel/syscalls/sysinfo/sysinfo03.c +++ b/testcases/kernel/syscalls/sysinfo/sysinfo03.c @@ -13,10 +13,10 @@ */ -#include <sys/sysinfo.h> #include "lapi/posix_clocks.h" -#include "tst_test.h" #include "lapi/sched.h" +#include "lapi/sysinfo.h" +#include "tst_test.h" static int offsets[] = { 10, 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 22e7c3638..572701f9f 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 <sys/wait.h> #include <semaphore.h> #ifdef __linux__ -#include <sys/sysinfo.h> +#include "lapi/sysinfo.h" #endif #include "../testfrmw/testfrmw.h"