On 6 September 2015 at 00:57, Timothy E Baldwin <t.e.baldwi...@members.leeds.ac.uk> wrote: > Signed-off-by: Timothy Edward Baldwin <t.e.baldwi...@members.leeds.ac.uk> > --- > linux-user/signal.c | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/linux-user/signal.c b/linux-user/signal.c > index 15bd082..fc37f3b 100644 > --- a/linux-user/signal.c > +++ b/linux-user/signal.c > @@ -629,7 +629,7 @@ out: > return ret; > } > > -/* do_sigaction() return host values and errnos */ > +/* do_sigaction() return target values and host errnos */ > int do_sigaction(int sig, const struct target_sigaction *act, > struct target_sigaction *oact) > { > @@ -638,8 +638,14 @@ int do_sigaction(int sig, const struct target_sigaction > *act, > int host_sig; > int ret = 0; > > - if (sig < 1 || sig > TARGET_NSIG || sig == TARGET_SIGKILL || sig == > TARGET_SIGSTOP) > - return -EINVAL; > + if (sig < 1 || sig > TARGET_NSIG || sig == TARGET_SIGKILL || sig == > TARGET_SIGSTOP) { > + return -TARGET_EINVAL; > + } > + > + if (block_signals()) { > + return -TARGET_ERESTARTSYS; > + } > + > k = &sigact_table[sig - 1]; > #if defined(DEBUG_SIGNAL) > fprintf(stderr, "sigaction sig=%d act=0x%p, oact=0x%p\n",
This doesn't look right -- we change this function from returning host errnos to returning guest errnos, but we haven't changed any of its callers. thanks -- PMM