1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
syscall: 0.340
runtime: 0.336
instruction: 0.324
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
|