projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix attach_thread to allocate a TLS index for *gc-inhibit* if needed
[sbcl.git]
/
src
/
runtime
/
print.c
diff --git
a/src/runtime/print.c
b/src/runtime/print.c
index
e50da2e
..
7d0c97e
100644
(file)
--- a/
src/runtime/print.c
+++ b/
src/runtime/print.c
@@
-27,6
+27,7
@@
#include <stdarg.h>
#include "thread.h" /* genesis/primitive-objects.h needs this */
#include <errno.h>
#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
/* FSHOW and odxprint provide debugging output for low-level information
* (signal handling, exceptions, safepoints) which is hard to debug by
@@
-68,11
+69,19
@@
dyndebug_init()
dyndebug_init1(seh, "SEH");
dyndebug_init1(misc, "MISC");
dyndebug_init1(pagefaults, "PAGEFAULTS");
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 (n != DYNDEBUG_NFLAGS)
fprintf(stderr, "Bug in dyndebug_init\n");
+#if defined(LISP_FEATURE_GENCGC)
gencgc_verbose = dyndebug_config.dyndebug_gencgc_verbose;
gencgc_verbose = dyndebug_config.dyndebug_gencgc_verbose;
+#endif
char *featurelist = getenv("SBCL_DYNDEBUG");
if (featurelist) {
char *featurelist = getenv("SBCL_DYNDEBUG");
if (featurelist) {
@@
-84,7
+93,7
@@
dyndebug_init()
if (!token) break;
unsigned i;
if (!strcmp(token, "all"))
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++)
*ptrs[i] = 1;
else {
for (i = 0; i < DYNDEBUG_NFLAGS; i++)
@@
-104,8
+113,11
@@
dyndebug_init()
fprintf(stderr, "Valid flags are:\n");
fprintf(stderr, " all ;enables all of the following:\n");
unsigned 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]);
fprintf(stderr, " %s\n", names[i]);
+ }
}
}
}
}
@@
-118,6
+130,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. */
* 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, ...)
{
void
odxprint_fun(const char *fmt, ...)
{
@@
-132,9
+146,8
@@
vodxprint_fun(const char *fmt, va_list args)
{
#ifdef LISP_FEATURE_WIN32
DWORD lastError = GetLastError();
{
#ifdef LISP_FEATURE_WIN32
DWORD lastError = GetLastError();
-#else
- int original_errno = errno;
#endif
#endif
+ int original_errno = errno;
QSHOW_BLOCK;
QSHOW_BLOCK;
@@
-171,9
+184,8
@@
vodxprint_fun(const char *fmt, va_list args)
#ifdef LISP_FEATURE_WIN32
SetLastError(lastError);
#ifdef LISP_FEATURE_WIN32
SetLastError(lastError);
-#else
- errno = original_errno;
#endif
#endif
+ errno = original_errno;
}
/* Translate the rather awkward syntax
}
/* Translate the rather awkward syntax
@@
-203,6
+215,9
@@
fshow_fun(void __attribute__((__unused__)) *ignored,
#ifdef LISP_FEATURE_GENCGC
#include "gencgc-alloc-region.h" /* genesis/thread.h needs this */
#endif
#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"
#include "genesis/static-symbols.h"
#include "genesis/primitive-objects.h"
#include "genesis/static-symbols.h"