All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alexander Kanavin" <alex.kanavin@gmail.com>
To: Petr Vorel <petr.vorel@gmail.com>
Cc: OE-core <openembedded-core@lists.openembedded.org>,
	"Khem Raj" <raj.khem@gmail.com>,
	"Anuj Mittal" <anuj.mittal@intel.com>,
	"He Zhe" <zhe.he@windriver.com>,
	"Anders Roxell" <anders.roxell@linaro.org>,
	"Yi Zhao" <yi.zhao@windriver.com>,
	"Daniel Díaz" <daniel.diaz@linaro.org>,
	"Richard Purdie" <richard.purdie@linuxfoundation.org>
Subject: Re: [OE-core] [PATCH 1/1] ltp: Update to 20200930
Date: Mon, 19 Oct 2020 23:43:14 +0200	[thread overview]
Message-ID: <CANNYZj8k8zbpQMD-Y2EQF_y4AffOReL1v=5Luw2dy2yAxA9r8g@mail.gmail.com> (raw)
In-Reply-To: <20201019201332.12446-1-petr.vorel@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 32847 bytes --]

Thank you, but please set Upstream-Status properly for the two newly added
patches.

Alex

On Mon, 19 Oct 2020 at 22:13, Petr Vorel <petr.vorel@gmail.com> wrote:

> New patches (backported musl related fixes):
> * cacheflush01-Rewrite-into-new-API.patch
> * lapi-Add-sysinfo.h-to-fix-build-with-MUSL-libc.patch
>
> Dropped patches (not applicable)
> * 0001-sigwaitinfo-Do-not-run-invalid-undefined-test-cases.patch
>
> Dropped patches from this release:
> * 0001-ptrace01-Fix-missing-format-string.patch
> * 0001-syscalls-copy_file_range02-Expect-EFBIG-in-subcase-m.patch
> * 0004-guard-mallocopt-with-__GLIBC__.patch
>
> Rebased patches:
> * 0001-Remove-OOM-tests-from-runtest-mm.patch
>
> Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
> ---
> Hi,
>
> tested only on intel. Could anybody test it on MUSL
> (the 2 new MUSL related patches were tested on MUSL on Buildroot)
>
> Also, could anybody check if problems on sigwaitinfo01.c on MUSL persist
> and update 0001-sigwaitinfo-Do-not-run-invalid-undefined-test-cases.patch?
>
> Kind regards,
> Petr
>
>  ...001-Remove-OOM-tests-from-runtest-mm.patch |  26 +-
>  ...1-ptrace01-Fix-missing-format-string.patch |  33 ---
>  ...not-run-invalid-undefined-test-cases.patch |  69 ------
>  ...le_range02-Expect-EFBIG-in-subcase-m.patch |  57 -----
>  .../0004-guard-mallocopt-with-__GLIBC__.patch |  34 ---
>  .../cacheflush01-Rewrite-into-new-API.patch   | 225 ++++++++++++++++++
>  ...ysinfo.h-to-fix-build-with-MUSL-libc.patch | 203 ++++++++++++++++
>  .../ltp/{ltp_20200515.bb => ltp_20200930.bb}  |   8 +-
>  8 files changed, 444 insertions(+), 211 deletions(-)
>  delete mode 100644
> meta/recipes-extended/ltp/ltp/0001-ptrace01-Fix-missing-format-string.patch
>  delete mode 100644
> meta/recipes-extended/ltp/ltp/0001-sigwaitinfo-Do-not-run-invalid-undefined-test-cases.patch
>  delete mode 100644
> meta/recipes-extended/ltp/ltp/0001-syscalls-copy_file_range02-Expect-EFBIG-in-subcase-m.patch
>  delete mode 100644
> meta/recipes-extended/ltp/ltp/0004-guard-mallocopt-with-__GLIBC__.patch
>  create mode 100644
> meta/recipes-extended/ltp/ltp/cacheflush01-Rewrite-into-new-API.patch
>  create mode 100644
> meta/recipes-extended/ltp/ltp/lapi-Add-sysinfo.h-to-fix-build-with-MUSL-libc.patch
>  rename meta/recipes-extended/ltp/{ltp_20200515.bb => ltp_20200930.bb}
> (93%)
>
> diff --git
> a/meta/recipes-extended/ltp/ltp/0001-Remove-OOM-tests-from-runtest-mm.patch
> b/meta/recipes-extended/ltp/ltp/0001-Remove-OOM-tests-from-runtest-mm.patch
> index 6b665030c3..95366aee37 100644
> ---
> a/meta/recipes-extended/ltp/ltp/0001-Remove-OOM-tests-from-runtest-mm.patch
> +++
> b/meta/recipes-extended/ltp/ltp/0001-Remove-OOM-tests-from-runtest-mm.patch
> @@ -1,25 +1,25 @@
> -From 13ef88cdccfe3f58c53d57806866b91e310eb272 Mon Sep 17 00:00:00 2001
> +From 5093e44f02be0a3f1a5a79987a90ad43a2bc26c5 Mon Sep 17 00:00:00 2001
>  From: "Mingde (Matthew) Zeng" <matthewzmd@gmail.com>
> -Date: Wed, 29 Jul 2020 08:47:09 -0400
> -Subject: [PATCH] Remove OOM tests from runtest/mm
> -
> -Disable OOM tests, as they might cause oeqa ssh connection lost
> +Date: Mon, 19 Oct 2020 12:31:23 +0200
> +Subject: [PATCH] Disable OOM tests, as they might cause oeqa ssh
> connection
> + lost
>
>  Upstream-Status: Inappropriate [oe-core specific]
>  Signed-off-by: Mingde (Matthew) Zeng <matthew.zeng@windriver.com>
> -
> +[ pvorel: rebase for 20200930 ]
> +Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
>  ---
>   runtest/mm | 6 ------
>   1 file changed, 6 deletions(-)
>
>  diff --git a/runtest/mm b/runtest/mm
> -index a09f39c1e..76fa82754 100644
> +index 481d39691..cf207d10e 100644
>  --- a/runtest/mm
>  +++ b/runtest/mm
> -@@ -73,12 +73,6 @@ ksm06 ksm06
> - ksm06_1 ksm06 -n 10
> - ksm06_2 ksm06 -n 10000
> -
> +@@ -74,12 +74,6 @@ ksm06_2 ksm06 -n 10000
> +
> + cpuset01 cpuset01
> +
>  -oom01 oom01
>  -oom02 oom02
>  -oom03 oom03
> @@ -27,8 +27,8 @@ index a09f39c1e..76fa82754 100644
>  -oom05 oom05
>  -
>   swapping01 swapping01 -i 5
> -
> +
>   thp01 thp01 -I 120
> ---
> +--
>  2.27.0
>
> diff --git
> a/meta/recipes-extended/ltp/ltp/0001-ptrace01-Fix-missing-format-string.patch
> b/meta/recipes-extended/ltp/ltp/0001-ptrace01-Fix-missing-format-string.patch
> deleted file mode 100644
> index 27b890e22b..0000000000
> ---
> a/meta/recipes-extended/ltp/ltp/0001-ptrace01-Fix-missing-format-string.patch
> +++ /dev/null
> @@ -1,33 +0,0 @@
> -From adb9587466a493fdd9d4410f1b8b130ebca06daa Mon Sep 17 00:00:00 2001
> -From: Khem Raj <raj.khem@gmail.com>
> -Date: Tue, 19 May 2020 22:21:23 -0700
> -Subject: [PATCH] ptrace01: Fix missing format string
> -
> -Fixes
> -| ptrace01.c:89:2: error: format string is not a string literal
> -(potentially insecure) [-Werror,-Wformat-security]
> -|         tst_res(TINFO, tc->message);
> -|         ^              ~~~~~~~~~~~
> -
> -Signed-off-by: Khem Raj <raj.khem@gmail.com>
> -Upstream-Status: Backport [58424835952641f4fd60c0ae3ab6c64decca3f8a]
> ----
> - testcases/kernel/syscalls/ptrace/ptrace01.c | 2 +-
> - 1 file changed, 1 insertion(+), 1 deletion(-)
> -
> -diff --git a/testcases/kernel/syscalls/ptrace/ptrace01.c
> b/testcases/kernel/syscalls/ptrace/ptrace01.c
> -index 87a99e4150..9071bbabaf 100644
> ---- a/testcases/kernel/syscalls/ptrace/ptrace01.c
> -+++ b/testcases/kernel/syscalls/ptrace/ptrace01.c
> -@@ -86,7 +86,7 @@ static void run(unsigned int i)
> -
> -       got_signal = 0;
> -
> --      tst_res(TINFO, tc->message);
> -+      tst_res(TINFO, "%s", tc->message);
> -
> -       if (tc->handler == 1) {
> -               parent_act.sa_handler = parent_handler;
> ---
> -2.26.2
> -
> diff --git
> a/meta/recipes-extended/ltp/ltp/0001-sigwaitinfo-Do-not-run-invalid-undefined-test-cases.patch
> b/meta/recipes-extended/ltp/ltp/0001-sigwaitinfo-Do-not-run-invalid-undefined-test-cases.patch
> deleted file mode 100644
> index 17d5af89e2..0000000000
> ---
> a/meta/recipes-extended/ltp/ltp/0001-sigwaitinfo-Do-not-run-invalid-undefined-test-cases.patch
> +++ /dev/null
> @@ -1,69 +0,0 @@
> -From e0a63deb1857eb90288e90d6368df70cdd0c0ec9 Mon Sep 17 00:00:00 2001
> -From: Khem Raj <raj.khem@gmail.com>
> -Date: Thu, 28 May 2020 13:04:33 -0700
> -Subject: [PATCH] sigwaitinfo: Do not run invalid/undefined test cases
> -
> -These testcases run for eternity on musl
> -
> -test_bad_address* cases are passing invalid pointers to a function;
> that's always UB
> -empty_set and timeout rely on the implementation-defined "may fail" for
> EINTR in sigtimedwait [1]
> -
> -normally "may fail" is an "unspecified" but here the impl
> -is supposed to document it so it's "impl-defined"
> -
> -[1]
> https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigtimedwait.html
> -
> -Upstream-Status: Submitted [
> https://patchwork.ozlabs.org/project/ltp/patch/20200528204556.2444156-1-raj.khem@gmail.com/
> ]
> -Signed-off-by: Khem Raj <raj.khem@gmail.com>
> -Cc: Rich Felker <dalias@aerifal.cx>
> ----
> - .../kernel/syscalls/sigwaitinfo/sigwaitinfo01.c      | 12 ++----------
> - 1 file changed, 2 insertions(+), 10 deletions(-)
> -
> ---- a/testcases/kernel/syscalls/sigwaitinfo/sigwaitinfo01.c
> -+++ b/testcases/kernel/syscalls/sigwaitinfo/sigwaitinfo01.c
> -@@ -422,15 +422,10 @@ struct test_desc {
> - } tests[] = {
> - #ifdef TEST_RT_SIGTIMEDWAIT
> -       {
> --      test_empty_set, my_rt_sigtimedwait, SIGUSR1}, {
> -       test_unmasked_matching, my_rt_sigtimedwait, SIGUSR1}, {
> -       test_masked_matching, my_rt_sigtimedwait, SIGUSR1}, {
> -       test_unmasked_matching_noinfo, my_rt_sigtimedwait, SIGUSR1}, {
> --      test_masked_matching_noinfo, my_rt_sigtimedwait, SIGUSR1}, {
> --      test_bad_address, my_rt_sigtimedwait, SIGUSR1}, {
> --      test_bad_address2, my_rt_sigtimedwait, SIGUSR1}, {
> --      test_bad_address3, my_rt_sigtimedwait, SIGUSR1}, {
> --      test_timeout, my_rt_sigtimedwait, 0},
> -+      test_masked_matching_noinfo, my_rt_sigtimedwait, SIGUSR1},
> -           /* Special cases */
> -           /* 1: sigwaitinfo does respond to ignored signal */
> -       {
> -@@ -452,25 +447,17 @@ struct test_desc {
> - #endif
> - #if defined TEST_SIGWAITINFO
> -       {
> --      test_empty_set, my_sigwaitinfo, SIGUSR1}, {
> -       test_unmasked_matching, my_sigwaitinfo, SIGUSR1}, {
> -       test_masked_matching, my_sigwaitinfo, SIGUSR1}, {
> -       test_unmasked_matching_noinfo, my_sigwaitinfo, SIGUSR1}, {
> --      test_masked_matching_noinfo, my_sigwaitinfo, SIGUSR1}, {
> --      test_bad_address, my_sigwaitinfo, SIGUSR1}, {
> --      test_bad_address2, my_sigwaitinfo, SIGUSR1},
> -+      test_masked_matching_noinfo, my_sigwaitinfo, SIGUSR1},
> - #endif
> - #if defined TEST_SIGTIMEDWAIT
> -       {
> --      test_empty_set, my_sigtimedwait, SIGUSR1}, {
> -       test_unmasked_matching, my_sigtimedwait, SIGUSR1}, {
> -       test_masked_matching, my_sigtimedwait, SIGUSR1}, {
> -       test_unmasked_matching_noinfo, my_sigtimedwait, SIGUSR1}, {
> --      test_masked_matching_noinfo, my_sigtimedwait, SIGUSR1}, {
> --      test_bad_address, my_sigtimedwait, SIGUSR1}, {
> --      test_bad_address2, my_sigtimedwait, SIGUSR1}, {
> --      test_bad_address3, my_sigtimedwait, SIGUSR1}, {
> --      test_timeout, my_sigtimedwait, 0},
> -+      test_masked_matching_noinfo, my_sigtimedwait, SIGUSR1},
> - #endif
> - };
> -
> diff --git
> a/meta/recipes-extended/ltp/ltp/0001-syscalls-copy_file_range02-Expect-EFBIG-in-subcase-m.patch
> b/meta/recipes-extended/ltp/ltp/0001-syscalls-copy_file_range02-Expect-EFBIG-in-subcase-m.patch
> deleted file mode 100644
> index 09b6f54874..0000000000
> ---
> a/meta/recipes-extended/ltp/ltp/0001-syscalls-copy_file_range02-Expect-EFBIG-in-subcase-m.patch
> +++ /dev/null
> @@ -1,57 +0,0 @@
> -From 99687ab002f9f750f6f18fa1d70a91f0aa4f8ba2 Mon Sep 17 00:00:00 2001
> -From: He Zhe <zhe.he@windriver.com>
> -Date: Thu, 18 Jun 2020 17:18:27 +0800
> -Subject: [PATCH] syscalls/copy_file_range02: Expect EFBIG in subcase max
> - length on 32-bit architectures
> -
> -For syscall
> -ssize_t copy_file_range(int fd_in, loff_t *off_in,
> -                               int fd_out, loff_t *off_out,
> -                               size_t len, unsigned int flags);
> -off_out is loff_t* that is long long, 64 bits on 32-bit architectures,
> -while len is size_t that unsigned int, 32 bits on 32-bit architectures.
> -
> -In subcase "max length", simplified as below,
> -
> -dst = tst_max_lfs_filesize();
> -TEST(sys_copy_file_range(fd_src, 0, *tc->copy_to_fd, &dst, tc->len,
> tc->flags));
> -
> -where dst is 4K*4G and len is 4G, so (4K+1)*4G is always smaller than
> 4G*4G,
> -it can never match the following kernel condition on 32-bit architectures.
> -
> -if (pos_in + count < pos_in || pos_out + count < pos_out)
> -       return -EOVERFLOW;
> -
> -And thus we would get error like
> -copy_file_range02.c:139: FAIL: copy_file_range failed unexpectedly;
> expected EOVERFLOW, but got: EFBIG (27)
> -
> -Also correct a typo.
> -
> -Upstream-Status: Backport [
> http://lists.linux.it/pipermail/ltp/2020-June/017716.html]
> -
> -Signed-off-by: He Zhe <zhe.he@windriver.com>
> -Acked-by: Li Wang <liwang@redhat.com>
> ----
> - .../kernel/syscalls/copy_file_range/copy_file_range02.c     | 6 +++++-
> - 1 file changed, 5 insertions(+), 1 deletion(-)
> -
> -diff --git
> a/testcases/kernel/syscalls/copy_file_range/copy_file_range02.c
> b/testcases/kernel/syscalls/copy_file_range/copy_file_range02.c
> -index fa679c4d3..bc27fbe57 100644
> ---- a/testcases/kernel/syscalls/copy_file_range/copy_file_range02.c
> -+++ b/testcases/kernel/syscalls/copy_file_range/copy_file_range02.c
> -@@ -78,7 +78,11 @@ static struct tcase {
> -       {&fd_chrdev,    0,      EINVAL,         CONTSIZE,       "char
> device",  0},
> -       {&fd_fifo,      0,      EINVAL,         CONTSIZE,       "fifo",
>      0},
> -       {&fd_pipe[0],   0,      EINVAL,         CONTSIZE,       "pipe",
>      0},
> --      {&fd_copy,      0,      EOVERFLOW,      ULLONG_MAX,     "max
> length lenght",    1},
> -+#ifdef TST_ABI64
> -+      {&fd_copy,      0,      EOVERFLOW,      ULLONG_MAX,     "max
> length",   1},
> -+#else
> -+      {&fd_copy,      0,      EFBIG,          ULLONG_MAX,     "max
> length",   1},
> -+#endif
> -       {&fd_copy,      0,      EFBIG,          MIN_OFF,        "max file
> size",        1},
> - };
> -
> ---
> -2.17.1
> -
> diff --git
> a/meta/recipes-extended/ltp/ltp/0004-guard-mallocopt-with-__GLIBC__.patch
> b/meta/recipes-extended/ltp/ltp/0004-guard-mallocopt-with-__GLIBC__.patch
> deleted file mode 100644
> index a187f61f08..0000000000
> ---
> a/meta/recipes-extended/ltp/ltp/0004-guard-mallocopt-with-__GLIBC__.patch
> +++ /dev/null
> @@ -1,34 +0,0 @@
> -From d0fc9ca5d3366f9b8907e463222403cd2327be10 Mon Sep 17 00:00:00 2001
> -From: Khem Raj <raj.khem@gmail.com>
> -Date: Fri, 8 Jan 2016 06:51:20 +0000
> -Subject: [PATCH] guard mallocopt() with __GLIBC__
> -
> -mallocopt is not available on non glibc implementations
> -
> -Signed-off-by: Khem Raj <raj.khem@gmail.com>
> -Reviewed-by: Petr Vorel <petr.vorel@gmail.com>
> -Upstream-Status: Accepted [967612c454aea66770b64f69287671037fe895b3]
> ----
> - utils/benchmark/ebizzy-0.3/ebizzy.c | 4 ++--
> - 1 file changed, 2 insertions(+), 2 deletions(-)
> -
> -diff --git a/utils/benchmark/ebizzy-0.3/ebizzy.c
> b/utils/benchmark/ebizzy-0.3/ebizzy.c
> -index 5bb8eff..934d951 100644
> ---- a/utils/benchmark/ebizzy-0.3/ebizzy.c
> -+++ b/utils/benchmark/ebizzy-0.3/ebizzy.c
> -@@ -215,10 +215,10 @@ static void read_options(int argc, char *argv[])
> -                       "\"never mmap\" option specified\n");
> -               usage();
> -       }
> --
> -+#ifdef __GLIBC__
> -       if (never_mmap)
> -               mallopt(M_MMAP_MAX, 0);
> --
> -+#endif
> -       if (chunk_size < record_size) {
> -               fprintf(stderr, "Chunk size %u smaller than record size
> %u\n",
> -                       chunk_size, record_size);
> ---
> -2.7.4
> -
> diff --git
> a/meta/recipes-extended/ltp/ltp/cacheflush01-Rewrite-into-new-API.patch
> b/meta/recipes-extended/ltp/ltp/cacheflush01-Rewrite-into-new-API.patch
> new file mode 100644
> index 0000000000..f9815624b9
> --- /dev/null
> +++ b/meta/recipes-extended/ltp/ltp/cacheflush01-Rewrite-into-new-API.patch
> @@ -0,0 +1,225 @@
> +From 48edd768850825a4d01e5e5e737122333fc55cdf Mon Sep 17 00:00:00 2001
> +From: Petr Vorel <petr.vorel@gmail.com>
> +Date: Fri, 2 Oct 2020 21:29:58 +0200
> +Subject: [PATCH] cacheflush01: Rewrite into new API
> +
> +This syscall is currently (v5.9) supported on these architectures:
> +arc, csky, mips, m68k, nds32, sh
> +
> +constants are missing for m68k, not sure if the testcase is valid for it.
> +Untested.
> +
> +Test for __LTP__NR_INVALID_SYSCALL saves adding autotools check for
> +<asm/cachectl.h>.
> +
> +Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
> +---
> +[ upstream status:
> https://patchwork.ozlabs.org/project/ltp/patch/20201002202416.28972-1-petr.vorel@gmail.com/
> ]
> + .../kernel/syscalls/cacheflush/cacheflush01.c | 173 ++++--------------
> + 1 file changed, 40 insertions(+), 133 deletions(-)
> +
> +diff --git a/testcases/kernel/syscalls/cacheflush/cacheflush01.c
> b/testcases/kernel/syscalls/cacheflush/cacheflush01.c
> +index 29cf2014a..6ad8b953a 100644
> +--- a/testcases/kernel/syscalls/cacheflush/cacheflush01.c
> ++++ b/testcases/kernel/syscalls/cacheflush/cacheflush01.c
> +@@ -1,157 +1,64 @@
>
> +-/******************************************************************************/
> +-/* Copyright (c) Maxin John <maxin.john@gmail.com>, 2009
>       */
> +-/* LKML Reference: http://lkml.org/lkml/2009/4/9/203
>       */
> +-/* This program is free software;  you can redistribute it and/or
> modify      */
> +-/* it under the terms of the GNU General Public License as published by
>      */
> +-/* the Free Software Foundation; either version 2 of the License, or
>       */
> +-/* (at your option) any later version.
>       */
> +-/*
>       */
> +-/* This program is distributed in the hope that it will be useful,
>       */
> +-/* but WITHOUT ANY WARRANTY;  without even the implied warranty of
>       */
> +-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
>       */
> +-/* the GNU General Public License for more details.
>      */
> +-/*
>       */
> +-/* You should have received a copy of the GNU General Public License
>       */
> +-/* along with this program;  if not, write to the Free Software
>      */
> +-/* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> 02110-1301 USA    */
> +-/*
>       */
>
> +-/******************************************************************************/
>
> +-/******************************************************************************/
> +-/*
>       */
> +-/* File:        cacheflush01.c
>       */
> +-/*
>       */
> +-/* Description: The cacheflush_check() syscall
>     */
> +-/*            Tests EINVAL error of cacheflush system call.
>    */
> +-/*            Its expected behaviour is cacheflush() should return
> -EINVAL  */
> +-/*            when cache parameter is not one of ICACHE, DCACHE, or
> BCACHE. */
> +-/*
>       */
> +-/* Usage:  <for command-line>
>      */
> +-/* cacheflush01 [-c n] [-e][-i n] [-I x] [-p x] [-t]
>       */
> +-/*      where,  -c n : Run n copies concurrently.
>      */
> +-/*              -e   : Turn on errno logging.
>      */
> +-/*              -i n : Execute test n times.
>       */
> +-/*              -I x : Execute test for x seconds.
>       */
> +-/*              -P x : Pause for x seconds between iterations.
>       */
> +-/*              -t   : Turn on syscall timing.
>       */
> +-/*
>       */
> +-/* Total Tests: 1
>      */
> +-/*
>       */
> +-/* Test Name:   cacheflush01
>       */
>
> +-/******************************************************************************/
> ++// SPDX-License-Identifier: GPL-2.0-or-later
> +
> +-#include <unistd.h>
> +-#include <stdio.h>
> +-#include <stdlib.h>
> +-#include <errno.h>
> +-
> +-#include "test.h"
> ++#include "tst_test.h"
> + #include "lapi/syscalls.h"
> +
> + #if __NR_cacheflush != __LTP__NR_INVALID_SYSCALL
> ++
> + #include <asm/cachectl.h>
> +-#else
> ++
> ++/*
> ++ * m68k does not have these constants
> ++ */
> ++
> + #ifndef   ICACHE
> +-#define   ICACHE   (1<<0)     /* flush instruction cache        */
> ++# define   ICACHE   (1<<0)
> + #endif
> ++
> + #ifndef   DCACHE
> +-#define   DCACHE   (1<<1)     /* writeback and flush data cache */
> ++# define   DCACHE   (1<<1)
> + #endif
> ++
> + #ifndef   BCACHE
> +-#define   BCACHE   (ICACHE|DCACHE)    /* flush both caches
> */
> +-#endif
> ++# define   BCACHE   (ICACHE|DCACHE)
> + #endif
> +
> +-char *TCID = "cacheflush01";
> +-int TST_TOTAL = 1;
> ++#define CACHE_DESC(x) .cache = x, .desc = #x
> +
> +-/* Extern Global Functions */
>
> +-/******************************************************************************/
> +-/*
>       */
> +-/* Function:    cleanup
>      */
> +-/*
>       */
> +-/* Description: Performs all one time clean up for this test on
> successful    */
> +-/*              completion,  premature exit or  failure. Closes all
> temporary */
> +-/*              files, removes all temporary directories exits the test
> with  */
> +-/*              appropriate return code by calling tst_exit() function.
>      */
> +-/*
>       */
> +-/* Input:       None.
>      */
> +-/*
>       */
> +-/* Output:      None.
>      */
> +-/*
>       */
> +-/* Return:      On failure - Exits calling tst_exit(). Non '0' return
> code.   */
> +-/*              On success - Exits calling tst_exit(). With '0' return
> code.  */
> +-/*
>       */
>
> +-/******************************************************************************/
> +-void cleanup(void)
> +-{
> ++static struct test_case_t {
> ++      int cache;
> ++      const char *desc;
> ++} test_cases[] = {
> ++      { CACHE_DESC(ICACHE) },
> ++      { CACHE_DESC(DCACHE) },
> ++      { CACHE_DESC(BCACHE) },
> ++};
> +
> +-      tst_rmdir();
> +-}
> ++static char *addr;
> +
> +-/* Local  Functions */
>
> +-/******************************************************************************/
> +-/*
>       */
> +-/* Function:    setup
>      */
> +-/*
>       */
> +-/* Description: Performs all one time setup for this test. This function
> is   */
> +-/*              typically used to capture signals, create temporary
> dirs      */
> +-/*              and temporary files that may be used in the course of
> this    */
> +-/*              test.
>      */
> +-/*
>       */
> +-/* Input:       None.
>      */
> +-/*
>       */
> +-/* Output:      None.
>      */
> +-/*
>       */
> +-/* Return:      On failure - Exits by calling cleanup().
>       */
> +-/*              On success - returns 0.
>      */
> +-/*
>       */
>
> +-/******************************************************************************/
> +-void setup(void)
> ++static void setup(void)
> + {
> +-      /* Capture signals if any */
> +-      /* Create temporary directories */
> +-      TEST_PAUSE;
> +-      tst_tmpdir();
> ++      addr = SAFE_MALLOC(getpagesize());
> + }
> +
> +-int main(int ac, char **av)
> ++static void test_cacheflush(unsigned int i)
> + {
> ++      struct test_case_t *tc = &test_cases[i];
> +
> +-      char *addr = NULL;
> +-
> +-      tst_parse_opts(ac, av, NULL, NULL);
> +-
> +-      setup();
> +-
> +-      tst_count = 0;
> +-      /* Create some user address range */
> +-      addr = malloc(getpagesize());
> +-      if (addr == NULL) {
> +-              tst_brkm(TFAIL | TTERRNO, cleanup, "malloc failed");
> +-      }
> +-
> +-      /* Invokes cacheflush() with proper parameters */
> +-      TEST(ltp_syscall(__NR_cacheflush, addr, getpagesize(), ICACHE));
> +-      if (TEST_RETURN == 0) {
> +-              tst_resm(TPASS, "passed with no errno");
> +-      } else {
> +-              tst_resm(TFAIL, "failed with unexpected errno");
> +-      }
> +-
> +-      TEST(ltp_syscall(__NR_cacheflush, addr, getpagesize(), DCACHE));
> +-      if (TEST_RETURN == 0) {
> +-              tst_resm(TPASS, "passed with no errno");
> ++      TEST(tst_syscall(__NR_cacheflush, addr, getpagesize(), tc->cache));
> ++      if (TST_RET == 0) {
> ++              tst_res(TPASS, "%s passed", tc->desc);
> +       } else {
> +-              tst_resm(TFAIL, "failed with unexpected errno");
> ++              tst_res(TFAIL | TTERRNO, "%s failed", tc->desc);
> +       }
> ++}
> +
> +-      TEST(ltp_syscall(__NR_cacheflush, addr, getpagesize(), BCACHE));
> +-      if (TEST_RETURN == 0) {
> +-              tst_resm(TPASS, "passed with no errno");
> +-      } else {
> +-              tst_resm(TFAIL, "failed with unexpected errno");
> +-      }
> ++static struct tst_test test = {
> ++      .setup = setup,
> ++      .test = test_cacheflush,
> ++      .tcnt = ARRAY_SIZE(test_cases),
> ++};
> +
> +-      cleanup();
> +-      tst_exit();
> +-}
> ++#else
> ++      TST_TEST_TCONF("system doesn't support cacheflush()");
> ++#endif
> +--
> +2.28.0
> +
> diff --git
> a/meta/recipes-extended/ltp/ltp/lapi-Add-sysinfo.h-to-fix-build-with-MUSL-libc.patch
> b/meta/recipes-extended/ltp/ltp/lapi-Add-sysinfo.h-to-fix-build-with-MUSL-libc.patch
> new file mode 100644
> index 0000000000..f1b6743f21
> --- /dev/null
> +++
> b/meta/recipes-extended/ltp/ltp/lapi-Add-sysinfo.h-to-fix-build-with-MUSL-libc.patch
> @@ -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
> +
> diff --git a/meta/recipes-extended/ltp/ltp_20200515.bb
> b/meta/recipes-extended/ltp/ltp_20200930.bb
> similarity index 93%
> rename from meta/recipes-extended/ltp/ltp_20200515.bb
> rename to meta/recipes-extended/ltp/ltp_20200930.bb
> index 0c7044d044..84fe734bc4 100644
> --- a/meta/recipes-extended/ltp/ltp_20200515.bb
> +++ b/meta/recipes-extended/ltp/ltp_20200930.bb
> @@ -27,17 +27,15 @@ CFLAGS_append_x86-64 = " -fomit-frame-pointer"
>
>  CFLAGS_append_powerpc64 = " -D__SANE_USERSPACE_TYPES__"
>  CFLAGS_append_mipsarchn64 = " -D__SANE_USERSPACE_TYPES__"
> -SRCREV = "0d79a93e6ca44d9bc95973faea6bcd7b0c6d1f43"
> +SRCREV = "da2f34028f046a208aa2fed5e287df2538e69f91"
>
>  SRC_URI = "git://github.com/linux-test-project/ltp.git \
>
> file://0001-build-Add-option-to-select-libc-implementation.patch \
> -           file://0004-guard-mallocopt-with-__GLIBC__.patch \
>             file://0007-Fix-test_proc_kill-hanging.patch \
>             file://0001-Add-more-musl-exclusions.patch \
> -           file://0001-ptrace01-Fix-missing-format-string.patch \
> -
>  file://0001-sigwaitinfo-Do-not-run-invalid-undefined-test-cases.patch \
> -
>  file://0001-syscalls-copy_file_range02-Expect-EFBIG-in-subcase-m.patch \
>             file://0001-Remove-OOM-tests-from-runtest-mm.patch \
> +           file://cacheflush01-Rewrite-into-new-API.patch \
> +           file://lapi-Add-sysinfo.h-to-fix-build-with-MUSL-libc.patch \
>             "
>
>  S = "${WORKDIR}/git"
> --
> 2.28.0
>
>
> 
>
>

[-- Attachment #2: Type: text/html, Size: 42973 bytes --]

  reply	other threads:[~2020-10-19 21:43 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-19 20:13 [PATCH 1/1] ltp: Update to 20200930 Petr Vorel
2020-10-19 21:43 ` Alexander Kanavin [this message]
2020-10-20 18:22   ` [OE-core] " Petr Vorel
2020-10-20 18:44     ` Alexander Kanavin
2020-10-20 18:52       ` Petr Vorel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CANNYZj8k8zbpQMD-Y2EQF_y4AffOReL1v=5Luw2dy2yAxA9r8g@mail.gmail.com' \
    --to=alex.kanavin@gmail.com \
    --cc=anders.roxell@linaro.org \
    --cc=anuj.mittal@intel.com \
    --cc=daniel.diaz@linaro.org \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=petr.vorel@gmail.com \
    --cc=raj.khem@gmail.com \
    --cc=richard.purdie@linuxfoundation.org \
    --cc=yi.zhao@windriver.com \
    --cc=zhe.he@windriver.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.