projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.0.26:
[sbcl.git]
/
src
/
runtime
/
x86-64-arch.c
diff --git
a/src/runtime/x86-64-arch.c
b/src/runtime/x86-64-arch.c
index
eaa1e23
..
6d7046c
100644
(file)
--- 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_PendingInterrupt:
case trap_Halt:
+ case trap_SingleStepAround:
+ case trap_SingleStepBefore:
/* only needed to skip the Code */
break;
/* 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;
(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));
default:
FSHOW((stderr,"/[C--trap default %d %d %x]\n",
signal, code, context));