From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com [209.85.128.67]) by mx.groups.io with SMTP id smtpd.web12.4994.1603138421586453202 for ; Mon, 19 Oct 2020 13:13:42 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20161025 header.b=SPL24eHp; spf=pass (domain: gmail.com, ip: 209.85.128.67, mailfrom: petr.vorel@gmail.com) Received: by mail-wm1-f67.google.com with SMTP id e2so798913wme.1 for ; Mon, 19 Oct 2020 13:13:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=WsPqQMilm8gYQQaWMWtAL76bilGCQK+0QTTy4zglP40=; b=SPL24eHp1lSm07g+G5kClCaUfDOFE0WDIIU1OY+qaRFdGj3e4YzpBqc2c50lzC1kCo YqGtmieFYZB0aVcG0jwbk9do2Flkx/Nta9KLNvjfyMByVGGgkNN+rV6OH/eoPdGKtq8M 2PuQNH/EU1N7RJpn47GILmlL4Qkz3VKBKSNBmBxa5iX0zgta/YcC1UTOtKiTQwnfBplP P+Oki/F0p3ncbI4FGT1lFSmRZtHqItNjs+28fHk+e1eVecRaUdhui13R7GMMhslSiMsJ 7itS49rLwGd0hZL/wFCQOTSWyrNkzjYJVdguAZo886SELHDPRm6gNNUODLTMhnTT8SDq pmbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=WsPqQMilm8gYQQaWMWtAL76bilGCQK+0QTTy4zglP40=; b=bQvEcMr8tROrh3672aQlUTo2C9b1OgRdVOj4aYJdz3/Xc8iA4PVagKZFWtvmGaCumD fUzC8W64QcOcIPZ0UyTnVZmrNosBr9ZhiqQHxbaHR0m0r0N+AyEoC5Zgz61mvqB5y9sO 5+aN6JFxa3IEEsjBKHd+DMx/lsEHZLAVn9zyJOULPaKhMmXduaxyrmzNe2AD9XOX0fxd iljIEs3lf8bUePpthDVw37fEsaNbMBQrC98WE+TA7/Mrq9PoB+iSeUpwirOvNMx63nLF HSrdIhBi5VKR40cnLrsEv3Ppojz0/l4pWM41NiQd2IXHQ33g0XcKsqk3S33EdhMJ9vZJ 6gNg== X-Gm-Message-State: AOAM532O+zEDcajOc+EnWJ/W7LfqGbdDDBYAZUF09PKEDukMK0BJds0W IOF8jBbU0H2Bx03H0LoDpNiKto4Ywl2idQ== X-Google-Smtp-Source: ABdhPJwy/8hBgajdZFU5eXOnZ7nKn9jjMeG13AWXl7KX7oGKtSwEEiX6tov9iIGKdiJIZnMx1cMFSQ== X-Received: by 2002:a05:600c:21c3:: with SMTP id x3mr883115wmj.81.1603138419235; Mon, 19 Oct 2020 13:13:39 -0700 (PDT) Return-Path: Received: from dell5510.suse.de ([62.201.25.198]) by smtp.gmail.com with ESMTPSA id o194sm795476wme.24.2020.10.19.13.13.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Oct 2020 13:13:38 -0700 (PDT) From: "Petr Vorel" To: openembedded-core@lists.openembedded.org Cc: Petr Vorel , Khem Raj , Anuj Mittal , He Zhe , Anders Roxell , Yi Zhao , =?UTF-8?q?Daniel=20D=C3=ADaz?= , Richard Purdie Subject: [PATCH 1/1] ltp: Update to 20200930 Date: Mon, 19 Oct 2020 22:13:32 +0200 Message-Id: <20201019201332.12446-1-petr.vorel@gmail.com> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- 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" -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 - +[ pvorel: rebase for 20200930 ] +Signed-off-by: Petr Vorel --- 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 -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 -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 -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 -Cc: Rich Felker ---- - .../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 -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 -Acked-by: Li Wang ---- - .../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 -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 -Reviewed-by: Petr Vorel -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 +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 +. + +Signed-off-by: Petr Vorel +--- +[ 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 , 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: */ +-/* 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 +-#include +-#include +-#include +- +-#include "test.h" ++#include "tst_test.h" + #include "lapi/syscalls.h" + + #if __NR_cacheflush != __LTP__NR_INVALID_SYSCALL ++ + #include +-#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 +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/ ] +--- + 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 ++ */ ++ ++#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 053c3bcf9..61ea2076d 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 4f48d7529..d8ee03dae 100644 +--- a/lib/safe_macros.c ++++ b/lib/safe_macros.c +@@ -11,7 +11,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -23,6 +22,7 @@ + #include + #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 + #include +-#include + #include + + #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 +-#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 f76f3f6aa..b2613670b 100644 +--- a/testcases/kernel/syscalls/madvise/madvise06.c ++++ b/testcases/kernel/syscalls/madvise/madvise06.c +@@ -24,8 +24,8 @@ + #include + #include + #include +-#include + #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 + #include + #include +-#include + + #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 + #include + #include +-#include + #include + + #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 + #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