diff --git a/LibOS/shim/test/ltp/ltp.cfg b/LibOS/shim/test/ltp/ltp.cfg index b64071af..4adb860e 100644 --- a/LibOS/shim/test/ltp/ltp.cfg +++ b/LibOS/shim/test/ltp/ltp.cfg @@ -6,6 +6,7 @@ # - utimensat - tries to call utimensat() as part of setup, fails # - tmpfs - tries to mount tmpfs # - copy child - tries to copy a child binary (X_child) to "." +# - kernel config - tries to read kernel .config [DEFAULT] timeout = 30 @@ -26,6 +27,10 @@ skip = yes [acct01] skip = yes +# kernel config +[acct02] +skip = yes + # no add_key() [add_key*] skip = yes @@ -34,19 +39,30 @@ skip = yes [adjtimex*] skip = yes -# 6. bind() on a non-local address, fails with EACCES instead of EADDRNOTAVAIL -[bind01] -must-pass = - 1 - 2 - 3 - 4 - 5 - # getgrgid(user GID) fails with ENOENT [bind02] skip = yes +# aborts in getsockname() -> inet_copy_addr() on AF_UNIX +[bind04] +skip = yes + +# aborts in getsockname() -> inet_copy_addr() on AF_UNIX +[bind05] +skip = yes + +# kernel config +[bind06] +skip = yes + +# no BPF +[bpf_map*] +skip = yes + +# no BPF +[bpf_prog*] +skip = yes + # no cacheflush() [cacheflush*] skip = yes @@ -59,10 +75,9 @@ skip = yes [capset*] skip = yes -# 2. unlink(current dir) fails with EACCES +# tries to mount a filesystem [chdir01] -must-pass = - 1 +skip = yes # symlink test [chdir01A] @@ -99,8 +114,8 @@ skip = yes [clock_adjtime*] skip = yes -# 5. clock_getres(REALTIME) not supported -# 12. clock_getres(-1) succeeds instead of failing with EINVAL +# 11, 33. clock_getres(-1) succeeds instead of failing with EINVAL +# 12..22, 34..44 clock_getres with NULL res, fails with EINVAL [clock_getres01] must-pass = 1 @@ -112,7 +127,16 @@ must-pass = 8 9 10 - 11 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 # 1. clock_gettime(MAX_CLOCKS) succeeds instead of failing with EINVAL # 2. clock_gettime(MAX_CLOCKS + 1) succeeds instead of failing with EINVAL @@ -127,6 +151,14 @@ must-pass = 9 10 +# kernel config +[clock_gettime03] +skip = yes + +# measures difference between successive reading, fails from time to time because it's >5 ms +[clock_gettime04] +skip = yes + # 1. nanosleep with tv_nsec = -1 succeeds instead of failing with EINVAL # 2. nanosleep with tv_nsec = 1e9 succeeds instead of failing with EINVAL # 4. after SIGINT, remaining time > requested time @@ -140,6 +172,14 @@ must-pass = [clock_nanosleep02] skip = yes +# kernel config +[clock_nanosleep03] +skip = yes + +# clock_nanosleep not supported with non-zero flags (CLOCK_MONOTONIC, CLOCK_REALTIME), fails with EINVAL +[clock_nanosleep04] +skip = yes + # no clock_settime() [clock_settime*] skip = yes @@ -168,6 +208,14 @@ skip = yes [clone09] skip = yes +# no clone3() +[clone3*] +skip = yes + +# opens /proc/sys/kernel/tainted +[connect02] +skip = yes + # no copy_file_range() [copy_file_range*] skip = yes @@ -548,6 +596,20 @@ skip = yes [fcntl36_64] skip = yes +# no F_GETPIPE_SZ +[fcntl37] +skip = yes + +[fcntl37_64] +skip = yes + +# no F_SETSIG +[fcntl38] +skip = yes + +[fcntl38_64] +skip = yes + # 2. fdatasync() on /dev/null passes instead of failing with EINVAL [fdatasync02] must-pass = @@ -600,10 +662,26 @@ skip = yes [fremovexattr*] skip = yes +# mounts a filesystem +[fsconfig*] +skip = yes + # no fsetxattr() [fsetxattr*] skip = yes +# mounts a filesystem +[fsmount*] +skip = yes + +# mounts a filesystem +[fsopen*] +skip = yes + +# mounts a filesystem +[fspick*] +skip = yes + # creates a file with 0644, but fstat() returns 0600 [fstat02] skip = yes @@ -611,6 +689,13 @@ skip = yes [fstat02_64] skip = yes +# TBROK: Test 0 haven't reported results +[fstat03] +skip = yes + +[fstat03_64] +skip = yes + # no fstatfs() [fstatfs*] skip = yes @@ -623,16 +708,32 @@ skip = yes [fsync02] skip = yes -# 2. fsync() on a pipe returns EROFS, not EINVAL +# 1. fsync() on a pipe returns EROFS, not EINVAL +# 2. fsync() on a socket returns EROFS, not EINVAL +# 5. fsync() on a fifo returns EROFS, not EINVAL [fsync03] timeout = 40 must-pass = - 1 + 3 + 4 # tries to mount a filesystem [fsync04] skip = yes +# 3. ftruncate() with size -1 returns EINVAL, not E2BIG +[ftruncate03] +must-pass = + 1 + 2 + 4 + +[ftruncate03_64] +must-pass = + 1 + 2 + 4 + # no statfs() [ftruncate04] skip = yes @@ -640,6 +741,10 @@ skip = yes [ftruncate04_64] skip = yes +# opens /proc/PID/stat +[futex_cmp_requeue01] +skip = yes + # no shm_open() [futex_wait02] skip = yes @@ -788,6 +893,10 @@ skip = yes [io_getevents*] skip = yes +# no io_pgetevents() +[io_pgetevents*] +skip = yes + # no io_setup() [io_setup*] skip = yes @@ -796,6 +905,10 @@ skip = yes [io_submit*] skip = yes +# no io_uring() +[io_uring*] +skip = yes + # runs test_ioctl, a shell script [ioctl01_02] skip = yes @@ -824,10 +937,22 @@ skip = yes [ioctl08] skip = yes +# looks for "parted" binary +[ioctl09] +skip = yes + +# mounts a filesystem +[ioctl_loop*] +skip = yes + # no namespaces (/proc/self/ns, requires kernel 4.9+) [ioctl_ns*] skip = yes +# tries to mount a SCSI device +[ioctl_sg*] +skip = yes + # no ioperm() [ioperm*] skip = yes @@ -836,6 +961,14 @@ skip = yes [iopl*] skip = yes +# no ioprio_get() +[ioprio_get*] +skip = yes + +# no ioprio_set() +[ioprio_set*] +skip = yes + # no kcmp() [kcmp*] skip = yes @@ -848,6 +981,10 @@ skip = yes [kill02] skip = yes +# opens /proc/sys/kernel/pid_max +[kill03] +skip = yes + # no shmget() [kill05] skip = yes @@ -869,10 +1006,17 @@ timeout = 80 [kill10] skip = yes +[kill11] +skip = yes + # no lchown() [lchown*] skip = yes +# no clock_gettime(CLOCK_REALTIME), adjtimex() +[leapsec01] +skip = yes + # no lgetxattr() [lgetxattr*] skip = yes @@ -975,7 +1119,8 @@ skip = yes [madvise10] skip = yes -[mbind01] +# tests require libnuma +[mbind*] skip = yes [membarrier01] @@ -989,9 +1134,16 @@ skip = yes [migrate_pages*] skip = yes +# mincore() has dummy implementation, only mincore01 passes [mincore02] skip = yes +[mincore03] +skip = yes + +[mincore04] +skip = yes + [mkdir02] skip = yes @@ -1095,6 +1247,14 @@ skip = yes [mmap16] skip = yes +# kernel 4.17 or newer +[mmap17] +skip = yes + +# should fail when growing the stack over a guard page +[mmap18] +skip = yes + [modify_ldt01] skip = yes @@ -1122,6 +1282,10 @@ skip = yes [mount06] skip = yes +# no move_mount() +[move_mount*] +skip = yes + # no move_pages() [move_pages*] skip = yes @@ -1179,6 +1343,10 @@ skip = yes [msgctl04] skip = yes +# TCONF: test requires struct msqid64_ds to have the time_high fields +[msgctl05] +skip = yes + [msgctl12] skip = yes @@ -1191,6 +1359,18 @@ must-pass = [msgget03] skip = yes +# kernel config +[msgget04] +skip = yes + +# kernel config +[msgget05] +skip = yes + +# no msgctl(IPC_STAT) +[msgrcv01] +skip = yes + [msgrcv02] skip = yes @@ -1333,6 +1513,10 @@ skip = yes [open14] skip = yes +# no open_tree() +[open_tree*] +skip = yes + # Requires symlink() support [openat02] skip = yes @@ -1341,6 +1525,10 @@ skip = yes [openat03] skip = yes +# no openat2() +[openat2*] +skip = yes + [pause01] skip = yes @@ -1359,6 +1547,14 @@ skip = yes [personality01] skip = yes +# no pidfd_open() +[pidfd_open*] +skip = yes + +# no pidfd_send_signal() +[pidfd_send_signal*] +skip = yes + [pipe02] skip = yes @@ -1378,12 +1574,28 @@ skip = yes must-pass = 1 +# no F_GETPIPE_SZ +[pipe12] +skip = yes + +# closes last writer and waits for readers to wake up, times out +[pipe13] +skip = yes + [pipe2_02] skip = yes +# fails to set O_NONBLOCK by using pipe2(fds, O_NONBLOCK) +[pipe2_04] +skip = yes + [pivot_root01] skip = yes +# no pkey_alloc() +[pkey*] +skip = yes + [posix_fadvise01] skip = yes @@ -1415,9 +1627,37 @@ skip = yes [prctl01] skip = yes +# no capget() +[prctl02] +skip = yes + [prctl03] skip = yes +# no PR_GET/SET_SECCOMP +[prctl04] +skip = yes + +# no PR_SET_NAME +[prctl05] +skip = yes + +# mounts filesystem +[prctl06] +skip = yes + +# no PR_CAMP_AMBIENT +[prctl07] +skip = yes + +# no PR_TIMER_SETSLACEK +[prctl08] +skip = yes + +# no PR_TIMER_SETSLACK +[prctl09] +skip = yes + [pread01] timeout = 40 @@ -1464,6 +1704,13 @@ skip = yes [preadv202_64] skip = yes +# mounts filesystem +[preadv203] +skip = yes + +[preadv203_64] +skip = yes + [process_vm_readv01] skip = yes @@ -1485,19 +1732,8 @@ skip = yes [prot_hsymlinks] skip = yes -[ptrace01] -skip = yes - -[ptrace03] -skip = yes - -[ptrace04] -skip = yes - -[ptrace05] -skip = yes - -[ptrace07] +# no ptrace() +[ptrace*] skip = yes [pwrite01_64] @@ -1551,13 +1787,8 @@ skip = yes [qmm01] skip = yes -[quotactl01] -skip = yes - -[quotactl02] -skip = yes - -[quotactl03] +# no quotactl() +[quotactl*] skip = yes [read02] @@ -1593,8 +1824,18 @@ skip = yes [readlinkat02] skip = yes +# 9. readv() with zero-len buffer fails with EINVAL [readv01] timeout = 40 +must-pass = + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 [readv03] skip = yes @@ -1856,6 +2097,10 @@ skip = yes [semctl07] skip = yes +# TCONF: test requires struct semid64_ds to have the time_high fields +[semctl08] +skip = yes + [semget01] skip = yes @@ -1881,6 +2126,10 @@ must-pass = 2 3 +# no MSG_MORE, send() fails with EOPNOTSUPP +[send02] +skip = yes + [sendfile02] skip = yes @@ -1920,12 +2169,22 @@ skip = yes [sendfile09_64] skip = yes +# EINVAL from native sendmsg() +# also, shim_sendmmsg() has wrong vlen handling? +# issue: https://github.com/oscarlab/graphene/issues/1931 +[sendmmsg01] +skip = yes + [sendmsg01] skip = yes [sendmsg02] skip = yes +# opens /proc/sys/kernel/tainted +[sendmsg03] +skip = yes + [sendto01] must-pass = 1 @@ -1934,6 +2193,14 @@ must-pass = 4 7 +# kernel config +[sendto03] +skip = yes + +# no set_mempolicy() +[set_mempolicy*] +skip = yes + [set_robust_list01] skip = yes @@ -2026,6 +2293,11 @@ skip = yes [setgroups04_16] skip = yes +# runs sethostname("test_dom"), then gethostname() returns "test_domt". +# issue: https://github.com/oscarlab/graphene/issues/1932 +[sethostname01] +skip = yes + # Requires seteuid() support [sethostname03] skip = yes @@ -2104,10 +2376,23 @@ skip = yes must-pass = 2 -# this test fails on Glibc 2.31; see https://github.com/linux-test-project/ltp/issues/646 +# kernel config +[setsockopt05] +skip = yes + +# kernel config +[setsockopt06] +skip = yes + +# kernel config +[setsockopt07] +skip = yes + +# no clock_settime() [settimeofday01] skip = yes +# no capget() (checks for CAP_SYS_TIME) [settimeofday02] skip = yes @@ -2210,7 +2495,8 @@ must-pass = [socket02] timeout = 40 -[socketcall01] +# no socketcall() +[socketcall*] skip = yes [socketpair01] @@ -2228,16 +2514,8 @@ timeout = 40 must-pass = 1 -[splice01] -skip = yes - -[splice03] -skip = yes - -[splice04] -skip = yes - -[splice05] +# no splice() +[splice*] skip = yes [ssetmask01] @@ -2404,10 +2682,8 @@ skip = yes [sysfs06] skip = yes -[sysinfo01] -skip = yes - -[sysinfo02] +# no sysinfo() +[sysinfo*] skip = yes # most of them are shell scripts @@ -2430,28 +2706,26 @@ skip = yes [tgkill03] skip = yes +# no timer_create() +[timer_create*] +skip = yes + +# no timer_delete() +[timer_delete*] +skip = yes + [timer_getoverrun01] skip = yes [timer_gettime01] skip = yes -[timerfd01] +# no timer_settime() +[timer_settime*] skip = yes -[timerfd02] -skip = yes - -[timerfd03] -skip = yes - -[timerfd_create01] -skip = yes - -[timerfd_gettime01] -skip = yes - -[timerfd_settime01] +# no timerfd +[timerfd*] skip = yes [times03] @@ -2562,10 +2836,8 @@ skip = yes [vhangup02] skip = yes -[vmsplice01] -skip = yes - -[vmsplice02] +# no vmsplice() +[vmsplice*] skip = yes # tries to open '/proc/2/stat'