Le 14/09/2016 à 22:19, Aleksandar Markovic a écrit : > From: Aleksandar Markovic <aleksandar.marko...@imgtec.com> > > If syscalls msgrcv() and msgsnd() fail, they return E2BIG, EACCES, > EAGAIN, EFAULT, EIDRM, EINTR, EINVAL, ENOMEM, or ENOMSG. > > By examining negative scenarios of these syscalls for Mips, it was > established that ENOMSG does not have the same value accross all > platforms, but it is nevertheless not included for conversion in > the correspondant conversion table defined in linux-user/syscall.c. > This is certainly a bug, since it leads to the incorrect emulation > of msgrcv() and msgsnd() for scenarios involving ENOMSG. > > This patch fixes this by extending the conversion table to include > ENOMSG. > > Also, LTP test msgrcv04 will be fixed for some platforms. > > Signed-off-by: Aleksandar Markovic <aleksandar.marko...@imgtec.com>
Reviewed-by: Laurent Vivier <laur...@vivier.eu> > --- > linux-user/syscall.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index 7f8ae41..bdc12ae 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -750,6 +750,9 @@ static uint16_t > host_to_target_errno_table[ERRNO_TABLE_SIZE] = { > #ifdef ENOTRECOVERABLE > [ENOTRECOVERABLE] = TARGET_ENOTRECOVERABLE, > #endif > +#ifdef ENOMSG > + [ENOMSG] = TARGET_ENOMSG, > +#endif > }; > > static inline int host_to_target_errno(int err) >