X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fruntime%2Fx86-64-arch.c;h=6d7046ccb0d8fdf2978ab9c8cd6111fed3e492b0;hb=2cb068e245e00505076e9c325424df2a1260bfb1;hp=eaa1e23a99734590534177897a666d8b7c3d3c3b;hpb=1600081cf1b71b3d0e2e40de1c1c124a3a4fd40c;p=sbcl.git diff --git a/src/runtime/x86-64-arch.c b/src/runtime/x86-64-arch.c index eaa1e23..6d7046c 100644 --- a/src/runtime/x86-64-arch.c +++ b/src/runtime/x86-64-arch.c @@ -100,6 +100,8 @@ void arch_skip_instruction(os_context_t *context) case trap_PendingInterrupt: case trap_Halt: + case trap_SingleStepAround: + case trap_SingleStepBefore: /* only needed to skip the Code */ break; @@ -256,6 +258,14 @@ sigtrap_handler(int signal, siginfo_t *info, void *void_context) (unsigned long)handle_fun_end_breakpoint(signal, info, context); break; + case trap_SingleStepAround: + case trap_SingleStepBefore: + arch_skip_instruction(context); + /* On x86-64 the fdefn / function is always in RAX, so we pass + * 0 as the register_offset. */ + handle_single_step_trap(context, trap, 0); + break; + default: FSHOW((stderr,"/[C--trap default %d %d %x]\n", signal, code, context));