lkml.org 
[lkml]   [2023]   [Jan]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 0/2] selftests/nolibc: small simplification of test development phase
On Tue, Jan 24, 2023 at 12:31:01AM +0700, Ammar Faizi wrote:
> On Mon, Jan 23, 2023 at 06:20:16PM +0100, Willy Tarreau wrote:
> > Ah now I think I understand Paul's question. I didn't know that the
> > userland version was not always provided. I've always had both side
> > by side.
> >
> > > It would be great if we can avoid building qemu from the source. But if
> > > not, let's go with that.
> >
> > As Paul indicated, it's really trouble-free and I think I've only done
> > that since the very first day I started to use QEMU, reason why I probably
> > never noticed that not everything was packaged.
> >
> > Then at least to respond to Paul, it could make sense to add a note that
> > on some distros the userland version might not always be provided and
> > might require a pretty simple rebuild of QEMU.
>
> Ah well...
>
> I figured it out. It turned qemu-user is a different package.
> So I have "qemu-system" installed, but not "qemu-user".
>
> Without building from source, just do this on Ubuntu:
>
> $ sudo apt-get install qemu-user -y
> ...
> Preparing to unpack .../qemu-user_1%3a6.2+dfsg-2ubuntu6.6_amd64.deb ...
> Unpacking qemu-user (1:6.2+dfsg-2ubuntu6.6) ...
> Selecting previously unselected package qemu-user-binfmt.
> Preparing to unpack .../qemu-user-binfmt_1%3a6.2+dfsg-2ubuntu6.6_amd64.deb ...
> Unpacking qemu-user-binfmt (1:6.2+dfsg-2ubuntu6.6) ...
> Setting up qemu-user (1:6.2+dfsg-2ubuntu6.6) ...
> Setting up qemu-user-binfmt (1:6.2+dfsg-2ubuntu6.6) ...
> Processing triggers for man-db (2.10.2-1) ...
>
> $ which qemu-x86_64
> /usr/bin/qemu-x86_64
>
> $ sudo make run-user
> MKDIR sysroot/x86/include
> make[1]: Entering directory '/home/ammarfaizi2/work/linux.work.cc/tools/include/nolibc'
> make[2]: Entering directory '/home/ammarfaizi2/work/linux.work.cc'
> make[2]: Leaving directory '/home/ammarfaizi2/work/linux.work.cc'
> make[2]: Entering directory '/home/ammarfaizi2/work/linux.work.cc'
> INSTALL /home/ammarfaizi2/work/linux.work.cc/tools/testing/selftests/nolibc/sysroot/sysroot/include
> make[2]: Leaving directory '/home/ammarfaizi2/work/linux.work.cc'
> make[1]: Leaving directory '/home/ammarfaizi2/work/linux.work.cc/tools/include/nolibc'
> CC nolibc-test
> 83 test(s) passed.
>
> Sorry for that. I didn't know that they come from different packages.
> It works fine for me now.

I looked for that, but didn't find it, so thank you!

(Yes, I should have used dpkg, but I was lazy.)

Except that when I install Ubuntu 20.04's version, I get this:

------------------------------------------------------------------------

$ sudo make run-user
MKDIR sysroot/x86/include
make[1]: Entering directory '/home/git/linux-rcu/tools/include/nolibc'
make[2]: Entering directory '/home/git/linux-rcu'
make[2]: Leaving directory '/home/git/linux-rcu'
make[2]: Entering directory '/home/git/linux-rcu'
INSTALL /home/git/linux-rcu/tools/testing/selftests/nolibc/sysroot/sysroot/include
make[2]: Leaving directory '/home/git/linux-rcu'
make[1]: Leaving directory '/home/git/linux-rcu/tools/include/nolibc'
CC nolibc-test
32 gettimeofday_null = -1 EFAULT [FAIL]
See all results in /home/git/linux-rcu/tools/testing/selftests/nolibc/run.out

------------------------------------------------------------------------

I have attached run.out.

In contrast, with my hand-built qemu-x86_64, all tests passed.

This might be just a version-related bug, but figured I should let you
guys know.

Thanx, Paul
Running test 'syscall'
0 getpid = 2270744 [OK]
1 getppid = 2270743 [OK]
3 gettid = 2270744 [OK]
5 getpgid_self = 2270584 [OK]
6 getpgid_bad = -1 ESRCH [OK]
7 kill_0 = 0 [OK]
8 kill_CONT = 0 [OK]
9 kill_BADPID = -1 ESRCH [OK]
10 sbrk = 0 [OK]
11 brk = 0 [OK]
12 chdir_root = 0 [OK]
13 chdir_dot = 0 [OK]
14 chdir_blah = -1 ENOENT [OK]
15 chmod_net = 0 [OK]
16 chmod_self = -1 EPERM [OK]
17 chown_self = -1 EPERM [OK]
18 chroot_root = 0 [OK]
19 chroot_blah = -1 ENOENT [OK]
20 chroot_exe = -1 ENOTDIR [OK]
21 close_m1 = -1 EBADF [OK]
22 close_dup = 0 [OK]
23 dup_0 = 3 [OK]
24 dup_m1 = -1 EBADF [OK]
25 dup2_0 = 100 [OK]
26 dup2_m1 = -1 EBADF [OK]
27 dup3_0 = 100 [OK]
28 dup3_m1 = -1 EBADF [OK]
29 execve_root = -1 EACCES [OK]
30 getdents64_root = 672 [OK]
31 getdents64_null = -1 ENOTDIR [OK]
32 gettimeofday_null = -1 EFAULT [FAIL]
34 gettimeofday_bad1 = -1 EFAULT [OK]
35 gettimeofday_bad2 = -1 EFAULT [OK]
36 gettimeofday_bad2 = -1 EFAULT [OK]
38 getpagesize = 0 [OK]
39 ioctl_tiocinq = 0 [OK]
40 ioctl_tiocinq = 0 [OK]
41 link_root1 = -1 EEXIST [OK]
42 link_blah = -1 ENOENT [OK]
43 link_dir = -1 EPERM [OK]
44 link_cross = -1 EXDEV [OK]
45 lseek_m1 = -1 EBADF [OK]
46 lseek_0 = -1 ESPIPE [OK]
47 mkdir_root = -1 EEXIST [OK]
48 open_tty = 3 [OK]
49 open_blah = -1 ENOENT [OK]
50 poll_null = 0 [OK]
51 poll_stdout = 1 [OK]
52 poll_fault = -1 EFAULT [OK]
53 read_badf = -1 EBADF [OK]
54 sched_yield = 0 [OK]
55 select_null = 0 [OK]
56 select_stdout = 1 [OK]
57 select_fault = -1 EFAULT [OK]
58 stat_blah = -1 ENOENT [OK]
59 stat_fault = -1 EFAULT [OK]
60 symlink_root = -1 EEXIST [OK]
61 unlink_root = -1 EISDIR [OK]
62 unlink_blah = -1 ENOENT [OK]
63 wait_child = -1 ECHILD [OK]
64 waitpid_min = -1 ESRCH [OK]
65 waitpid_child = -1 ECHILD [OK]
66 write_badf = -1 EBADF [OK]
67 write_zero = 0 [OK]
Errors during this test: 1

Running test 'stdlib'
0 getenv_TERM = <xterm> [OK]
1 getenv_blah = <(null)> [OK]
2 setcmp_blah_blah = 0 [OK]
3 setcmp_blah_blah2 = -50 [OK]
4 setncmp_blah_blah = 0 [OK]
5 setncmp_blah_blah4 = 0 [OK]
6 setncmp_blah_blah5 = -53 [OK]
7 setncmp_blah_blah6 = -54 [OK]
8 strchr_foobar_o = <oobar> [OK]
9 strchr_foobar_z = <(null)> [OK]
10 strrchr_foobar_o = <obar> [OK]
11 strrchr_foobar_z = <(null)> [OK]
12 memcmp_20_20 = 0 [OK]
13 memcmp_20_60 = -64 [OK]
14 memcmp_60_20 = 64 [OK]
15 memcmp_20_e0 = -192 [OK]
16 memcmp_e0_20 = 192 [OK]
17 memcmp_80_e0 = -96 [OK]
18 memcmp_e0_80 = 96 [OK]
Errors during this test: 0

Total number of errors: 1
Exiting with status 1
\
 
 \ /
  Last update: 2023-03-26 23:52    [W:0.911 / U:0.616 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site