SPARC gencgc
[sbcl.git] / src / runtime / print.c
index e50da2e..da8744e 100644 (file)
@@ -27,6 +27,7 @@
 #include <stdarg.h>
 #include "thread.h"              /* genesis/primitive-objects.h needs this */
 #include <errno.h>
+#include <stdlib.h>
 
 /* FSHOW and odxprint provide debugging output for low-level information
  * (signal handling, exceptions, safepoints) which is hard to debug by
@@ -69,10 +70,16 @@ dyndebug_init()
     dyndebug_init1(misc,           "MISC");
     dyndebug_init1(pagefaults,     "PAGEFAULTS");
 
+    int n_output_flags = n;
+    dyndebug_init1(backtrace_when_lost, "BACKTRACE_WHEN_LOST");
+    dyndebug_init1(sleep_when_lost,     "SLEEP_WHEN_LOST");
+
     if (n != DYNDEBUG_NFLAGS)
         fprintf(stderr, "Bug in dyndebug_init\n");
 
+#if defined(LISP_FEATURE_GENCGC)
     gencgc_verbose = dyndebug_config.dyndebug_gencgc_verbose;
+#endif
 
     char *featurelist = getenv("SBCL_DYNDEBUG");
     if (featurelist) {
@@ -84,7 +91,7 @@ dyndebug_init()
             if (!token) break;
             unsigned i;
             if (!strcmp(token, "all"))
-                for (i = 0; i < DYNDEBUG_NFLAGS; i++)
+                for (i = 0; i < n_output_flags; i++)
                     *ptrs[i] = 1;
             else {
                 for (i = 0; i < DYNDEBUG_NFLAGS; i++)
@@ -104,8 +111,11 @@ dyndebug_init()
             fprintf(stderr, "Valid flags are:\n");
             fprintf(stderr, "  all  ;enables all of the following:\n");
             unsigned i;
-            for (i = 0; i < DYNDEBUG_NFLAGS; i++)
+            for (i = 0; i < DYNDEBUG_NFLAGS; i++) {
+                if (i == n_output_flags)
+                    fprintf(stderr, "Additional options:\n");
                 fprintf(stderr, "  %s\n", names[i]);
+            }
         }
     }
 
@@ -118,6 +128,8 @@ dyndebug_init()
  * be restored to its full win32 branch functionality, where output to a
  * file or to the debugger can be selected at runtime. */
 
+void vodxprint_fun(const char *, va_list);
+
 void
 odxprint_fun(const char *fmt, ...)
 {