sa_flags is uint32_t for mips{,n32,64}, so don't use tswapal(). Reported-by: Khansa Butt <kha...@kics.edu.pk> Suggested-by: Richard Henderson <r...@twiddle.net> Signed-off-by: Andreas Färber <afaer...@suse.de> Cc: Ehsan Ul Haq <ehsan.ul...@kics.edu.pk> --- linux-user/signal.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/linux-user/signal.c b/linux-user/signal.c index ded12ca..bafbc57 100644 --- a/linux-user/signal.c +++ b/linux-user/signal.c @@ -587,7 +587,11 @@ int do_sigaction(int sig, const struct target_sigaction *act, #endif if (oact) { oact->_sa_handler = tswapal(k->_sa_handler); +#if defined(TARGET_MIPS) + oact->sa_flags = bswap32(k->sa_flags); +#else oact->sa_flags = tswapal(k->sa_flags); +#endif #if !defined(TARGET_MIPS) oact->sa_restorer = tswapal(k->sa_restorer); #endif @@ -596,7 +600,11 @@ int do_sigaction(int sig, const struct target_sigaction *act, if (act) { /* FIXME: This is not threadsafe. */ k->_sa_handler = tswapal(act->_sa_handler); +#if defined(TARGET_MIPS) + k->sa_flags = bswap32(act->sa_flags); +#else k->sa_flags = tswapal(act->sa_flags); +#endif #if !defined(TARGET_MIPS) k->sa_restorer = tswapal(act->sa_restorer); #endif -- 1.7.7