X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fx86-arch.c;h=4540142a9b8537cf1d11968eca28ffe0df669d44;hb=b66385e2031fc2cac17dd129df0af400beb48a22;hp=ba0cf365020f311827d768148169bacf2c12bbef;hpb=1600081cf1b71b3d0e2e40de1c1c124a3a4fd40c;p=sbcl.git diff --git a/src/runtime/x86-arch.c b/src/runtime/x86-arch.c index ba0cf36..4540142 100644 --- a/src/runtime/x86-arch.c +++ b/src/runtime/x86-arch.c @@ -107,6 +107,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; @@ -304,6 +306,14 @@ sigtrap_handler(int signal, siginfo_t *info, void *void_context) (int)handle_fun_end_breakpoint(signal, info, context); break; + case trap_SingleStepAround: + case trap_SingleStepBefore: + arch_skip_instruction(context); + /* On x86 the fdefn / function is always in EAX, 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, trap, context));