diff options
author | Fathi Boudra <fathi.boudra@linaro.org> | 2019-03-16 07:10:57 +0000 |
---|---|---|
committer | Linaro Code Review <review@review.linaro.org> | 2019-03-16 07:10:57 +0000 |
commit | eaab2e337e4dcbad9b4e85ddab04d3d970aee289 (patch) | |
tree | 7d735664e5e4b9494c94341799a5cf53354a632a | |
parent | 983a370fffc04ffa453465e9af7e599383cffb5c (diff) | |
parent | 5a29529a6780fbc9ad0c928eb34cf269c8057c61 (diff) |
Merge "Revert "ltp: Remove backport"" into mortymorty
23 files changed, 1875 insertions, 0 deletions
diff --git a/core/recipes-extended/ltp/ltp/0001-netns_helper.sh-use-ping-6-when-ping6-is-not-avaliab.patch b/core/recipes-extended/ltp/ltp/0001-netns_helper.sh-use-ping-6-when-ping6-is-not-avaliab.patch new file mode 100644 index 0000000..32e7a0e --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0001-netns_helper.sh-use-ping-6-when-ping6-is-not-avaliab.patch @@ -0,0 +1,45 @@ +From 76d8343ad300f6507233abcdf97629290e35848a Mon Sep 17 00:00:00 2001 +From: Lei Yang <Lei.Yang@windriver.com> +Date: Wed, 29 Aug 2018 11:51:24 +0800 +Subject: [PATCH] netns_helper.sh: use 'ping -6' when ping6 is not avaliable + +ping6 has been merged into ping since 2015 by using "ping -6" +in some distributions (e.g. OpenEmbedded) they dropped ping6 completely +this patch will let both "ping -6" and ping6 work. + +[pvorel: change was done in s20150815: +ebad35f ("ping: merge `ping6` command into `ping`"), +before that release switch '-6' didn't exist. +Upstream leaves ping6 symlink to distributions.] + +Upstream-Status: Backport +[https://github.com/linux-test-project/ltp/commit/76d8343ad300f6507233abcdf97629290e35848a] + +Signed-off-by: Lei Yang <Lei.Yang@windriver.com> +Signed-off-by: Petr Vorel <pvorel@suse.cz> +Signed-off-by: Yi Zhao <yi.zhao@windriver.com> +--- + testcases/kernel/containers/netns/netns_helper.sh | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/testcases/kernel/containers/netns/netns_helper.sh b/testcases/kernel/containers/netns/netns_helper.sh +index 6aea10b..a9d0459 100755 +--- a/testcases/kernel/containers/netns/netns_helper.sh ++++ b/testcases/kernel/containers/netns/netns_helper.sh +@@ -168,7 +168,12 @@ netns_setup() + ipv6) + IFCONF_IN6_ARG="inet6 add" + IP0=$6; IP1=$7; +- tping="ping6"; NETMASK=64 ++ if which ping6 >/dev/null 2>&1; then ++ tping="ping6" ++ else ++ tping="ping -6" ++ fi ++ NETMASK=64 + ;; + *) + tst_brkm TBROK "second argument must be an ip version (ipv4|ipv6)" +-- +2.7.4 + diff --git a/core/recipes-extended/ltp/ltp/0001-open_posix_testsuite-mmap24-2-Relax-condition-a-bit.patch b/core/recipes-extended/ltp/ltp/0001-open_posix_testsuite-mmap24-2-Relax-condition-a-bit.patch new file mode 100644 index 0000000..4d771c0 --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0001-open_posix_testsuite-mmap24-2-Relax-condition-a-bit.patch @@ -0,0 +1,68 @@ +From 85c972f730e8efe891a06ea3a2dfb5cbbdfbfbf4 Mon Sep 17 00:00:00 2001 +From: "Hongzhi.Song" <hongzhi.song@windriver.com> +Date: Wed, 10 Oct 2018 22:07:05 -0400 +Subject: [PATCH] open_posix_testsuite/mmap24-2: Relax condition a bit + +Mips will return EINVAL instead of ENOMEM as expected +if the range [addr + len) exceeds TASK_SIZE. + +Linux kernel code: arch/mips/mm/mmap.c +if (flags & MAP_FIXED) { + /* Even MAP_FIXED mappings must reside within TASK_SIZE */ + if (TASK_SIZE - len < addr) + return -EINVAL; + +Relax the condition and accept both ENOMEM and EINVAL +as expected outcome. + +Upstream-Status: Submitted [https://lists.linux.it/pipermail/ltp/2018-October/009624.html] + +Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com> +--- + .../open_posix_testsuite/conformance/interfaces/mmap/24-2.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/testcases/open_posix_testsuite/conformance/interfaces/mmap/24-2.c b/testcases/open_posix_testsuite/conformance/interfaces/mmap/24-2.c +index de51d43..810e5c8 100644 +--- a/testcases/open_posix_testsuite/conformance/interfaces/mmap/24-2.c ++++ b/testcases/open_posix_testsuite/conformance/interfaces/mmap/24-2.c +@@ -7,7 +7,7 @@ + * source tree. + * + * The mmap() function shall fail if: +- * [ENOMEM] MAP_FIXED was specified, ++ * [ENOMEM or EINVAL] MAP_FIXED was specified, + * and the range [addr,addr+len) exceeds that allowed + * for the address space of a process; or, if MAP_FIXED was not specified and + * there is insufficient room in the address space to effect the mapping. +@@ -15,7 +15,7 @@ + * Test Step: + * 1. Map a shared memory object, with size exceeding the value get from + * rlim_cur of resource RLIMIT_AS, setting MAP_FIXED; +- * 3. Should get ENOMEM. ++ * 3. Should get ENOMEM or EINVAL. + */ + + #define _XOPEN_SOURCE 600 +@@ -93,8 +93,8 @@ int main(void) + (unsigned long)len); + pa = mmap(addr, len, PROT_READ | PROT_WRITE, MAP_FIXED | MAP_SHARED, fd, + 0); +- if (pa == MAP_FAILED && errno == ENOMEM) { +- printf("Got ENOMEM: %s\nTest PASSED\n", strerror(errno)); ++ if (pa == MAP_FAILED && (errno == ENOMEM || errno == EINVAL)) { ++ printf("Got ENOMEM or EINVAL: %s\nTest PASSED\n", strerror(errno)); + exit(PTS_PASS); + } + +@@ -103,6 +103,6 @@ int main(void) + else + munmap(pa, len); + close(fd); +- printf("Test Fail: Did not get ENOMEM as expected\n"); ++ printf("Test Failed: Did not get ENOMEM or EINVAL as expected\n"); + return PTS_FAIL; + } +-- +2.8.1 + diff --git a/core/recipes-extended/ltp/ltp/0001-setrlimit05-Use-another-method-to-get-bad-address.patch b/core/recipes-extended/ltp/ltp/0001-setrlimit05-Use-another-method-to-get-bad-address.patch new file mode 100644 index 0000000..4bfe276 --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0001-setrlimit05-Use-another-method-to-get-bad-address.patch @@ -0,0 +1,61 @@ +From c4d02b23d12b7136b5739b3075e817fc037e41d4 Mon Sep 17 00:00:00 2001 +From: "Hongzhi.Song" <hongzhi.song@windriver.com> +Date: Mon, 19 Nov 2018 23:07:01 -0800 +Subject: [PATCH] setrlimit05: Use another method to get bad address + +This testcase fails on mips32. The process is killed by SIGBUS which +is not as expect. + +This is because: +((void *)-1) is not a legal bad address which causes the process +killed by SIGBUG on mips. + +'tst_get_bad_addr()' returns an address that should works on mips +and other arches. + +Upstream-Status: Accepted [80bed467bc6ab48a6cd88a8ab74ca15d08830cb0] + +Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com> +--- + testcases/kernel/syscalls/setrlimit/setrlimit05.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/testcases/kernel/syscalls/setrlimit/setrlimit05.c b/testcases/kernel/syscalls/setrlimit/setrlimit05.c +index e7167229b4..004a149a65 100644 +--- a/testcases/kernel/syscalls/setrlimit/setrlimit05.c ++++ b/testcases/kernel/syscalls/setrlimit/setrlimit05.c +@@ -26,6 +26,8 @@ + + #include "tst_test.h" + ++static void *bad_addr; ++ + static void verify_setrlimit(void) + { + int status; +@@ -33,7 +35,7 @@ static void verify_setrlimit(void) + + pid = SAFE_FORK(); + if (!pid) { +- TEST(setrlimit(RLIMIT_NOFILE, (void *) -1)); ++ TEST(setrlimit(RLIMIT_NOFILE, bad_addr)); + if (TST_RET != -1) { + tst_res(TFAIL, "setrlimit() succeeded unexpectedly"); + exit(0); +@@ -67,7 +69,13 @@ static void verify_setrlimit(void) + tst_res(TBROK, "child %s", tst_strstatus(status)); + } + ++static void setup(void) ++{ ++ bad_addr = tst_get_bad_addr(NULL); ++} ++ + static struct tst_test test = { + .test_all = verify_setrlimit, + .forks_child = 1, ++ .setup = setup, + }; +-- +2.11.0 + diff --git a/core/recipes-extended/ltp/ltp/0001-sigwaitinfo01-recent-glibc-calls-syscall-directly.patch b/core/recipes-extended/ltp/ltp/0001-sigwaitinfo01-recent-glibc-calls-syscall-directly.patch new file mode 100644 index 0000000..c412c89 --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0001-sigwaitinfo01-recent-glibc-calls-syscall-directly.patch @@ -0,0 +1,75 @@ +From bb977ca0716ae98f10102c7122fe15bc0ddb5356 Mon Sep 17 00:00:00 2001 +From: "Hongzhi.Song" <hongzhi.song@windriver.com> +Date: Thu, 20 Sep 2018 21:49:02 -0400 +Subject: [PATCH] sigwaitinfo01: recent glibc calls syscall directly + +glibc commit + 8b0e795aaa44 ("Simplify Linux sig{timed}wait{info} implementations") +changed sigwaitinfo to call sigtimedwait, which calls rt_sigtimedwait +syscall directly. + +So, an invalid pointer no longer crashes child process and test +reports failure. Fix it by accepting either crash or EFAULT. + +Signed-off-by: Jan Stancek <jstancek@redhat.com> + +Upstream-Status: Submitted [https://lists.linux.it/pipermail/ltp/2018-September/009338.html] + +Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com> +--- + .../kernel/syscalls/sigwaitinfo/sigwaitinfo01.c | 30 +++++++++++++++++++--- + 1 file changed, 26 insertions(+), 4 deletions(-) + +diff --git a/testcases/kernel/syscalls/sigwaitinfo/sigwaitinfo01.c b/testcases/kernel/syscalls/sigwaitinfo/sigwaitinfo01.c +index 95a9436a4..8fa8ac34b 100644 +--- a/testcases/kernel/syscalls/sigwaitinfo/sigwaitinfo01.c ++++ b/testcases/kernel/syscalls/sigwaitinfo/sigwaitinfo01.c +@@ -371,19 +371,41 @@ void test_bad_address2(swi_func sigwaitinfo, int signo) + tst_brkm(TBROK | TERRNO, NULL, "fork() failed"); + case 0: + signal(SIGSEGV, SIG_DFL); ++ ++ /* ++ * depending on glibc implementation we should ++ * either crash or get EFAULT ++ */ + TEST(sigwaitinfo((void *)1, NULL, NULL)); + +- _exit(0); ++ if (TEST_RETURN == -1 && TEST_ERRNO == EFAULT) ++ _exit(0); ++ ++ tst_resm(TINFO, "swi_func returned: %ld, errno: %d", ++ TEST_RETURN, TEST_ERRNO); ++ _exit(1); ++ + break; + default: + break; + } + + SUCCEED_OR_DIE(waitpid, "waitpid failed", pid, &status, 0); +- if (WIFSIGNALED(status) && WTERMSIG(status) == SIGSEGV) ++ ++ if ((WIFSIGNALED(status) && WTERMSIG(status) == SIGSEGV) ++ || (WIFEXITED(status) && WEXITSTATUS(status) == 0)) { + tst_resm(TPASS, "Test passed"); +- else +- tst_resm(TFAIL, "Unrecognised child exit code"); ++ return; ++ } ++ ++ if (WIFEXITED(status)) { ++ tst_resm(TFAIL, "Unrecognised child exit code: %d", ++ WEXITSTATUS(status)); ++ } ++ if (WIFSIGNALED(status)) { ++ tst_resm(TFAIL, "Unrecognised child termsig: %d", ++ WTERMSIG(status)); ++ } + } + + void test_bad_address3(swi_func sigwaitinfo, int signo) +-- +2.11.0 + diff --git a/core/recipes-extended/ltp/ltp/0001-statx-fix-compile-errors.patch b/core/recipes-extended/ltp/ltp/0001-statx-fix-compile-errors.patch new file mode 100644 index 0000000..c4fd8d0 --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0001-statx-fix-compile-errors.patch @@ -0,0 +1,34 @@ +From a945304b6a2286d0665c70250cc5475eb07fd21e Mon Sep 17 00:00:00 2001 +From: Thadeu Lima de Souza Cascardo <cascardo@canonical.com> +Date: Wed, 26 Sep 2018 11:15:45 -0300 +Subject: [PATCH] statx: fix compile errors + +struct statx is only defined in sys/stat.h when _GNU_SOURCE is defined. +The testcases do define _GNU_SOURCE, but not the m4 struct check. + +Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com> +Acked-by: Cyril Hrubis <chrubis@suse.cz> +--- + m4/ltp-statx.m4 | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/m4/ltp-statx.m4 b/m4/ltp-statx.m4 +index 44303d30c..5f79a94cd 100644 +--- a/m4/ltp-statx.m4 ++++ b/m4/ltp-statx.m4 +@@ -23,6 +23,11 @@ dnl + AC_DEFUN([LTP_CHECK_STATX],[ + AC_CHECK_FUNCS(statx,,,[[#include <sys/stat.h>]]) + AC_CHECK_HEADER(linux/fs.h,,,) +-AC_CHECK_TYPES([struct statx],,,[[#include <sys/stat.h>]]) +-AC_CHECK_TYPES([struct statx_timestamp],,,[[#include <sys/stat.h>]]) ++AC_CHECK_TYPES([struct statx],,,[[ ++ #define _GNU_SOURCE ++ #include <sys/stat.h> ++]]) ++AC_CHECK_TYPES([struct statx_timestamp],,,[[ ++ #define _GNU_SOURCE ++ #include <sys/stat.h>]]) + ]) +-- +2.19.1 diff --git a/core/recipes-extended/ltp/ltp/0001-syscalls-fcntl-make-OFD-command-use-fcntl64-syscall-.patch b/core/recipes-extended/ltp/ltp/0001-syscalls-fcntl-make-OFD-command-use-fcntl64-syscall-.patch new file mode 100644 index 0000000..2755596 --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0001-syscalls-fcntl-make-OFD-command-use-fcntl64-syscall-.patch @@ -0,0 +1,184 @@ +From 8de03ea1200480b922d5ba05b69dc94db60496f5 Mon Sep 17 00:00:00 2001 +From: "Hongzhi.Song" <hongzhi.song@windriver.com> +Date: Sat, 15 Sep 2018 22:39:32 -0400 +Subject: [PATCH] syscalls/fcntl: make OFD command use fcntl64() syscall on + 32-bit + +To cope with glibc commit: + 06ab719d30b0 ("Fix Linux fcntl OFD locks for non-LFS architectures +(BZ#20251)") + +WIP: Still need to test this with new glibc. + Test with old glibc look OK so far. + +Signed-off-by: Jan Stancek <jstancek@redhat.com> + +Upstream-Status: Backport + Backported from upstream maillist + https://lists.linux.it/pipermail/ltp/2018-September/009370.html + +Signed-off-by: Hongzhi Song <hongzhi.song@windriver.com> +--- + testcases/kernel/syscalls/fcntl/fcntl34.c | 12 +++++++--- + testcases/kernel/syscalls/fcntl/fcntl36.c | 23 +++++++++++++----- + testcases/kernel/syscalls/fcntl/fcntl_common.h | 32 ++++++++++++++++++++++++++ + 3 files changed, 58 insertions(+), 9 deletions(-) + create mode 100644 testcases/kernel/syscalls/fcntl/fcntl_common.h + +diff --git a/testcases/kernel/syscalls/fcntl/fcntl34.c b/testcases/kernel/syscalls/fcntl/fcntl34.c +index aa29cf9..109f834 100644 +--- a/testcases/kernel/syscalls/fcntl/fcntl34.c ++++ b/testcases/kernel/syscalls/fcntl/fcntl34.c +@@ -28,6 +28,7 @@ + #include "lapi/fcntl.h" + #include "tst_safe_pthread.h" + #include "tst_test.h" ++#include "fcntl_common.h" + + static int thread_cnt; + static const int max_thread_cnt = 32; +@@ -68,7 +69,12 @@ void *thread_fn_01(void *arg) + + memset(buf, (intptr_t)arg, write_size); + +- struct flock64 lck = { ++ /* see explanation in fcntl_common.h */ ++ #ifdef USE_STRUCT_FLOCK ++ struct flock lck = { ++ #else ++ struct flock64 lck = { ++ #endif + .l_whence = SEEK_SET, + .l_start = 0, + .l_len = 1, +@@ -76,13 +82,13 @@ void *thread_fn_01(void *arg) + + for (i = 0; i < writes_num; ++i) { + lck.l_type = F_WRLCK; +- SAFE_FCNTL(fd, F_OFD_SETLKW, &lck); ++ my_fcntl(fd, F_OFD_SETLKW, &lck); + + SAFE_LSEEK(fd, 0, SEEK_END); + SAFE_WRITE(1, fd, buf, write_size); + + lck.l_type = F_UNLCK; +- SAFE_FCNTL(fd, F_OFD_SETLKW, &lck); ++ my_fcntl(fd, F_OFD_SETLKW, &lck); + + sched_yield(); + } +diff --git a/testcases/kernel/syscalls/fcntl/fcntl36.c b/testcases/kernel/syscalls/fcntl/fcntl36.c +index 3246d13..f263b6b 100644 +--- a/testcases/kernel/syscalls/fcntl/fcntl36.c ++++ b/testcases/kernel/syscalls/fcntl/fcntl36.c +@@ -57,6 +57,7 @@ + #include "lapi/fcntl.h" + #include "tst_safe_pthread.h" + #include "tst_test.h" ++#include "fcntl_common.h" + + static int thread_cnt; + static int fail_flag = 0; +@@ -87,7 +88,12 @@ static void *fn_ofd_w(void *arg) + int fd = SAFE_OPEN(fname, O_RDWR); + long wt = pa->cnt; + +- struct flock64 lck = { ++ /* see explanation in fcntl_common.h */ ++ #ifdef USE_STRUCT_FLOCK ++ struct flock lck = { ++ #else ++ struct flock64 lck = { ++ #endif + .l_whence = SEEK_SET, + .l_start = pa->offset, + .l_len = pa->length, +@@ -99,13 +105,13 @@ static void *fn_ofd_w(void *arg) + memset(buf, wt, pa->length); + + lck.l_type = F_WRLCK; +- SAFE_FCNTL(fd, F_OFD_SETLKW, &lck); ++ my_fcntl(fd, F_OFD_SETLKW, &lck); + + SAFE_LSEEK(fd, pa->offset, SEEK_SET); + SAFE_WRITE(1, fd, buf, pa->length); + + lck.l_type = F_UNLCK; +- SAFE_FCNTL(fd, F_OFD_SETLKW, &lck); ++ my_fcntl(fd, F_OFD_SETLKW, &lck); + + wt++; + if (wt >= 255) +@@ -166,7 +172,12 @@ static void *fn_ofd_r(void *arg) + int i; + int fd = SAFE_OPEN(fname, O_RDWR); + +- struct flock64 lck = { ++ /* see explanation in fcntl_common.h */ ++ #ifdef USE_STRUCT_FLOCK ++ struct flock lck = { ++ #else ++ struct flock64 lck = { ++ #endif + .l_whence = SEEK_SET, + .l_start = pa->offset, + .l_len = pa->length, +@@ -178,7 +189,7 @@ static void *fn_ofd_r(void *arg) + memset(buf, 0, pa->length); + + lck.l_type = F_RDLCK; +- SAFE_FCNTL(fd, F_OFD_SETLKW, &lck); ++ my_fcntl(fd, F_OFD_SETLKW, &lck); + + /* rlock acquired */ + SAFE_LSEEK(fd, pa->offset, SEEK_SET); +@@ -209,7 +220,7 @@ static void *fn_ofd_r(void *arg) + } + + lck.l_type = F_UNLCK; +- SAFE_FCNTL(fd, F_OFD_SETLK, &lck); ++ my_fcntl(fd, F_OFD_SETLK, &lck); + + sched_yield(); + } +diff --git a/testcases/kernel/syscalls/fcntl/fcntl_common.h b/testcases/kernel/syscalls/fcntl/fcntl_common.h +new file mode 100644 +index 0000000..3fe399b +--- /dev/null ++++ b/testcases/kernel/syscalls/fcntl/fcntl_common.h +@@ -0,0 +1,32 @@ ++#include "lapi/syscalls.h" ++ ++/* ++ * glibc commit: ++ * 06ab719d30b0 ("Fix Linux fcntl OFD locks for non-LFS architectures (BZ#20251)") ++ * changed behavior of arg parameter for OFD commands. It is no ++ * longer passing arg directly to syscall, but expects it to be ++ * 'struct flock'. ++ * ++ * On 64-bit or _FILE_OFFSET_BITS == 64 we can use fcntl() and ++ * struct flock with any glibc version. struct flock and flock64 ++ * should be identical. ++ * ++ * On 32-bit, older glibc would pass arg directly, recent one treats ++ * it as 'struct flock' and converts it to 'struct flock64'. ++ * So, for 32-bit we use fcntl64 syscall directly with struct flock64. ++ */ ++#if __WORDSIZE == 64 || _FILE_OFFSET_BITS == 64 ++#define USE_STRUCT_FLOCK ++static int my_fcntl(int fd, int cmd, void *lck) ++{ ++ return SAFE_FCNTL(fd, cmd, lck); ++} ++#else ++static int my_fcntl(int fd, int cmd, void *lck) ++{ ++ int ret = tst_syscall(__NR_fcntl64, fd, cmd, lck); ++ if (ret == -1) ++ tst_brk(TBROK|TERRNO, "fcntl64"); ++ return ret; ++} ++#endif +-- +2.8.1 + diff --git a/core/recipes-extended/ltp/ltp/0004-build-Add-option-to-select-libc-implementation.patch b/core/recipes-extended/ltp/ltp/0004-build-Add-option-to-select-libc-implementation.patch new file mode 100644 index 0000000..2df3855 --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0004-build-Add-option-to-select-libc-implementation.patch @@ -0,0 +1,149 @@ +From 53acddddf1b324e06af886ee4639b774e5c8c8bc Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Thu, 7 Jan 2016 18:19:03 +0000 +Subject: [PATCH 04/32] build: Add option to select libc implementation + +There are more than glibc for C library implementation available on +linux now a days, uclibc cloaked like glibc but musl e.g. is very +different and does not implement all GNU extentions + +Disable tests specifically not building _yet_ on musl based systems + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Upstream-Status: Pending +--- + Makefile | 5 +++++ + testcases/kernel/Makefile | 5 ++++- + testcases/kernel/sched/Makefile | 4 +++- + testcases/kernel/syscalls/Makefile | 5 +++++ + testcases/network/nfsv4/acl/Makefile | 4 ++++ + testcases/network/rpc/basic_tests/Makefile | 5 +++++ + testcases/realtime/func/pi-tests/Makefile | 4 ++++ + testcases/realtime/stress/pi-tests/Makefile | 5 +++++ + 8 files changed, 35 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index 297f8e7..906b280 100644 +--- a/Makefile ++++ b/Makefile +@@ -49,6 +49,11 @@ SKIP_IDCHECK ?= 0 + UCLINUX ?= 0 + export UCLINUX + ++# System C library implementation (glibc,uclibc,musl etc.) ++# default to glibc if not set ++LIBC ?= glibc ++export LIBC ++ + # CLEAN_TARGETS: Targets which exist solely in clean. + # COMMON_TARGETS: Targets which exist in all, clean, and install. + # INSTALL_TARGETS: Targets which exist in clean and install (contains +diff --git a/testcases/kernel/Makefile b/testcases/kernel/Makefile +index 50a12fa..4f1987f 100644 +--- a/testcases/kernel/Makefile ++++ b/testcases/kernel/Makefile +@@ -48,13 +48,16 @@ SUBDIRS += connectors \ + logging \ + mem \ + numa \ +- pty \ + sched \ + security \ + timers \ + tracing \ + module \ + ++ifneq ($(LIBC),musl) ++SUBDIRS += pty ++endif ++ + ifeq ($(WITH_POWER_MANAGEMENT_TESTSUITE),yes) + SUBDIRS += power_management + endif +diff --git a/testcases/kernel/sched/Makefile b/testcases/kernel/sched/Makefile +index 6245ed0..aa4eb7f 100644 +--- a/testcases/kernel/sched/Makefile ++++ b/testcases/kernel/sched/Makefile +@@ -23,5 +23,7 @@ + top_srcdir ?= ../../.. + + include $(top_srcdir)/include/mk/env_pre.mk +- ++ifeq ($(LIBC),musl) ++ FILTER_OUT_DIRS += process_stress ++endif + include $(top_srcdir)/include/mk/generic_trunk_target.mk +diff --git a/testcases/kernel/syscalls/Makefile b/testcases/kernel/syscalls/Makefile +index 8acb395..b749126 100644 +--- a/testcases/kernel/syscalls/Makefile ++++ b/testcases/kernel/syscalls/Makefile +@@ -28,6 +28,11 @@ ifeq ($(UCLINUX),1) + FILTER_OUT_DIRS += capget capset chmod chown clone fork getcontext llseek \ + mincore mprotect nftw profil remap_file_pages sbrk + endif ++ifeq ($(LIBC),musl) ++FILTER_OUT_DIRS += confstr fmtmsg getcontext ioctl mallopt profil \ ++ rt_sigsuspend setdomainname sethostname sigsuspend \ ++ ustat ++endif + + ifeq ($(UCLIBC),1) + FILTER_OUT_DIRS += profil +diff --git a/testcases/network/nfsv4/acl/Makefile b/testcases/network/nfsv4/acl/Makefile +index 8bc78c2..c36cf50 100644 +--- a/testcases/network/nfsv4/acl/Makefile ++++ b/testcases/network/nfsv4/acl/Makefile +@@ -26,4 +26,8 @@ include $(top_srcdir)/include/mk/env_pre.mk + + LDLIBS += $(ACL_LIBS) + ++ifeq ($(LIBC),musl) ++FILTER_OUT_MAKE_TARGETS := acl1 ++endif ++ + include $(top_srcdir)/include/mk/generic_leaf_target.mk +diff --git a/testcases/network/rpc/basic_tests/Makefile b/testcases/network/rpc/basic_tests/Makefile +index 3160813..9bdf5d0 100644 +--- a/testcases/network/rpc/basic_tests/Makefile ++++ b/testcases/network/rpc/basic_tests/Makefile +@@ -23,4 +23,9 @@ + top_srcdir ?= ../../../.. + + include $(top_srcdir)/include/mk/env_pre.mk ++ ++ifeq ($(LIBC),musl) ++FILTER_OUT_DIRS += rpc01 ++endif ++ + include $(top_srcdir)/include/mk/generic_trunk_target.mk +diff --git a/testcases/realtime/func/pi-tests/Makefile b/testcases/realtime/func/pi-tests/Makefile +index 7a7a57a..5808866 100644 +--- a/testcases/realtime/func/pi-tests/Makefile ++++ b/testcases/realtime/func/pi-tests/Makefile +@@ -27,5 +27,9 @@ include $(top_srcdir)/include/mk/env_pre.mk + include $(abs_srcdir)/../../config.mk + + MAKE_TARGETS := testpi-0 testpi-1 testpi-2 testpi-4 testpi-5 testpi-6 testpi-7 sbrk_mutex ++ifeq ($(LIBC),musl) ++FILTER_OUT_MAKE_TARGETS := testpi-5 testpi-6 sbrk_mutex ++endif ++ + + include $(top_srcdir)/include/mk/generic_leaf_target.mk +diff --git a/testcases/realtime/stress/pi-tests/Makefile b/testcases/realtime/stress/pi-tests/Makefile +index 5edc3b4..aa5987a 100644 +--- a/testcases/realtime/stress/pi-tests/Makefile ++++ b/testcases/realtime/stress/pi-tests/Makefile +@@ -24,4 +24,9 @@ top_srcdir ?= ../../../.. + + include $(top_srcdir)/include/mk/env_pre.mk + include $(abs_srcdir)/../../config.mk ++ ++ifeq ($(LIBC),musl) ++FILTER_OUT_MAKE_TARGETS := testpi-3 ++endif ++ + include $(top_srcdir)/include/mk/generic_leaf_target.mk +-- +2.7.0 + diff --git a/core/recipes-extended/ltp/ltp/0005-kernel-controllers-Link-with-libfts-explicitly-on-mu.patch b/core/recipes-extended/ltp/ltp/0005-kernel-controllers-Link-with-libfts-explicitly-on-mu.patch new file mode 100644 index 0000000..b9390e2 --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0005-kernel-controllers-Link-with-libfts-explicitly-on-mu.patch @@ -0,0 +1,46 @@ +From 6e3058521b50d91d4b0569c4d491c5af5ff798b2 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Thu, 7 Jan 2016 18:22:38 +0000 +Subject: [PATCH 05/32] kernel/controllers: Link with libfts explicitly on musl + +musl does not implement fts like glibc and therefore it depends on +external implementation for all fts APIs + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Upstream-Status: Pending +--- + testcases/kernel/controllers/Makefile.inc | 3 +++ + testcases/kernel/controllers/cpuset/Makefile.inc | 3 +++ + 2 files changed, 6 insertions(+) + +diff --git a/testcases/kernel/controllers/Makefile.inc b/testcases/kernel/controllers/Makefile.inc +index b106283..ef5fc0c 100644 +--- a/testcases/kernel/controllers/Makefile.inc ++++ b/testcases/kernel/controllers/Makefile.inc +@@ -36,6 +36,9 @@ MAKE_DEPS := $(LIB) + CPPFLAGS += -I$(abs_srcdir)/../$(LIBDIR) + + LDFLAGS += -L$(abs_builddir)/../$(LIBDIR) ++ifeq ($(LIBC),musl) ++LDLIBS += -lfts ++endif + + INSTALL_TARGETS ?= *.sh + +diff --git a/testcases/kernel/controllers/cpuset/Makefile.inc b/testcases/kernel/controllers/cpuset/Makefile.inc +index 9e002f4..e0fcb9c 100644 +--- a/testcases/kernel/controllers/cpuset/Makefile.inc ++++ b/testcases/kernel/controllers/cpuset/Makefile.inc +@@ -42,6 +42,9 @@ MAKE_DEPS := $(LIBCONTROLLERS) $(LIBCPUSET) + LDFLAGS += -L$(abs_builddir)/$(LIBCPUSET_DIR) -L$(abs_builddir)/$(LIBCONTROLLERS_DIR) + + LDLIBS += -lcpu_set -lcontrollers -lltp ++ifeq ($(LIBC),musl) ++LDLIBS += -lfts ++endif + + INSTALL_TARGETS ?= *.sh + +-- +2.7.0 + diff --git a/core/recipes-extended/ltp/ltp/0007-fix-__WORDSIZE-undeclared-when-building-with-musl.patch b/core/recipes-extended/ltp/ltp/0007-fix-__WORDSIZE-undeclared-when-building-with-musl.patch new file mode 100644 index 0000000..2f4ca63 --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0007-fix-__WORDSIZE-undeclared-when-building-with-musl.patch @@ -0,0 +1,31 @@ +From d1a27570457fb6e1d6bafe81bfa0f3507b137e32 Mon Sep 17 00:00:00 2001 +From: Dengke Du <dengke.du@windriver.com> +Date: Thu, 9 Feb 2017 18:20:58 +0800 +Subject: [PATCH] fix __WORDSIZE undeclared when building with musl + +fix __WORDSIZE undeclared when building with musl. + +Upstream-Status: Submitted [https://github.com/linux-test-project/ltp/pull/177] + +Signed-off-by: Dengke Du <dengke.du@windriver.com> +--- + include/old/test.h | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/include/old/test.h b/include/old/test.h +index b36764d83..cc6f1b551 100644 +--- a/include/old/test.h ++++ b/include/old/test.h +@@ -44,6 +44,9 @@ + #include <string.h> + #include <stdlib.h> + #include <stdint.h> ++#ifndef __GLIBC__ ++#include <bits/reg.h> ++#endif + + #include "usctest.h" + +-- +2.11.0 + diff --git a/core/recipes-extended/ltp/ltp/0008-Check-if-__GLIBC_PREREQ-is-defined-before-using-it.patch b/core/recipes-extended/ltp/ltp/0008-Check-if-__GLIBC_PREREQ-is-defined-before-using-it.patch new file mode 100644 index 0000000..428ac30 --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0008-Check-if-__GLIBC_PREREQ-is-defined-before-using-it.patch @@ -0,0 +1,283 @@ +From a3cbee31daae2466bc8dcac36b33a01352693346 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Thu, 7 Jan 2016 19:40:08 +0000 +Subject: [PATCH 01/26] Check if __GLIBC_PREREQ is defined before using it + +__GLIBC_PREREQ is specific to glibc so it should be checked if it is +defined or not. + +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +Upstream-Status: Pending +--- + testcases/kernel/syscalls/accept4/accept4_01.c | 9 ++++- + testcases/kernel/syscalls/getcpu/getcpu01.c | 39 +++++++++++++++++++++- + .../sched_getaffinity/sched_getaffinity01.c | 26 +++++++++++++++ + 3 files changed, 72 insertions(+), 2 deletions(-) + +diff --git a/testcases/kernel/syscalls/accept4/accept4_01.c b/testcases/kernel/syscalls/accept4/accept4_01.c +index 6072bfa..2b090cb 100644 +--- a/testcases/kernel/syscalls/accept4/accept4_01.c ++++ b/testcases/kernel/syscalls/accept4/accept4_01.c +@@ -64,6 +64,7 @@ static void cleanup(void) + tst_rmdir(); + } + ++#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) + #if !(__GLIBC_PREREQ(2, 10)) + static int + accept4_01(int fd, struct sockaddr *sockaddr, socklen_t *addrlen, int flags) +@@ -82,7 +83,6 @@ accept4_01(int fd, struct sockaddr *sockaddr, socklen_t *addrlen, int flags) + } + tst_resm(TINFO, "\n"); + #endif +- + #if USE_SOCKETCALL + long args[6]; + +@@ -97,6 +97,7 @@ accept4_01(int fd, struct sockaddr *sockaddr, socklen_t *addrlen, int flags) + #endif + } + #endif ++#endif + + static void + do_test(int lfd, struct sockaddr_in *conn_addr, +@@ -119,9 +120,15 @@ do_test(int lfd, struct sockaddr_in *conn_addr, + die("Connect Error"); + + addrlen = sizeof(struct sockaddr_in); ++#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) + #if !(__GLIBC_PREREQ(2, 10)) + acceptfd = accept4_01(lfd, (struct sockaddr *)&claddr, &addrlen, + closeonexec_flag | nonblock_flag); ++ ++#else ++ acceptfd = accept4(lfd, (struct sockaddr *)&claddr, &addrlen, ++ closeonexec_flag | nonblock_flag); ++#endif + #else + acceptfd = accept4(lfd, (struct sockaddr *)&claddr, &addrlen, + closeonexec_flag | nonblock_flag); +diff --git a/testcases/kernel/syscalls/getcpu/getcpu01.c b/testcases/kernel/syscalls/getcpu/getcpu01.c +index c927512..921b107 100644 +--- a/testcases/kernel/syscalls/getcpu/getcpu01.c ++++ b/testcases/kernel/syscalls/getcpu/getcpu01.c +@@ -62,6 +62,7 @@ + #include <dirent.h> + + #if defined(__i386__) || defined(__x86_64__) ++#if defined(__GLIBC__) + #if __GLIBC_PREREQ(2,6) + #if defined(__x86_64__) + #include <utmpx.h> +@@ -75,10 +76,17 @@ int sys_support = 0; + #else + int sys_support = 0; + #endif ++#else ++int sys_support = 0; ++#endif + ++#if defined(__GLIBC__) + #if !(__GLIBC_PREREQ(2, 7)) + #define CPU_FREE(ptr) free(ptr) + #endif ++#else ++#define CPU_FREE(ptr) free(ptr) ++#endif + + void cleanup(void); + void setup(void); +@@ -164,7 +172,11 @@ static inline int getcpu(unsigned *cpu_id, unsigned *node_id, + { + #if defined(__i386__) + return syscall(318, cpu_id, node_id, cache_struct); +-#elif __GLIBC_PREREQ(2,6) ++#elif defined(__GLIBC__) ++#if __GLIBC_PREREQ(2,6) ++ *cpu_id = sched_getcpu(); ++#endif ++#else + *cpu_id = sched_getcpu(); + #endif + return 0; +@@ -191,15 +203,20 @@ unsigned int set_cpu_affinity(void) + cpu_set_t *set; + size_t size; + int nrcpus = 1024; ++#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) + #if __GLIBC_PREREQ(2, 7) + realloc: + set = CPU_ALLOC(nrcpus); + #else + set = malloc(sizeof(cpu_set_t)); + #endif ++#else ++ set = malloc(sizeof(cpu_set_t)); ++#endif + if (set == NULL) { + tst_brkm(TFAIL, NULL, "CPU_ALLOC:errno:%d", errno); + } ++#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) + #if __GLIBC_PREREQ(2, 7) + size = CPU_ALLOC_SIZE(nrcpus); + CPU_ZERO_S(size, set); +@@ -207,8 +224,13 @@ realloc: + size = sizeof(cpu_set_t); + CPU_ZERO(set); + #endif ++#else ++ size = sizeof(cpu_set_t); ++ CPU_ZERO(set); ++#endif + if (sched_getaffinity(0, size, set) < 0) { + CPU_FREE(set); ++#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) + #if __GLIBC_PREREQ(2, 7) + if (errno == EINVAL && nrcpus < (1024 << 8)) { + nrcpus = nrcpus << 2; +@@ -220,10 +242,17 @@ realloc: + "NR_CPUS of the kernel is more than 1024, so we'd better use a newer glibc(>= 2.7)"); + else + #endif ++#else ++ if (errno == EINVAL) ++ tst_resm(TFAIL, ++ "NR_CPUS of the kernel is more than 1024, so we'd better use a newer glibc(>= 2.7)"); ++ else ++#endif + tst_resm(TFAIL, "sched_getaffinity:errno:%d", errno); + tst_exit(); + } + cpu_max = max_cpuid(size, set); ++#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) + #if __GLIBC_PREREQ(2, 7) + CPU_ZERO_S(size, set); + CPU_SET_S(cpu_max, size, set); +@@ -231,6 +260,10 @@ realloc: + CPU_ZERO(set); + CPU_SET(cpu_max, set); + #endif ++#else ++ CPU_ZERO(set); ++ CPU_SET(cpu_max, set); ++#endif + if (sched_setaffinity(0, size, set) < 0) { + CPU_FREE(set); + tst_brkm(TFAIL, NULL, "sched_setaffinity:errno:%d", errno); +@@ -247,11 +280,15 @@ unsigned int max_cpuid(size_t size, cpu_set_t * set) + { + unsigned int index, max = 0; + for (index = 0; index < size * BITS_PER_BYTE; index++) ++#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) + #if __GLIBC_PREREQ(2, 7) + if (CPU_ISSET_S(index, size, set)) + #else + if (CPU_ISSET(index, set)) + #endif ++#else ++ if (CPU_ISSET(index, set)) ++#endif + max = index; + return max; + } +diff --git a/testcases/kernel/syscalls/sched_getaffinity/sched_getaffinity01.c b/testcases/kernel/syscalls/sched_getaffinity/sched_getaffinity01.c +index 9d6a81a..4ed13b2 100644 +--- a/testcases/kernel/syscalls/sched_getaffinity/sched_getaffinity01.c ++++ b/testcases/kernel/syscalls/sched_getaffinity/sched_getaffinity01.c +@@ -67,9 +67,11 @@ do { \ + tst_resm((TEST_RETURN == -1 ? TPASS : TFAIL) | TTERRNO, #t); \ + } while (0) + ++#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) + #if !(__GLIBC_PREREQ(2, 7)) + #define CPU_FREE(ptr) free(ptr) + #endif ++#endif + + int main(int ac, char **av) + { +@@ -96,14 +98,19 @@ static void do_test(void) + pid_t unused_pid; + unsigned len; + ++#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) + #if __GLIBC_PREREQ(2, 7) + realloc: + mask = CPU_ALLOC(nrcpus); + #else + mask = malloc(sizeof(cpu_set_t)); + #endif ++#else ++ mask = malloc(sizeof(cpu_set_t)); ++#endif + if (mask == NULL) + tst_brkm(TFAIL | TTERRNO, cleanup, "fail to get enough memory"); ++#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) + #if __GLIBC_PREREQ(2, 7) + len = CPU_ALLOC_SIZE(nrcpus); + CPU_ZERO_S(len, mask); +@@ -111,10 +118,15 @@ realloc: + len = sizeof(cpu_set_t); + CPU_ZERO(mask); + #endif ++#else ++ len = sizeof(cpu_set_t); ++ CPU_ZERO(mask); ++#endif + /* positive test */ + TEST(sched_getaffinity(0, len, mask)); + if (TEST_RETURN == -1) { + CPU_FREE(mask); ++#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) + #if __GLIBC_PREREQ(2, 7) + if (errno == EINVAL && nrcpus < (1024 << 8)) { + nrcpus = nrcpus << 2; +@@ -126,17 +138,27 @@ realloc: + "newer glibc(>= 2.7)"); + else + #endif ++#else ++ if (errno == EINVAL) ++ tst_resm(TFAIL, "NR_CPUS > 1024, we'd better use a " ++ "newer glibc(>= 2.7)"); ++ else ++#endif + tst_resm(TFAIL | TTERRNO, "fail to get cpu affinity"); + cleanup(); + } else { + tst_resm(TINFO, "cpusetsize is %d", len); + tst_resm(TINFO, "mask.__bits[0] = %lu ", mask->__bits[0]); + for (i = 0; i < num; i++) { ++#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) + #if __GLIBC_PREREQ(2, 7) + TEST(CPU_ISSET_S(i, len, mask)); + #else + TEST(CPU_ISSET(i, mask)); + #endif ++#else ++ TEST(CPU_ISSET(i, mask)); ++#endif + if (TEST_RETURN != -1) + tst_resm(TPASS, "sched_getaffinity() succeed, " + "this process %d is running " +@@ -144,11 +166,15 @@ realloc: + } + } + ++#if defined(__GLIBC__) && defined(__GLIBC_PREREQ) + #if __GLIBC_PREREQ(2, 7) + CPU_ZERO_S(len, mask); + #else + CPU_ZERO(mask); + #endif ++#else ++ CPU_ZERO(mask); ++#endif + /* negative tests */ + QUICK_TEST(sched_getaffinity(0, len, (cpu_set_t *) - 1)); + QUICK_TEST(sched_getaffinity(0, 0, mask)); +-- +1.9.1 + diff --git a/core/recipes-extended/ltp/ltp/0009-fix-redefinition-of-struct-msgbuf-error-building-wit.patch b/core/recipes-extended/ltp/ltp/0009-fix-redefinition-of-struct-msgbuf-error-building-wit.patch new file mode 100644 index 0000000..dd7d283 --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0009-fix-redefinition-of-struct-msgbuf-error-building-wit.patch @@ -0,0 +1,36 @@ +From bf5dd2932200e0199a38f3028d3bef2253f32e38 Mon Sep 17 00:00:00 2001 +From: Dengke Du <dengke.du@windriver.com> +Date: Thu, 9 Feb 2017 17:17:37 +0800 +Subject: [PATCH] fix redefinition of 'struct msgbuf' error building with musl + +When building with musl the file "sys/msg.h" already contain 'struct msgbuf' + +Upstream-Status: Submitted [https://github.com/linux-test-project/ltp/pull/177] + +Signed-off-by: Dengke Du <dengke.du@windriver.com> +--- + testcases/kernel/syscalls/ipc/msgrcv/msgrcv08.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/testcases/kernel/syscalls/ipc/msgrcv/msgrcv08.c b/testcases/kernel/syscalls/ipc/msgrcv/msgrcv08.c +index a757c0d18..e023114d2 100644 +--- a/testcases/kernel/syscalls/ipc/msgrcv/msgrcv08.c ++++ b/testcases/kernel/syscalls/ipc/msgrcv/msgrcv08.c +@@ -47,11 +47,13 @@ const char *TCID = "msgrcv08"; + const int TST_TOTAL = 1; + + #if __WORDSIZE == 32 +- ++#ifdef __GLIBC__ + struct msgbuf { + long mtype; /* message type, must be > 0 */ + char mtext[16]; /* message data */ + }; ++#else ++#endif + + static void msr(int msqid) + { +-- +2.11.0 + diff --git a/core/recipes-extended/ltp/ltp/0018-guard-mallocopt-with-__GLIBC__.patch b/core/recipes-extended/ltp/ltp/0018-guard-mallocopt-with-__GLIBC__.patch new file mode 100644 index 0000000..a79763d --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0018-guard-mallocopt-with-__GLIBC__.patch @@ -0,0 +1,33 @@ +From f42b060e80c9f40627c712d4d56d45221bd7d9fa 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 18/32] guard mallocopt() with __GLIBC__ + +mallocopt is not available on non glibc implementations + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Upstream-Status: Pending +--- + 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.0 + diff --git a/core/recipes-extended/ltp/ltp/0020-getdents-define-getdents-getdents64-only-for-glibc.patch b/core/recipes-extended/ltp/ltp/0020-getdents-define-getdents-getdents64-only-for-glibc.patch new file mode 100644 index 0000000..7060a64 --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0020-getdents-define-getdents-getdents64-only-for-glibc.patch @@ -0,0 +1,50 @@ +From aa3568e6ac28f377e75ce16b11e3c7738a373e53 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Fri, 8 Jan 2016 06:57:04 +0000 +Subject: [PATCH 20/32] getdents: define getdents/getdents64 only for glibc + +getdents/getdents64 are implemented in musl and when we define static +functions with same name, it errors out. + +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +Upstream-Status: Pending +--- + testcases/kernel/syscalls/getdents/getdents.h | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/testcases/kernel/syscalls/getdents/getdents.h b/testcases/kernel/syscalls/getdents/getdents.h +index abea655..db63d89 100644 +--- a/testcases/kernel/syscalls/getdents/getdents.h ++++ b/testcases/kernel/syscalls/getdents/getdents.h +@@ -34,12 +34,13 @@ struct linux_dirent { + char d_name[]; + }; + ++#ifdef __GLIBC__ + static inline int + getdents(unsigned int fd, struct linux_dirent *dirp, unsigned int size) + { + return ltp_syscall(__NR_getdents, fd, dirp, size); + } +- ++#endif + struct linux_dirent64 { + uint64_t d_ino; + int64_t d_off; +@@ -48,10 +49,11 @@ struct linux_dirent64 { + char d_name[]; + }; + ++#ifdef __GLIBC__ + static inline int + getdents64(unsigned int fd, struct linux_dirent64 *dirp64, unsigned int size) + { + return ltp_syscall(__NR_getdents64, fd, dirp64, size); + } +- ++#endif + #endif /* GETDENTS_H */ +-- +2.7.0 + diff --git a/core/recipes-extended/ltp/ltp/0021-Define-_GNU_SOURCE-for-MREMAP_MAYMOVE-definition.patch b/core/recipes-extended/ltp/ltp/0021-Define-_GNU_SOURCE-for-MREMAP_MAYMOVE-definition.patch new file mode 100644 index 0000000..6c5f360 --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0021-Define-_GNU_SOURCE-for-MREMAP_MAYMOVE-definition.patch @@ -0,0 +1,73 @@ +From b216435bb362df10c45f544b78d8c884eaa901fd Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Fri, 8 Jan 2016 07:01:02 +0000 +Subject: [PATCH 21/32] Define _GNU_SOURCE for MREMAP_MAYMOVE definition + +musl guards MREMAP_MAYMOVE with _GNU_SOURCE unlike glibc which uses +__USE_GNU + +Fixes errors like +error: 'MREMAP_MAYMOVE' undeclared (first use in this function) + +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +Upstream-Status: Pending +--- + testcases/kernel/syscalls/mremap/mremap01.c | 4 +++- + testcases/kernel/syscalls/mremap/mremap02.c | 2 ++ + testcases/kernel/syscalls/mremap/mremap03.c | 2 ++ + 3 files changed, 7 insertions(+), 1 deletion(-) + +diff --git a/testcases/kernel/syscalls/mremap/mremap01.c b/testcases/kernel/syscalls/mremap/mremap01.c +index d63d1e4..24ca174 100644 +--- a/testcases/kernel/syscalls/mremap/mremap01.c ++++ b/testcases/kernel/syscalls/mremap/mremap01.c +@@ -76,10 +76,12 @@ + */ + #include <unistd.h> + #include <errno.h> ++#include <fcntl.h> ++#define _GNU_SOURCE + #define __USE_GNU + #include <sys/mman.h> + #undef __USE_GNU +-#include <fcntl.h> ++#undef _GNU_SOURCE + + #include "test.h" + #include "safe_macros.h" +diff --git a/testcases/kernel/syscalls/mremap/mremap02.c b/testcases/kernel/syscalls/mremap/mremap02.c +index 5a51b9a..a530a6b 100644 +--- a/testcases/kernel/syscalls/mremap/mremap02.c ++++ b/testcases/kernel/syscalls/mremap/mremap02.c +@@ -75,9 +75,11 @@ + #include <errno.h> + #include <unistd.h> + #include <fcntl.h> ++#define _GNU_SOURCE + #define __USE_GNU + #include <sys/mman.h> + #undef __USE_GNU ++#undef _GNU_SOURCE + + #include "test.h" + +diff --git a/testcases/kernel/syscalls/mremap/mremap03.c b/testcases/kernel/syscalls/mremap/mremap03.c +index 12e3829..9b39f8b 100644 +--- a/testcases/kernel/syscalls/mremap/mremap03.c ++++ b/testcases/kernel/syscalls/mremap/mremap03.c +@@ -76,9 +76,11 @@ + #include <errno.h> + #include <unistd.h> + #include <fcntl.h> ++#define _GNU_SOURCE + #define __USE_GNU + #include <sys/mman.h> + #undef __USE_GNU ++#undef _GNU_SOURCE + + #include "test.h" + +-- +2.7.0 + diff --git a/core/recipes-extended/ltp/ltp/0023-ptrace-Use-int-instead-of-enum-__ptrace_request.patch b/core/recipes-extended/ltp/ltp/0023-ptrace-Use-int-instead-of-enum-__ptrace_request.patch new file mode 100644 index 0000000..529f4ed --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0023-ptrace-Use-int-instead-of-enum-__ptrace_request.patch @@ -0,0 +1,50 @@ +From 560347f77236616a635b4a997a0596b8da4d0799 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Fri, 8 Jan 2016 07:08:25 +0000 +Subject: [PATCH 23/32] ptrace: Use int instead of enum __ptrace_request + +__ptrace_request is only available with glibc + +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +Upstream-Status: Pending +--- + testcases/kernel/syscalls/ptrace/ptrace03.c | 4 ++++ + testcases/kernel/syscalls/ptrace/spawn_ptrace_child.h | 4 ++++ + 2 files changed, 8 insertions(+) + +diff --git a/testcases/kernel/syscalls/ptrace/ptrace03.c b/testcases/kernel/syscalls/ptrace/ptrace03.c +index a4028fc..f1880cd 100644 +--- a/testcases/kernel/syscalls/ptrace/ptrace03.c ++++ b/testcases/kernel/syscalls/ptrace/ptrace03.c +@@ -102,7 +102,11 @@ static pid_t unused_pid; + static pid_t zero_pid; + + struct test_case_t { ++#ifdef __GLIBC__ + enum __ptrace_request request; ++#else ++ int request; ++#endif + pid_t *pid; + int exp_errno; + } test_cases[] = { +diff --git a/testcases/kernel/syscalls/ptrace/spawn_ptrace_child.h b/testcases/kernel/syscalls/ptrace/spawn_ptrace_child.h +index ae538e9..85aa89d 100644 +--- a/testcases/kernel/syscalls/ptrace/spawn_ptrace_child.h ++++ b/testcases/kernel/syscalls/ptrace/spawn_ptrace_child.h +@@ -130,7 +130,11 @@ static char *strings[] = { + SPT(KILL) + SPT(SINGLESTEP) + }; ++#ifdef __GLIBC__ + static inline char *strptrace(enum __ptrace_request request) ++#else ++static inline char *strptrace(int request) ++#endif + { + return strings[request]; + } +-- +2.7.0 + diff --git a/core/recipes-extended/ltp/ltp/0024-rt_sigaction-rt_sigprocmark-Define-_GNU_SOURCE.patch b/core/recipes-extended/ltp/ltp/0024-rt_sigaction-rt_sigprocmark-Define-_GNU_SOURCE.patch new file mode 100644 index 0000000..03aa45d --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0024-rt_sigaction-rt_sigprocmark-Define-_GNU_SOURCE.patch @@ -0,0 +1,70 @@ +From e01e9862c248dc90a8ec6f2d06f8469d7a50cd8e Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Fri, 8 Jan 2016 07:14:58 +0000 +Subject: [PATCH 24/32] rt_sigaction/rt_sigprocmark: Define _GNU_SOURCE + +Fixes musl build failure e.g. +error: 'SA_NOMASK' undeclared here (not in a function) + +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +Upstream-Status: Pending +--- + testcases/kernel/syscalls/rt_sigaction/rt_sigaction01.c | 1 + + testcases/kernel/syscalls/rt_sigaction/rt_sigaction02.c | 2 +- + testcases/kernel/syscalls/rt_sigaction/rt_sigaction03.c | 1 + + testcases/kernel/syscalls/rt_sigprocmask/rt_sigprocmask01.c | 1 + + 4 files changed, 4 insertions(+), 1 deletion(-) + +diff --git a/testcases/kernel/syscalls/rt_sigaction/rt_sigaction01.c b/testcases/kernel/syscalls/rt_sigaction/rt_sigaction01.c +index 5cf89cc..bdcb91a 100644 +--- a/testcases/kernel/syscalls/rt_sigaction/rt_sigaction01.c ++++ b/testcases/kernel/syscalls/rt_sigaction/rt_sigaction01.c +@@ -28,6 +28,7 @@ + /* sigset_t type. */ + /******************************************************************************/ + ++#define _GNU_SOURCE + #include <stdio.h> + #include <stdlib.h> + #include <unistd.h> +diff --git a/testcases/kernel/syscalls/rt_sigaction/rt_sigaction02.c b/testcases/kernel/syscalls/rt_sigaction/rt_sigaction02.c +index a1da743..8a27a0f 100644 +--- a/testcases/kernel/syscalls/rt_sigaction/rt_sigaction02.c ++++ b/testcases/kernel/syscalls/rt_sigaction/rt_sigaction02.c +@@ -23,7 +23,7 @@ + /* Description: This tests the rt_sigaction() syscall */ + /* rt_sigaction Expected EFAULT error check */ + /******************************************************************************/ +- ++#define _GNU_SOURCE + #include <stdio.h> + #include <stdlib.h> + #include <unistd.h> +diff --git a/testcases/kernel/syscalls/rt_sigaction/rt_sigaction03.c b/testcases/kernel/syscalls/rt_sigaction/rt_sigaction03.c +index 175d220..e7627cd 100644 +--- a/testcases/kernel/syscalls/rt_sigaction/rt_sigaction03.c ++++ b/testcases/kernel/syscalls/rt_sigaction/rt_sigaction03.c +@@ -24,6 +24,7 @@ + /* rt_sigaction Expected EINVAL error check */ + /******************************************************************************/ + ++#define _GNU_SOURCE + #include <stdio.h> + #include <stdlib.h> + #include <unistd.h> +diff --git a/testcases/kernel/syscalls/rt_sigprocmask/rt_sigprocmask01.c b/testcases/kernel/syscalls/rt_sigprocmask/rt_sigprocmask01.c +index 74e5a61..75c57fc 100644 +--- a/testcases/kernel/syscalls/rt_sigprocmask/rt_sigprocmask01.c ++++ b/testcases/kernel/syscalls/rt_sigprocmask/rt_sigprocmask01.c +@@ -39,6 +39,7 @@ + /* sigsetsize should indicate the size of a sigset_t type. */ + /******************************************************************************/ + ++#define _GNU_SOURCE + #include <stdio.h> + #include <signal.h> + #include <errno.h> +-- +2.7.0 + diff --git a/core/recipes-extended/ltp/ltp/0026-crash01-Define-_GNU_SOURCE.patch b/core/recipes-extended/ltp/ltp/0026-crash01-Define-_GNU_SOURCE.patch new file mode 100644 index 0000000..f65fad1 --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0026-crash01-Define-_GNU_SOURCE.patch @@ -0,0 +1,31 @@ +From 0133a2b29d6f48d8e2bba6a3be581cdfa91311a6 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Fri, 8 Jan 2016 07:21:05 +0000 +Subject: [PATCH 26/32] crash01: Define _GNU_SOURCE + +Fixes musl build errors like +error: 'SA_NOMASK' undeclared (first use in this function) + +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +Upstream-Status: Pending +--- + testcases/misc/crash/crash01.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/testcases/misc/crash/crash01.c b/testcases/misc/crash/crash01.c +index 0574521..08a02e7 100644 +--- a/testcases/misc/crash/crash01.c ++++ b/testcases/misc/crash/crash01.c +@@ -49,7 +49,7 @@ stress test at the same time you run other tests, like a multi-user + benchmark. + + */ +- ++#define _GNU_SOURCE + #include <stdio.h> + #include <stdlib.h> + #include <string.h> +-- +2.7.0 + diff --git a/core/recipes-extended/ltp/ltp/0028-rt_sigaction.h-Use-sighandler_t-instead-of-__sighand.patch b/core/recipes-extended/ltp/ltp/0028-rt_sigaction.h-Use-sighandler_t-instead-of-__sighand.patch new file mode 100644 index 0000000..40ee894 --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0028-rt_sigaction.h-Use-sighandler_t-instead-of-__sighand.patch @@ -0,0 +1,48 @@ +From 94557fb7e1293c61145c959b8c5ffecf4a2b1069 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Fri, 8 Jan 2016 07:24:44 +0000 +Subject: [PATCH 28/32] rt_sigaction.h: Use sighandler_t instead of + __sighandler_t + +When _GNU_SOURCE is used then both typedefs are same and using +sighandler_t makes it work on musl too + +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +Upstream-Status: Pending +--- + include/lapi/rt_sigaction.h | 4 ++-- + testcases/kernel/syscalls/rt_sigsuspend/Makefile | 3 +++ + 2 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/include/lapi/rt_sigaction.h b/include/lapi/rt_sigaction.h +index 18236db..15facda 100644 +--- a/include/lapi/rt_sigaction.h ++++ b/include/lapi/rt_sigaction.h +@@ -36,12 +36,12 @@ + #if defined(__mips__) + struct kernel_sigaction { + unsigned int sa_flags; +- __sighandler_t k_sa_handler; ++ sighandler_t k_sa_handler; + sigset_t sa_mask; + }; + #else + struct kernel_sigaction { +- __sighandler_t k_sa_handler; ++ sighandler_t k_sa_handler; + unsigned long sa_flags; + void (*sa_restorer) (void); + sigset_t sa_mask; +diff --git a/testcases/kernel/syscalls/rt_sigsuspend/Makefile b/testcases/kernel/syscalls/rt_sigsuspend/Makefile +index 37bc3a9..2ca7f7c 100644 +--- a/testcases/kernel/syscalls/rt_sigsuspend/Makefile ++++ b/testcases/kernel/syscalls/rt_sigsuspend/Makefile +@@ -19,4 +19,7 @@ + top_srcdir ?= ../../../.. + + include $(top_srcdir)/include/mk/testcases.mk ++ ++CFLAGS += -D_GNU_SOURCE ++ + include $(top_srcdir)/include/mk/generic_leaf_target.mk diff --git a/core/recipes-extended/ltp/ltp/0034-periodic_output.patch b/core/recipes-extended/ltp/ltp/0034-periodic_output.patch new file mode 100644 index 0000000..c2ef899 --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0034-periodic_output.patch @@ -0,0 +1,55 @@ +From 5a77e2bdc083f4f842a8ba7c2db1a7ac6e5f0664 Mon Sep 17 00:00:00 2001 +From: Dengke Du <dengke.du@windriver.com> +Date: Wed, 31 May 2017 21:26:05 -0400 +Subject: [PATCH] Add periodic output for long time test. + +This is needed in context of having scripts running ltp tests and +waiting with a timeout for the output of the tests. + +Signed-off-by: Tudor Florea <tudor.florea@enea.com> +Upstream-Status: Pending + +Signed-off-by: Dengke Du <dengke.du@windriver.com> +--- + .../kernel/controllers/memcg/stress/memcg_stress_test.sh | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/testcases/kernel/controllers/memcg/stress/memcg_stress_test.sh b/testcases/kernel/controllers/memcg/stress/memcg_stress_test.sh +index af1a708..084e628 100755 +--- a/testcases/kernel/controllers/memcg/stress/memcg_stress_test.sh ++++ b/testcases/kernel/controllers/memcg/stress/memcg_stress_test.sh +@@ -37,7 +37,8 @@ if [ "x$(grep -w memory /proc/cgroups | cut -f4)" != "x1" ]; then + exit 0 + fi + +-RUN_TIME=$(( 15 * 60 )) ++ONE_MINUTE=60 ++RUN_TIME=15 + + cleanup() + { +@@ -62,7 +63,7 @@ do_mount() + # $1 - Number of cgroups + # $2 - Allocated how much memory in one process? in MB + # $3 - The interval to touch memory in a process +-# $4 - How long does this test run ? in second ++# $4 - How long does this test run ? in minutes + run_stress() + { + do_mount; +@@ -81,7 +82,11 @@ run_stress() + eval /bin/kill -s SIGUSR1 \$pid$i 2> /dev/null + done + +- sleep $4 ++ for i in $(seq 0 $(($4-1))) ++ do ++ eval echo "Started $i min ago. Still alive... " ++ sleep $ONE_MINUTE ++ done + + for i in $(seq 0 $(($1-1))) + do +-- +2.8.1 + diff --git a/core/recipes-extended/ltp/ltp/0035-fix-test_proc_kill-hang.patch b/core/recipes-extended/ltp/ltp/0035-fix-test_proc_kill-hang.patch new file mode 100644 index 0000000..71e32a5 --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0035-fix-test_proc_kill-hang.patch @@ -0,0 +1,32 @@ +From f7c602b639db0d118e07d3fa7b6deead0be0c72b Mon Sep 17 00:00:00 2001 +From: Dengke Du <dengke.du@windriver.com> +Date: Wed, 8 Feb 2017 16:17:17 +0800 +Subject: [PATCH 3/5] Fix test_proc_kill hanging + +Sometimes the signal is delivered to memcg_process before the framework took +into consideration its pid entered in the tasks. Fixed by delaying the signal +send command. + +Signed-off-by: George Nita <george.nita@enea.com> +Signed-off-by: Dengke Du <dengke.du@windriver.com> + +Upstream-Status: Pending +--- + testcases/kernel/controllers/memcg/functional/memcg_lib.sh | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/testcases/kernel/controllers/memcg/functional/memcg_lib.sh b/testcases/kernel/controllers/memcg/functional/memcg_lib.sh +index b785fe3..2918cc5 100755 +--- a/testcases/kernel/controllers/memcg/functional/memcg_lib.sh ++++ b/testcases/kernel/controllers/memcg/functional/memcg_lib.sh +@@ -283,6 +283,7 @@ test_proc_kill() + pid=$! + TST_CHECKPOINT_WAIT 0 + echo $pid > tasks ++ sleep 1 + + signal_memcg_process $pid $3 + +-- +2.7.4 + diff --git a/core/recipes-extended/ltp/ltp/0036-testcases-network-nfsv4-acl-acl1.c-Security-fix-on-s.patch b/core/recipes-extended/ltp/ltp/0036-testcases-network-nfsv4-acl-acl1.c-Security-fix-on-s.patch new file mode 100644 index 0000000..e826d48 --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0036-testcases-network-nfsv4-acl-acl1.c-Security-fix-on-s.patch @@ -0,0 +1,41 @@ +From 672a56be14426eae44864673c6c2afca0ab89d46 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com> +Date: Fri, 13 May 2016 11:11:28 -0500 +Subject: [PATCH] testcases/network/nfsv4/acl/acl1.c: Security fix on string + printf +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes: + +acl1.c: In function 'test_acl_default': +acl1.c:317:2: error: format not a string literal and no format arguments +[-Werror=format-security] + printf(cmd); + +[YOCTO #9548] + +Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com> + +Upstream-Status: Pending +--- + testcases/network/nfsv4/acl/acl1.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/testcases/network/nfsv4/acl/acl1.c b/testcases/network/nfsv4/acl/acl1.c +index b8b67b4..7c7c506 100644 +--- a/testcases/network/nfsv4/acl/acl1.c ++++ b/testcases/network/nfsv4/acl/acl1.c +@@ -303,7 +303,7 @@ void test_acl_default(char *dir, acl_t acl) + char *cmd = malloc(256); + + strcpy(cmd, "chmod 7777 "); +- printf(cmd); ++ printf(cmd, NULL); + strcat(cmd, dir); + system(cmd); + acl2 = acl_get_file(path, ACL_TYPE_ACCESS); +-- +2.1.4 + diff --git a/core/recipes-extended/ltp/ltp/0039-commands-ar01-Fix-for-test-in-deterministic-mode.patch b/core/recipes-extended/ltp/ltp/0039-commands-ar01-Fix-for-test-in-deterministic-mode.patch new file mode 100644 index 0000000..9244a06 --- /dev/null +++ b/core/recipes-extended/ltp/ltp/0039-commands-ar01-Fix-for-test-in-deterministic-mode.patch @@ -0,0 +1,254 @@ +From 04da9478887e705ea38e4f097492da20e651686c Mon Sep 17 00:00:00 2001 +From: Guangwen Feng <fenggw-fnst@cn.fujitsu.com> +Date: Wed, 13 Sep 2017 15:48:42 +0800 +Subject: [PATCH] commands/ar01: Fix for test in deterministic mode + +If binutils was configured with --enable-deterministic-archives, +ar will run in deterministic mode by default, and use zero for +timestamps and uids/gids, which makes the test case abnormal. + +Fix this by add the "U" modifier when deterministic mode is default. + +Signed-off-by: Guangwen Feng <fenggw-fnst@cn.fujitsu.com> +Signed-off-by: Fei Jie <feij.fnst@cn.fujitsu.com> + +Upstream-Status: Backport +[http://lists.linux.it/pipermail/ltp/2017-September/005668.html] + +Signed-off-by: Yi Zhao <yi.zhao@windriver.com> +--- + testcases/commands/ar/ar01 | 92 ++++++++++++++++++++++++++-------------------- + 1 file changed, 52 insertions(+), 40 deletions(-) + +diff --git a/testcases/commands/ar/ar01 b/testcases/commands/ar/ar01 +index be105f6da..813a51d9c 100644 +--- a/testcases/commands/ar/ar01 ++++ b/testcases/commands/ar/ar01 +@@ -24,16 +24,28 @@ + # + AR="${AR:=ar}" + TST_CNT=17 ++TST_SETUP=setup + TST_TESTFUNC=test + TST_NEEDS_TMPDIR=1 + TST_NEEDS_CMDS="$AR" + + . tst_test.sh + ++setup() ++{ ++ ar --help | grep "use zero for timestamps and uids/gids (default)" \ ++ >/dev/null ++ if [ $? -eq 0 ]; then ++ MOD="U" ++ else ++ MOD="" ++ fi ++} ++ + test1() + { +- ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in +- ROD ar -ra file1.in lib.a $TST_DATAROOT/file2.in ++ ROD ar -cr"$MOD" lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in ++ ROD ar -ra"$MOD" file1.in lib.a $TST_DATAROOT/file2.in + ROD ar -t lib.a \> ar.out + + printf "file1.in\nfile2.in\nfile3.in\n" > ar.exp +@@ -50,9 +62,9 @@ test1() + + test2() + { +- ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \ +- $TST_DATAROOT/file3.in $TST_DATAROOT/file4.in +- ROD ar -ma file1.in lib.a file4.in ++ ROD ar -cr"$MOD" lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \ ++ $TST_DATAROOT/file3.in $TST_DATAROOT/file4.in ++ ROD ar -ma"$MOD" file1.in lib.a file4.in + ROD ar -t lib.a \> ar.out + + printf "file1.in\nfile4.in\nfile2.in\nfile3.in\n" > ar.exp +@@ -69,8 +81,8 @@ test2() + + test3() + { +- ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in +- ROD ar -rb file3.in lib.a $TST_DATAROOT/file2.in ++ ROD ar -cr"$MOD" lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in ++ ROD ar -rb"$MOD" file3.in lib.a $TST_DATAROOT/file2.in + ROD ar -t lib.a \> ar.out + + printf "file1.in\nfile2.in\nfile3.in\n" > ar.exp +@@ -87,9 +99,9 @@ test3() + + test4() + { +- ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in \ +- $TST_DATAROOT/file2.in +- ROD ar -mb file3.in lib.a file2.in ++ ROD ar -cr"$MOD" lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in \ ++ $TST_DATAROOT/file2.in ++ ROD ar -mb"$MOD" file3.in lib.a file2.in + ROD ar -t lib.a \> ar.out + + printf "file1.in\nfile2.in\nfile3.in\n" > ar.exp +@@ -106,7 +118,7 @@ test4() + + test5() + { +- ROD ar -cr lib.a $TST_DATAROOT/file1.in \> ar.out ++ ROD ar -cr"$MOD" lib.a $TST_DATAROOT/file1.in \> ar.out + + if [ -s ar.out ]; then + tst_res TFAIL "ar produced output unexpectedly (-c)" +@@ -120,7 +132,7 @@ test5() + + test6() + { +- ROD ar -qc lib.a $TST_DATAROOT/file1.in \> ar.out ++ ROD ar -qc"$MOD" lib.a $TST_DATAROOT/file1.in \> ar.out + + if [ -s ar.out ]; then + tst_res TFAIL "ar produced output unexpectedly (-qc)" +@@ -134,9 +146,9 @@ test6() + + test7() + { +- ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \ +- $TST_DATAROOT/file3.in +- ROD ar -d lib.a file1.in file2.in ++ ROD ar -cr"$MOD" lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \ ++ $TST_DATAROOT/file3.in ++ ROD ar -d"$MOD" lib.a file1.in file2.in + ROD ar -t lib.a \> ar.out + + printf "file3.in\n" > ar.exp +@@ -153,9 +165,9 @@ test7() + + test8() + { +- ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \ +- $TST_DATAROOT/file3.in +- ROD ar -d lib.a ++ ROD ar -cr"$MOD" lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \ ++ $TST_DATAROOT/file3.in ++ ROD ar -d"$MOD" lib.a + ROD ar -t lib.a \> ar.out + + printf "file1.in\nfile2.in\nfile3.in\n" > ar.exp +@@ -172,8 +184,8 @@ test8() + + test9() + { +- ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in +- ROD ar -ri file3.in lib.a $TST_DATAROOT/file2.in ++ ROD ar -cr"$MOD" lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in ++ ROD ar -ri"$MOD" file3.in lib.a $TST_DATAROOT/file2.in + ROD ar -t lib.a \> ar.out + + printf "file1.in\nfile2.in\nfile3.in\n" > ar.exp +@@ -190,9 +202,9 @@ test9() + + test10() + { +- ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in \ +- $TST_DATAROOT/file2.in +- ROD ar -mi file3.in lib.a file2.in ++ ROD ar -cr"$MOD" lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in \ ++ $TST_DATAROOT/file2.in ++ ROD ar -mi"$MOD" file3.in lib.a file2.in + ROD ar -t lib.a \> ar.out + + printf "file1.in\nfile2.in\nfile3.in\n" > ar.exp +@@ -209,9 +221,9 @@ test10() + + test11() + { +- ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in \ +- $TST_DATAROOT/file2.in +- ROD ar -m lib.a file3.in ++ ROD ar -cr"$MOD" lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in \ ++ $TST_DATAROOT/file2.in ++ ROD ar -m"$MOD" lib.a file3.in + ROD ar -t lib.a \> ar.out + + printf "file1.in\nfile2.in\nfile3.in\n" > ar.exp +@@ -228,9 +240,9 @@ test11() + + test12() + { +- ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \ +- $TST_DATAROOT/file3.in +- ROD ar -p lib.a \> ar.out ++ ROD ar -cr"$MOD" lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \ ++ $TST_DATAROOT/file3.in ++ ROD ar -p"$MOD" lib.a \> ar.out + + printf "This is file one\nThis is file two\nThis is file three\n" > ar.exp + +@@ -247,9 +259,9 @@ test12() + test13() + { + +- ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \ +- $TST_DATAROOT/file3.in +- ROD ar -q lib.a $TST_DATAROOT/file4.in ++ ROD ar -cr"$MOD" lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \ ++ $TST_DATAROOT/file3.in ++ ROD ar -q"$MOD" lib.a $TST_DATAROOT/file4.in + ROD ar -t lib.a \> ar.out + + printf "file1.in\nfile2.in\nfile3.in\nfile4.in\n" > ar.exp +@@ -267,14 +279,14 @@ test13() + test14() + { + ROD touch file0.in +- ROD ar -cr lib.a file0.in $TST_DATAROOT/file1.in ++ ROD ar -cr"$MOD" lib.a file0.in $TST_DATAROOT/file1.in + + file0_mtime1=$(ar -tv lib.a | grep file0.in) + file1_mtime1=$(ar -tv lib.a | grep file1.in) + + touch -c -t $(date --date='next day' +"%Y%m%d%H%M") file0.in + +- ROD ar -ru lib.a file0.in $TST_DATAROOT/file1.in ++ ROD ar -ru"$MOD" lib.a file0.in $TST_DATAROOT/file1.in + + file0_mtime2=$(ar -tv lib.a | grep file0.in) + file1_mtime2=$(ar -tv lib.a | grep file1.in) +@@ -296,7 +308,7 @@ test14() + + test15() + { +- ROD ar -cr lib.a $TST_DATAROOT/file1.in ++ ROD ar -cr"$MOD" lib.a $TST_DATAROOT/file1.in + ROD ar -tv lib.a \> ar.out + + if grep -q '[rwx-]\{9\} [0-9].*/[0-9].*\s*[0-9].*.*file1.in' ar.out; then +@@ -311,9 +323,9 @@ test15() + + test16() + { +- ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \ +- $TST_DATAROOT/file3.in +- ROD ar -xv lib.a \> ar.out ++ ROD ar -cr"$MOD" lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \ ++ $TST_DATAROOT/file3.in ++ ROD ar -xv"$MOD" lib.a \> ar.out + + printf "x - file1.in\nx - file2.in\nx - file3.in\n" > ar.exp + +@@ -335,8 +347,8 @@ test16() + + test17() + { +- ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in +- ROD ar -xv lib.a file2.in \> ar.out ++ ROD ar -cr"$MOD" lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in ++ ROD ar -xv"$MOD" lib.a file2.in \> ar.out + + printf "x - file2.in\n" > ar.exp + +-- +2.19.0.rc2 + diff --git a/core/recipes-extended/ltp/ltp_20180926.bb b/core/recipes-extended/ltp/ltp_20180926.bb new file mode 100644 index 0000000..11f852a --- /dev/null +++ b/core/recipes-extended/ltp/ltp_20180926.bb @@ -0,0 +1,126 @@ +SUMMARY = "Linux Test Project" +DESCRIPTION = "The Linux Test Project is a joint project with SGI, IBM, OSDL, and Bull with a goal to deliver test suites to the open source community that validate the reliability, robustness, and stability of Linux. The Linux Test Project is a collection of tools for testing the Linux kernel and related features." +HOMEPAGE = "http://ltp.sourceforge.net" +SECTION = "console/utils" +LICENSE = "GPLv2 & GPLv2+ & LGPLv2+ & LGPLv2.1+ & BSD-2-Clause" +LIC_FILES_CHKSUM = "\ + file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://testcases/kernel/controllers/freezer/COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \ + file://testcases/kernel/controllers/freezer/run_freezer.sh;beginline=5;endline=17;md5=86a61d2c042d59836ffb353a21456498 \ + file://testcases/kernel/hotplug/memory_hotplug/COPYING;md5=e04a2e542b2b8629bf9cd2ba29b0fe41 \ + file://testcases/kernel/hotplug/cpu_hotplug/COPYING;md5=e04a2e542b2b8629bf9cd2ba29b0fe41 \ + file://testcases/open_posix_testsuite/COPYING;md5=48b1c5ec633e3e30ec2cf884ae699947 \ + file://testcases/realtime/COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \ + file://utils/benchmark/kernbench-0.42/COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \ + file://utils/ffsb-6.0-rc2/COPYING;md5=c46082167a314d785d012a244748d803 \ +" + +DEPENDS = "attr libaio libcap acl openssl zip-native" +DEPENDS_append_libc-musl = " fts " +EXTRA_OEMAKE_append_libc-musl = " LIBC=musl " + +# since ltp contains x86-64 assembler which uses the frame-pointer register, +# set -fomit-frame-pointer x86-64 to handle cases where optimisation +# is set to -O0 or frame pointers have been enabled by -fno-omit-frame-pointer +# earlier in CFLAGS, etc. +CFLAGS_append_x86-64 = " -fomit-frame-pointer" + +CFLAGS_append_powerpc64 = " -D__SANE_USERSPACE_TYPES__" +CFLAGS_append_mipsarchn64 = " -D__SANE_USERSPACE_TYPES__" +SRCREV = "f424769b1ad9fca477118763f88a6cec98ea2c0a" + +SRC_URI = "git://github.com/linux-test-project/ltp.git \ + file://0004-build-Add-option-to-select-libc-implementation.patch \ + file://0005-kernel-controllers-Link-with-libfts-explicitly-on-mu.patch \ + file://0007-fix-__WORDSIZE-undeclared-when-building-with-musl.patch \ + file://0008-Check-if-__GLIBC_PREREQ-is-defined-before-using-it.patch \ + file://0009-fix-redefinition-of-struct-msgbuf-error-building-wit.patch \ + file://0018-guard-mallocopt-with-__GLIBC__.patch \ + file://0020-getdents-define-getdents-getdents64-only-for-glibc.patch \ + file://0021-Define-_GNU_SOURCE-for-MREMAP_MAYMOVE-definition.patch \ + file://0023-ptrace-Use-int-instead-of-enum-__ptrace_request.patch \ + file://0024-rt_sigaction-rt_sigprocmark-Define-_GNU_SOURCE.patch \ + file://0026-crash01-Define-_GNU_SOURCE.patch \ + file://0028-rt_sigaction.h-Use-sighandler_t-instead-of-__sighand.patch \ + file://0034-periodic_output.patch \ + file://0035-fix-test_proc_kill-hang.patch \ + file://0036-testcases-network-nfsv4-acl-acl1.c-Security-fix-on-s.patch \ + file://0039-commands-ar01-Fix-for-test-in-deterministic-mode.patch \ + file://0001-syscalls-fcntl-make-OFD-command-use-fcntl64-syscall-.patch \ + file://0001-sigwaitinfo01-recent-glibc-calls-syscall-directly.patch \ + file://0001-netns_helper.sh-use-ping-6-when-ping6-is-not-avaliab.patch \ + file://0001-open_posix_testsuite-mmap24-2-Relax-condition-a-bit.patch \ + file://0001-statx-fix-compile-errors.patch \ + file://0001-setrlimit05-Use-another-method-to-get-bad-address.patch \ + " + +S = "${WORKDIR}/git" + +inherit autotools-brokensep + +TARGET_CC_ARCH += "${LDFLAGS}" + +export prefix = "/opt/ltp" +export exec_prefix = "/opt/ltp" + +PACKAGECONFIG[numa] = "--with-numa, --without-numa, numactl," +EXTRA_AUTORECONF += "-I ${S}/testcases/realtime/m4" +EXTRA_OECONF = " --with-power-management-testsuite --with-realtime-testsuite --with-open-posix-testsuite " +# ltp network/rpc test cases ftbfs when libtirpc is found +EXTRA_OECONF += " --without-tirpc " + +do_install(){ + install -d ${D}/opt/ltp/ + oe_runmake DESTDIR=${D} SKIP_IDCHECK=1 install + + # fixup not deploy STPfailure_report.pl to avoid confusing about it fails to run + # as it lacks dependency on some perl moudle such as LWP::Simple + # And this script previously works as a tool for analyzing failures from LTP + # runs on the OSDL's Scaleable Test Platform (STP) and it mainly accesses + # http://khack.osdl.org to retrieve ltp test results run on + # OSDL's Scaleable Test Platform, but now http://khack.osdl.org unaccessible + rm -rf ${D}/opt/ltp/bin/STPfailure_report.pl + + # Copy POSIX test suite into ${D}/opt/ltp/testcases by manual + cp -r testcases/open_posix_testsuite ${D}/opt/ltp/testcases +} + +RDEPENDS_${PN} = "\ + acl \ + at \ + attr \ + bash \ + cpio \ + cronie \ + curl \ + e2fsprogs-mke2fs \ + expect \ + file \ + gawk \ + gzip \ + iproute2 \ + ldd \ + libaio \ + logrotate \ + net-tools \ + perl \ + python-core \ + procps \ + quota \ + unzip \ + util-linux \ + which \ + tar \ +" + +FILES_${PN} += "/opt/ltp/* /opt/ltp/runtest/* /opt/ltp/scenario_groups/* /opt/ltp/testcases/bin/* /opt/ltp/testcases/bin/*/bin/* /opt/ltp/testscripts/* /opt/ltp/testcases/open_posix_testsuite/* /opt/ltp/testcases/open_posix_testsuite/conformance/* /opt/ltp/testcases/open_posix_testsuite/Documentation/* /opt/ltp/testcases/open_posix_testsuite/functional/* /opt/ltp/testcases/open_posix_testsuite/include/* /opt/ltp/testcases/open_posix_testsuite/scripts/* /opt/ltp/testcases/open_posix_testsuite/stress/* /opt/ltp/testcases/open_posix_testsuite/tools/* /opt/ltp/testcases/data/nm01/lib.a /opt/ltp/lib/libmem.a" + +# Avoid stripping some generated binaries otherwise some of the ltp tests such as ldd01 & nm01 fail +INHIBIT_PACKAGE_STRIP_FILES = "/opt/ltp/testcases/bin/nm01 /opt/ltp/testcases/bin/ldd01" +INSANE_SKIP_${PN} += "already-stripped staticdev" + +# Avoid file dependency scans, as LTP checks for things that may or may not +# exist on the running system. For instance it has specific checks for +# csh and ksh which are not typically part of OpenEmbedded systems (but +# can be added via additional layers.) +SKIP_FILEDEPS_${PN} = '1' |