On 23/05/2019 21:16, Alex Bennée wrote: > > Laurent Vivier <laur...@vivier.eu> writes: > >> On 23/05/2019 13:56, Cornelia Huck wrote: >>> On Wed, 22 May 2019 15:22:23 +0200 >>> Aleksandar Markovic <aleksandar.m.m...@gmail.com> wrote: >>> >>>> The alternative way of invoking via IPCV6 (else part of “ifdef >>>> __NR_MSGSND”) should work for MIPS in the present stage of headers and >>>> kernel. >>> >>> I tried to do that so that we have at least a workaround for now; but >>> this fails building on my x86 laptop (the safe_syscall6 for ipc >>> complains about missing __NR_ipc). Maybe I'm holding it wrong (should >>> that be conditional on the host?), but I think that really needs to be >>> done by the mips maintainers... >>> >> >> Perhaps a simple workaround could be: >> >> diff --git a/linux-user/syscall.c b/linux-user/syscall.c >> index e311fcda0517..5b431736032c 100644 >> --- a/linux-user/syscall.c >> +++ b/linux-user/syscall.c >> @@ -761,14 +761,8 @@ safe_syscall2(int, nanosleep, const struct timespec *, >> req, >> safe_syscall4(int, clock_nanosleep, const clockid_t, clock, int, flags, >> const struct timespec *, req, struct timespec *, rem) >> #endif >> -#ifdef __NR_msgsnd >> -safe_syscall4(int, msgsnd, int, msgid, const void *, msgp, size_t, sz, >> - int, flags) >> -safe_syscall5(int, msgrcv, int, msgid, void *, msgp, size_t, sz, >> - long, msgtype, int, flags) >> -safe_syscall4(int, semtimedop, int, semid, struct sembuf *, tsops, >> - unsigned, nsops, const struct timespec *, timeout) >> -#else >> + >> +#ifdef __NR_ipc >> /* This host kernel architecture uses a single ipc syscall; fake up >> * wrappers for the sub-operations to hide this implementation detail. >> * Annoyingly we can't include linux/ipc.h to get the constant definitions >> @@ -783,14 +777,30 @@ safe_syscall4(int, semtimedop, int, semid, struct >> sembuf *, tsops, >> >> safe_syscall6(int, ipc, int, call, long, first, long, second, long, third, >> void *, ptr, long, fifth) >> +#endif > > *sigh* almost but for arches we get complaints when the ipc syscall is > defined but not used.... > > https://app.shippable.com/github/stsquad/qemu/runs/835/summary/console
Yes, I've know. I have sent a patch with an updated #if: #if !defined(__NR_msgsnd) || !defined(__NR_msgrcv) || !defined(__NR_semtimedop) And it should work on any arch. Thanks, Laurent