gdbstub: Change gdb_handlesig() argument to CPUState

Prepares for changing GDBState::c_cpu to CPUState.

Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
Andreas Färber 2013-06-27 19:49:31 +02:00
parent 9e0c5422cf
commit db6b81d436
5 changed files with 31 additions and 25 deletions

View File

@ -643,7 +643,7 @@ void cpu_loop(CPUSPARCState *env)
{ {
int sig; int sig;
sig = gdb_handlesig (env, TARGET_SIGTRAP); sig = gdb_handlesig(cs, TARGET_SIGTRAP);
#if 0 #if 0
if (sig) if (sig)
{ {
@ -738,6 +738,7 @@ int main(int argc, char **argv)
struct image_info info1, *info = &info1; struct image_info info1, *info = &info1;
TaskState ts1, *ts = &ts1; TaskState ts1, *ts = &ts1;
CPUArchState *env; CPUArchState *env;
CPUState *cpu;
int optind; int optind;
const char *r; const char *r;
int gdbstub_port = 0; int gdbstub_port = 0;
@ -912,10 +913,11 @@ int main(int argc, char **argv)
fprintf(stderr, "Unable to find CPU definition\n"); fprintf(stderr, "Unable to find CPU definition\n");
exit(1); exit(1);
} }
cpu = ENV_GET_CPU(env);
#if defined(TARGET_SPARC) || defined(TARGET_PPC) #if defined(TARGET_SPARC) || defined(TARGET_PPC)
cpu_reset(ENV_GET_CPU(env)); cpu_reset(cpu);
#endif #endif
thread_cpu = ENV_GET_CPU(env); thread_cpu = cpu;
if (getenv("QEMU_STRACE")) { if (getenv("QEMU_STRACE")) {
do_strace = 1; do_strace = 1;
@ -1134,7 +1136,7 @@ int main(int argc, char **argv)
if (gdbstub_port) { if (gdbstub_port) {
gdbserver_start (gdbstub_port); gdbserver_start (gdbstub_port);
gdb_handlesig(env, 0); gdb_handlesig(cpu, 0);
} }
cpu_loop(env); cpu_loop(env);
/* never exits */ /* never exits */

View File

@ -2636,7 +2636,7 @@ void gdb_do_syscall(gdb_syscall_complete_cb cb, const char *fmt, ...)
va_end(va); va_end(va);
#ifdef CONFIG_USER_ONLY #ifdef CONFIG_USER_ONLY
put_packet(s, s->syscall_buf); put_packet(s, s->syscall_buf);
gdb_handlesig(s->c_cpu, 0); gdb_handlesig(ENV_GET_CPU(s->c_cpu), 0);
#else #else
/* In this case wait to send the syscall packet until notification that /* In this case wait to send the syscall packet until notification that
the CPU has stopped. This must be done because if the packet is sent the CPU has stopped. This must be done because if the packet is sent
@ -2765,9 +2765,9 @@ gdb_queuesig (void)
} }
int int
gdb_handlesig(CPUArchState *env, int sig) gdb_handlesig(CPUState *cpu, int sig)
{ {
CPUState *cpu = ENV_GET_CPU(env); CPUArchState *env = cpu->env_ptr;
GDBState *s; GDBState *s;
char buf[256]; char buf[256];
int n; int n;

View File

@ -20,7 +20,7 @@ void gdb_set_stop_cpu(CPUState *cpu);
void gdb_exit(CPUArchState *, int); void gdb_exit(CPUArchState *, int);
#ifdef CONFIG_USER_ONLY #ifdef CONFIG_USER_ONLY
int gdb_queuesig (void); int gdb_queuesig (void);
int gdb_handlesig (CPUArchState *, int); int gdb_handlesig(CPUState *, int);
void gdb_signalled(CPUArchState *, int); void gdb_signalled(CPUArchState *, int);
void gdbserver_fork(CPUArchState *); void gdbserver_fork(CPUArchState *);
#endif #endif

View File

@ -312,6 +312,7 @@ static void set_idt(int n, unsigned int dpl)
void cpu_loop(CPUX86State *env) void cpu_loop(CPUX86State *env)
{ {
CPUState *cs = CPU(x86_env_get_cpu(env));
int trapnr; int trapnr;
abi_ulong pc; abi_ulong pc;
target_siginfo_t info; target_siginfo_t info;
@ -443,7 +444,7 @@ void cpu_loop(CPUX86State *env)
{ {
int sig; int sig;
sig = gdb_handlesig (env, TARGET_SIGTRAP); sig = gdb_handlesig(cs, TARGET_SIGTRAP);
if (sig) if (sig)
{ {
info.si_signo = sig; info.si_signo = sig;
@ -875,7 +876,7 @@ void cpu_loop(CPUARMState *env)
{ {
int sig; int sig;
sig = gdb_handlesig (env, TARGET_SIGTRAP); sig = gdb_handlesig(cs, TARGET_SIGTRAP);
if (sig) if (sig)
{ {
info.si_signo = sig; info.si_signo = sig;
@ -966,7 +967,7 @@ void cpu_loop(CPUUniCore32State *env)
{ {
int sig; int sig;
sig = gdb_handlesig(env, TARGET_SIGTRAP); sig = gdb_handlesig(cs, TARGET_SIGTRAP);
if (sig) { if (sig) {
info.si_signo = sig; info.si_signo = sig;
info.si_errno = 0; info.si_errno = 0;
@ -1233,7 +1234,7 @@ void cpu_loop (CPUSPARCState *env)
{ {
int sig; int sig;
sig = gdb_handlesig (env, TARGET_SIGTRAP); sig = gdb_handlesig(cs, TARGET_SIGTRAP);
if (sig) if (sig)
{ {
info.si_signo = sig; info.si_signo = sig;
@ -1764,7 +1765,7 @@ void cpu_loop(CPUPPCState *env)
{ {
int sig; int sig;
sig = gdb_handlesig(env, TARGET_SIGTRAP); sig = gdb_handlesig(cs, TARGET_SIGTRAP);
if (sig) { if (sig) {
info.si_signo = sig; info.si_signo = sig;
info.si_errno = 0; info.si_errno = 0;
@ -2315,7 +2316,7 @@ done_syscall:
{ {
int sig; int sig;
sig = gdb_handlesig (env, TARGET_SIGTRAP); sig = gdb_handlesig(cs, TARGET_SIGTRAP);
if (sig) if (sig)
{ {
info.si_signo = sig; info.si_signo = sig;
@ -2475,7 +2476,7 @@ void cpu_loop(CPUOpenRISCState *env)
break; break;
} }
if (gdbsig) { if (gdbsig) {
gdb_handlesig(env, gdbsig); gdb_handlesig(cs, gdbsig);
if (gdbsig != TARGET_SIGTRAP) { if (gdbsig != TARGET_SIGTRAP) {
exit(1); exit(1);
} }
@ -2518,7 +2519,7 @@ void cpu_loop(CPUSH4State *env)
{ {
int sig; int sig;
sig = gdb_handlesig (env, TARGET_SIGTRAP); sig = gdb_handlesig(cs, TARGET_SIGTRAP);
if (sig) if (sig)
{ {
info.si_signo = sig; info.si_signo = sig;
@ -2586,7 +2587,7 @@ void cpu_loop(CPUCRISState *env)
{ {
int sig; int sig;
sig = gdb_handlesig (env, TARGET_SIGTRAP); sig = gdb_handlesig(cs, TARGET_SIGTRAP);
if (sig) if (sig)
{ {
info.si_signo = sig; info.si_signo = sig;
@ -2686,7 +2687,7 @@ void cpu_loop(CPUMBState *env)
{ {
int sig; int sig;
sig = gdb_handlesig (env, TARGET_SIGTRAP); sig = gdb_handlesig(cs, TARGET_SIGTRAP);
if (sig) if (sig)
{ {
info.si_signo = sig; info.si_signo = sig;
@ -2779,7 +2780,7 @@ void cpu_loop(CPUM68KState *env)
{ {
int sig; int sig;
sig = gdb_handlesig (env, TARGET_SIGTRAP); sig = gdb_handlesig(cs, TARGET_SIGTRAP);
if (sig) if (sig)
{ {
info.si_signo = sig; info.si_signo = sig;
@ -3006,7 +3007,7 @@ void cpu_loop(CPUAlphaState *env)
} }
break; break;
case EXCP_DEBUG: case EXCP_DEBUG:
info.si_signo = gdb_handlesig (env, TARGET_SIGTRAP); info.si_signo = gdb_handlesig(cs, TARGET_SIGTRAP);
if (info.si_signo) { if (info.si_signo) {
env->lock_addr = -1; env->lock_addr = -1;
info.si_errno = 0; info.si_errno = 0;
@ -3059,7 +3060,7 @@ void cpu_loop(CPUS390XState *env)
break; break;
case EXCP_DEBUG: case EXCP_DEBUG:
sig = gdb_handlesig(env, TARGET_SIGTRAP); sig = gdb_handlesig(cs, TARGET_SIGTRAP);
if (sig) { if (sig) {
n = TARGET_TRAP_BRKPT; n = TARGET_TRAP_BRKPT;
goto do_signal_pc; goto do_signal_pc;
@ -3541,6 +3542,7 @@ int main(int argc, char **argv, char **envp)
struct linux_binprm bprm; struct linux_binprm bprm;
TaskState *ts; TaskState *ts;
CPUArchState *env; CPUArchState *env;
CPUState *cpu;
int optind; int optind;
char **target_environ, **wrk; char **target_environ, **wrk;
char **target_argv; char **target_argv;
@ -3637,11 +3639,12 @@ int main(int argc, char **argv, char **envp)
fprintf(stderr, "Unable to find CPU definition\n"); fprintf(stderr, "Unable to find CPU definition\n");
exit(1); exit(1);
} }
cpu = ENV_GET_CPU(env);
#if defined(TARGET_SPARC) || defined(TARGET_PPC) #if defined(TARGET_SPARC) || defined(TARGET_PPC)
cpu_reset(ENV_GET_CPU(env)); cpu_reset(cpu);
#endif #endif
thread_cpu = ENV_GET_CPU(env); thread_cpu = cpu;
if (getenv("QEMU_STRACE")) { if (getenv("QEMU_STRACE")) {
do_strace = 1; do_strace = 1;
@ -4076,7 +4079,7 @@ int main(int argc, char **argv, char **envp)
gdbstub_port); gdbstub_port);
exit(1); exit(1);
} }
gdb_handlesig(env, 0); gdb_handlesig(cpu, 0);
} }
cpu_loop(env); cpu_loop(env);
/* never exits */ /* never exits */

View File

@ -5386,6 +5386,7 @@ long do_rt_sigreturn(CPUArchState *env)
void process_pending_signals(CPUArchState *cpu_env) void process_pending_signals(CPUArchState *cpu_env)
{ {
CPUState *cpu = ENV_GET_CPU(cpu_env);
int sig; int sig;
abi_ulong handler; abi_ulong handler;
sigset_t set, old_set; sigset_t set, old_set;
@ -5419,7 +5420,7 @@ void process_pending_signals(CPUArchState *cpu_env)
if (!k->first) if (!k->first)
k->pending = 0; k->pending = 0;
sig = gdb_handlesig (cpu_env, sig); sig = gdb_handlesig(cpu, sig);
if (!sig) { if (!sig) {
sa = NULL; sa = NULL;
handler = TARGET_SIG_IGN; handler = TARGET_SIG_IGN;