#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
dyndebug_init1(seh, "SEH");
dyndebug_init1(misc, "MISC");
dyndebug_init1(pagefaults, "PAGEFAULTS");
+ dyndebug_init1(io, "IO");
+ dyndebug_init1(runtime_link, "RUNTIME_LINK");
+
+ 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) {
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++)
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]);
+ }
}
}
* 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, ...)
{
{
#ifdef LISP_FEATURE_WIN32
DWORD lastError = GetLastError();
-#else
- int original_errno = errno;
#endif
+ int original_errno = errno;
QSHOW_BLOCK;
#ifdef LISP_FEATURE_WIN32
SetLastError(lastError);
-#else
- errno = original_errno;
#endif
+ errno = original_errno;
}
/* Translate the rather awkward syntax
#ifdef LISP_FEATURE_GENCGC
#include "gencgc-alloc-region.h" /* genesis/thread.h needs this */
#endif
+#if defined(LISP_FEATURE_WIN32)
+# include "win32-thread-private-events.h" /* genesis/thread.h needs this */
+#endif
#include "genesis/static-symbols.h"
#include "genesis/primitive-objects.h"
#include "genesis/static-symbols.h"