diff options
Diffstat (limited to '')
| -rw-r--r-- | results/classifier/118/none/1791 | 70 | ||||
| -rw-r--r-- | results/classifier/118/none/1791763 | 59 | ||||
| -rw-r--r-- | results/classifier/118/none/1791796 | 1155 | ||||
| -rw-r--r-- | results/classifier/118/none/1791947 | 86 |
4 files changed, 1370 insertions, 0 deletions
diff --git a/results/classifier/118/none/1791 b/results/classifier/118/none/1791 new file mode 100644 index 000000000..0a3883ddf --- /dev/null +++ b/results/classifier/118/none/1791 @@ -0,0 +1,70 @@ +x86: 0.745 +graphic: 0.710 +user-level: 0.582 +device: 0.575 +semantic: 0.514 +virtual: 0.466 +ppc: 0.401 +socket: 0.350 +mistranslation: 0.339 +PID: 0.338 +debug: 0.335 +arm: 0.327 +vnc: 0.325 +architecture: 0.318 +performance: 0.311 +files: 0.301 +risc-v: 0.298 +permissions: 0.280 +network: 0.254 +register: 0.230 +peripherals: 0.219 +kernel: 0.212 +assembly: 0.197 +boot: 0.189 +hypervisor: 0.185 +i386: 0.158 +VMM: 0.149 +KVM: 0.130 +TCG: 0.117 + +qemu 8.1.0 rc tarballs are broken, missing subproject content +Description of problem: +The released tarballs for 8.1.0 rc releases (both rc0 adn rc1) are missing the +subproject content. Only the submodule content appears present +Steps to reproduce: +1. `wget http://download.qemu.org/qemu-8.1.0-rc1.tar.xz` +2. `tar Jxvf qemu-8.1.0-rc1.tar.xz` +3. `cd qemu-8.1.0-rc1` +4. `./configure --target-list=x86_64-softmmu --disable-download` + +``` +Using './build' as the directory for build output + +ERROR: missing subprojects + +This is not a GIT checkout but subproject content appears to +be missing. Do not use 'git archive' or GitHub download links +to acquire QEMU source archives. Non-GIT builds are only +supported with source archives linked from: + + https://www.qemu.org/download/#source + +Developers working with GIT can use scripts/archive-source.sh +if they need to create valid source archives. + +``` + +The missing subprojects are + +``` + berkeley-softfloat-3 + berkeley-testfloat-3 + dtc + keycodemapdb + libvfio-user +``` + +If I use 'make-release . 8.1.0-rc1' to create a tarball from git, it has all the expected content. + +IOW, either the release tarballs are not being created using 'make-release', or there's something broken with 'make-release' in some scenarios diff --git a/results/classifier/118/none/1791763 b/results/classifier/118/none/1791763 new file mode 100644 index 000000000..a7342efdf --- /dev/null +++ b/results/classifier/118/none/1791763 @@ -0,0 +1,59 @@ +ppc: 0.614 +device: 0.505 +kernel: 0.482 +architecture: 0.459 +debug: 0.427 +semantic: 0.389 +user-level: 0.386 +performance: 0.379 +network: 0.367 +register: 0.345 +vnc: 0.328 +hypervisor: 0.302 +virtual: 0.297 +graphic: 0.294 +socket: 0.283 +risc-v: 0.263 +peripherals: 0.253 +files: 0.247 +PID: 0.236 +VMM: 0.228 +TCG: 0.211 +permissions: 0.208 +x86: 0.206 +mistranslation: 0.195 +boot: 0.195 +i386: 0.188 +arm: 0.134 +assembly: 0.113 +KVM: 0.089 + +broken signal handling in nios2 user-mode emulation + +This bug is against the 3.0 release. + +It appears that the signal handling parts of the nios2 user-mode emulation have never really been completed or tested. Some examples of failing tests from the GCC testsuite are gcc.dg/pr78185.c and gcc.dg/cleanup-10.c. + +Some problems I've identified and tried to fix with the attached patch are: + +- Code copied from the Linux kernel wasn't adjusted to differentiate between host and target data types and address spaces. + +- The sigaltstack() system call returns EINVAL because fields are listed in the wrong order in struct target_sigaltstack. + +With this patch, the system calls to set up the signal handler are returning successfully, but the handler isn't being invoked, so something is still wrong. I think I need another pair of eyes to look over this code. + + + +The QEMU project is currently considering to move its bug tracking to another system. For this we need to know which bugs are still valid and which could be closed already. Thus we are setting older bugs to "Incomplete" now. +If you still think this bug report here is valid, then please switch the state back to "New" within the next 60 days, otherwise this report will be marked as "Expired". Or mark it as "Fix Released" if the problem has been solved with a newer version of QEMU already. Thank you and sorry for the inconvenience. + +A quick eyeball of the patch and the current QEMU tree indicates that at least some of the bugs it's trying to fix still exist (notably a lot of use of "long" in various target_* structures, which should not be using types with a width dependent on the host system.) + + +This is an automated cleanup. This bug report has been moved to QEMU's +new bug tracker on gitlab.com and thus gets marked as 'expired' now. +Please continue with the discussion here: + + https://gitlab.com/qemu-project/qemu/-/issues/261 + + diff --git a/results/classifier/118/none/1791796 b/results/classifier/118/none/1791796 new file mode 100644 index 000000000..ddd73146e --- /dev/null +++ b/results/classifier/118/none/1791796 @@ -0,0 +1,1155 @@ +user-level: 0.591 +mistranslation: 0.575 +risc-v: 0.563 +register: 0.558 +debug: 0.554 +KVM: 0.548 +permissions: 0.536 +semantic: 0.535 +VMM: 0.534 +device: 0.531 +PID: 0.527 +peripherals: 0.524 +graphic: 0.524 +TCG: 0.523 +hypervisor: 0.522 +ppc: 0.520 +network: 0.517 +performance: 0.517 +x86: 0.514 +assembly: 0.514 +vnc: 0.510 +arm: 0.505 +kernel: 0.500 +architecture: 0.500 +virtual: 0.495 +socket: 0.481 +files: 0.476 +boot: 0.466 +i386: 0.463 + +unimplemented thread syscalls in nios2 user-mode emulation + +This bug is reported against the 3.0 release. + +I noticed that the GCC test gcc.dg/torture/tls/tls-test.c is failing when run in user-mode qemu for nios2 target. The problem appears to be that the thread-related syscalls are unimplemented in qemu. Here is output from running with -strace: + +22484 brk(NULL) = 0x00005000 +22484 uname(0x7fffef5a) = 0 +22484 faccessat(AT_FDCWD,"/etc/ld.so.preload",R_OK,0x5) = -1 errno=2 (No such file or directory) +22484 openat(AT_FDCWD,"/scratch/sandra/nios2-linux-trunk3/obj/test-2018.11-999999-nios2-linux-gnu/host-x86_64-linux-gnu/sourceryg++-2018.11/nios2-linux-gnu/libc/./lib/./tls/libm.so.6",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 errno=2 (No such file or directory) +22484 fstatat64(AT_FDCWD,"/scratch/sandra/nios2-linux-trunk3/obj/test-2018.11-999999-nios2-linux-gnu/host-x86_64-linux-gnu/sourceryg++-2018.11/nios2-linux-gnu/libc/./lib/./tls",0x7fffe870,0) = -1 errno=2 (No such file or directory) +22484 openat(AT_FDCWD,"/scratch/sandra/nios2-linux-trunk3/obj/test-2018.11-999999-nios2-linux-gnu/host-x86_64-linux-gnu/sourceryg++-2018.11/nios2-linux-gnu/libc/./lib/./libm.so.6",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 +22484 read(3,0x7fffe954,512) = 512 +22484 fstat64(3,0x7fffe870) = 0 +22484 mmap2(NULL,803596,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x7f716000 +22484 mmap2(0x7f7d8000,12288,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0xc1) = 0x7f7d8000 +22484 close(3) = 0 +22484 openat(AT_FDCWD,"/scratch/sandra/nios2-linux-trunk3/obj/test-2018.11-999999-nios2-linux-gnu/host-x86_64-linux-gnu/sourceryg++-2018.11/nios2-linux-gnu/libc/./lib/./libpthread.so.0",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 +22484 read(3,0x7fffe948,512) = 512 +22484 mmap2(NULL,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x7f714000 +22484 fstat64(3,0x7fffe864) = 0 +22484 mmap2(NULL,120700,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x7f6f6000 +22484 mprotect(0x7f70e000,4096,PROT_NONE) = 0 +22484 mmap2(0x7f70f000,12288,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x18) = 0x7f70f000 +22484 mmap2(0x7f712000,6012,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x7f712000 +22484 close(3) = 0 +22484 openat(AT_FDCWD,"/scratch/sandra/nios2-linux-trunk3/obj/test-2018.11-999999-nios2-linux-gnu/host-x86_64-linux-gnu/sourceryg++-2018.11/nios2-linux-gnu/libc/./lib/./libc.so.6",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 +22484 read(3,0x7fffe93c,512) = 512 +22484 fstat64(3,0x7fffe858) = 0 +22484 mmap2(NULL,1491048,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x7f589000 +22484 mmap2(0x7f6de000,86016,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x154) = 0x7f6de000 +22484 mmap2(0x7f6f3000,8296,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x7f6f3000 +22484 close(3) = 0 +22484 mprotect(0x7f6de000,65536,PROT_READ) = 0 +22484 mprotect(0x7f70f000,8192,PROT_READ) = 0 +22484 mprotect(0x7f7d8000,4096,PROT_READ) = 0 +22484 mprotect(0x00003000,4096,PROT_READ) = 0 +22484 mprotect(0x7f7fc000,4096,PROT_READ) = 0 +22484 set_tid_address(2138131700,2147480980,2147480988,2147480988,87148,47) = 22484 +22484 set_robust_list(2138131708,12,2147480988,0,87148,47) = -1 errno=38 (Function not implemented) +22484 rt_sigaction(32,0x7ffff36c,NULL) = 0 +22484 rt_sigaction(33,0x7ffff36c,NULL) = -1 errno=22 (Invalid argument) +22484 rt_sigprocmask(SIG_UNBLOCK,0x7ffff4a8,NULL) = 0 +22484 getrlimit(3,2147480732,3,0,62512,47) = 0 +22484 mmap2(NULL,8392704,PROT_NONE,MAP_PRIVATE|MAP_ANONYMOUS|0x20000,-1,0) = 0x7ed88000 +22484 mprotect(0x7ed89000,8388608,PROT_READ|PROT_WRITE) = 0 +22484 brk(NULL) = 0x00005000 +22484 brk(0x00026000) = 0x00026000 +22484 clone(CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID,child_stack=0x7f588018,parent_tidptr=0x7f5884fc,tls=0x7f58f928,child_tidptr=0x7f5884fc) = 22503 +22484 io_setup(4001536,2136506392,2136507644,2136507644,2136537384,4100) = -1 errno=38 (Function not implemented) +22484 futex(0x7f5884fc,FUTEX_WAIT,22503,NULL,NULL,0)22484 set_robust_list(2136507652,12,0,4100,2136508076,4100) = -1 errno=38 (Function not implemented) +22484 madvise(2128117760,8372224,4,2136507672,528660,4100) = 0 +22484 exit(0) + = 0 +22484 fstat64(1,0x7fffef48) = 0 +22484 write(1,0x51e8,42)FAIL: a= 10, thr_a = 10 Addr = 0x7f715120 + = 42 +22484 exit_group(1) +sandra@build2-trusty-cs:/scratch/sandra/nios2-linux-trunk3$ +22484 mmap2(NULL,1491048,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x7f589000 +22484 mmap2(0x7f6de000,86016,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x154) = 0x7f6de000 +22484 mmap2(0x7f6f3000,8296,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x7f6f3000 +22484 close(3) = 0 +22484 mprotect(0x7f6de000,65536,PROT_READ) = 0 +22484 mprotect(0x7f70f000,8192,PROT_READ) = 0 +22484 mprotect(0x7f7d8000,4096,PROT_READ) = 0 +22484 mprotect(0x00003000,4096,PROT_READ) = 0 +22484 mprotect(0x7f7fc000,4096,PROT_READ) = 0 +22484 set_tid_address(2138131700,2147480980,2147480988,2147480988,87148,47) = 22484 +22484 set_robust_list(2138131708,12,2147480988,0,87148,47) = -1 errno=38 (Function not implemented) +22484 rt_sigaction(32,0x7ffff36c,NULL) = 0 +22484 rt_sigaction(33,0x7ffff36c,NULL) = -1 errno=22 (Invalid argument) +22484 rt_sigprocmask(SIG_UNBLOCK,0x7ffff4a8,NULL) = 0 +22484 getrlimit(3,2147480732,3,0,62512,47) = 0 +22484 mmap2(NULL,8392704,PROT_NONE,MAP_PRIVATE|MAP_ANONYMOUS|0x20000,-1,0) = 0x7ed88000 +22484 mprotect(0x7ed89000,8388608,PROT_READ|PROT_WRITE) = 0 +22484 brk(NULL) = 0x00005000 +22484 brk(0x00026000) = 0x00026000 +22484 clone(CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID,child_stack=0x7f588018,parent_tidptr=0x7f5884fc,tls=0x7f58f928,child_tidptr=0x7f5884fc) = 22503 +22484 io_setup(4001536,2136506392,2136507644,2136507644,2136537384,4100) = -1 errno=38 (Function not implemented) +22484 futex(0x7f5884fc,FUTEX_WAIT,22503,NULL,NULL,0)22484 set_robust_list(2136507652,12,0,4100,2136508076,4100) = -1 errno=38 (Function not implemented) +22484 madvise(2128117760,8372224,4,2136507672,528660,4100) = 0 +22484 exit(0) + = 0 +22484 fstat64(1,0x7fffef48) = 0 +22484 write(1,0x51e8,42)FAIL: a= 10, thr_a = 10 Addr = 0x7f715120 + = 42 +22484 exit_group(1) +sandra@build2-trusty-cs:/scratch/sandra/nios2-linux-trunk3$ +22484 mmap2(NULL,1491048,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x7f589000 +22484 mmap2(0x7f6de000,86016,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x154) = 0x7f6de000 +22484 mmap2(0x7f6f3000,8296,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x7f6f3000 +22484 close(3) = 0 +22484 mprotect(0x7f6de000,65536,PROT_READ) = 0 +22484 mprotect(0x7f70f000,8192,PROT_READ) = 0 +22484 mprotect(0x7f7d8000,4096,PROT_READ) = 0 +22484 mprotect(0x00003000,4096,PROT_READ) = 0 +22484 mprotect(0x7f7fc000,4096,PROT_READ) = 0 +22484 set_tid_address(2138131700,2147480980,2147480988,2147480988,87148,47) = 22484 +22484 set_robust_list(2138131708,12,2147480988,0,87148,47) = -1 errno=38 (Function not implemented) +22484 rt_sigaction(32,0x7ffff36c,NULL) = 0 +22484 rt_sigaction(33,0x7ffff36c,NULL) = -1 errno=22 (Invalid argument) +22484 rt_sigprocmask(SIG_UNBLOCK,0x7ffff4a8,NULL) = 0 +22484 getrlimit(3,2147480732,3,0,62512,47) = 0 +22484 mmap2(NULL,8392704,PROT_NONE,MAP_PRIVATE|MAP_ANONYMOUS|0x20000,-1,0) = 0x7ed88000 +22484 mprotect(0x7ed89000,8388608,PROT_READ|PROT_WRITE) = 0 +22484 brk(NULL) = 0x00005000 +22484 brk(0x00026000) = 0x00026000 +22484 clone(CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID,child_stack=0x7f588018,parent_tidptr=0x7f5884fc,tls=0x7f58f928,child_tidptr=0x7f5884fc) = 22503 +22484 io_setup(4001536,2136506392,2136507644,2136507644,2136537384,4100) = -1 errno=38 (Function not implemented) +22484 futex(0x7f5884fc,FUTEX_WAIT,22503,NULL,NULL,0)22484 set_robust_list(2136507652,12,0,4100,2136508076,4100) = -1 errno=38 (Function not implemented) +22484 madvise(2128117760,8372224,4,2136507672,528660,4100) = 0 +22484 exit(0) + = 0 +22484 fstat64(1,0x7fffef48) = 0 +22484 write(1,0x51e8,42)FAIL: a= 10, thr_a = 10 Addr = 0x7f715120 + = 42 +22484 exit_group(1) + +Note that set_robust_list and clone are reported as unimplemented. + +I've reported the problems with the signal syscalls separately here. +https://bugs.launchpad.net/qemu/+bug/1791763 + + +Sandra Loosemore <email address hidden> writes: + +> Public bug reported: +> +> This bug is reported against the 3.0 release. +> +> I noticed that the GCC test gcc.dg/torture/tls/tls-test.c is failing +> when run in user-mode qemu for nios2 target. The problem appears to be +> that the thread-related syscalls are unimplemented in qemu. Here is +> output from running with -strace: + +One thing that would help in better supporting NIOS is if we could add +support for building linux-user tests for it in test/tcg. For this we +need a distribution that ships a decent cross compiler or create a +docker recipe that packages it up so we can build and run the tests. + +Are you just building GCC straight from source or can you point to a +recommended location for a decent packaged gcc? + +> +> 22484 brk(NULL) = 0x00005000 +> 22484 uname(0x7fffef5a) = 0 +> 22484 faccessat(AT_FDCWD,"/etc/ld.so.preload",R_OK,0x5) = -1 errno=2 (No such file or directory) +> 22484 openat(AT_FDCWD,"/scratch/sandra/nios2-linux-trunk3/obj/test-2018.11-999999-nios2-linux-gnu/host-x86_64-linux-gnu/sourceryg++-2018.11/nios2-linux-gnu/libc/./lib/./tls/libm.so.6",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 errno=2 (No such file or directory) +> 22484 fstatat64(AT_FDCWD,"/scratch/sandra/nios2-linux-trunk3/obj/test-2018.11-999999-nios2-linux-gnu/host-x86_64-linux-gnu/sourceryg++-2018.11/nios2-linux-gnu/libc/./lib/./tls",0x7fffe870,0) = -1 errno=2 (No such file or directory) +> 22484 openat(AT_FDCWD,"/scratch/sandra/nios2-linux-trunk3/obj/test-2018.11-999999-nios2-linux-gnu/host-x86_64-linux-gnu/sourceryg++-2018.11/nios2-linux-gnu/libc/./lib/./libm.so.6",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 +> 22484 read(3,0x7fffe954,512) = 512 +> 22484 fstat64(3,0x7fffe870) = 0 +> 22484 mmap2(NULL,803596,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x7f716000 +> 22484 mmap2(0x7f7d8000,12288,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0xc1) = 0x7f7d8000 +> 22484 close(3) = 0 +> 22484 openat(AT_FDCWD,"/scratch/sandra/nios2-linux-trunk3/obj/test-2018.11-999999-nios2-linux-gnu/host-x86_64-linux-gnu/sourceryg++-2018.11/nios2-linux-gnu/libc/./lib/./libpthread.so.0",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 +> 22484 read(3,0x7fffe948,512) = 512 +> 22484 mmap2(NULL,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x7f714000 +> 22484 fstat64(3,0x7fffe864) = 0 +> 22484 mmap2(NULL,120700,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x7f6f6000 +> 22484 mprotect(0x7f70e000,4096,PROT_NONE) = 0 +> 22484 mmap2(0x7f70f000,12288,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x18) = 0x7f70f000 +> 22484 mmap2(0x7f712000,6012,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x7f712000 +> 22484 close(3) = 0 +> 22484 openat(AT_FDCWD,"/scratch/sandra/nios2-linux-trunk3/obj/test-2018.11-999999-nios2-linux-gnu/host-x86_64-linux-gnu/sourceryg++-2018.11/nios2-linux-gnu/libc/./lib/./libc.so.6",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 +> 22484 read(3,0x7fffe93c,512) = 512 +> 22484 fstat64(3,0x7fffe858) = 0 +> 22484 mmap2(NULL,1491048,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x7f589000 +> 22484 mmap2(0x7f6de000,86016,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x154) = 0x7f6de000 +> 22484 mmap2(0x7f6f3000,8296,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x7f6f3000 +> 22484 close(3) = 0 +> 22484 mprotect(0x7f6de000,65536,PROT_READ) = 0 +> 22484 mprotect(0x7f70f000,8192,PROT_READ) = 0 +> 22484 mprotect(0x7f7d8000,4096,PROT_READ) = 0 +> 22484 mprotect(0x00003000,4096,PROT_READ) = 0 +> 22484 mprotect(0x7f7fc000,4096,PROT_READ) = 0 +> 22484 set_tid_address(2138131700,2147480980,2147480988,2147480988,87148,47) = 22484 +> 22484 set_robust_list(2138131708,12,2147480988,0,87148,47) = -1 errno=38 (Function not implemented) +> 22484 rt_sigaction(32,0x7ffff36c,NULL) = 0 +> 22484 rt_sigaction(33,0x7ffff36c,NULL) = -1 errno=22 (Invalid argument) +> 22484 rt_sigprocmask(SIG_UNBLOCK,0x7ffff4a8,NULL) = 0 +> 22484 getrlimit(3,2147480732,3,0,62512,47) = 0 +> 22484 mmap2(NULL,8392704,PROT_NONE,MAP_PRIVATE|MAP_ANONYMOUS|0x20000,-1,0) = 0x7ed88000 +> 22484 mprotect(0x7ed89000,8388608,PROT_READ|PROT_WRITE) = 0 +> 22484 brk(NULL) = 0x00005000 +> 22484 brk(0x00026000) = 0x00026000 +> 22484 clone(CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID,child_stack=0x7f588018,parent_tidptr=0x7f5884fc,tls=0x7f58f928,child_tidptr=0x7f5884fc) = 22503 +> 22484 io_setup(4001536,2136506392,2136507644,2136507644,2136537384,4100) = -1 errno=38 (Function not implemented) +> 22484 futex(0x7f5884fc,FUTEX_WAIT,22503,NULL,NULL,0)22484 set_robust_list(2136507652,12,0,4100,2136508076,4100) = -1 errno=38 (Function not implemented) +> 22484 madvise(2128117760,8372224,4,2136507672,528660,4100) = 0 +> 22484 exit(0) +> = 0 +> 22484 fstat64(1,0x7fffef48) = 0 +> 22484 write(1,0x51e8,42)FAIL: a= 10, thr_a = 10 Addr = 0x7f715120 +> = 42 +> 22484 exit_group(1) +> sandra@build2-trusty-cs:/scratch/sandra/nios2-linux-trunk3$ +> 22484 mmap2(NULL,1491048,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x7f589000 +> 22484 mmap2(0x7f6de000,86016,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x154) = 0x7f6de000 +> 22484 mmap2(0x7f6f3000,8296,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x7f6f3000 +> 22484 close(3) = 0 +> 22484 mprotect(0x7f6de000,65536,PROT_READ) = 0 +> 22484 mprotect(0x7f70f000,8192,PROT_READ) = 0 +> 22484 mprotect(0x7f7d8000,4096,PROT_READ) = 0 +> 22484 mprotect(0x00003000,4096,PROT_READ) = 0 +> 22484 mprotect(0x7f7fc000,4096,PROT_READ) = 0 +> 22484 set_tid_address(2138131700,2147480980,2147480988,2147480988,87148,47) = 22484 +> 22484 set_robust_list(2138131708,12,2147480988,0,87148,47) = -1 errno=38 (Function not implemented) +> 22484 rt_sigaction(32,0x7ffff36c,NULL) = 0 +> 22484 rt_sigaction(33,0x7ffff36c,NULL) = -1 errno=22 (Invalid argument) +> 22484 rt_sigprocmask(SIG_UNBLOCK,0x7ffff4a8,NULL) = 0 +> 22484 getrlimit(3,2147480732,3,0,62512,47) = 0 +> 22484 mmap2(NULL,8392704,PROT_NONE,MAP_PRIVATE|MAP_ANONYMOUS|0x20000,-1,0) = 0x7ed88000 +> 22484 mprotect(0x7ed89000,8388608,PROT_READ|PROT_WRITE) = 0 +> 22484 brk(NULL) = 0x00005000 +> 22484 brk(0x00026000) = 0x00026000 +> 22484 clone(CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID,child_stack=0x7f588018,parent_tidptr=0x7f5884fc,tls=0x7f58f928,child_tidptr=0x7f5884fc) = 22503 +> 22484 io_setup(4001536,2136506392,2136507644,2136507644,2136537384,4100) = -1 errno=38 (Function not implemented) +> 22484 futex(0x7f5884fc,FUTEX_WAIT,22503,NULL,NULL,0)22484 set_robust_list(2136507652,12,0,4100,2136508076,4100) = -1 errno=38 (Function not implemented) +> 22484 madvise(2128117760,8372224,4,2136507672,528660,4100) = 0 +> 22484 exit(0) +> = 0 +> 22484 fstat64(1,0x7fffef48) = 0 +> 22484 write(1,0x51e8,42)FAIL: a= 10, thr_a = 10 Addr = 0x7f715120 +> = 42 +> 22484 exit_group(1) +> sandra@build2-trusty-cs:/scratch/sandra/nios2-linux-trunk3$ +> 22484 mmap2(NULL,1491048,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x7f589000 +> 22484 mmap2(0x7f6de000,86016,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x154) = 0x7f6de000 +> 22484 mmap2(0x7f6f3000,8296,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x7f6f3000 +> 22484 close(3) = 0 +> 22484 mprotect(0x7f6de000,65536,PROT_READ) = 0 +> 22484 mprotect(0x7f70f000,8192,PROT_READ) = 0 +> 22484 mprotect(0x7f7d8000,4096,PROT_READ) = 0 +> 22484 mprotect(0x00003000,4096,PROT_READ) = 0 +> 22484 mprotect(0x7f7fc000,4096,PROT_READ) = 0 +> 22484 set_tid_address(2138131700,2147480980,2147480988,2147480988,87148,47) = 22484 +> 22484 set_robust_list(2138131708,12,2147480988,0,87148,47) = -1 errno=38 (Function not implemented) +> 22484 rt_sigaction(32,0x7ffff36c,NULL) = 0 +> 22484 rt_sigaction(33,0x7ffff36c,NULL) = -1 errno=22 (Invalid argument) +> 22484 rt_sigprocmask(SIG_UNBLOCK,0x7ffff4a8,NULL) = 0 +> 22484 getrlimit(3,2147480732,3,0,62512,47) = 0 +> 22484 mmap2(NULL,8392704,PROT_NONE,MAP_PRIVATE|MAP_ANONYMOUS|0x20000,-1,0) = 0x7ed88000 +> 22484 mprotect(0x7ed89000,8388608,PROT_READ|PROT_WRITE) = 0 +> 22484 brk(NULL) = 0x00005000 +> 22484 brk(0x00026000) = 0x00026000 +> 22484 clone(CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID,child_stack=0x7f588018,parent_tidptr=0x7f5884fc,tls=0x7f58f928,child_tidptr=0x7f5884fc) = 22503 +> 22484 io_setup(4001536,2136506392,2136507644,2136507644,2136537384,4100) = -1 errno=38 (Function not implemented) +> 22484 futex(0x7f5884fc,FUTEX_WAIT,22503,NULL,NULL,0)22484 set_robust_list(2136507652,12,0,4100,2136508076,4100) = -1 errno=38 (Function not implemented) +> 22484 madvise(2128117760,8372224,4,2136507672,528660,4100) = 0 +> 22484 exit(0) +> = 0 +> 22484 fstat64(1,0x7fffef48) = 0 +> 22484 write(1,0x51e8,42)FAIL: a= 10, thr_a = 10 Addr = 0x7f715120 +> = 42 +> 22484 exit_group(1) +> +> Note that set_robust_list and clone are reported as unimplemented. +> +> I've reported the problems with the signal syscalls separately here. +> https://bugs.launchpad.net/qemu/+bug/1791763 +> +> ** Affects: qemu +> Importance: Undecided +> Status: New + + +-- +Alex Bennée + + + +Thomas Huth <email address hidden> writes: + +> On 2018-09-11 10:49, Alex Bennée wrote: +>> +>> Sandra Loosemore <email address hidden> writes: +>> +>>> Public bug reported: +>>> +>>> This bug is reported against the 3.0 release. +>>> +>>> I noticed that the GCC test gcc.dg/torture/tls/tls-test.c is failing +>>> when run in user-mode qemu for nios2 target. The problem appears to be +>>> that the thread-related syscalls are unimplemented in qemu. Here is +>>> output from running with -strace: +>> +>> One thing that would help in better supporting NIOS is if we could add +>> support for building linux-user tests for it in test/tcg. For this we +>> need a distribution that ships a decent cross compiler or create a +>> docker recipe that packages it up so we can build and run the tests. +>> +>> Are you just building GCC straight from source or can you point to a +>> recommended location for a decent packaged gcc? +> +> Not sure if it's of any help, but buildroot.org has support for nios2, +> including automatic setup of a cross-compiler... + +Maybe its time to add a buildroot base docker image with rules for +building the various additional toolchains. I'll have a go. + +> +> Thomas +> +> +>>> 22484 brk(NULL) = 0x00005000 +>>> 22484 uname(0x7fffef5a) = 0 +>>> 22484 faccessat(AT_FDCWD,"/etc/ld.so.preload",R_OK,0x5) = -1 errno=2 (No such file or directory) +>>> 22484 openat(AT_FDCWD,"/scratch/sandra/nios2-linux-trunk3/obj/test-2018.11-999999-nios2-linux-gnu/host-x86_64-linux-gnu/sourceryg++-2018.11/nios2-linux-gnu/libc/./lib/./tls/libm.so.6",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 errno=2 (No such file or directory) +>>> 22484 fstatat64(AT_FDCWD,"/scratch/sandra/nios2-linux-trunk3/obj/test-2018.11-999999-nios2-linux-gnu/host-x86_64-linux-gnu/sourceryg++-2018.11/nios2-linux-gnu/libc/./lib/./tls",0x7fffe870,0) = -1 errno=2 (No such file or directory) +>>> 22484 openat(AT_FDCWD,"/scratch/sandra/nios2-linux-trunk3/obj/test-2018.11-999999-nios2-linux-gnu/host-x86_64-linux-gnu/sourceryg++-2018.11/nios2-linux-gnu/libc/./lib/./libm.so.6",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 +>>> 22484 read(3,0x7fffe954,512) = 512 +>>> 22484 fstat64(3,0x7fffe870) = 0 +>>> 22484 mmap2(NULL,803596,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x7f716000 +>>> 22484 mmap2(0x7f7d8000,12288,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0xc1) = 0x7f7d8000 +>>> 22484 close(3) = 0 +>>> 22484 openat(AT_FDCWD,"/scratch/sandra/nios2-linux-trunk3/obj/test-2018.11-999999-nios2-linux-gnu/host-x86_64-linux-gnu/sourceryg++-2018.11/nios2-linux-gnu/libc/./lib/./libpthread.so.0",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 +>>> 22484 read(3,0x7fffe948,512) = 512 +>>> 22484 mmap2(NULL,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x7f714000 +>>> 22484 fstat64(3,0x7fffe864) = 0 +>>> 22484 mmap2(NULL,120700,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x7f6f6000 +>>> 22484 mprotect(0x7f70e000,4096,PROT_NONE) = 0 +>>> 22484 mmap2(0x7f70f000,12288,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x18) = 0x7f70f000 +>>> 22484 mmap2(0x7f712000,6012,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x7f712000 +>>> 22484 close(3) = 0 +>>> 22484 openat(AT_FDCWD,"/scratch/sandra/nios2-linux-trunk3/obj/test-2018.11-999999-nios2-linux-gnu/host-x86_64-linux-gnu/sourceryg++-2018.11/nios2-linux-gnu/libc/./lib/./libc.so.6",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 +>>> 22484 read(3,0x7fffe93c,512) = 512 +>>> 22484 fstat64(3,0x7fffe858) = 0 +>>> 22484 mmap2(NULL,1491048,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x7f589000 +>>> 22484 mmap2(0x7f6de000,86016,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x154) = 0x7f6de000 +>>> 22484 mmap2(0x7f6f3000,8296,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x7f6f3000 +>>> 22484 close(3) = 0 +>>> 22484 mprotect(0x7f6de000,65536,PROT_READ) = 0 +>>> 22484 mprotect(0x7f70f000,8192,PROT_READ) = 0 +>>> 22484 mprotect(0x7f7d8000,4096,PROT_READ) = 0 +>>> 22484 mprotect(0x00003000,4096,PROT_READ) = 0 +>>> 22484 mprotect(0x7f7fc000,4096,PROT_READ) = 0 +>>> 22484 set_tid_address(2138131700,2147480980,2147480988,2147480988,87148,47) = 22484 +>>> 22484 set_robust_list(2138131708,12,2147480988,0,87148,47) = -1 errno=38 (Function not implemented) +>>> 22484 rt_sigaction(32,0x7ffff36c,NULL) = 0 +>>> 22484 rt_sigaction(33,0x7ffff36c,NULL) = -1 errno=22 (Invalid argument) +>>> 22484 rt_sigprocmask(SIG_UNBLOCK,0x7ffff4a8,NULL) = 0 +>>> 22484 getrlimit(3,2147480732,3,0,62512,47) = 0 +>>> 22484 mmap2(NULL,8392704,PROT_NONE,MAP_PRIVATE|MAP_ANONYMOUS|0x20000,-1,0) = 0x7ed88000 +>>> 22484 mprotect(0x7ed89000,8388608,PROT_READ|PROT_WRITE) = 0 +>>> 22484 brk(NULL) = 0x00005000 +>>> 22484 brk(0x00026000) = 0x00026000 +>>> 22484 clone(CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID,child_stack=0x7f588018,parent_tidptr=0x7f5884fc,tls=0x7f58f928,child_tidptr=0x7f5884fc) = 22503 +>>> 22484 io_setup(4001536,2136506392,2136507644,2136507644,2136537384,4100) = -1 errno=38 (Function not implemented) +>>> 22484 futex(0x7f5884fc,FUTEX_WAIT,22503,NULL,NULL,0)22484 set_robust_list(2136507652,12,0,4100,2136508076,4100) = -1 errno=38 (Function not implemented) +>>> 22484 madvise(2128117760,8372224,4,2136507672,528660,4100) = 0 +>>> 22484 exit(0) +>>> = 0 +>>> 22484 fstat64(1,0x7fffef48) = 0 +>>> 22484 write(1,0x51e8,42)FAIL: a= 10, thr_a = 10 Addr = 0x7f715120 +>>> = 42 +>>> 22484 exit_group(1) +>>> sandra@build2-trusty-cs:/scratch/sandra/nios2-linux-trunk3$ +>>> 22484 mmap2(NULL,1491048,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x7f589000 +>>> 22484 mmap2(0x7f6de000,86016,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x154) = 0x7f6de000 +>>> 22484 mmap2(0x7f6f3000,8296,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x7f6f3000 +>>> 22484 close(3) = 0 +>>> 22484 mprotect(0x7f6de000,65536,PROT_READ) = 0 +>>> 22484 mprotect(0x7f70f000,8192,PROT_READ) = 0 +>>> 22484 mprotect(0x7f7d8000,4096,PROT_READ) = 0 +>>> 22484 mprotect(0x00003000,4096,PROT_READ) = 0 +>>> 22484 mprotect(0x7f7fc000,4096,PROT_READ) = 0 +>>> 22484 set_tid_address(2138131700,2147480980,2147480988,2147480988,87148,47) = 22484 +>>> 22484 set_robust_list(2138131708,12,2147480988,0,87148,47) = -1 errno=38 (Function not implemented) +>>> 22484 rt_sigaction(32,0x7ffff36c,NULL) = 0 +>>> 22484 rt_sigaction(33,0x7ffff36c,NULL) = -1 errno=22 (Invalid argument) +>>> 22484 rt_sigprocmask(SIG_UNBLOCK,0x7ffff4a8,NULL) = 0 +>>> 22484 getrlimit(3,2147480732,3,0,62512,47) = 0 +>>> 22484 mmap2(NULL,8392704,PROT_NONE,MAP_PRIVATE|MAP_ANONYMOUS|0x20000,-1,0) = 0x7ed88000 +>>> 22484 mprotect(0x7ed89000,8388608,PROT_READ|PROT_WRITE) = 0 +>>> 22484 brk(NULL) = 0x00005000 +>>> 22484 brk(0x00026000) = 0x00026000 +>>> 22484 clone(CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID,child_stack=0x7f588018,parent_tidptr=0x7f5884fc,tls=0x7f58f928,child_tidptr=0x7f5884fc) = 22503 +>>> 22484 io_setup(4001536,2136506392,2136507644,2136507644,2136537384,4100) = -1 errno=38 (Function not implemented) +>>> 22484 futex(0x7f5884fc,FUTEX_WAIT,22503,NULL,NULL,0)22484 set_robust_list(2136507652,12,0,4100,2136508076,4100) = -1 errno=38 (Function not implemented) +>>> 22484 madvise(2128117760,8372224,4,2136507672,528660,4100) = 0 +>>> 22484 exit(0) +>>> = 0 +>>> 22484 fstat64(1,0x7fffef48) = 0 +>>> 22484 write(1,0x51e8,42)FAIL: a= 10, thr_a = 10 Addr = 0x7f715120 +>>> = 42 +>>> 22484 exit_group(1) +>>> sandra@build2-trusty-cs:/scratch/sandra/nios2-linux-trunk3$ +>>> 22484 mmap2(NULL,1491048,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x7f589000 +>>> 22484 mmap2(0x7f6de000,86016,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x154) = 0x7f6de000 +>>> 22484 mmap2(0x7f6f3000,8296,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x7f6f3000 +>>> 22484 close(3) = 0 +>>> 22484 mprotect(0x7f6de000,65536,PROT_READ) = 0 +>>> 22484 mprotect(0x7f70f000,8192,PROT_READ) = 0 +>>> 22484 mprotect(0x7f7d8000,4096,PROT_READ) = 0 +>>> 22484 mprotect(0x00003000,4096,PROT_READ) = 0 +>>> 22484 mprotect(0x7f7fc000,4096,PROT_READ) = 0 +>>> 22484 set_tid_address(2138131700,2147480980,2147480988,2147480988,87148,47) = 22484 +>>> 22484 set_robust_list(2138131708,12,2147480988,0,87148,47) = -1 errno=38 (Function not implemented) +>>> 22484 rt_sigaction(32,0x7ffff36c,NULL) = 0 +>>> 22484 rt_sigaction(33,0x7ffff36c,NULL) = -1 errno=22 (Invalid argument) +>>> 22484 rt_sigprocmask(SIG_UNBLOCK,0x7ffff4a8,NULL) = 0 +>>> 22484 getrlimit(3,2147480732,3,0,62512,47) = 0 +>>> 22484 mmap2(NULL,8392704,PROT_NONE,MAP_PRIVATE|MAP_ANONYMOUS|0x20000,-1,0) = 0x7ed88000 +>>> 22484 mprotect(0x7ed89000,8388608,PROT_READ|PROT_WRITE) = 0 +>>> 22484 brk(NULL) = 0x00005000 +>>> 22484 brk(0x00026000) = 0x00026000 +>>> 22484 clone(CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID,child_stack=0x7f588018,parent_tidptr=0x7f5884fc,tls=0x7f58f928,child_tidptr=0x7f5884fc) = 22503 +>>> 22484 io_setup(4001536,2136506392,2136507644,2136507644,2136537384,4100) = -1 errno=38 (Function not implemented) +>>> 22484 futex(0x7f5884fc,FUTEX_WAIT,22503,NULL,NULL,0)22484 set_robust_list(2136507652,12,0,4100,2136508076,4100) = -1 errno=38 (Function not implemented) +>>> 22484 madvise(2128117760,8372224,4,2136507672,528660,4100) = 0 +>>> 22484 exit(0) +>>> = 0 +>>> 22484 fstat64(1,0x7fffef48) = 0 +>>> 22484 write(1,0x51e8,42)FAIL: a= 10, thr_a = 10 Addr = 0x7f715120 +>>> = 42 +>>> 22484 exit_group(1) +>>> +>>> Note that set_robust_list and clone are reported as unimplemented. +>>> +>>> I've reported the problems with the signal syscalls separately here. +>>> https://bugs.launchpad.net/qemu/+bug/1791763 +>>> +>>> ** Affects: qemu +>>> Importance: Undecided +>>> Status: New +>> +>> +>> -- +>> Alex Bennée +>> + + +-- +Alex Bennée + + +Hi, + +tl;dr Nios II linux-user seems pretty broken + +Following up on some mailing list queries about the state of Nios II +Thomas pointed out that buildroot could build cross-compilers for the +architecture. As a quick experiment I've enabled a docker based +buildroot and turned on tests/tcg for it. + +The results are not very encouraging as both linux-test and test-mmap +fail although (impressively?) testthread passes. + +The test-mmap failure looks like some sort of argument mangling +failure as arg6 of target_mmap looks negative/big and hence causes the +mmap to fail. I tried messing with the #ifdef mangling logic in +do_syscall1 but failed to get it working. + +The linux-test failure seems like a missing lseek system call but I +have no doubt there are others given the bug reports on list. + +This series includes a hack to min uname which we can't really merge. +This is because buildroot is focused on building system images so sets +the glibc minimum kernel version to whatever it builds for the system +image. I leave the problem of programatically tuning the +qemu_nios2_10m50_defconfig to build a general purpose glibc to whoever +wants to take this forward. + +As I'm not particularly interested in this architecture I don't intend +to spend any more time on this. Given how broken linux-user is I +suspect most users of QEMU's Nios 2 emulation use softmmu. If there is +interest in fixing up linux-user then the docker and test/tcg patches +can be included when the fixups are sent to the list. I would argue +that any linux-user target should at the very least pass all of +tests/tcg/multiarch - it's not super comprehensive but it's all we +have at the moment. Perhaps we should consider deprecating the +obviously less used linux-user targets? + +Alex Bennée (4): + docker: add debian-buildroot-base + docker: add buildroot-nios2-cross image + linux-user/nios2: bump min uname to 4.16.0 [!HACK] + tests/tcg: add nios2 architecture (NEEDS FIXES) + + linux-user/nios2/target_syscall.h | 2 +- + tests/docker/Makefile.include | 6 ++++- + .../dockerfiles/buildroot-nios2-cross.docker | 10 +++++++ + .../dockerfiles/debian-buildroot-base.docker | 26 +++++++++++++++++++ + tests/tcg/nios2/Makefile.include | 2 ++ + 5 files changed, 44 insertions(+), 2 deletions(-) + create mode 100644 tests/docker/dockerfiles/buildroot-nios2-cross.docker + create mode 100644 tests/docker/dockerfiles/debian-buildroot-base.docker + create mode 100644 tests/tcg/nios2/Makefile.include + +-- +2.17.1 + + + +We can build some more cross-compilers using buildroot. This base +system contains simply the minimum number of tools required for +buildroot to work. We also download and unpack the buildroot source +tree as that will be common for all system deriving from it. + +Signed-off-by: Alex Bennée <email address hidden> +--- + tests/docker/Makefile.include | 2 +- + .../dockerfiles/debian-buildroot-base.docker | 26 +++++++++++++++++++ + 2 files changed, 27 insertions(+), 1 deletion(-) + create mode 100644 tests/docker/dockerfiles/debian-buildroot-base.docker + +diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include +index d3101afecd..74a82de48a 100644 +--- a/tests/docker/Makefile.include ++++ b/tests/docker/Makefile.include +@@ -6,7 +6,7 @@ DOCKER_SUFFIX := .docker + DOCKER_FILES_DIR := $(SRC_PATH)/tests/docker/dockerfiles + DOCKER_DEPRECATED_IMAGES := debian + # we don't run tests on intermediate images (used as base by another image) +-DOCKER_PARTIAL_IMAGES := debian debian8 debian9 debian8-mxe debian-ports debian-sid debian-bootstrap ++DOCKER_PARTIAL_IMAGES := debian debian8 debian9 debian8-mxe debian-ports debian-sid debian-bootstrap debian-buildroot-base + DOCKER_IMAGES := $(filter-out $(DOCKER_DEPRECATED_IMAGES),$(sort $(notdir $(basename $(wildcard $(DOCKER_FILES_DIR)/*.docker))))) + DOCKER_TARGETS := $(patsubst %,docker-image-%,$(DOCKER_IMAGES)) + # Use a global constant ccache directory to speed up repetitive builds +diff --git a/tests/docker/dockerfiles/debian-buildroot-base.docker b/tests/docker/dockerfiles/debian-buildroot-base.docker +new file mode 100644 +index 0000000000..c4a29abadd +--- /dev/null ++++ b/tests/docker/dockerfiles/debian-buildroot-base.docker +@@ -0,0 +1,26 @@ ++# ++# Buildroot base setup on Debian ++# ++ ++FROM debian:stretch-slim ++ENV BUILDROOT_VERSION=2018.08 ++ ++# Duplicate deb line as deb-src ++RUN cat /etc/apt/sources.list | sed "s/^deb\ /deb-src /" >> /etc/apt/sources.list ++ ++# Install common build utilities ++RUN apt update && DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata ++RUN DEBIAN_FRONTEND=noninteractive eatmydata \ ++ apt install -y bc \ ++ build-essential \ ++ cpio \ ++ file \ ++ python \ ++ unzip \ ++ rsync \ ++ wget ++ ++# Grab the current buildroot version and unpack in /opt ++RUN mkdir -p /opt ++RUN cd /opt && wget https://buildroot.org/downloads/buildroot-${BUILDROOT_VERSION}.tar.gz ++RUN cd /opt && tar -xvf buildroot-${BUILDROOT_VERSION}.tar.gz +-- +2.17.1 + + + +Build a buildroot toolchain for the nios2 target. + +Signed-off-by: Alex Bennée <email address hidden> +--- + tests/docker/Makefile.include | 4 ++++ + tests/docker/dockerfiles/buildroot-nios2-cross.docker | 10 ++++++++++ + 2 files changed, 14 insertions(+) + create mode 100644 tests/docker/dockerfiles/buildroot-nios2-cross.docker + +diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include +index 74a82de48a..a8dfde8ed5 100644 +--- a/tests/docker/Makefile.include ++++ b/tests/docker/Makefile.include +@@ -120,6 +120,10 @@ docker-image-debian-riscv64-cross: docker-image-debian-sid + docker-image-debian-powerpc-cross: docker-image-debian-sid + docker-image-travis: NOUSER=1 + ++# Buildroot base images ++# These involve building the toolchains and can take some time ++docker-image-buildroot-nios2-cross: docker-image-debian-buildroot-base ++ + # Specialist build images, sometimes very limited tools + docker-image-tricore-cross: docker-image-debian9 + +diff --git a/tests/docker/dockerfiles/buildroot-nios2-cross.docker b/tests/docker/dockerfiles/buildroot-nios2-cross.docker +new file mode 100644 +index 0000000000..e573f0fa55 +--- /dev/null ++++ b/tests/docker/dockerfiles/buildroot-nios2-cross.docker +@@ -0,0 +1,10 @@ ++# ++# NIOS II toolchain ++# ++FROM qemu:debian-buildroot-base ++ ++RUN cd /opt/buildroot-${BUILDROOT_VERSION} && make qemu_nios2_10m50_defconfig ++RUN cd /opt/buildroot-${BUILDROOT_VERSION} && make toolchain ++ ++# The toolchain is in /opt/buildroot-${BUILDROOT_VERSION}/output/host/bin/nios2-* ++RUN ln -s /opt/buildroot-${BUILDROOT_VERSION}/output/host/bin/nios2-* /usr/bin +-- +2.17.1 + + + +This is to work around the limitations of the buildroot +qemu_nios2_10m50_defconfig which sets the base kernel version for +glibc. + +Signed-off-by: Alex Bennée <email address hidden> +--- + linux-user/nios2/target_syscall.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/linux-user/nios2/target_syscall.h b/linux-user/nios2/target_syscall.h +index ca6b7e69f6..905b80d112 100644 +--- a/linux-user/nios2/target_syscall.h ++++ b/linux-user/nios2/target_syscall.h +@@ -2,7 +2,7 @@ + #define TARGET_SYSCALL_H + + #define UNAME_MACHINE "nios2" +-#define UNAME_MINIMUM_RELEASE "3.19.0" ++#define UNAME_MINIMUM_RELEASE "4.16.0" + + struct target_pt_regs { + unsigned long r8; /* r8-r15 Caller-saved GP registers */ +-- +2.17.1 + + + +Now we have a docker image with a nios2 compiler we can add the bits +to build our TCG tests. + +Current failures: + testmmap - fails in check_file_fixed_eof_mmaps due to inversion of offset + linux-test - unimplemented lseek (probably others as well) + +Signed-off-by: Alex Bennée <email address hidden> +--- + tests/tcg/nios2/Makefile.include | 2 ++ + 1 file changed, 2 insertions(+) + create mode 100644 tests/tcg/nios2/Makefile.include + +diff --git a/tests/tcg/nios2/Makefile.include b/tests/tcg/nios2/Makefile.include +new file mode 100644 +index 0000000000..2ab4160435 +--- /dev/null ++++ b/tests/tcg/nios2/Makefile.include +@@ -0,0 +1,2 @@ ++DOCKER_IMAGE=buildroot-nios2-cross ++DOCKER_CROSS_COMPILER=nios2-linux-gcc +-- +2.17.1 + + + +Le 11/09/2018 à 16:06, Alex Bennée a écrit : +> This is to work around the limitations of the buildroot +> qemu_nios2_10m50_defconfig which sets the base kernel version for +> glibc. +> +> Signed-off-by: Alex Bennée <email address hidden> +> --- +> linux-user/nios2/target_syscall.h | 2 +- +> 1 file changed, 1 insertion(+), 1 deletion(-) +> +> diff --git a/linux-user/nios2/target_syscall.h b/linux-user/nios2/target_syscall.h +> index ca6b7e69f6..905b80d112 100644 +> --- a/linux-user/nios2/target_syscall.h +> +++ b/linux-user/nios2/target_syscall.h +> @@ -2,7 +2,7 @@ +> #define TARGET_SYSCALL_H +> +> #define UNAME_MACHINE "nios2" +> -#define UNAME_MINIMUM_RELEASE "3.19.0" +> +#define UNAME_MINIMUM_RELEASE "4.16.0" +> +> struct target_pt_regs { +> unsigned long r8; /* r8-r15 Caller-saved GP registers */ +> + +I have no objection. Perhaps you could ask NiosII Maintainers (cc). + +Laurent + + + +Laurent Vivier <email address hidden> writes: + +> Le 11/09/2018 à 16:06, Alex Bennée a écrit: +>> This is to work around the limitations of the buildroot +>> qemu_nios2_10m50_defconfig which sets the base kernel version for +>> glibc. +>> +>> Signed-off-by: Alex Bennée <email address hidden> +>> --- +>> linux-user/nios2/target_syscall.h | 2 +- +>> 1 file changed, 1 insertion(+), 1 deletion(-) +>> +>> diff --git a/linux-user/nios2/target_syscall.h b/linux-user/nios2/target_syscall.h +>> index ca6b7e69f6..905b80d112 100644 +>> --- a/linux-user/nios2/target_syscall.h +>> +++ b/linux-user/nios2/target_syscall.h +>> @@ -2,7 +2,7 @@ +>> #define TARGET_SYSCALL_H +>> +>> #define UNAME_MACHINE "nios2" +>> -#define UNAME_MINIMUM_RELEASE "3.19.0" +>> +#define UNAME_MINIMUM_RELEASE "4.16.0" +>> +>> struct target_pt_regs { +>> unsigned long r8; /* r8-r15 Caller-saved GP registers */ +>> +> +> I have no objection. Perhaps you could ask NiosII Maintainers (cc). + +Doh.. I had cccmd = scripts/get_maintainer.pl --nogit-fallback but of +course as I didn't actually touch an nios2 files it didn't include them. + +Thanks. + +> +> Laurent + + +-- +Alex Bennée + + +Le 11/09/2018 à 16:40, Alex Bennée a écrit : +> +> Laurent Vivier <email address hidden> writes: +> +>> Le 11/09/2018 à 16:06, Alex Bennée a écrit: +>>> This is to work around the limitations of the buildroot +>>> qemu_nios2_10m50_defconfig which sets the base kernel version for +>>> glibc. +>>> +>>> Signed-off-by: Alex Bennée <email address hidden> +>>> --- +>>> linux-user/nios2/target_syscall.h | 2 +- +>>> 1 file changed, 1 insertion(+), 1 deletion(-) +>>> +>>> diff --git a/linux-user/nios2/target_syscall.h b/linux-user/nios2/target_syscall.h +>>> index ca6b7e69f6..905b80d112 100644 +>>> --- a/linux-user/nios2/target_syscall.h +>>> +++ b/linux-user/nios2/target_syscall.h +>>> @@ -2,7 +2,7 @@ +>>> #define TARGET_SYSCALL_H +>>> +>>> #define UNAME_MACHINE "nios2" +>>> -#define UNAME_MINIMUM_RELEASE "3.19.0" +>>> +#define UNAME_MINIMUM_RELEASE "4.16.0" +>>> +>>> struct target_pt_regs { +>>> unsigned long r8; /* r8-r15 Caller-saved GP registers */ +>>> +>> +>> I have no objection. Perhaps you could ask NiosII Maintainers (cc). +> +> Doh.. I had cccmd = scripts/get_maintainer.pl --nogit-fallback but of +> course as I didn't actually touch an nios2 files it didn't include them. + +I also use "git blame" to know who to bother ;) + +Thanks, +Laurent + + + + +Marek Vasut <email address hidden> writes: + +> On 09/11/2018 04:14 PM, Laurent Vivier wrote: +>> Le 11/09/2018 à 16:06, Alex Bennée a écrit: +>>> This is to work around the limitations of the buildroot +>>> qemu_nios2_10m50_defconfig which sets the base kernel version for +>>> glibc. +>>> +>>> Signed-off-by: Alex Bennée <email address hidden> +>>> --- +>>> linux-user/nios2/target_syscall.h | 2 +- +>>> 1 file changed, 1 insertion(+), 1 deletion(-) +>>> +>>> diff --git a/linux-user/nios2/target_syscall.h b/linux-user/nios2/target_syscall.h +>>> index ca6b7e69f6..905b80d112 100644 +>>> --- a/linux-user/nios2/target_syscall.h +>>> +++ b/linux-user/nios2/target_syscall.h +>>> @@ -2,7 +2,7 @@ +>>> #define TARGET_SYSCALL_H +>>> +>>> #define UNAME_MACHINE "nios2" +>>> -#define UNAME_MINIMUM_RELEASE "3.19.0" +>>> +#define UNAME_MINIMUM_RELEASE "4.16.0" +>>> +>>> struct target_pt_regs { +>>> unsigned long r8; /* r8-r15 Caller-saved GP registers */ +>>> +>> +>> I have no objection. Perhaps you could ask NiosII Maintainers (cc). +> +> If that's needed, so be it. The Linux 3.19 was required because some +> obscure ABI change happened at that point. + +I don't think so - it's an artefact of the way the buildroot toolchain +is built. But the real question which I address in the cover letter is +does nios2-linux-user get much use? I tried enabled tests/tcg for it and +it fails rather badly. + +-- +Alex Bennée + + +If you need a Nios II GNU/Linux toolchain, I think the most recent CodeBench Lite release will work: + +https://sourcery.mentor.com/GNUToolchain/subscription42545 + +We're planning on adding user-mode QEMU to the upcoming 2018.11 release.... that's actually what I've been testing it for. Results on the GCC testsuite actually don't look too bad, but I have a patch I haven't submitted yet that's required to make the GDB stub work, and there are a lot of GDB test failures I haven't triaged yet. + + + +Sandra Loosemore <email address hidden> writes: + +> If you need a Nios II GNU/Linux toolchain, I think the most recent +> CodeBench Lite release will work: +> +> https://sourcery.mentor.com/GNUToolchain/subscription42545 + +Hmm I tried automating that but it seems the installer has GTK +dependencies!? + + Setup: + GTK+ Version Check + Setup: + An error has occurred. See the log file + /root/.mentor/logs/20180911185933/.metadata/.log. + root@0ef91b5e50f2:/opt# cat /root/.mentor/logs/20180911185933/.metadata/.log + !SESSION 2018-09-11 18:59:36.197 ----------------------------------------------- + eclipse.buildId=unknown + java.version=1.8.0_102 + java.vendor=Oracle Corporation + BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=en_US + Framework arguments: -install.once -install.data=/root/.mentor + Command-line arguments: -os linux -ws gtk -arch x86 -install.once -install.data=/root/.mentor -data /root/.mentor/logs/20180911185933 + + !ENTRY org.eclipse.osgi 4 0 2018-09-11 18:59:37.407 + !MESSAGE Application error + !STACK 1 + java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: + /tmp/sourceryg++-2018.05-5-nios2-linux-gnu.bin_sfx.f9eaefb7/installer/configuration/org.eclipse.osgi/148/0/.cp/libswt-pi-gtk-4530.so: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory + no swt-pi-gtk in java.library.path + Can't load library: /root/.swt/lib/linux/x86/libswt-pi-gtk-4530.so + Can't load library: /root/.swt/lib/linux/x86/libswt-pi-gtk.so + /root/.swt/lib/linux/x86/libswt-pi-gtk-4530.so: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory + +Should I just try the tarball approach? + +> We're planning on adding user-mode QEMU to the upcoming 2018.11 +> release.... that's actually what I've been testing it for. Results on +> the GCC testsuite actually don't look too bad, + +OK - I'm a little surprised given the failures I saw in our own +test/tcg/multiarch but it's totally possible that: + + - the buildroot toolchain if foobar + - the (ancient) tests need tweaking + +but it would be nice if we get to a point that QEMU's internal +linux-user tests also pass. + +> but I have a patch I +> haven't submitted yet that's required to make the GDB stub work, and +> there are a lot of GDB test failures I haven't triaged yet. + +When you do post the gdb patch feel free to CC me as I've poked around +in that before. + +-- +Alex Bennée + + + +Marek Vasut <email address hidden> writes: + +> On 09/11/2018 05:08 PM, Alex Bennée wrote: +>> +>> Marek Vasut <email address hidden> writes: +>> +>>> On 09/11/2018 04:14 PM, Laurent Vivier wrote: +>>>> Le 11/09/2018 à 16:06, Alex Bennée a écrit: +<snip> +>> +>> I don't think so - it's an artefact of the way the buildroot toolchain +>> is built. But the real question which I address in the cover letter is +>> does nios2-linux-user get much use? I tried enabled tests/tcg for it and +>> it fails rather badly. +> +> I used it around 2.10 and it worked for me. + +I've just build 2.10.2 (with a patch for memfd and this one) and get the +same failures on the tcg/tests tests. What testing where you running? + +-- +Alex Bennée + + +Hi Alex, + +On 9/11/18 4:06 PM, Alex Bennée wrote: +> We can build some more cross-compilers using buildroot. This base +> system contains simply the minimum number of tools required for +> buildroot to work. We also download and unpack the buildroot source +> tree as that will be common for all system deriving from it. +> +> Signed-off-by: Alex Bennée <email address hidden> +> --- +> tests/docker/Makefile.include | 2 +- +> .../dockerfiles/debian-buildroot-base.docker | 26 +++++++++++++++++++ +> 2 files changed, 27 insertions(+), 1 deletion(-) +> create mode 100644 tests/docker/dockerfiles/debian-buildroot-base.docker +> +> diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include +> index d3101afecd..74a82de48a 100644 +> --- a/tests/docker/Makefile.include +> +++ b/tests/docker/Makefile.include +> @@ -6,7 +6,7 @@ DOCKER_SUFFIX := .docker +> DOCKER_FILES_DIR := $(SRC_PATH)/tests/docker/dockerfiles +> DOCKER_DEPRECATED_IMAGES := debian +> # we don't run tests on intermediate images (used as base by another image) +> -DOCKER_PARTIAL_IMAGES := debian debian8 debian9 debian8-mxe debian-ports debian-sid debian-bootstrap +> +DOCKER_PARTIAL_IMAGES := debian debian8 debian9 debian8-mxe debian-ports debian-sid debian-bootstrap debian-buildroot-base +> DOCKER_IMAGES := $(filter-out $(DOCKER_DEPRECATED_IMAGES),$(sort $(notdir $(basename $(wildcard $(DOCKER_FILES_DIR)/*.docker))))) +> DOCKER_TARGETS := $(patsubst %,docker-image-%,$(DOCKER_IMAGES)) +> # Use a global constant ccache directory to speed up repetitive builds +> diff --git a/tests/docker/dockerfiles/debian-buildroot-base.docker b/tests/docker/dockerfiles/debian-buildroot-base.docker +> new file mode 100644 +> index 0000000000..c4a29abadd +> --- /dev/null +> +++ b/tests/docker/dockerfiles/debian-buildroot-base.docker +> @@ -0,0 +1,26 @@ +> +# +> +# Buildroot base setup on Debian +> +# +> + +> +FROM debian:stretch-slim +> +ENV BUILDROOT_VERSION=2018.08 + +To avoid cache invalidate, please move this bellow... + +> + +> +# Duplicate deb line as deb-src +> +RUN cat /etc/apt/sources.list | sed "s/^deb\ /deb-src /" >> /etc/apt/sources.list +> + +> +# Install common build utilities +> +RUN apt update && DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata +> +RUN DEBIAN_FRONTEND=noninteractive eatmydata \ +> + apt install -y bc \ +> + build-essential \ +> + cpio \ +> + file \ +> + python \ +> + unzip \ +> + rsync \ +> + wget +> + +> +# Grab the current buildroot version and unpack in /opt + +... here (or similar around): + + ENV BUILDROOT_VERSION=2018.08 + +> +RUN mkdir -p /opt +> +RUN cd /opt && wget https://buildroot.org/downloads/buildroot-${BUILDROOT_VERSION}.tar.gz +> +RUN cd /opt && tar -xvf buildroot-${BUILDROOT_VERSION}.tar.gz +> + +Reviewed-by: Philippe Mathieu-Daudé <email address hidden> +Tested-by: Philippe Mathieu-Daudé <email address hidden> + + +Hi Alex, + +On 9/11/18 4:06 PM, Alex Bennée wrote: +> Build a buildroot toolchain for the nios2 target. +> +> Signed-off-by: Alex Bennée <email address hidden> +> --- +> tests/docker/Makefile.include | 4 ++++ +> tests/docker/dockerfiles/buildroot-nios2-cross.docker | 10 ++++++++++ +> 2 files changed, 14 insertions(+) +> create mode 100644 tests/docker/dockerfiles/buildroot-nios2-cross.docker +> +> diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include +> index 74a82de48a..a8dfde8ed5 100644 +> --- a/tests/docker/Makefile.include +> +++ b/tests/docker/Makefile.include +> @@ -120,6 +120,10 @@ docker-image-debian-riscv64-cross: docker-image-debian-sid +> docker-image-debian-powerpc-cross: docker-image-debian-sid +> docker-image-travis: NOUSER=1 +> +> +# Buildroot base images +> +# These involve building the toolchains and can take some time +> +docker-image-buildroot-nios2-cross: docker-image-debian-buildroot-base +> + +> # Specialist build images, sometimes very limited tools +> docker-image-tricore-cross: docker-image-debian9 +> +> diff --git a/tests/docker/dockerfiles/buildroot-nios2-cross.docker b/tests/docker/dockerfiles/buildroot-nios2-cross.docker +> new file mode 100644 +> index 0000000000..e573f0fa55 +> --- /dev/null +> +++ b/tests/docker/dockerfiles/buildroot-nios2-cross.docker +> @@ -0,0 +1,10 @@ +> +# +> +# NIOS II toolchain +> +# +> +FROM qemu:debian-buildroot-base +> + +> +RUN cd /opt/buildroot-${BUILDROOT_VERSION} && make qemu_nios2_10m50_defconfig + +Simply: + + RUN make -C /opt/buildroot-${BUILDROOT_VERSION} qemu_nios2_10m50_defconfig + +> +RUN cd /opt/buildroot-${BUILDROOT_VERSION} && make toolchain + + RUN make -C /opt/buildroot-${BUILDROOT_VERSION} toolchain + +> +# The toolchain is in /opt/buildroot-${BUILDROOT_VERSION}/output/host/bin/nios2-* +> +RUN ln -s /opt/buildroot-${BUILDROOT_VERSION}/output/host/bin/nios2-* /usr/bin + +Similarly: + + ENV PATH $PATH:/opt/buildroot-${BUILDROOT_VERSION}/output/host/bin + +Once build this image takes a bit more than 3GB (this took me 30min to +build). + +With changes: +Reviewed-by: Philippe Mathieu-Daudé <email address hidden> +Tested-by: Philippe Mathieu-Daudé <email address hidden> + + + +Philippe Mathieu-Daudé <email address hidden> writes: + +> Hi Alex, +> +> On 9/11/18 4:06 PM, Alex Bennée wrote: +>> Build a buildroot toolchain for the nios2 target. +>> +>> Signed-off-by: Alex Bennée <email address hidden> +>> --- +>> tests/docker/Makefile.include | 4 ++++ +>> tests/docker/dockerfiles/buildroot-nios2-cross.docker | 10 ++++++++++ +>> 2 files changed, 14 insertions(+) +>> create mode 100644 tests/docker/dockerfiles/buildroot-nios2-cross.docker +>> +>> diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include +>> index 74a82de48a..a8dfde8ed5 100644 +>> --- a/tests/docker/Makefile.include +>> +++ b/tests/docker/Makefile.include +>> @@ -120,6 +120,10 @@ docker-image-debian-riscv64-cross: docker-image-debian-sid +>> docker-image-debian-powerpc-cross: docker-image-debian-sid +>> docker-image-travis: NOUSER=1 +>> +>> +# Buildroot base images +>> +# These involve building the toolchains and can take some time +>> +docker-image-buildroot-nios2-cross: docker-image-debian-buildroot-base +>> + +>> # Specialist build images, sometimes very limited tools +>> docker-image-tricore-cross: docker-image-debian9 +>> +>> diff --git a/tests/docker/dockerfiles/buildroot-nios2-cross.docker b/tests/docker/dockerfiles/buildroot-nios2-cross.docker +>> new file mode 100644 +>> index 0000000000..e573f0fa55 +>> --- /dev/null +>> +++ b/tests/docker/dockerfiles/buildroot-nios2-cross.docker +>> @@ -0,0 +1,10 @@ +>> +# +>> +# NIOS II toolchain +>> +# +>> +FROM qemu:debian-buildroot-base +>> + +>> +RUN cd /opt/buildroot-${BUILDROOT_VERSION} && make qemu_nios2_10m50_defconfig +> +> Simply: +> +> RUN make -C /opt/buildroot-${BUILDROOT_VERSION} qemu_nios2_10m50_defconfig +> +>> +RUN cd /opt/buildroot-${BUILDROOT_VERSION} && make toolchain +> +> RUN make -C /opt/buildroot-${BUILDROOT_VERSION} toolchain +> +>> +# The toolchain is in /opt/buildroot-${BUILDROOT_VERSION}/output/host/bin/nios2-* +>> +RUN ln -s /opt/buildroot-${BUILDROOT_VERSION}/output/host/bin/nios2-* /usr/bin +> +> Similarly: +> +> ENV PATH $PATH:/opt/buildroot-${BUILDROOT_VERSION}/output/host/bin +> +> Once build this image takes a bit more than 3GB (this took me 30min to +> build). +> +> With changes: +> Reviewed-by: Philippe Mathieu-Daudé <email address hidden> +> Tested-by: Philippe Mathieu-Daudé <email address hidden> + +Apparently multi-stage builds are meant to help: + + https://docs.docker.com/develop/develop-images/multistage-build/#name-your-build-stages + +It's still a little sub-optimal compared to binary builds but it will do +if we care about supporting every guest architecture with tests. I only +picked nios2 as a random example. + +-- +Alex Bennée + + +The QEMU project is currently considering to move its bug tracking to another system. For this we need to know which bugs are still valid and which could be closed already. Thus we are setting older bugs to "Incomplete" now. +If you still think this bug report here is valid, then please switch the state back to "New" within the next 60 days, otherwise this report will be marked as "Expired". Or mark it as "Fix Released" if the problem has been solved with a newer version of QEMU already. Thank you and sorry for the inconvenience. + +[Expired for QEMU because there has been no activity for 60 days.] + diff --git a/results/classifier/118/none/1791947 b/results/classifier/118/none/1791947 new file mode 100644 index 000000000..fa8e6f380 --- /dev/null +++ b/results/classifier/118/none/1791947 @@ -0,0 +1,86 @@ +mistranslation: 0.788 +user-level: 0.783 +risc-v: 0.600 +KVM: 0.587 +permissions: 0.584 +register: 0.584 +debug: 0.582 +semantic: 0.575 +performance: 0.574 +files: 0.574 +graphic: 0.566 +device: 0.561 +boot: 0.558 +TCG: 0.555 +network: 0.555 +architecture: 0.549 +assembly: 0.548 +virtual: 0.547 +VMM: 0.546 +vnc: 0.545 +socket: 0.544 +arm: 0.542 +kernel: 0.539 +PID: 0.517 +ppc: 0.490 +hypervisor: 0.463 +peripherals: 0.460 +x86: 0.409 +i386: 0.379 + +isochronous usb device forwarding with windows 10 and xhci freezes + +When I try to forward isochronous usb devices (webcam, HID-Audio) into the VM the devices work for a few minutes then the device stops working and stays that way until a VM reboot or a windows driver reload. +It does not matter if I use qemu-xhci or nec-xhci. +I can gather more information, if its helpful! + +Windows build: +windows 10 pro 1803 jun 2018 + +Qemu command line: +/usr/bin/qemu-system-x86_64 -machine accel=kvm -name guest=win10,debug-threads=on -S -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-1-win10/master-key.aes -machine pc-q35-2.11,accel=kvm,usb=off,vmport=off,dump-guest-core=off -cpu Skylake-Client-IBRS,ss=on,hypervisor=on,tsc_adjust=on,clflushopt=on,ssbd=on,xsaves=on,pdpe1gb=on,hv_time,hv_relaxed,hv_vapic,hv_spinlocks=0x1fff -m 8192 -realtime mlock=off -smp 4,sockets=4,cores=1,threads=1 -uuid 38b1258e-fea4-41fe-9e21-07c426c5b2b2 -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-1-win10/monitor.sock,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=localtime,driftfix=slew -global kvm-pit.lost_tick_policy=delay -no-hpet -no-shutdown -global ICH9-LPC.disable_s3=1 -global ICH9-LPC.disable_s4=1 -boot strict=on -device i82801b11-bridge,id=pci.1,bus=pcie.0,addr=0x1e -device pci-bridge,chassis_nr=2,id=pci.2,bus=pci.1,addr=0x0 -device pcie-root-port,port=0x10,chassis=3,id=pci.3,bus=pcie.0,multifunction=on,addr=0x2 -device pcie-root-port,port=0x11,chassis=4,id=pci.4,bus=pcie.0,addr=0x2.0x1 -device pcie-root-port,port=0x12,chassis=5,id=pci.5,bus=pcie.0,addr=0x2.0x2 -device pcie-root-port,port=0x13,chassis=6,id=pci.6,bus=pcie.0,addr=0x2.0x3 -device qemu-xhci,id=usb,bus=pci.3,addr=0x0 -device virtio-serial-pci,id=virtio-serial0,bus=pci.4,addr=0x0 -drive file=/var/lib/libvirt/images/win10.qcow2,format=qcow2,if=none,id=drive-sata0-0-0 -device ide-hd,bus=ide.0,drive=drive-sata0-0-0,id=sata0-0-0,bootindex=1 -drive file=/var/lib/libvirt/images/en_windows_10_multiple_editions_version_1803_jun_2018.iso,format=raw,if=none,id=drive-sata0-0-1,media=cdrom,readonly=on -device ide-cd,bus=ide.1,drive=drive-sata0-0-1,id=sata0-0-1 -netdev tap,fd=25,id=hostnet0 -device e1000,netdev=hostnet0,id=net0,mac=52:54:00:ab:33:11,bus=pci.2,addr=0x1 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev spicevmc,id=charchannel0,name=vdagent -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 -device usb-tablet,id=input0,bus=usb.0,port=1 -spice port=5900,addr=127.0.0.1,disable-ticketing,image-compression=off,seamless-migration=on -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vram64_size_mb=0,vgamem_mb=16,max_outputs=1,bus=pcie.0,addr=0x1 -chardev spicevmc,id=charredir0,name=usbredir -device usb-redir,chardev=charredir0,id=redir0,bus=usb.0,port=2 -chardev spicevmc,id=charredir1,name=usbredir -device usb-redir,chardev=charredir1,id=redir1,bus=usb.0,port=3 -device virtio-balloon-pci,id=balloon0,bus=pci.5,addr=0x0 -msg timestamp=on + +Cheers, +Florian + +I tried it again today with qemu master: 19b599f7664b2ebfd0f405fb79c14dd241557452 +Unfortunately it did not work better than with qemu 2.11.2 + +The same bug also occurs with Windows 7 Enterprise SP1. + +How to reproduce: +1. download windows 10 iso april 2018 from here: + https://www.microsoft.com/en-us/software-download/windows10ISO?NavToggle=True +2. create a VM with virtmanager with q35 chipset and configure two usb redirect devices +(3. modify xml to use an xhci controller) +4. Install windows +5. redirect a usb soundcard or a usb headset into the VM +5. play some video and observe that it freezes after some time (1-20 mins) + +I have already posted a reply on Qemu-devel since everything posted here is automatically forwarded to Qemu-devel, however, the opposite is not true. So duplicating my reply on Qemu-devel: + +How exactly do you use USB redirection: via virt-manager or via spice +client (like remote viewer)? +If via spice-client, on which OS the client runs? In this case running +it with --spice-debug and collecting logs from stdio and stderr could +be helpful. +Can you also provide a usbpcap capture of the usb device's traffic +from within the VM? + +Thanks! + +Oh sorry... +I am not subscribed to Qemu-devel yet. + +I'm redirecting the usb devices via virt-manager. +Is there anything I can do? + +I attached the pcap file! + +Thank you very much! + +The QEMU project is currently considering to move its bug tracking to another system. For this we need to know which bugs are still valid and which could be closed already. Thus we are setting older bugs to "Incomplete" now. +If you still think this bug report here is valid, then please switch the state back to "New" within the next 60 days, otherwise this report will be marked as "Expired". Or mark it as "Fix Released" if the problem has been solved with a newer version of QEMU already. Thank you and sorry for the inconvenience. + +[Expired for QEMU because there has been no activity for 60 days.] + |