|
@@ -0,0 +1,203 @@
|
|
|
|
+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/ ]
|
|
|
|
+---
|
|
|
|
+ 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 053c3bcf9..61ea2076d 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 4f48d7529..d8ee03dae 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 f134d90c9..647db951e 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 f08d3943f..9b4d856f8 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 f76f3f6aa..b2613670b 100644
|
|
|
|
+--- a/testcases/kernel/syscalls/madvise/madvise06.c
|
|
|
|
++++ b/testcases/kernel/syscalls/madvise/madvise06.c
|
|
|
|
+@@ -24,8 +24,8 @@
|
|
|
|
+ #include <errno.h>
|
|
|
|
+ #include <stdio.h>
|
|
|
|
+ #include <sys/mount.h>
|
|
|
|
+-#include <sys/sysinfo.h>
|
|
|
|
+ #include "tst_test.h"
|
|
|
|
++#include "lapi/sysinfo.h"
|
|
|
|
+
|
|
|
|
+ #define CHUNK_SZ (400*1024*1024L)
|
|
|
|
+ #define CHUNK_PAGES (CHUNK_SZ / pg_sz)
|
|
|
|
+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.28.0
|
|
|
|
+
|