linux-user: create a dummy per arch signal.c
Create a signal-common.h for future use by these new files and use it in the existing signal.c Signed-off-by: Laurent Vivier <laurent@vivier.eu> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20180424192635.6027-2-laurent@vivier.eu>
This commit is contained in:
parent
2b3f64cbf3
commit
befb7447a0
|
@ -1,6 +1,6 @@
|
||||||
obj-y = main.o syscall.o strace.o mmap.o signal.o \
|
obj-y = main.o syscall.o strace.o mmap.o signal.o \
|
||||||
elfload.o linuxload.o uaccess.o uname.o \
|
elfload.o linuxload.o uaccess.o uname.o \
|
||||||
safe-syscall.o
|
safe-syscall.o $(TARGET_ABI_DIR)/signal.o
|
||||||
|
|
||||||
obj-$(TARGET_HAS_BFLT) += flatload.o
|
obj-$(TARGET_HAS_BFLT) += flatload.o
|
||||||
obj-$(TARGET_I386) += vm86.o
|
obj-$(TARGET_I386) += vm86.o
|
||||||
|
|
18
linux-user/aarch64/signal.c
Normal file
18
linux-user/aarch64/signal.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
18
linux-user/alpha/signal.c
Normal file
18
linux-user/alpha/signal.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
18
linux-user/arm/signal.c
Normal file
18
linux-user/arm/signal.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
18
linux-user/cris/signal.c
Normal file
18
linux-user/cris/signal.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
18
linux-user/hppa/signal.c
Normal file
18
linux-user/hppa/signal.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
18
linux-user/i386/signal.c
Normal file
18
linux-user/i386/signal.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
18
linux-user/m68k/signal.c
Normal file
18
linux-user/m68k/signal.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
18
linux-user/microblaze/signal.c
Normal file
18
linux-user/microblaze/signal.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
18
linux-user/mips/signal.c
Normal file
18
linux-user/mips/signal.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
18
linux-user/mips64/signal.c
Normal file
18
linux-user/mips64/signal.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
18
linux-user/nios2/signal.c
Normal file
18
linux-user/nios2/signal.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
18
linux-user/openrisc/signal.c
Normal file
18
linux-user/openrisc/signal.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
18
linux-user/ppc/signal.c
Normal file
18
linux-user/ppc/signal.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
18
linux-user/riscv/signal.c
Normal file
18
linux-user/riscv/signal.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
18
linux-user/s390x/signal.c
Normal file
18
linux-user/s390x/signal.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
18
linux-user/sh4/signal.c
Normal file
18
linux-user/sh4/signal.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
50
linux-user/signal-common.h
Normal file
50
linux-user/signal-common.h
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef SIGNAL_COMMON_H
|
||||||
|
#define SIGNAL_COMMON_H
|
||||||
|
extern struct target_sigaltstack target_sigaltstack_used;
|
||||||
|
|
||||||
|
static inline int on_sig_stack(unsigned long sp)
|
||||||
|
{
|
||||||
|
return (sp - target_sigaltstack_used.ss_sp
|
||||||
|
< target_sigaltstack_used.ss_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int sas_ss_flags(unsigned long sp)
|
||||||
|
{
|
||||||
|
return (target_sigaltstack_used.ss_size == 0 ? SS_DISABLE
|
||||||
|
: on_sig_stack(sp) ? SS_ONSTACK : 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void target_sigemptyset(target_sigset_t *set)
|
||||||
|
{
|
||||||
|
memset(set, 0, sizeof(*set));
|
||||||
|
}
|
||||||
|
|
||||||
|
void host_to_target_sigset_internal(target_sigset_t *d,
|
||||||
|
const sigset_t *s);
|
||||||
|
void target_to_host_sigset_internal(sigset_t *d,
|
||||||
|
const target_sigset_t *s);
|
||||||
|
void tswap_siginfo(target_siginfo_t *tinfo,
|
||||||
|
const target_siginfo_t *info);
|
||||||
|
void set_sigmask(const sigset_t *set);
|
||||||
|
void force_sig(int sig);
|
||||||
|
void force_sigsegv(int oldsig);
|
||||||
|
#endif
|
|
@ -25,8 +25,9 @@
|
||||||
#include "qemu-common.h"
|
#include "qemu-common.h"
|
||||||
#include "target_signal.h"
|
#include "target_signal.h"
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
|
#include "signal-common.h"
|
||||||
|
|
||||||
static struct target_sigaltstack target_sigaltstack_used = {
|
struct target_sigaltstack target_sigaltstack_used = {
|
||||||
.ss_sp = 0,
|
.ss_sp = 0,
|
||||||
.ss_size = 0,
|
.ss_size = 0,
|
||||||
.ss_flags = TARGET_SS_DISABLE,
|
.ss_flags = TARGET_SS_DISABLE,
|
||||||
|
@ -82,18 +83,6 @@ static uint8_t host_to_target_signal_table[_NSIG] = {
|
||||||
};
|
};
|
||||||
static uint8_t target_to_host_signal_table[_NSIG];
|
static uint8_t target_to_host_signal_table[_NSIG];
|
||||||
|
|
||||||
static inline int on_sig_stack(unsigned long sp)
|
|
||||||
{
|
|
||||||
return (sp - target_sigaltstack_used.ss_sp
|
|
||||||
< target_sigaltstack_used.ss_size);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int sas_ss_flags(unsigned long sp)
|
|
||||||
{
|
|
||||||
return (target_sigaltstack_used.ss_size == 0 ? SS_DISABLE
|
|
||||||
: on_sig_stack(sp) ? SS_ONSTACK : 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
int host_to_target_signal(int sig)
|
int host_to_target_signal(int sig)
|
||||||
{
|
{
|
||||||
if (sig < 0 || sig >= _NSIG)
|
if (sig < 0 || sig >= _NSIG)
|
||||||
|
@ -108,11 +97,6 @@ int target_to_host_signal(int sig)
|
||||||
return target_to_host_signal_table[sig];
|
return target_to_host_signal_table[sig];
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void target_sigemptyset(target_sigset_t *set)
|
|
||||||
{
|
|
||||||
memset(set, 0, sizeof(*set));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void target_sigaddset(target_sigset_t *set, int signum)
|
static inline void target_sigaddset(target_sigset_t *set, int signum)
|
||||||
{
|
{
|
||||||
signum--;
|
signum--;
|
||||||
|
@ -127,8 +111,8 @@ static inline int target_sigismember(const target_sigset_t *set, int signum)
|
||||||
return ((set->sig[signum / TARGET_NSIG_BPW] & mask) != 0);
|
return ((set->sig[signum / TARGET_NSIG_BPW] & mask) != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void host_to_target_sigset_internal(target_sigset_t *d,
|
void host_to_target_sigset_internal(target_sigset_t *d,
|
||||||
const sigset_t *s)
|
const sigset_t *s)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
target_sigemptyset(d);
|
target_sigemptyset(d);
|
||||||
|
@ -149,8 +133,8 @@ void host_to_target_sigset(target_sigset_t *d, const sigset_t *s)
|
||||||
d->sig[i] = tswapal(d1.sig[i]);
|
d->sig[i] = tswapal(d1.sig[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void target_to_host_sigset_internal(sigset_t *d,
|
void target_to_host_sigset_internal(sigset_t *d,
|
||||||
const target_sigset_t *s)
|
const target_sigset_t *s)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
sigemptyset(d);
|
sigemptyset(d);
|
||||||
|
@ -257,7 +241,7 @@ int do_sigprocmask(int how, const sigset_t *set, sigset_t *oldset)
|
||||||
/* Just set the guest's signal mask to the specified value; the
|
/* Just set the guest's signal mask to the specified value; the
|
||||||
* caller is assumed to have called block_signals() already.
|
* caller is assumed to have called block_signals() already.
|
||||||
*/
|
*/
|
||||||
static void set_sigmask(const sigset_t *set)
|
void set_sigmask(const sigset_t *set)
|
||||||
{
|
{
|
||||||
TaskState *ts = (TaskState *)thread_cpu->opaque;
|
TaskState *ts = (TaskState *)thread_cpu->opaque;
|
||||||
|
|
||||||
|
@ -344,8 +328,8 @@ static inline void host_to_target_siginfo_noswap(target_siginfo_t *tinfo,
|
||||||
tinfo->si_code = deposit32(si_code, 16, 16, si_type);
|
tinfo->si_code = deposit32(si_code, 16, 16, si_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tswap_siginfo(target_siginfo_t *tinfo,
|
void tswap_siginfo(target_siginfo_t *tinfo,
|
||||||
const target_siginfo_t *info)
|
const target_siginfo_t *info)
|
||||||
{
|
{
|
||||||
int si_type = extract32(info->si_code, 16, 16);
|
int si_type = extract32(info->si_code, 16, 16);
|
||||||
int si_code = sextract32(info->si_code, 0, 16);
|
int si_code = sextract32(info->si_code, 0, 16);
|
||||||
|
@ -515,7 +499,7 @@ void signal_init(void)
|
||||||
* also forces the signal to "not blocked, not ignored", but for QEMU
|
* also forces the signal to "not blocked, not ignored", but for QEMU
|
||||||
* that work is done in process_pending_signals().
|
* that work is done in process_pending_signals().
|
||||||
*/
|
*/
|
||||||
static void force_sig(int sig)
|
void force_sig(int sig)
|
||||||
{
|
{
|
||||||
CPUState *cpu = thread_cpu;
|
CPUState *cpu = thread_cpu;
|
||||||
CPUArchState *env = cpu->env_ptr;
|
CPUArchState *env = cpu->env_ptr;
|
||||||
|
@ -534,7 +518,7 @@ static void force_sig(int sig)
|
||||||
* at the point of failure.
|
* at the point of failure.
|
||||||
*/
|
*/
|
||||||
#if !defined(TARGET_RISCV)
|
#if !defined(TARGET_RISCV)
|
||||||
static void force_sigsegv(int oldsig)
|
void force_sigsegv(int oldsig)
|
||||||
{
|
{
|
||||||
if (oldsig == SIGSEGV) {
|
if (oldsig == SIGSEGV) {
|
||||||
/* Make sure we don't try to deliver the signal again; this will
|
/* Make sure we don't try to deliver the signal again; this will
|
||||||
|
@ -7301,9 +7285,6 @@ badframe:
|
||||||
force_sig(TARGET_SIGSEGV);
|
force_sig(TARGET_SIGSEGV);
|
||||||
return -TARGET_QEMU_ESIGRETURN;
|
return -TARGET_QEMU_ESIGRETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
#error Target needs to add support for signal handling
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void handle_pending_signal(CPUArchState *cpu_env, int sig,
|
static void handle_pending_signal(CPUArchState *cpu_env, int sig,
|
||||||
|
|
18
linux-user/sparc/signal.c
Normal file
18
linux-user/sparc/signal.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
18
linux-user/sparc64/signal.c
Normal file
18
linux-user/sparc64/signal.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
18
linux-user/tilegx/signal.c
Normal file
18
linux-user/tilegx/signal.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
18
linux-user/x86_64/signal.c
Normal file
18
linux-user/x86_64/signal.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
18
linux-user/xtensa/signal.c
Normal file
18
linux-user/xtensa/signal.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/*
|
||||||
|
* Emulation of Linux signals
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
Loading…
Reference in a new issue