Fix some behavioral issues on Windows

This commit is contained in:
Justine Tunney 2023-07-09 09:51:59 -07:00
parent 41396ff48a
commit 42ba9901e4
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
11 changed files with 44 additions and 7 deletions

View file

@ -22,15 +22,18 @@
#include "libc/calls/calls.h"
#include "libc/calls/struct/ucontext-netbsd.internal.h"
#include "libc/calls/syscall-sysv.internal.h"
#include "libc/calls/wincrash.internal.h"
#include "libc/dce.h"
#include "libc/errno.h"
#include "libc/intrin/asan.internal.h"
#include "libc/intrin/atomic.h"
#include "libc/intrin/describeflags.internal.h"
#include "libc/intrin/strace.internal.h"
#include "libc/intrin/weaken.h"
#include "libc/limits.h"
#include "libc/macros.internal.h"
#include "libc/nt/runtime.h"
#include "libc/nt/signals.h"
#include "libc/nt/synchronization.h"
#include "libc/nt/thread.h"
#include "libc/nt/thunk/msabi.h"

View file

@ -19,6 +19,7 @@
#include "libc/intrin/strace.internal.h"
#include "libc/intrin/weaken.h"
#include "libc/macros.internal.h"
#include "libc/runtime/internal.h"
#include "libc/runtime/runtime.h"
#include "third_party/puff/puff.h"
#include "third_party/zlib/zlib.h"
@ -35,7 +36,10 @@
int __inflate(void *out, size_t outsize, const void *in, size_t insize) {
int rc;
z_stream zs;
if (_weaken(inflateInit2) && _weaken(inflate) && _weaken(inflateEnd)) {
if (_weaken(inflateInit2) && //
_weaken(inflate) && //
_weaken(inflateEnd) && //
__runlevel >= RUNLEVEL_MALLOC) {
zs.next_in = in;
zs.avail_in = insize;
zs.total_in = insize;

View file

@ -8,10 +8,13 @@
#define STACK_CEIL 0x700000000000ul
#define STACK_SIZE FRAMESIZE
#define RUNLEVEL_MALLOC 1
#if !(__ASSEMBLER__ + __LINKER__ + 0)
COSMOPOLITAN_C_START_
extern int __pid;
extern char __runlevel;
extern int ftrace_stackdigs;
extern uint32_t __ntconsolemode[3];
extern const char v_ntsubsystem[] __attribute__((__weak__));

View file

@ -130,6 +130,12 @@ o/$(MODE)/libc/runtime/morph_tls.o: private \
-ffreestanding \
-fno-sanitize=all
# TODO(jart): We need a way to avoid WinThreadEntry() being hooked.
o/$(MODE)/libc/runtime/clone.o: private \
COPTS += \
-fno-sanitize=all \
-fpatchable-function-entry=0,0
# these assembly files are safe to build on aarch64
o/$(MODE)/libc/runtime/init.o: libc/runtime/init.S
@$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) -c $<