diff options
Diffstat (limited to 'package/ltp-testsuite/0002-lapi-Add-sysinfo.h-to-fix-build-with-MUSL-libc.patch')
-rw-r--r-- | package/ltp-testsuite/0002-lapi-Add-sysinfo.h-to-fix-build-with-MUSL-libc.patch | 211 |
1 files changed, 211 insertions, 0 deletions
diff --git a/package/ltp-testsuite/0002-lapi-Add-sysinfo.h-to-fix-build-with-MUSL-libc.patch b/package/ltp-testsuite/0002-lapi-Add-sysinfo.h-to-fix-build-with-MUSL-libc.patch new file mode 100644 index 0000000000..2893026c03 --- /dev/null +++ b/package/ltp-testsuite/0002-lapi-Add-sysinfo.h-to-fix-build-with-MUSL-libc.patch @@ -0,0 +1,211 @@ +From ac3e262cba81889c0bb04ce87a50a1709f2726e7 Mon Sep 17 00:00:00 2001 +From: Petr Vorel <petr.vorel@gmail.com> +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 <linux/sysinfo.h> include when using +some network headers: <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: + +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 <petr.vorel@gmail.com> + +[ upstream status: https://patchwork.ozlabs.org/project/ltp/patch/20201001231256.6930-1-petr.vorel@gmail.com/ + +But this patch is not going to get upstreamed because it got fixed in Linux kernel: +a85cbe6159ff "uapi: move constants from <linux/kernel.h> to <linux/const.h>" + +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. ] +--- + 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 +- + 9 files changed, 30 insertions(+), 8 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 000000000..d0e0e93d7 +--- /dev/null ++++ b/include/lapi/sysinfo.h +@@ -0,0 +1,22 @@ ++// SPDX-License-Identifier: GPL-2.0-or-later ++/* ++ * Copyright (c) 2020 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 ee3df4142..3cb1623f9 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 a5b6bc504..20d01d304 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 <fcntl.h> + #include <libgen.h> +@@ -23,6 +22,7 @@ + #include <malloc.h> + #include "test.h" + #include "safe_macros.h" ++#include "lapi/sysinfo.h" + + char *safe_basename(const char *file, const int lineno, + void (*cleanup_fn) (void), char *path) +diff --git a/lib/tst_memutils.c b/lib/tst_memutils.c +index dd09db490..085392365 100644 +--- a/lib/tst_memutils.c ++++ b/lib/tst_memutils.c +@@ -5,11 +5,11 @@ + + #include <unistd.h> + #include <limits.h> +-#include <sys/sysinfo.h> + #include <stdlib.h> + + #define TST_NO_DEFAULT_MAIN + #include "tst_test.h" ++#include "lapi/sysinfo.h" + + #define BLOCKSIZE (16 * 1024 * 1024) + +diff --git a/testcases/kernel/mem/mtest01/mtest01.c b/testcases/kernel/mem/mtest01/mtest01.c +index 9676ea4b5..33b2ac822 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 962554163..aa4d3bc91 100644 +--- a/testcases/kernel/syscalls/madvise/madvise06.c ++++ b/testcases/kernel/syscalls/madvise/madvise06.c +@@ -41,7 +41,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..a95066bf5 100644 +--- a/testcases/kernel/syscalls/sysinfo/sysinfo01.c ++++ b/testcases/kernel/syscalls/sysinfo/sysinfo01.c +@@ -69,9 +69,9 @@ + #include <sys/types.h> + #include <sys/stat.h> + #include <sys/signal.h> +-#include <sys/sysinfo.h> + + #include "test.h" ++#include "lapi/sysinfo.h" + + void setup(); + void cleanup(); +diff --git a/testcases/kernel/syscalls/sysinfo/sysinfo02.c b/testcases/kernel/syscalls/sysinfo/sysinfo02.c +index 678b8f1d3..5ce65d20e 100644 +--- a/testcases/kernel/syscalls/sysinfo/sysinfo02.c ++++ b/testcases/kernel/syscalls/sysinfo/sysinfo02.c +@@ -65,10 +65,10 @@ + #include <sys/types.h> + #include <sys/stat.h> + #include <sys/signal.h> +-#include <sys/sysinfo.h> + #include <stdint.h> + + #include "test.h" ++#include "lapi/sysinfo.h" + + #define INVALID_ADDRESS ((uintptr_t)-1) + +diff --git a/testcases/kernel/syscalls/sysinfo/sysinfo03.c b/testcases/kernel/syscalls/sysinfo/sysinfo03.c +index af7cb6421..3b61a05b1 100644 +--- a/testcases/kernel/syscalls/sysinfo/sysinfo03.c ++++ b/testcases/kernel/syscalls/sysinfo/sysinfo03.c +@@ -13,9 +13,9 @@ + + */ + +-#include <sys/sysinfo.h> + #include "lapi/namespaces_constants.h" + #include "lapi/posix_clocks.h" ++#include "lapi/sysinfo.h" + #include "tst_test.h" + + static int offsets[] = { +-- +2.30.0 + |