projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.8.13.41: Require robustness
[sbcl.git]
/
src
/
runtime
/
backtrace.c
diff --git
a/src/runtime/backtrace.c
b/src/runtime/backtrace.c
index
a4cbc11
..
c4840cc
100644
(file)
--- a/
src/runtime/backtrace.c
+++ b/
src/runtime/backtrace.c
@@
-26,8
+26,9
@@
#endif
#include "genesis/static-symbols.h"
#include "genesis/primitive-objects.h"
#endif
#include "genesis/static-symbols.h"
#include "genesis/primitive-objects.h"
+#include "thread.h"
-#ifndef __i386__
+#ifndef LISP_FEATURE_X86
/* KLUDGE: Sigh ... I know what the call frame looks like and it had
* better not change. */
/* KLUDGE: Sigh ... I know what the call frame looks like and it had
* better not change. */
@@
-78,7
+79,6
@@
code_pointer(lispobj object)
break;
case RETURN_PC_HEADER_WIDETAG:
case SIMPLE_FUN_HEADER_WIDETAG:
break;
case RETURN_PC_HEADER_WIDETAG:
case SIMPLE_FUN_HEADER_WIDETAG:
- case CLOSURE_FUN_HEADER_WIDETAG:
len = HEADER_LENGTH(header);
if (len == 0)
headerp = NULL;
len = HEADER_LENGTH(header);
if (len == 0)
headerp = NULL;
@@
-95,7
+95,8
@@
code_pointer(lispobj object)
static boolean
cs_valid_pointer_p(struct call_frame *pointer)
{
static boolean
cs_valid_pointer_p(struct call_frame *pointer)
{
- return (((char *) CONTROL_STACK_START <= (char *) pointer) &&
+ struct thread *thread=arch_os_get_current_thread();
+ return (((char *) thread->control_stack_start <= (char *) pointer) &&
((char *) pointer < (char *) current_control_stack_pointer));
}
((char *) pointer < (char *) current_control_stack_pointer));
}
@@
-237,7
+238,7
@@
backtrace(int nframes)
symbol = (struct symbol *) object;
object = (lispobj *) native_pointer(symbol->name);
}
symbol = (struct symbol *) object;
object = (lispobj *) native_pointer(symbol->name);
}
- if (widetag_of(*object) == SIMPLE_STRING_WIDETAG) {
+ if (widetag_of(*object) == SIMPLE_BASE_STRING_WIDETAG) {
struct vector *string;
string = (struct vector *) object;
struct vector *string;
string = (struct vector *) object;
@@
-269,6
+270,8
@@
backtrace(int nframes)
#else
#else
+
+
void
backtrace(int nframes)
{
void
backtrace(int nframes)
{