On Wed, 22 May 2019 13:47:25 +0200 Philippe Mathieu-Daudé <phi...@redhat.com> wrote:
> On 5/21/19 5:28 PM, Cornelia Huck wrote: > > commit a188339ca5a396acc588e5851ed7e19f66b0ebd9 > > > > Signed-off-by: Cornelia Huck <coh...@redhat.com> > > --- > [...] > > #define __NR_mq_notify 184 > > __SC_COMP(__NR_mq_notify, sys_mq_notify, compat_sys_mq_notify) > > #define __NR_mq_getsetattr 185 > > @@ -536,8 +567,10 @@ __SC_COMP(__NR_msgsnd, sys_msgsnd, compat_sys_msgsnd) > > __SYSCALL(__NR_semget, sys_semget) > > #define __NR_semctl 191 > > __SC_COMP(__NR_semctl, sys_semctl, compat_sys_semctl) > > +#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32 Eww. It seems only aarch64 sets __ARCH_WANT_TIME32_SYSCALLS, and the second condition probably catches others but not mipsel. > > #define __NR_semtimedop 192 > > -__SC_COMP(__NR_semtimedop, sys_semtimedop, compat_sys_semtimedop) > > +__SC_COMP(__NR_semtimedop, sys_semtimedop, sys_semtimedop_time32) > > +#endif > > #define __NR_semop 193 > > __SYSCALL(__NR_semop, sys_semop) > [...] > > https://app.shippable.com/github/qemu/qemu/runs/1703/summary/console > > It seems this commit introduce a regression on mips32: > > CC mipsel-linux-user/linux-user/syscall.o > ./linux-user/syscall.c: In function 'safe_semtimedop': > ./linux-user/syscall.c:697:25: error: '__NR_semtimedop' undeclared > (first use in this function) > return safe_syscall(__NR_##name, arg1, arg2, arg3, arg4); \ So, we unconditionally deal with this syscall, i.e. we assume it is always present? (I'm not sure of the logic in linux-user code.) Does this need to be escaped somehow? > ^ > ./linux-user/syscall.c:769:1: note: in expansion of macro 'safe_syscall4' > safe_syscall4(int, semtimedop, int, semid, struct sembuf *, tsops, > ^~~~~~~~~~~~~ > ./linux-user/syscall.c:697:25: note: each undeclared identifier is > reported only once for each function it appears in > return safe_syscall(__NR_##name, arg1, arg2, arg3, arg4); \ > ^ > ./linux-user/syscall.c:769:1: note: in expansion of macro 'safe_syscall4' > safe_syscall4(int, semtimedop, int, semid, struct sembuf *, tsops, > ^~~~~~~~~~~~~ > ./linux-user/syscall.c:770:45: error: control reaches end of non-void > function [-Werror=return-type] > unsigned, nsops, const struct timespec *, timeout) > ^ > ./linux-user/syscall.c:695:61: note: in definition of macro 'safe_syscall4' > static type safe_##name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ > ^~~~~ > cc1: all warnings being treated as errors > ./rules.mak:69: recipe for target 'linux-user/syscall.o' failed > make[1]: *** [linux-user/syscall.o] Error 1 > Makefile:458: recipe for target 'subdir-mipsel-linux-user' failed > make: *** [subdir-mipsel-linux-user] Error 2