X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Finterr.c;h=8d3b3b079be420cc146aa33bf5bb9cdb84ab7a3c;hb=df61d054712f14fda874034fde70a269a76c792b;hp=7f60ddeeee0e6bdc56412f086c7a9b8fd3d0b8a2;hpb=dfa55a883f94470267b626dae77ce7e7dfac3df6;p=sbcl.git diff --git a/src/runtime/interr.c b/src/runtime/interr.c index 7f60dde..8d3b3b0 100644 --- a/src/runtime/interr.c +++ b/src/runtime/interr.c @@ -15,15 +15,19 @@ #include #include +#include +#include "sbcl.h" #include "arch.h" #include "signal.h" #include "runtime.h" -#include "sbcl.h" #include "interr.h" #include "print.h" #include "lispregs.h" +#include "genesis/static-symbols.h" +#include "genesis/vector.h" +#include "thread.h" /* the way that we shut down the system on a fatal error */ @@ -43,7 +47,10 @@ never_returns lose(char *fmt, ...) { va_list ap; - fprintf(stderr, "fatal error encountered in SBCL runtime system"); + fprintf(stderr, "fatal error encountered in SBCL pid %d",getpid()); +#if defined(LISP_FEATURE_SB_THREAD) + fprintf(stderr, "(tid %ld)",thread_self()); +#endif if (fmt) { fprintf(stderr, ":\n"); va_start(ap, fmt); @@ -99,9 +106,9 @@ describe_internal_error(os_context_t *context) brief_print(*os_context_register_addr(context, offset)); break; - case sc_BaseCharReg: + case sc_CharacterReg: ch = *os_context_register_addr(context, offset); -#ifdef __i386__ +#ifdef LISP_FEATURE_X86 if (offset&1) ch = ch>>8; ch = ch & 0xff; @@ -123,13 +130,13 @@ describe_internal_error(os_context_t *context) #ifdef sc_WordPointerReg case sc_WordPointerReg: #endif - printf("\t0x%08x\n", *os_context_register_addr(context, offset)); + printf("\t0x%08lx\n", (unsigned long) *os_context_register_addr(context, offset)); break; case sc_SignedReg: - printf("\t%d\n", *os_context_register_addr(context, offset)); + printf("\t%ld\n", (long) *os_context_register_addr(context, offset)); break; case sc_UnsignedReg: - printf("\t%u\n", *os_context_register_addr(context, offset)); + printf("\t%lu\n", (unsigned long) *os_context_register_addr(context, offset)); break; #ifdef sc_SingleFloatReg case sc_SingleFloatReg: @@ -160,8 +167,8 @@ lispobj debug_print(lispobj string) that %primitive print is used (it's only a debugging aid anyway) we just put guarantee our safety by putting an unused buffer on the stack before doing anything else here */ - char untouched[32]; + char untouched[32]; /* GCC warns about not using this, but that's the point.. */ fprintf(stderr, "%s\n", - (char *)(((struct vector *)PTR(string))->data),untouched); + (char *)(((struct vector *)native_pointer(string))->data),untouched); return NIL; }