X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fbreakpoint.c;h=45639c49ae98da2c8383c6952059c309064ee7b9;hb=cf507f95509a855a752b6f1771aa06877b8a3b30;hp=c678192087e4a026f205f161a7d72a151ebc52c6;hpb=f0f8bc6c184e849782fc784230f8e235d3659d5d;p=sbcl.git diff --git a/src/runtime/breakpoint.c b/src/runtime/breakpoint.c index c678192..45639c4 100644 --- a/src/runtime/breakpoint.c +++ b/src/runtime/breakpoint.c @@ -104,7 +104,7 @@ static long compute_offset(os_context_t *context, lispobj code) else { unsigned long code_start; struct code *codeptr = (struct code *)native_pointer(code); -#ifdef parisc +#ifdef LISP_FEATURE_HPPA unsigned long pc = *os_context_pc_addr(context) & ~3; #else unsigned long pc = *os_context_pc_addr(context); @@ -115,7 +115,7 @@ static long compute_offset(os_context_t *context, lispobj code) if (pc < code_start) return 0; else { - long offset = pc - code_start; + unsigned long offset = pc - code_start; if (offset >= codeptr->code_size) return 0; else @@ -130,6 +130,7 @@ void handle_breakpoint(os_context_t *context) fake_foreign_function_call(context); + unblock_gc_signals(0, 0); context_sap = alloc_sap(context); code = find_code(context); @@ -139,7 +140,7 @@ void handle_breakpoint(os_context_t *context) thread_sigmask(SIG_SETMASK, os_context_sigmask_addr(context), 0); #endif - funcall3(SymbolFunction(HANDLE_BREAKPOINT), + funcall3(StaticSymbolFunction(HANDLE_BREAKPOINT), compute_offset(context, code), code, context_sap); @@ -154,6 +155,7 @@ void *handle_fun_end_breakpoint(os_context_t *context) fake_foreign_function_call(context); + unblock_gc_signals(0, 0); context_sap = alloc_sap(context); code = find_code(context); codeptr = (struct code *)native_pointer(code); @@ -164,7 +166,7 @@ void *handle_fun_end_breakpoint(os_context_t *context) thread_sigmask(SIG_SETMASK, os_context_sigmask_addr(context), 0); #endif - funcall3(SymbolFunction(HANDLE_BREAKPOINT), + funcall3(StaticSymbolFunction(HANDLE_BREAKPOINT), compute_offset(context, code), code, context_sap); @@ -194,7 +196,7 @@ handle_single_step_trap (os_context_t *context, int kind, int register_offset) thread_sigmask(SIG_SETMASK, os_context_sigmask_addr(context), 0); #endif - funcall2(SymbolFunction(HANDLE_SINGLE_STEP_TRAP), + funcall2(StaticSymbolFunction(HANDLE_SINGLE_STEP_TRAP), make_fixnum(kind), make_fixnum(register_offset));