+ printf("Specials:\n");
+ printf(" *GC-INHIBIT* = %s\n", (SymbolValue(GC_INHIBIT, thread) == T) ? "T" : "NIL");
+ printf(" *GC-PENDING* = %s\n",
+ (SymbolValue(GC_PENDING, thread) == T) ?
+ "T" : ((SymbolValue(GC_PENDING, thread) == NIL) ?
+ "NIL" : ":IN-PROGRESS"));
+ printf(" *INTERRUPTS-ENABLED* = %s\n", (SymbolValue(INTERRUPTS_ENABLED, thread) == T) ? "T" : "NIL");
+#ifdef STOP_FOR_GC_PENDING
+ printf(" *STOP-FOR-GC-PENDING* = %s\n", (SymbolValue(STOP_FOR_GC_PENDING, thread) == T) ? "T" : "NIL");
+#endif
+ printf("Pending handler = %p\n", data->pending_handler);
+}
+
+/* This function has been split from lisp_backtrace() to enable Lisp
+ * backtraces from gdb with call backtrace_from_fp(...). Useful for
+ * example when debugging threading deadlocks.
+ */
+void
+backtrace_from_fp(void *fp, int nframes)
+{
+ int i;