All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Vivier <laurent@vivier.eu>
To: Paolo Bonzini <pbonzini@redhat.com>, qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org
Subject: Re: [Qemu-devel] [PATCH 11/11] linux-user: convert DEBUG_SIGNAL logging to tracepoints
Date: Sat, 12 Dec 2015 16:08:37 +0100	[thread overview]
Message-ID: <566C3875.4060908@vivier.eu> (raw)
In-Reply-To: <1449916796-18664-1-git-send-email-pbonzini@redhat.com>



Le 12/12/2015 11:39, Paolo Bonzini a écrit :
> "Unimplemented" messages go to stderr, everything else goes to tracepoints
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  bsd-user/signal.c   |   2 -
>  linux-user/signal.c | 118 ++++++++++++++++++++++++++--------------------------
>  trace-events        |  11 +++++
>  3 files changed, 69 insertions(+), 62 deletions(-)
> 
> diff --git a/bsd-user/signal.c b/bsd-user/signal.c
> index e4ee2d0..4887ecc 100644
> --- a/bsd-user/signal.c
> +++ b/bsd-user/signal.c
> @@ -26,8 +26,6 @@
>  #include "qemu.h"
>  #include "target_signal.h"
>  
> -//#define DEBUG_SIGNAL
> -
>  void signal_init(void)
>  {
>  }
> diff --git a/linux-user/signal.c b/linux-user/signal.c
> index 9d62e02..919aa83 100644
> --- a/linux-user/signal.c
> +++ b/linux-user/signal.c
> @@ -28,8 +28,7 @@
>  #include "qemu.h"
>  #include "qemu-common.h"
>  #include "target_signal.h"
> -
> -//#define DEBUG_SIGNAL
> +#include "trace.h"
>  
>  static struct target_sigaltstack target_sigaltstack_used = {
>      .ss_sp = 0,
> @@ -444,7 +443,9 @@ static void QEMU_NORETURN force_sig(int target_sig)
>      TaskState *ts = (TaskState *)cpu->opaque;
>      int host_sig, core_dumped = 0;
>      struct sigaction act;
> +
>      host_sig = target_to_host_signal(target_sig);
> +    trace_user_force_sig(env, target_sig, host_sig);
>      gdb_signalled(env, target_sig);
>  
>      /* dump core if supported by target binary format */
> @@ -499,10 +500,7 @@ int queue_signal(CPUArchState *env, int sig, target_siginfo_t *info)
>      abi_ulong handler;
>      int queue;
>  
> -#if defined(DEBUG_SIGNAL)
> -    fprintf(stderr, "queue_signal: sig=%d\n",
> -            sig);
> -#endif
> +    trace_user_queue_signal(env, sig);
>      k = &ts->sigtab[sig - 1];
>      queue = gdb_queuesig ();
>      handler = sigact_table[sig - 1]._sa_handler;
> @@ -587,9 +585,7 @@ static void host_signal_handler(int host_signum, siginfo_t *info,
>      sig = host_to_target_signal(host_signum);
>      if (sig < 1 || sig > TARGET_NSIG)
>          return;
> -#if defined(DEBUG_SIGNAL)
> -    fprintf(stderr, "qemu: got signal %d\n", sig);
> -#endif
> +    trace_user_host_signal(env, host_signum, sig);
>      host_to_target_siginfo_noswap(&tinfo, info);
>      if (queue_signal(env, sig, &tinfo) == 1) {
>          /* interrupt the virtual CPU as soon as possible */
> @@ -682,10 +678,6 @@ int do_sigaction(int sig, const struct target_sigaction *act,
>      if (sig < 1 || sig > TARGET_NSIG || sig == TARGET_SIGKILL || sig == TARGET_SIGSTOP)
>          return -EINVAL;
>      k = &sigact_table[sig - 1];
> -#if defined(DEBUG_SIGNAL)
> -    fprintf(stderr, "sigaction sig=%d act=0x%p, oact=0x%p\n",
> -            sig, act, oact);
> -#endif
>      if (oact) {
>          __put_user(k->_sa_handler, &oact->_sa_handler);
>          __put_user(k->sa_flags, &oact->sa_flags);
> @@ -909,6 +901,7 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>  	int i;
>  
>  	frame_addr = get_sigframe(ka, env, sizeof(*frame));
> +        trace_user_setup_frame(env, frame_addr);
>  
>  	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  		goto give_sigsegv;
> @@ -970,6 +963,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
>  	int i;
>  
>  	frame_addr = get_sigframe(ka, env, sizeof(*frame));
> +        trace_user_setup_rt_frame(env, frame_addr);
>  
>  	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  		goto give_sigsegv;
> @@ -1081,9 +1075,7 @@ long do_sigreturn(CPUX86State *env)
>      sigset_t set;
>      int eax, i;
>  
> -#if defined(DEBUG_SIGNAL)
> -    fprintf(stderr, "do_sigreturn\n");
> -#endif
> +    trace_user_do_sigreturn(env, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
>          goto badframe;
>      /* set blocked signals */
> @@ -1115,6 +1107,7 @@ long do_rt_sigreturn(CPUX86State *env)
>  	int eax;
>  
>          frame_addr = env->regs[R_ESP] - 4;
> +        trace_user_do_rt_sigreturn(env, frame_addr);
>          if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
>                  goto badframe;
>          target_to_host_sigset(&set, &frame->uc.tuc_sigmask);
> @@ -1318,6 +1311,7 @@ static void target_setup_frame(int usig, struct target_sigaction *ka,
>      abi_ulong frame_addr, return_addr;
>  
>      frame_addr = get_sigframe(ka, env);
> +    trace_user_setup_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
>          goto give_sigsegv;
>      }
> @@ -1377,6 +1371,7 @@ long do_rt_sigreturn(CPUARMState *env)
>      struct target_rt_sigframe *frame = NULL;
>      abi_ulong frame_addr = env->xregs[31];
>  
> +    trace_user_do_rt_sigreturn(env, frame_addr);
>      if (frame_addr & 15) {
>          goto badframe;
>      }
> @@ -1703,6 +1698,7 @@ static void setup_frame_v1(int usig, struct target_sigaction *ka,
>  	abi_ulong frame_addr = get_sigframe(ka, regs, sizeof(*frame));
>  	int i;
>  
> +        trace_user_setup_frame(regs, frame_addr);
>  	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  		return;
>  
> @@ -1724,6 +1720,7 @@ static void setup_frame_v2(int usig, struct target_sigaction *ka,
>  	struct sigframe_v2 *frame;
>  	abi_ulong frame_addr = get_sigframe(ka, regs, sizeof(*frame));
>  
> +        trace_user_setup_frame(regs, frame_addr);
>  	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  		return;
>  
> @@ -1756,6 +1753,7 @@ static void setup_rt_frame_v1(int usig, struct target_sigaction *ka,
>  	int i;
>          abi_ulong info_addr, uc_addr;
>  
> +        trace_user_setup_rt_frame(env, frame_addr);
>  	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>              return /* 1 */;
>  
> @@ -1796,6 +1794,7 @@ static void setup_rt_frame_v2(int usig, struct target_sigaction *ka,
>  	abi_ulong frame_addr = get_sigframe(ka, env, sizeof(*frame));
>          abi_ulong info_addr, uc_addr;
>  
> +        trace_user_setup_rt_frame(env, frame_addr);
>  	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>              return /* 1 */;
>  
> @@ -1871,6 +1870,7 @@ static long do_sigreturn_v1(CPUARMState *env)
>  	 * not, then the user is trying to mess with us.
>  	 */
>          frame_addr = env->regs[13];
> +        trace_user_do_sigreturn(env, frame_addr);
>          if (frame_addr & 7) {
>              goto badframe;
>          }
> @@ -2007,6 +2007,7 @@ static long do_sigreturn_v2(CPUARMState *env)
>  	 * not, then the user is trying to mess with us.
>  	 */
>          frame_addr = env->regs[13];
> +        trace_user_do_sigreturn(env, frame_addr);
>          if (frame_addr & 7) {
>              goto badframe;
>          }
> @@ -2047,6 +2048,7 @@ static long do_rt_sigreturn_v1(CPUARMState *env)
>  	 * not, then the user is trying to mess with us.
>  	 */
>          frame_addr = env->regs[13];
> +        trace_user_do_rt_sigreturn(env, frame_addr);
>          if (frame_addr & 7) {
>              goto badframe;
>          }
> @@ -2088,6 +2090,7 @@ static long do_rt_sigreturn_v2(CPUARMState *env)
>  	 * not, then the user is trying to mess with us.
>  	 */
>          frame_addr = env->regs[13];
> +        trace_user_do_rt_sigreturn(env, frame_addr);
>          if (frame_addr & 7) {
>              goto badframe;
>          }
> @@ -2283,13 +2286,13 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>  
>          sigframe_size = NF_ALIGNEDSZ;
>  	sf_addr = get_sigframe(ka, env, sigframe_size);
> +        trace_user_setup_frame(env, sf_addr);
>  
>          sf = lock_user(VERIFY_WRITE, sf_addr, 
>                         sizeof(struct target_signal_frame), 0);
>          if (!sf)
>  		goto sigsegv;
>                  
> -	//fprintf(stderr, "sf: %x pc %x fp %x sp %x\n", sf, env->pc, env->regwptr[UREG_FP], env->regwptr[UREG_SP]);
>  #if 0
>  	if (invalid_frame_pointer(sf, sigframe_size))
>  		goto sigill_and_return;
> @@ -2356,7 +2359,6 @@ sigill_and_return:
>  	force_sig(TARGET_SIGILL);
>  #endif
>  sigsegv:
> -	//fprintf(stderr, "force_sig\n");
>          unlock_user(sf, sf_addr, sizeof(struct target_signal_frame));
>  	force_sig(TARGET_SIGSEGV);
>  }
> @@ -2378,13 +2380,9 @@ long do_sigreturn(CPUSPARCState *env)
>          int err=0, i;
>  
>          sf_addr = env->regwptr[UREG_FP];
> +        trace_user_do_sigreturn(env, sf_addr);
>          if (!lock_user_struct(VERIFY_READ, sf, sf_addr, 1))
>                  goto segv_and_exit;
> -#if 0
> -	fprintf(stderr, "sigreturn\n");
> -	fprintf(stderr, "sf: %x pc %x fp %x sp %x\n", sf, env->pc, env->regwptr[UREG_FP], env->regwptr[UREG_SP]);
> -#endif
> -	//cpu_dump_state(env, stderr, fprintf, 0);
>  
>          /* 1. Make sure we are not getting garbage from the user */
>  
> @@ -2443,6 +2441,7 @@ segv_and_exit:
>  
>  long do_rt_sigreturn(CPUSPARCState *env)
>  {
> +    trace_user_do_rt_sigreturn(env, 0);
>      fprintf(stderr, "do_rt_sigreturn: not implemented\n");
>      return -TARGET_ENOSYS;
>  }
> @@ -2902,6 +2901,7 @@ static void setup_frame(int sig, struct target_sigaction * ka,
>      int i;
>  
>      frame_addr = get_sigframe(ka, regs, sizeof(*frame));
> +    trace_user_setup_frame(regs, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  	goto give_sigsegv;
>  
> @@ -2948,10 +2948,8 @@ long do_sigreturn(CPUMIPSState *regs)
>      target_sigset_t target_set;
>      int i;
>  
> -#if defined(DEBUG_SIGNAL)
> -    fprintf(stderr, "do_sigreturn\n");
> -#endif
>      frame_addr = regs->active_tc.gpr[29];
> +    trace_user_do_sigreturn(regs, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
>     	goto badframe;
>  
> @@ -2998,6 +2996,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
>      int i;
>  
>      frame_addr = get_sigframe(ka, env, sizeof(*frame));
> +    trace_user_setup_rt_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  	goto give_sigsegv;
>  
> @@ -3055,10 +3054,8 @@ long do_rt_sigreturn(CPUMIPSState *env)
>      abi_ulong frame_addr;
>      sigset_t blocked;
>  
> -#if defined(DEBUG_SIGNAL)
> -    fprintf(stderr, "do_rt_sigreturn\n");
> -#endif
>      frame_addr = env->active_tc.gpr[29];
> +    trace_user_do_rt_sigreturn(env, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
>     	goto badframe;
>  
> @@ -3216,6 +3213,7 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>      int err = 0;
>  
>      frame_addr = get_sigframe(ka, regs->gregs[15], sizeof(*frame));
> +    trace_user_setup_frame(regs, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  	goto give_sigsegv;
>  
> @@ -3265,6 +3263,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
>      int err = 0;
>  
>      frame_addr = get_sigframe(ka, regs->gregs[15], sizeof(*frame));
> +    trace_user_setup_rt_frame(regs, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  	goto give_sigsegv;
>  
> @@ -3325,10 +3324,8 @@ long do_sigreturn(CPUSH4State *regs)
>      int i;
>      int err = 0;
>  
> -#if defined(DEBUG_SIGNAL)
> -    fprintf(stderr, "do_sigreturn\n");
> -#endif
>      frame_addr = regs->gregs[15];
> +    trace_user_do_sigreturn(regs, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
>     	goto badframe;
>  
> @@ -3361,10 +3358,8 @@ long do_rt_sigreturn(CPUSH4State *regs)
>      sigset_t blocked;
>      target_ulong r0;
>  
> -#if defined(DEBUG_SIGNAL)
> -    fprintf(stderr, "do_rt_sigreturn\n");
> -#endif
>      frame_addr = regs->gregs[15];
> +    trace_user_do_rt_sigreturn(regs, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
>     	goto badframe;
>  
> @@ -3514,6 +3509,7 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>      int i;
>  
>      frame_addr = get_sigframe(ka, env, sizeof *frame);
> +    trace_user_setup_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>          goto badframe;
>  
> @@ -3579,6 +3575,7 @@ long do_sigreturn(CPUMBState *env)
>      int i;
>  
>      frame_addr = env->regs[R_SP];
> +    trace_user_do_sigreturn(env, frame_addr);
>      /* Make sure the guest isn't playing games.  */
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 1))
>          goto badframe;
> @@ -3604,6 +3601,7 @@ long do_sigreturn(CPUMBState *env)
>  
>  long do_rt_sigreturn(CPUMBState *env)
>  {
> +    trace_user_do_rt_sigreturn(env, 0);
>      fprintf(stderr, "Microblaze do_rt_sigreturn: not implemented\n");
>      return -TARGET_ENOSYS;
>  }
> @@ -3693,6 +3691,7 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>  	int i;
>  
>  	frame_addr = get_sigframe(env, sizeof *frame);
> +        trace_user_setup_frame(env, frame_addr);
>  	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  		goto badframe;
>  
> @@ -3746,6 +3745,7 @@ long do_sigreturn(CPUCRISState *env)
>  	int i;
>  
>  	frame_addr = env->regs[R_SP];
> +        trace_user_do_sigreturn(env, frame_addr);
>  	/* Make sure the guest isn't playing games.  */
>  	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 1))
>  		goto badframe;
> @@ -3767,6 +3767,7 @@ long do_sigreturn(CPUCRISState *env)
>  
>  long do_rt_sigreturn(CPUCRISState *env)
>  {
> +    trace_user_do_rt_sigreturn(env, 0);
>      fprintf(stderr, "CRIS do_rt_sigreturn: not implemented\n");
>      return -TARGET_ENOSYS;
>  }
> @@ -3911,6 +3912,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
>      abi_ulong info_addr, uc_addr;
>  
>      frame_addr = get_sigframe(ka, env, sizeof(*frame));
> +    trace_user_setup_rt_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
>          goto give_sigsegv;
>      }
> @@ -3972,14 +3974,15 @@ give_sigsegv:
>  
>  long do_sigreturn(CPUOpenRISCState *env)
>  {
> -
> -    qemu_log("do_sigreturn: not implemented\n");
> +    trace_user_do_sigreturn(env, 0);
> +    fprintf(stderr, "do_sigreturn: not implemented\n");
>      return -TARGET_ENOSYS;
>  }
>  
>  long do_rt_sigreturn(CPUOpenRISCState *env)
>  {
> -    qemu_log("do_rt_sigreturn: not implemented\n");
> +    trace_user_do_rt_sigreturn(env, 0);
> +    fprintf(stderr, "do_rt_sigreturn: not implemented\n");
>      return -TARGET_ENOSYS;
>  }
>  /* TARGET_OPENRISC */
> @@ -4102,13 +4105,11 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>      abi_ulong frame_addr;
>  
>      frame_addr = get_sigframe(ka, env, sizeof(*frame));
> -    qemu_log("%s: frame_addr 0x%llx\n", __FUNCTION__,
> -             (unsigned long long)frame_addr);
> +    trace_user_setup_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
>              goto give_sigsegv;
>      }
>  
> -    qemu_log("%s: 1\n", __FUNCTION__);
>      __put_user(set->sig[0], &frame->sc.oldmask[0]);
>  
>      save_sigregs(env, &frame->sregs);
> @@ -4149,7 +4150,6 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>      return;
>  
>  give_sigsegv:
> -    qemu_log("%s: give_sigsegv\n", __FUNCTION__);
>      force_sig(TARGET_SIGSEGV);
>  }
>  
> @@ -4162,13 +4162,11 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
>      abi_ulong frame_addr;
>  
>      frame_addr = get_sigframe(ka, env, sizeof *frame);
> -    qemu_log("%s: frame_addr 0x%llx\n", __FUNCTION__,
> -             (unsigned long long)frame_addr);
> +    trace_user_setup_rt_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
>          goto give_sigsegv;
>      }
>  
> -    qemu_log("%s: 1\n", __FUNCTION__);
>      tswap_siginfo(&frame->info, info);
>  
>      /* Create the ucontext.  */
> @@ -4207,7 +4205,6 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
>      return;
>  
>  give_sigsegv:
> -    qemu_log("%s: give_sigsegv\n", __FUNCTION__);
>      force_sig(TARGET_SIGSEGV);
>  }
>  
> @@ -4222,9 +4219,8 @@ restore_sigregs(CPUS390XState *env, target_sigregs *sc)
>      }
>  
>      __get_user(env->psw.mask, &sc->regs.psw.mask);
> -    qemu_log("%s: sc->regs.psw.addr 0x%llx env->psw.addr 0x%llx\n",
> -             __FUNCTION__, (unsigned long long)sc->regs.psw.addr,
> -             (unsigned long long)env->psw.addr);
> +    trace_user_s390x_restore_sigregs(env, (unsigned long long)sc->regs.psw.addr,
> +                                     (unsigned long long)env->psw.addr);
>      __get_user(env->psw.addr, &sc->regs.psw.addr);
>      /* FIXME: 31-bit -> | PSW_ADDR_AMODE */
>  
> @@ -4242,11 +4238,10 @@ long do_sigreturn(CPUS390XState *env)
>  {
>      sigframe *frame;
>      abi_ulong frame_addr = env->regs[15];
> -    qemu_log("%s: frame_addr 0x%llx\n", __FUNCTION__,
> -             (unsigned long long)frame_addr);
>      target_sigset_t target_set;
>      sigset_t set;
>  
> +    trace_user_do_sigreturn(env, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1)) {
>          goto badframe;
>      }
> @@ -4271,10 +4266,9 @@ long do_rt_sigreturn(CPUS390XState *env)
>  {
>      rt_sigframe *frame;
>      abi_ulong frame_addr = env->regs[15];
> -    qemu_log("%s: frame_addr 0x%llx\n", __FUNCTION__,
> -             (unsigned long long)frame_addr);
>      sigset_t set;
>  
> +    trace_user_do_rt_sigreturn(env, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1)) {
>          goto badframe;
>      }
> @@ -4659,6 +4653,7 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>  #endif
>  
>      frame_addr = get_sigframe(ka, env, sizeof(*frame));
> +    trace_user_setup_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 1))
>          goto sigsegv;
>      sc = &frame->sctx;
> @@ -4723,7 +4718,6 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>  
>  sigsegv:
>      unlock_user_struct(frame, frame_addr, 1);
> -    qemu_log("segfaulting from setup_frame\n");
>      force_sig(TARGET_SIGSEGV);
>  }
>  
> @@ -4819,7 +4813,6 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
>  
>  sigsegv:
>      unlock_user_struct(rt_sf, rt_sf_addr, 1);
> -    qemu_log("segfaulting from setup_rt_frame\n");
>      force_sig(TARGET_SIGSEGV);
>  
>  }
> @@ -4857,7 +4850,6 @@ long do_sigreturn(CPUPPCState *env)
>  sigsegv:
>      unlock_user_struct(sr, sr_addr, 1);
>      unlock_user_struct(sc, sc_addr, 1);
> -    qemu_log("segfaulting from do_sigreturn\n");
>      force_sig(TARGET_SIGSEGV);
>      return 0;
>  }
> @@ -4913,7 +4905,6 @@ long do_rt_sigreturn(CPUPPCState *env)
>  
>  sigsegv:
>      unlock_user_struct(rt_sf, rt_sf_addr, 1);
> -    qemu_log("segfaulting from do_rt_sigreturn\n");
>      force_sig(TARGET_SIGSEGV);
>      return 0;
>  }
> @@ -5037,6 +5028,7 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>      int i;
>  
>      frame_addr = get_sigframe(ka, env, sizeof *frame);
> +    trace_user_setup_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  	goto give_sigsegv;
>  
> @@ -5153,6 +5145,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
>      int i;
>  
>      frame_addr = get_sigframe(ka, env, sizeof *frame);
> +    trace_user_setup_rt_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  	goto give_sigsegv;
>  
> @@ -5220,6 +5213,7 @@ long do_sigreturn(CPUM68KState *env)
>      sigset_t set;
>      int d0, i;
>  
> +    trace_user_do_sigreturn(env, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
>          goto badframe;
>  
> @@ -5254,6 +5248,7 @@ long do_rt_sigreturn(CPUM68KState *env)
>      sigset_t set;
>      int d0;
>  
> +    trace_user_do_rt_sigreturn(env, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
>          goto badframe;
>  
> @@ -5393,6 +5388,7 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>      int err = 0;
>  
>      frame_addr = get_sigframe(ka, env, sizeof(*frame));
> +    trace_user_setup_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
>          goto give_sigsegv;
>      }
> @@ -5437,6 +5433,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
>      int i, err = 0;
>  
>      frame_addr = get_sigframe(ka, env, sizeof(*frame));
> +    trace_user_setup_rt_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
>          goto give_sigsegv;
>      }
> @@ -5515,6 +5512,7 @@ long do_rt_sigreturn(CPUAlphaState *env)
>      struct target_rt_sigframe *frame;
>      sigset_t set;
>  
> +    trace_user_do_rt_sigreturn(env, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1)) {
>          goto badframe;
>      }
> @@ -5622,6 +5620,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
>      unsigned long restorer;
>  
>      frame_addr = get_sigframe(ka, env, sizeof(*frame));
> +    trace_user_setup_rt_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
>          goto give_sigsegv;
>      }
> @@ -5672,6 +5671,7 @@ long do_rt_sigreturn(CPUTLGState *env)
>      struct target_rt_sigframe *frame;
>      sigset_t set;
>  
> +    trace_user_do_rt_sigreturn(env, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1)) {
>          goto badframe;
>      }
> @@ -5750,9 +5750,7 @@ void process_pending_signals(CPUArchState *cpu_env)
>      return;
>  
>   handle_signal:
> -#ifdef DEBUG_SIGNAL
> -    fprintf(stderr, "qemu: process signal %d\n", sig);
> -#endif
> +    trace_user_handle_signal(cpu_env, sig);
>      /* dequeue signal */
>      q = k->first;
>      k->first = q->next;
> diff --git a/trace-events b/trace-events
> index ee890c1..7d02e08 100644
> --- a/trace-events
> +++ b/trace-events
> @@ -1795,3 +1795,14 @@ qcrypto_tls_session_new(void *session, void *creds, const char *hostname, const
>  
>  # net/vhost-user.c
>  vhost_user_event(const char *chr, int event) "chr: %s got event: %d"
> +
> +# linux-user/signal.c
> +user_setup_frame(void *env, uint64_t frame_addr) "env=%p frame_addr="PRIx64""
> +user_setup_rt_frame(void *env, uint64_t frame_addr) "env=%p frame_addr="PRIx64""
> +user_do_rt_sigreturn(void *env, uint64_t frame_addr) "env=%p frame_addr="PRIx64""
> +user_do_sigreturn(void *env, uint64_t frame_addr) "env=%p frame_addr="PRIx64""
> +user_force_sig(void *env, int target_sig, int host_sig) "env=%p signal %d (host %d)"
> +user_handle_signal(void *env, int target_sig) "env=%p signal %d"
> +user_host_signal(void *env, int host_sig, int target_sig) "env=%p signal %d (target %d("
> +user_queue_signal(void *env, int target_sig) "env=%p signal %d"
> +user_s390x_restore_sigregs(void *env, uint64_t sc_psw_addr, uint64_t env_psw_addr) "env=%p frame psw.addr "PRIx64 " current psw.addr "PRIx64""
> 

Reviewed-by: Laurent Vivier <laurent@vivier.eu>

  reply	other threads:[~2015-12-12 15:08 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-12 10:36 [Qemu-devel] [PATCH 00/11] Avoid always-active qemu_log calls Paolo Bonzini
2015-12-12 10:36 ` [Qemu-devel] [PATCH 01/11] qemu-log: introduce qemu_log_separate Paolo Bonzini
2015-12-12 10:36 ` [Qemu-devel] [PATCH 02/11] alpha: convert "naked" qemu_log to tracepoint Paolo Bonzini
2015-12-16 16:59   ` Richard Henderson
2015-12-12 10:36 ` [Qemu-devel] [PATCH 03/11] cris: avoid "naked" qemu_log Paolo Bonzini
2015-12-17 13:32   ` Edgar E. Iglesias
2015-12-12 10:36 ` [Qemu-devel] [PATCH 04/11] microblaze: " Paolo Bonzini
2015-12-17 13:34   ` Edgar E. Iglesias
2015-12-12 10:36 ` [Qemu-devel] [PATCH 05/11] s390x: " Paolo Bonzini
2015-12-12 10:36 ` [Qemu-devel] [PATCH 06/11] ppc: cleanup logging Paolo Bonzini
2015-12-14  0:24   ` David Gibson
2015-12-12 10:36 ` [Qemu-devel] [PATCH 07/11] tricore: avoid "naked" qemu_log Paolo Bonzini
2015-12-12 19:47   ` Bastian Koppelmann
2015-12-12 20:15     ` Peter Maydell
2015-12-12 10:36 ` [Qemu-devel] [PATCH 08/11] xtensa: " Paolo Bonzini
2015-12-12 10:36 ` [Qemu-devel] [PATCH 09/11] user: introduce "-d page" Paolo Bonzini
2015-12-12 10:36 ` [Qemu-devel] [PATCH 10/11] linux-user: avoid "naked" qemu_log Paolo Bonzini
2015-12-12 15:04   ` Laurent Vivier
2015-12-12 10:39 ` [Qemu-devel] [PATCH 11/11] linux-user: convert DEBUG_SIGNAL logging to tracepoints Paolo Bonzini
2015-12-12 15:08   ` Laurent Vivier [this message]
2015-12-15  6:59   ` Thomas Huth
2015-12-15 13:19     ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=566C3875.4060908@vivier.eu \
    --to=laurent@vivier.eu \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.