mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 03:27:39 +00:00
parent
95f54eeb40
commit
c1d99676c4
1421 changed files with 5556 additions and 2198 deletions
6
Makefile
6
Makefile
|
@ -255,12 +255,12 @@ o/$(MODE)/hdrs-old.txt: o/$(MODE)/.x $(MAKEFILES) $(call uniq,$(foreach x,$(HDRS
|
|||
TAGS: .UNSANDBOXED = 1
|
||||
TAGS: o/$(MODE)/srcs-old.txt $(SRCS)
|
||||
@$(RM) $@
|
||||
@$(TAGS) $(TAGSFLAGS) -L $< -o $@
|
||||
@$(COMPILE) -ATAGS -T$@ $(TAGS) $(TAGSFLAGS) -L $< -o $@
|
||||
|
||||
HTAGS: .UNSANDBOXED = 1
|
||||
HTAGS: o/$(MODE)/hdrs-old.txt $(HDRS)
|
||||
@$(RM) $@
|
||||
@build/htags -L $< -o $@
|
||||
@$(COMPILE) -ATAGS -T$@ build/htags -L $< -o $@
|
||||
|
||||
loc: .UNSANDBOXED = 1
|
||||
loc: o/$(MODE)/tool/build/summy.com
|
||||
|
@ -297,8 +297,10 @@ COSMOPOLITAN_OBJECTS = \
|
|||
LIBC_NT_PSAPI \
|
||||
LIBC_NT_POWRPROF \
|
||||
LIBC_NT_PDH \
|
||||
LIBC_NT_SHELL32 \
|
||||
LIBC_NT_GDI32 \
|
||||
LIBC_NT_COMDLG32 \
|
||||
LIBC_NT_NETAPI32 \
|
||||
LIBC_NT_URL \
|
||||
LIBC_NT_USER32 \
|
||||
LIBC_NT_NTDLL \
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -27,4 +27,4 @@ o/$(MODE)/%.com.ok: \
|
|||
o/$(MODE)/tool/build/runit.com \
|
||||
o/$(MODE)/tool/build/runitd.com \
|
||||
o/$(MODE)/%.com
|
||||
@$(COMPILE) -ATEST -wtT$@ $^ $(HOSTS)
|
||||
@$(COMPILE) -ATEST -tT$@ $^ $(HOSTS)
|
||||
|
|
|
@ -20,12 +20,15 @@ o/%.o: %.s ; @$(COMPILE) -AOBJECTIFY.s $(OBJECTIFY.s) $(
|
|||
o/%.o: o/%.s ; @$(COMPILE) -AOBJECTIFY.s $(OBJECTIFY.s) $(OUTPUT_OPTION) $<
|
||||
o/%.s: %.S ; @$(COMPILE) -APREPROCESS $(PREPROCESS) $(OUTPUT_OPTION) $<
|
||||
o/%.s: o/%.S ; @$(COMPILE) -APREPROCESS $(PREPROCESS) $(OUTPUT_OPTION) $<
|
||||
o/%.i: %.S ; @$(COMPILE) -APREPROCESS $(PREPROCESS) $(OUTPUT_OPTION) $<
|
||||
o/%.o: %.S ; @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) $<
|
||||
o/%.o: o/%.S ; @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) $<
|
||||
o/%.s: %.i ; @$(COMPILE) -ACOMPILE.i $(COMPILE.i) $(OUTPUT_OPTION) $<
|
||||
o/%.s: o/%.i ; @$(COMPILE) -ACOMPILE.i $(COMPILE.i) $(OUTPUT_OPTION) $<
|
||||
o/%.lds: %.lds ; @$(COMPILE) -APREPROCESS $(PREPROCESS.lds) $(OUTPUT_OPTION) $<
|
||||
o/%.inc: %.h ; @$(COMPILE) -APREPROCESS $(PREPROCESS) $(OUTPUT_OPTION) -D__ASSEMBLER__ -P $<
|
||||
o/%.greg.o: %.greg.c ; @$(COMPILE) -AOBJECTIFY.greg $(OBJECTIFY.greg.c) $(OUTPUT_OPTION) $<
|
||||
o/%.zip.o: o/% ; @$(COMPILE) -wAZIPOBJ $(ZIPOBJ) $(ZIPOBJ_FLAGS) $(OUTPUT_OPTION) $<
|
||||
o/%.zip.o: o/% ; @$(COMPILE) -AZIPOBJ $(ZIPOBJ) $(ZIPOBJ_FLAGS) $(OUTPUT_OPTION) $<
|
||||
|
||||
o/$(MODE)/%: o/$(MODE)/%.dbg ; @$(COMPILE) -AOBJCOPY -T$@ $(OBJCOPY) -S -O binary $< $@
|
||||
o/$(MODE)/%.o: %.s ; @$(COMPILE) -AOBJECTIFY.s $(OBJECTIFY.s) $(OUTPUT_OPTION) $<
|
||||
|
@ -36,20 +39,32 @@ o/$(MODE)/%.o: %.f ; @$(COMPILE) -AOBJECTIFY.f $(OBJECTIFY.f) $(
|
|||
o/$(MODE)/%.o: %.F ; @$(COMPILE) -AOBJECTIFY.F $(OBJECTIFY.F) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.ss: %.c ; @$(COMPILE) -ACOMPILE.c $(COMPILE.c) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.ss: o/$(MODE)/%.c ; @$(COMPILE) -AOBJECTIFY.s $(COMPILE.c) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.i: %.S ; @$(COMPILE) -APREPROCESS $(PREPROCESS) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.i: %.c ; @$(COMPILE) -APREPROCESS $(PREPROCESS) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.i: %.cc ; @$(COMPILE) -APREPROCESS $(PREPROCESS) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.i: o/$(MODE)/%.c ; @$(COMPILE) -APREPROCESS $(PREPROCESS) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.h: %.c ; @$(COMPILE) -AAMALGAMATE $(PREPROCESS) $(OUTPUT_OPTION) -fdirectives-only -P $<
|
||||
o/$(MODE)/%.h: o/$(MODE)/%.c ; @$(COMPILE) -AAMALGAMATE $(PREPROCESS) $(OUTPUT_OPTION) -fdirectives-only -P $<
|
||||
o/$(MODE)/%.o: %.S ; @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.o: o/$(MODE)/%.S ; @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.s: %.i ; @$(COMPILE) -ACOMPILE.i $(COMPILE.i) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.s: o/$(MODE)/%.i ; @$(COMPILE) -ACOMPILE.i $(COMPILE.i) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.o: %.cc ; @$(COMPILE) -AOBJECTIFY.cxx $(OBJECTIFY.cxx) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.lds: %.lds ; @$(COMPILE) -APREPROCESS $(PREPROCESS.lds) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.cxx.o: %.c ; @$(COMPILE) -AOBJECTIFY.cxx $(OBJECTIFY.cxx) -xc++ $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.o: %.greg.c ; @$(COMPILE) -AOBJECTIFY.greg $(OBJECTIFY.greg.c) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.greg.o: %.greg.c ; @$(COMPILE) -AOBJECTIFY.greg $(OBJECTIFY.greg.c) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.ansi.o: %.ansi.c ; @$(COMPILE) -AOBJECTIFY.ansi $(OBJECTIFY.ansi.c) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.ansi.o: %.c ; @$(COMPILE) -AOBJECTIFY.ansi $(OBJECTIFY.ansi.c) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.c99.o: %.c99.c ; @$(COMPILE) -AOBJECTIFY.c99 $(OBJECTIFY.c99.c) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.c11.o: %.c11.c ; @$(COMPILE) -AOBJECTIFY.c11 $(OBJECTIFY.c11.c) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.c2x.o: %.c2x.c ; @$(COMPILE) -AOBJECTIFY.c2x $(OBJECTIFY.c2x.c) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.initabi.o: %.initabi.c ; @$(COMPILE) -AOBJECTIFY.init $(OBJECTIFY.initabi.c) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.ncabi.o: %.ncabi.c ; @$(COMPILE) -AOBJECTIFY.nc $(OBJECTIFY.ncabi.c) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.real.o: %.c ; @$(COMPILE) -AOBJECTIFY.real $(OBJECTIFY.real.c) $(OUTPUT_OPTION) $<
|
||||
|
||||
o/$(MODE)/%.runs: o/$(MODE)/% ; @$(COMPILE) -ACHECK -tT$@ $< $(TESTARGS)
|
||||
o/$(MODE)/%.zip.o: % ; @$(COMPILE) -wAZIPOBJ $(ZIPOBJ) $(ZIPOBJ_FLAGS) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%.zip.o: % ; @$(COMPILE) -AZIPOBJ $(ZIPOBJ) $(ZIPOBJ_FLAGS) $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%-gcc.asm: %.c ; @$(COMPILE) -AOBJECTIFY.c $(OBJECTIFY.c) -S -g0 $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%-gcc.asm: %.cc ; @$(COMPILE) -AOBJECTIFY.c $(OBJECTIFY.cxx) -S -g0 $(OUTPUT_OPTION) $<
|
||||
o/$(MODE)/%-clang.asm: %.c ; @$(COMPILE) -AOBJECTIFY.c $(OBJECTIFY.c) -S -g0 $(OUTPUT_OPTION) $<
|
||||
|
@ -58,66 +73,66 @@ o/$(MODE)/%-clang.asm: CC = $(CLANG)
|
|||
|
||||
o/%.o: %.cc
|
||||
@$(COMPILE) -AOBJECTIFY.cxx $(OBJECTIFY.cxx) $(OUTPUT_OPTION) $<
|
||||
@$(COMPILE) -AFIXUPOBJ -wT$@ $(FIXUPOBJ) $@
|
||||
@$(COMPILE) -AFIXUPOBJ -T$@ $(FIXUPOBJ) $@
|
||||
|
||||
o/%.o: o/%.cc
|
||||
@$(COMPILE) -AOBJECTIFY.cxx $(OBJECTIFY.cxx) $(OUTPUT_OPTION) $<
|
||||
@$(COMPILE) -AFIXUPOBJ -wT$@ $(FIXUPOBJ) $@
|
||||
@$(COMPILE) -AFIXUPOBJ -T$@ $(FIXUPOBJ) $@
|
||||
|
||||
o/$(MODE)/%.o: %.c
|
||||
@$(COMPILE) -AOBJECTIFY.c $(OBJECTIFY.c) $(OUTPUT_OPTION) $<
|
||||
@$(COMPILE) -AFIXUPOBJ -wT$@ $(FIXUPOBJ) $@
|
||||
@$(COMPILE) -AFIXUPOBJ -T$@ $(FIXUPOBJ) $@
|
||||
|
||||
o/$(MODE)/%.o: o/$(MODE)/%.c
|
||||
@$(COMPILE) -AOBJECTIFY.c $(OBJECTIFY.c) $(OUTPUT_OPTION) $<
|
||||
@$(COMPILE) -AFIXUPOBJ -wT$@ $(FIXUPOBJ) $@
|
||||
@$(COMPILE) -AFIXUPOBJ -T$@ $(FIXUPOBJ) $@
|
||||
|
||||
o/$(MODE)/%.o: o/$(MODE)/%.cc
|
||||
@$(COMPILE) -AOBJECTIFY.cxx $(OBJECTIFY.cxx) $(OUTPUT_OPTION) $<
|
||||
@$(COMPILE) -AFIXUPOBJ -wT$@ $(FIXUPOBJ) $@
|
||||
@$(COMPILE) -AFIXUPOBJ -T$@ $(FIXUPOBJ) $@
|
||||
|
||||
o/%.a:
|
||||
$(file >$(TMPDIR)/$(subst /,_,$@),$^)
|
||||
@$(COMPILE) -AARCHIVE -wT$@ $(AR) $(ARFLAGS) $@ @$(TMPDIR)/$(subst /,_,$@)
|
||||
@$(COMPILE) -AARCHIVE -T$@ $(AR) $(ARFLAGS) $@ @$(TMPDIR)/$(subst /,_,$@)
|
||||
|
||||
o/%.pkg:
|
||||
$(file >$(TMPDIR)/$(subst /,_,$@).args,$(filter %.o,$^))
|
||||
@$(COMPILE) -APACKAGE -wT$@ $(PKG) $(OUTPUT_OPTION) $(addprefix -d,$(filter %.pkg,$^)) @$(TMPDIR)/$(subst /,_,$@)
|
||||
@$(COMPILE) -APACKAGE -T$@ $(PKG) $(OUTPUT_OPTION) $(addprefix -d,$(filter %.pkg,$^)) @$(TMPDIR)/$(subst /,_,$@)
|
||||
|
||||
o/$(MODE)/%.pkg:
|
||||
$(file >$(TMPDIR)/$(subst /,_,$@),$(filter %.o,$^))
|
||||
@$(COMPILE) -APACKAGE -wT$@ $(PKG) $(OUTPUT_OPTION) $(addprefix -d,$(filter %.pkg,$^)) @$(TMPDIR)/$(subst /,_,$@)
|
||||
@$(COMPILE) -APACKAGE -T$@ $(PKG) $(OUTPUT_OPTION) $(addprefix -d,$(filter %.pkg,$^)) @$(TMPDIR)/$(subst /,_,$@)
|
||||
|
||||
o/$(MODE)/%.o: %.py o/$(MODE)/third_party/python/pyobj.com
|
||||
@$(COMPILE) -wAPYOBJ o/$(MODE)/third_party/python/pyobj.com $(PYFLAGS) -o $@ $<
|
||||
@$(COMPILE) -APYOBJ o/$(MODE)/third_party/python/pyobj.com $(PYFLAGS) -o $@ $<
|
||||
|
||||
o/$(MODE)/%.pyc: %.py o/$(MODE)/third_party/python/pycomp.com
|
||||
@$(COMPILE) -wAPYCOMP o/$(MODE)/third_party/python/pycomp.com $(PYCFLAGS) -o $@ $<
|
||||
@$(COMPILE) -APYCOMP o/$(MODE)/third_party/python/pycomp.com $(PYCFLAGS) -o $@ $<
|
||||
|
||||
o/$(MODE)/%.lua: %.lua o/$(MODE)/third_party/lua/luac.com
|
||||
@$(COMPILE) -wALUAC o/$(MODE)/third_party/lua/luac.com -s -o $@ $<
|
||||
@$(COMPILE) -ALUAC o/$(MODE)/third_party/lua/luac.com -s -o $@ $<
|
||||
|
||||
o/$(MODE)/%.lua.runs: %.lua o/$(MODE)/tool/net/redbean.com
|
||||
@$(COMPILE) -wALUA -tT$@ o/$(MODE)/tool/net/redbean.com $(LUAFLAGS) -i $<
|
||||
@$(COMPILE) -ALUA -tT$@ o/$(MODE)/tool/net/redbean.com $(LUAFLAGS) -i $<
|
||||
|
||||
o/$(MODE)/%: o/$(MODE)/%.com o/$(MODE)/tool/build/cp.com o/$(MODE)/tool/build/assimilate.com
|
||||
@$(COMPILE) -wACP -wT$@ o/$(MODE)/tool/build/cp.com $< $@
|
||||
@$(COMPILE) -wAASSIMILATE -wT$@ o/$(MODE)/tool/build/assimilate.com $@
|
||||
@$(COMPILE) -ACP -T$@ o/$(MODE)/tool/build/cp.com $< $@
|
||||
@$(COMPILE) -AASSIMILATE -T$@ o/$(MODE)/tool/build/assimilate.com $@
|
||||
|
||||
# TODO(jart): find a way to generate dependencies
|
||||
# or alternatively disable sandboxing
|
||||
o/%.h.ok: %.h
|
||||
@$(COMPILE) -wACHECK.h -T$@ build/bootstrap/touch.com $@
|
||||
@$(COMPILE) -ACHECK.h -T$@ build/bootstrap/touch.com $@
|
||||
# @$(COMPILE) -ACHECK.h $(COMPILE.c) -xc -g0 -o $@ $<
|
||||
o/$(MODE)/%.h.ok: %.h
|
||||
@$(COMPILE) -wACHECK.h -T$@ build/bootstrap/touch.com $@
|
||||
@$(COMPILE) -ACHECK.h -T$@ build/bootstrap/touch.com $@
|
||||
# @$(COMPILE) -ACHECK.h $(COMPILE.c) -xc -g0 -o $@ $<
|
||||
o/$(MODE)/%.hh.ok: %.hh
|
||||
@$(COMPILE) -wACHECK.h -T$@ build/bootstrap/touch.com $@
|
||||
@$(COMPILE) -ACHECK.h -T$@ build/bootstrap/touch.com $@
|
||||
# @$(COMPILE) -ACHECK.h $(COMPILE.cxx) -xc++ -g0 -o $@ $<
|
||||
o/%.okk: %
|
||||
@$(COMPILE) -wACHECK.h -T$@ build/bootstrap/touch.com $@
|
||||
@$(COMPILE) -ACHECK.h -T$@ build/bootstrap/touch.com $@
|
||||
# @$(COMPILE) -ACHECK.h $(COMPILE.cxx) -xc++ -g0 -o $@ $<
|
||||
o/$(MODE)/%.okk: %
|
||||
@$(COMPILE) -wACHECK.h -T$@ build/bootstrap/touch.com $@
|
||||
@$(COMPILE) -ACHECK.h -T$@ build/bootstrap/touch.com $@
|
||||
# @$(COMPILE) -ACHECK.h $(COMPILE.cxx) -xc++ -g0 -o $@ $<
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
#include "libc/bits/weaken.h"
|
||||
#include "libc/calls/calls.h"
|
||||
#include "libc/calls/termios.h"
|
||||
#include "libc/dce.h"
|
||||
#include "libc/fmt/fmt.h"
|
||||
#include "libc/mem/mem.h"
|
||||
#include "libc/runtime/runtime.h"
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
#include "libc/log/internal.h"
|
||||
#include "libc/log/log.h"
|
||||
#include "libc/macros.internal.h"
|
||||
#include "libc/mem/mem.h"
|
||||
#include "libc/runtime/internal.h"
|
||||
#include "libc/runtime/runtime.h"
|
||||
#include "libc/stdio/append.internal.h"
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
#include "libc/mem/mem.h"
|
||||
#include "libc/runtime/gc.internal.h"
|
||||
#include "libc/stdio/stdio.h"
|
||||
#include "libc/str/str.h"
|
||||
#include "third_party/zlib/zlib.h"
|
||||
|
||||
#define CHUNK 32768
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
#include "libc/log/gdb.h"
|
||||
#include "libc/log/log.h"
|
||||
#include "libc/macros.internal.h"
|
||||
#include "libc/mem/mem.h"
|
||||
#include "libc/runtime/gc.internal.h"
|
||||
#include "libc/runtime/runtime.h"
|
||||
#include "libc/str/str.h"
|
||||
|
|
|
@ -35,9 +35,7 @@
|
|||
#include "libc/fmt/conv.h"
|
||||
#include "libc/fmt/fmt.h"
|
||||
#include "libc/log/log.h"
|
||||
#include "libc/mem/mem.h"
|
||||
#include "libc/stdio/stdio.h"
|
||||
#include "libc/str/str.h"
|
||||
|
||||
enum { PICOL_OK, PICOL_ERR, PICOL_RETURN, PICOL_BREAK, PICOL_CONTINUE };
|
||||
enum { PT_ESC, PT_STR, PT_CMD, PT_VAR, PT_SEP, PT_EOL, PT_EOF };
|
||||
|
|
|
@ -96,7 +96,7 @@ o/$(MODE)/examples/pylife/pylife.com.dbg: \
|
|||
o/$(MODE)/examples/pylife/pylife.o \
|
||||
$(CRT) \
|
||||
$(APE_NO_MODIFY_SELF)
|
||||
@$(COMPILE) -ALINK.ape $(LINK) $(LINKARGS) -o $@
|
||||
$(LINK) $(LINKARGS) -o $@
|
||||
|
||||
# # Unwrap the APE .COM binary, that's embedded within the linked file
|
||||
# # NOTE: This line can be commented out, since it's in build/rules.mk
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
#include "libc/log/log.h"
|
||||
#include "libc/runtime/gc.h"
|
||||
#include "libc/stdio/stdio.h"
|
||||
#include "libc/str/str.h"
|
||||
#include "libc/sysv/consts/s.h"
|
||||
#include "libc/x/x.h"
|
||||
|
||||
|
|
|
@ -10,9 +10,7 @@
|
|||
#include "libc/calls/calls.h"
|
||||
#include "libc/fmt/fmt.h"
|
||||
#include "libc/log/check.h"
|
||||
#include "libc/mem/mem.h"
|
||||
#include "libc/stdio/append.internal.h"
|
||||
#include "libc/str/str.h"
|
||||
|
||||
/**
|
||||
* @fileoverview Fast Growable Strings Tutorial
|
||||
|
|
|
@ -14,11 +14,9 @@
|
|||
#include "libc/fmt/nf32.h"
|
||||
#include "libc/log/check.h"
|
||||
#include "libc/macros.internal.h"
|
||||
#include "libc/mem/mem.h"
|
||||
#include "libc/runtime/runtime.h"
|
||||
#include "libc/stdio/append.internal.h"
|
||||
#include "libc/stdio/stdio.h"
|
||||
#include "libc/str/str.h"
|
||||
#include "libc/sysv/consts/itimer.h"
|
||||
#include "libc/sysv/consts/sig.h"
|
||||
#include "libc/time/time.h"
|
||||
|
|
|
@ -23,10 +23,9 @@
|
|||
* Converts timespec interval to microseconds.
|
||||
*/
|
||||
int64_t _timespec_tomicros(struct timespec x) {
|
||||
int64_t ns;
|
||||
if (!__builtin_mul_overflow(x.tv_sec, 1000000ul, &ns) &&
|
||||
!__builtin_add_overflow(ns, x.tv_nsec / 1000, &ns)) {
|
||||
return ns;
|
||||
int64_t us;
|
||||
if (!__builtin_add_overflow(x.tv_sec, x.tv_nsec / 1000, &us)) {
|
||||
return us;
|
||||
} else {
|
||||
return INT64_MAX;
|
||||
}
|
||||
|
|
|
@ -23,10 +23,9 @@
|
|||
* Converts timespec interval to milliseconds.
|
||||
*/
|
||||
int64_t _timespec_tomillis(struct timespec x) {
|
||||
int64_t ns;
|
||||
if (!__builtin_mul_overflow(x.tv_sec, 1000ul, &ns) &&
|
||||
!__builtin_add_overflow(ns, x.tv_nsec / 1000000, &ns)) {
|
||||
return ns;
|
||||
int64_t us;
|
||||
if (!__builtin_add_overflow(x.tv_sec, x.tv_nsec / 1000000, &us)) {
|
||||
return us;
|
||||
} else {
|
||||
return INT64_MAX;
|
||||
}
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
|
||||
│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi│
|
||||
╞══════════════════════════════════════════════════════════════════════════════╡
|
||||
│ Copyright 2022 Justine Alexandra Roberts Tunney │
|
||||
│ │
|
||||
│ Permission to use, copy, modify, and/or distribute this software for │
|
||||
│ any purpose with or without fee is hereby granted, provided that the │
|
||||
│ above copyright notice and this permission notice appear in all copies. │
|
||||
│ │
|
||||
│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │
|
||||
│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │
|
||||
│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │
|
||||
│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │
|
||||
│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │
|
||||
│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │
|
||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/calls/struct/timespec.h"
|
||||
#include "libc/limits.h"
|
||||
|
||||
/**
|
||||
* Converts timespec interval to nanoseconds.
|
||||
*/
|
||||
int64_t _timespec_tonanos(struct timespec x) {
|
||||
int64_t ns;
|
||||
if (!__builtin_mul_overflow(x.tv_sec, 1000000000ul, &ns) &&
|
||||
!__builtin_add_overflow(ns, x.tv_nsec, &ns)) {
|
||||
return ns;
|
||||
} else {
|
||||
return INT64_MAX;
|
||||
}
|
||||
}
|
|
@ -33,7 +33,6 @@
|
|||
* - /tmp/
|
||||
*
|
||||
* This guarantees trailing slash.
|
||||
* We also guarantee `kTmpPath` won't be longer than `PATH_MAX / 2`.
|
||||
*/
|
||||
char kTmpPath[PATH_MAX];
|
||||
|
||||
|
@ -47,7 +46,7 @@ __attribute__((__constructor__)) static void kTmpPathInit(void) {
|
|||
uint32_t n;
|
||||
char16_t path16[PATH_MAX];
|
||||
|
||||
if ((s = getenv("TMPDIR")) && (n = strlen(s)) < PATH_MAX / 2) {
|
||||
if ((s = getenv("TMPDIR")) && (n = strlen(s)) < PATH_MAX) {
|
||||
memcpy(kTmpPath, s, n);
|
||||
if (n && kTmpPath[n - 1] != '/') {
|
||||
kTmpPath[n + 0] = '/';
|
||||
|
|
|
@ -47,9 +47,8 @@
|
|||
|
||||
#define Eperm 1
|
||||
#define Sigabrt 6
|
||||
#define Einval 22
|
||||
#define Sigsys 31
|
||||
#define Enosys 38
|
||||
#define Sigsys 31
|
||||
#define Sig_Setmask 2
|
||||
#define Sa_Siginfo 4
|
||||
#define Sa_Restorer 0x04000000
|
||||
|
@ -85,356 +84,6 @@ struct Filter {
|
|||
struct sock_filter p[700];
|
||||
};
|
||||
|
||||
static const struct thatispacked SyscallName {
|
||||
uint16_t n;
|
||||
const char *const s;
|
||||
} kSyscallName[] = {
|
||||
{__NR_linux_exit, "exit"}, //
|
||||
{__NR_linux_exit_group, "exit_group"}, //
|
||||
{__NR_linux_read, "read"}, //
|
||||
{__NR_linux_write, "write"}, //
|
||||
{__NR_linux_open, "open"}, //
|
||||
{__NR_linux_close, "close"}, //
|
||||
{__NR_linux_stat, "stat"}, //
|
||||
{__NR_linux_fstat, "fstat"}, //
|
||||
{__NR_linux_lstat, "lstat"}, //
|
||||
{__NR_linux_poll, "poll"}, //
|
||||
{__NR_linux_ppoll, "ppoll"}, //
|
||||
{__NR_linux_brk, "brk"}, //
|
||||
{__NR_linux_sigreturn, "sigreturn"}, //
|
||||
{__NR_linux_lseek, "lseek"}, //
|
||||
{__NR_linux_mmap, "mmap"}, //
|
||||
{__NR_linux_msync, "msync"}, //
|
||||
{__NR_linux_mprotect, "mprotect"}, //
|
||||
{__NR_linux_munmap, "munmap"}, //
|
||||
{__NR_linux_sigaction, "sigaction"}, //
|
||||
{__NR_linux_sigprocmask, "sigprocmask"}, //
|
||||
{__NR_linux_ioctl, "ioctl"}, //
|
||||
{__NR_linux_pread, "pread"}, //
|
||||
{__NR_linux_pwrite, "pwrite"}, //
|
||||
{__NR_linux_readv, "readv"}, //
|
||||
{__NR_linux_writev, "writev"}, //
|
||||
{__NR_linux_access, "access"}, //
|
||||
{__NR_linux_pipe, "pipe"}, //
|
||||
{__NR_linux_select, "select"}, //
|
||||
{__NR_linux_pselect6, "pselect6"}, //
|
||||
{__NR_linux_sched_yield, "sched_yield"}, //
|
||||
{__NR_linux_mremap, "mremap"}, //
|
||||
{__NR_linux_mincore, "mincore"}, //
|
||||
{__NR_linux_madvise, "madvise"}, //
|
||||
{__NR_linux_shmget, "shmget"}, //
|
||||
{__NR_linux_shmat, "shmat"}, //
|
||||
{__NR_linux_shmctl, "shmctl"}, //
|
||||
{__NR_linux_dup, "dup"}, //
|
||||
{__NR_linux_dup2, "dup2"}, //
|
||||
{__NR_linux_pause, "pause"}, //
|
||||
{__NR_linux_nanosleep, "nanosleep"}, //
|
||||
{__NR_linux_getitimer, "getitimer"}, //
|
||||
{__NR_linux_setitimer, "setitimer"}, //
|
||||
{__NR_linux_alarm, "alarm"}, //
|
||||
{__NR_linux_getpid, "getpid"}, //
|
||||
{__NR_linux_sendfile, "sendfile"}, //
|
||||
{__NR_linux_socket, "socket"}, //
|
||||
{__NR_linux_connect, "connect"}, //
|
||||
{__NR_linux_accept, "accept"}, //
|
||||
{__NR_linux_sendto, "sendto"}, //
|
||||
{__NR_linux_recvfrom, "recvfrom"}, //
|
||||
{__NR_linux_sendmsg, "sendmsg"}, //
|
||||
{__NR_linux_recvmsg, "recvmsg"}, //
|
||||
{__NR_linux_shutdown, "shutdown"}, //
|
||||
{__NR_linux_bind, "bind"}, //
|
||||
{__NR_linux_listen, "listen"}, //
|
||||
{__NR_linux_getsockname, "getsockname"}, //
|
||||
{__NR_linux_getpeername, "getpeername"}, //
|
||||
{__NR_linux_socketpair, "socketpair"}, //
|
||||
{__NR_linux_setsockopt, "setsockopt"}, //
|
||||
{__NR_linux_getsockopt, "getsockopt"}, //
|
||||
{__NR_linux_fork, "fork"}, //
|
||||
{__NR_linux_vfork, "vfork"}, //
|
||||
{__NR_linux_execve, "execve"}, //
|
||||
{__NR_linux_wait4, "wait4"}, //
|
||||
{__NR_linux_kill, "kill"}, //
|
||||
{__NR_linux_clone, "clone"}, //
|
||||
{__NR_linux_tkill, "tkill"}, //
|
||||
{__NR_linux_futex, "futex"}, //
|
||||
{__NR_linux_set_robust_list, "set_robust_list"}, //
|
||||
{__NR_linux_get_robust_list, "get_robust_list"}, //
|
||||
{__NR_linux_uname, "uname"}, //
|
||||
{__NR_linux_semget, "semget"}, //
|
||||
{__NR_linux_semop, "semop"}, //
|
||||
{__NR_linux_semctl, "semctl"}, //
|
||||
{__NR_linux_shmdt, "shmdt"}, //
|
||||
{__NR_linux_msgget, "msgget"}, //
|
||||
{__NR_linux_msgsnd, "msgsnd"}, //
|
||||
{__NR_linux_msgrcv, "msgrcv"}, //
|
||||
{__NR_linux_msgctl, "msgctl"}, //
|
||||
{__NR_linux_fcntl, "fcntl"}, //
|
||||
{__NR_linux_flock, "flock"}, //
|
||||
{__NR_linux_fsync, "fsync"}, //
|
||||
{__NR_linux_fdatasync, "fdatasync"}, //
|
||||
{__NR_linux_truncate, "truncate"}, //
|
||||
{__NR_linux_ftruncate, "ftruncate"}, //
|
||||
{__NR_linux_getcwd, "getcwd"}, //
|
||||
{__NR_linux_chdir, "chdir"}, //
|
||||
{__NR_linux_fchdir, "fchdir"}, //
|
||||
{__NR_linux_rename, "rename"}, //
|
||||
{__NR_linux_mkdir, "mkdir"}, //
|
||||
{__NR_linux_rmdir, "rmdir"}, //
|
||||
{__NR_linux_creat, "creat"}, //
|
||||
{__NR_linux_link, "link"}, //
|
||||
{__NR_linux_unlink, "unlink"}, //
|
||||
{__NR_linux_symlink, "symlink"}, //
|
||||
{__NR_linux_readlink, "readlink"}, //
|
||||
{__NR_linux_chmod, "chmod"}, //
|
||||
{__NR_linux_fchmod, "fchmod"}, //
|
||||
{__NR_linux_chown, "chown"}, //
|
||||
{__NR_linux_fchown, "fchown"}, //
|
||||
{__NR_linux_lchown, "lchown"}, //
|
||||
{__NR_linux_umask, "umask"}, //
|
||||
{__NR_linux_gettimeofday, "gettimeofday"}, //
|
||||
{__NR_linux_getrlimit, "getrlimit"}, //
|
||||
{__NR_linux_getrusage, "getrusage"}, //
|
||||
{__NR_linux_sysinfo, "sysinfo"}, //
|
||||
{__NR_linux_times, "times"}, //
|
||||
{__NR_linux_ptrace, "ptrace"}, //
|
||||
{__NR_linux_syslog, "syslog"}, //
|
||||
{__NR_linux_getuid, "getuid"}, //
|
||||
{__NR_linux_getgid, "getgid"}, //
|
||||
{__NR_linux_getppid, "getppid"}, //
|
||||
{__NR_linux_getpgrp, "getpgrp"}, //
|
||||
{__NR_linux_setsid, "setsid"}, //
|
||||
{__NR_linux_getsid, "getsid"}, //
|
||||
{__NR_linux_getpgid, "getpgid"}, //
|
||||
{__NR_linux_setpgid, "setpgid"}, //
|
||||
{__NR_linux_geteuid, "geteuid"}, //
|
||||
{__NR_linux_getegid, "getegid"}, //
|
||||
{__NR_linux_getgroups, "getgroups"}, //
|
||||
{__NR_linux_setgroups, "setgroups"}, //
|
||||
{__NR_linux_setreuid, "setreuid"}, //
|
||||
{__NR_linux_setregid, "setregid"}, //
|
||||
{__NR_linux_setuid, "setuid"}, //
|
||||
{__NR_linux_setgid, "setgid"}, //
|
||||
{__NR_linux_setresuid, "setresuid"}, //
|
||||
{__NR_linux_setresgid, "setresgid"}, //
|
||||
{__NR_linux_getresuid, "getresuid"}, //
|
||||
{__NR_linux_getresgid, "getresgid"}, //
|
||||
{__NR_linux_sigpending, "sigpending"}, //
|
||||
{__NR_linux_sigsuspend, "sigsuspend"}, //
|
||||
{__NR_linux_sigaltstack, "sigaltstack"}, //
|
||||
{__NR_linux_mknod, "mknod"}, //
|
||||
{__NR_linux_mknodat, "mknodat"}, //
|
||||
{__NR_linux_statfs, "statfs"}, //
|
||||
{__NR_linux_fstatfs, "fstatfs"}, //
|
||||
{__NR_linux_getpriority, "getpriority"}, //
|
||||
{__NR_linux_setpriority, "setpriority"}, //
|
||||
{__NR_linux_mlock, "mlock"}, //
|
||||
{__NR_linux_munlock, "munlock"}, //
|
||||
{__NR_linux_mlockall, "mlockall"}, //
|
||||
{__NR_linux_munlockall, "munlockall"}, //
|
||||
{__NR_linux_setrlimit, "setrlimit"}, //
|
||||
{__NR_linux_chroot, "chroot"}, //
|
||||
{__NR_linux_sync, "sync"}, //
|
||||
{__NR_linux_acct, "acct"}, //
|
||||
{__NR_linux_settimeofday, "settimeofday"}, //
|
||||
{__NR_linux_mount, "mount"}, //
|
||||
{__NR_linux_reboot, "reboot"}, //
|
||||
{__NR_linux_quotactl, "quotactl"}, //
|
||||
{__NR_linux_setfsuid, "setfsuid"}, //
|
||||
{__NR_linux_setfsgid, "setfsgid"}, //
|
||||
{__NR_linux_capget, "capget"}, //
|
||||
{__NR_linux_capset, "capset"}, //
|
||||
{__NR_linux_sigtimedwait, "sigtimedwait"}, //
|
||||
{__NR_linux_rt_sigqueueinfo, "rt_sigqueueinfo"}, //
|
||||
{__NR_linux_personality, "personality"}, //
|
||||
{__NR_linux_ustat, "ustat"}, //
|
||||
{__NR_linux_sysfs, "sysfs"}, //
|
||||
{__NR_linux_sched_setparam, "sched_setparam"}, //
|
||||
{__NR_linux_sched_getparam, "sched_getparam"}, //
|
||||
{__NR_linux_sched_setscheduler, "sched_setscheduler"}, //
|
||||
{__NR_linux_sched_getscheduler, "sched_getscheduler"}, //
|
||||
{__NR_linux_sched_get_priority_max, "sched_get_priority_max"}, //
|
||||
{__NR_linux_sched_get_priority_min, "sched_get_priority_min"}, //
|
||||
{__NR_linux_sched_rr_get_interval, "sched_rr_get_interval"}, //
|
||||
{__NR_linux_vhangup, "vhangup"}, //
|
||||
{__NR_linux_modify_ldt, "modify_ldt"}, //
|
||||
{__NR_linux_pivot_root, "pivot_root"}, //
|
||||
{__NR_linux__sysctl, "_sysctl"}, //
|
||||
{__NR_linux_prctl, "prctl"}, //
|
||||
{__NR_linux_arch_prctl, "arch_prctl"}, //
|
||||
{__NR_linux_adjtimex, "adjtimex"}, //
|
||||
{__NR_linux_umount2, "umount2"}, //
|
||||
{__NR_linux_swapon, "swapon"}, //
|
||||
{__NR_linux_swapoff, "swapoff"}, //
|
||||
{__NR_linux_sethostname, "sethostname"}, //
|
||||
{__NR_linux_setdomainname, "setdomainname"}, //
|
||||
{__NR_linux_iopl, "iopl"}, //
|
||||
{__NR_linux_ioperm, "ioperm"}, //
|
||||
{__NR_linux_init_module, "init_module"}, //
|
||||
{__NR_linux_delete_module, "delete_module"}, //
|
||||
{__NR_linux_gettid, "gettid"}, //
|
||||
{__NR_linux_readahead, "readahead"}, //
|
||||
{__NR_linux_setxattr, "setxattr"}, //
|
||||
{__NR_linux_fsetxattr, "fsetxattr"}, //
|
||||
{__NR_linux_getxattr, "getxattr"}, //
|
||||
{__NR_linux_fgetxattr, "fgetxattr"}, //
|
||||
{__NR_linux_listxattr, "listxattr"}, //
|
||||
{__NR_linux_flistxattr, "flistxattr"}, //
|
||||
{__NR_linux_removexattr, "removexattr"}, //
|
||||
{__NR_linux_fremovexattr, "fremovexattr"}, //
|
||||
{__NR_linux_lsetxattr, "lsetxattr"}, //
|
||||
{__NR_linux_lgetxattr, "lgetxattr"}, //
|
||||
{__NR_linux_llistxattr, "llistxattr"}, //
|
||||
{__NR_linux_lremovexattr, "lremovexattr"}, //
|
||||
{__NR_linux_sched_setaffinity, "sched_setaffinity"}, //
|
||||
{__NR_linux_sched_getaffinity, "sched_getaffinity"}, //
|
||||
{__NR_linux_io_setup, "io_setup"}, //
|
||||
{__NR_linux_io_destroy, "io_destroy"}, //
|
||||
{__NR_linux_io_getevents, "io_getevents"}, //
|
||||
{__NR_linux_io_submit, "io_submit"}, //
|
||||
{__NR_linux_io_cancel, "io_cancel"}, //
|
||||
{__NR_linux_lookup_dcookie, "lookup_dcookie"}, //
|
||||
{__NR_linux_epoll_create, "epoll_create"}, //
|
||||
{__NR_linux_epoll_wait, "epoll_wait"}, //
|
||||
{__NR_linux_epoll_ctl, "epoll_ctl"}, //
|
||||
{__NR_linux_getdents, "getdents"}, //
|
||||
{__NR_linux_set_tid_address, "set_tid_address"}, //
|
||||
{__NR_linux_restart_syscall, "restart_syscall"}, //
|
||||
{__NR_linux_semtimedop, "semtimedop"}, //
|
||||
{__NR_linux_fadvise, "fadvise"}, //
|
||||
{__NR_linux_timer_create, "timer_create"}, //
|
||||
{__NR_linux_timer_settime, "timer_settime"}, //
|
||||
{__NR_linux_timer_gettime, "timer_gettime"}, //
|
||||
{__NR_linux_timer_getoverrun, "timer_getoverrun"}, //
|
||||
{__NR_linux_timer_delete, "timer_delete"}, //
|
||||
{__NR_linux_clock_settime, "clock_settime"}, //
|
||||
{__NR_linux_clock_gettime, "clock_gettime"}, //
|
||||
{__NR_linux_clock_getres, "clock_getres"}, //
|
||||
{__NR_linux_clock_nanosleep, "clock_nanosleep"}, //
|
||||
{__NR_linux_tgkill, "tgkill"}, //
|
||||
{__NR_linux_mbind, "mbind"}, //
|
||||
{__NR_linux_set_mempolicy, "set_mempolicy"}, //
|
||||
{__NR_linux_get_mempolicy, "get_mempolicy"}, //
|
||||
{__NR_linux_mq_open, "mq_open"}, //
|
||||
{__NR_linux_mq_unlink, "mq_unlink"}, //
|
||||
{__NR_linux_mq_timedsend, "mq_timedsend"}, //
|
||||
{__NR_linux_mq_timedreceive, "mq_timedreceive"}, //
|
||||
{__NR_linux_mq_notify, "mq_notify"}, //
|
||||
{__NR_linux_mq_getsetattr, "mq_getsetattr"}, //
|
||||
{__NR_linux_kexec_load, "kexec_load"}, //
|
||||
{__NR_linux_waitid, "waitid"}, //
|
||||
{__NR_linux_add_key, "add_key"}, //
|
||||
{__NR_linux_request_key, "request_key"}, //
|
||||
{__NR_linux_keyctl, "keyctl"}, //
|
||||
{__NR_linux_ioprio_set, "ioprio_set"}, //
|
||||
{__NR_linux_ioprio_get, "ioprio_get"}, //
|
||||
{__NR_linux_inotify_init, "inotify_init"}, //
|
||||
{__NR_linux_inotify_add_watch, "inotify_add_watch"}, //
|
||||
{__NR_linux_inotify_rm_watch, "inotify_rm_watch"}, //
|
||||
{__NR_linux_openat, "openat"}, //
|
||||
{__NR_linux_mkdirat, "mkdirat"}, //
|
||||
{__NR_linux_fchownat, "fchownat"}, //
|
||||
{__NR_linux_utime, "utime"}, //
|
||||
{__NR_linux_utimes, "utimes"}, //
|
||||
{__NR_linux_futimesat, "futimesat"}, //
|
||||
{__NR_linux_fstatat, "fstatat"}, //
|
||||
{__NR_linux_unlinkat, "unlinkat"}, //
|
||||
{__NR_linux_renameat, "renameat"}, //
|
||||
{__NR_linux_linkat, "linkat"}, //
|
||||
{__NR_linux_symlinkat, "symlinkat"}, //
|
||||
{__NR_linux_readlinkat, "readlinkat"}, //
|
||||
{__NR_linux_fchmodat, "fchmodat"}, //
|
||||
{__NR_linux_faccessat, "faccessat"}, //
|
||||
{__NR_linux_unshare, "unshare"}, //
|
||||
{__NR_linux_splice, "splice"}, //
|
||||
{__NR_linux_tee, "tee"}, //
|
||||
{__NR_linux_sync_file_range, "sync_file_range"}, //
|
||||
{__NR_linux_vmsplice, "vmsplice"}, //
|
||||
{__NR_linux_migrate_pages, "migrate_pages"}, //
|
||||
{__NR_linux_move_pages, "move_pages"}, //
|
||||
{__NR_linux_preadv, "preadv"}, //
|
||||
{__NR_linux_pwritev, "pwritev"}, //
|
||||
{__NR_linux_utimensat, "utimensat"}, //
|
||||
{__NR_linux_fallocate, "fallocate"}, //
|
||||
{__NR_linux_accept4, "accept4"}, //
|
||||
{__NR_linux_dup3, "dup3"}, //
|
||||
{__NR_linux_pipe2, "pipe2"}, //
|
||||
{__NR_linux_epoll_pwait, "epoll_pwait"}, //
|
||||
{__NR_linux_epoll_create1, "epoll_create1"}, //
|
||||
{__NR_linux_perf_event_open, "perf_event_open"}, //
|
||||
{__NR_linux_inotify_init1, "inotify_init1"}, //
|
||||
{__NR_linux_rt_tgsigqueueinfo, "rt_tgsigqueueinfo"}, //
|
||||
{__NR_linux_signalfd, "signalfd"}, //
|
||||
{__NR_linux_signalfd4, "signalfd4"}, //
|
||||
{__NR_linux_eventfd, "eventfd"}, //
|
||||
{__NR_linux_eventfd2, "eventfd2"}, //
|
||||
{__NR_linux_timerfd_create, "timerfd_create"}, //
|
||||
{__NR_linux_timerfd_settime, "timerfd_settime"}, //
|
||||
{__NR_linux_timerfd_gettime, "timerfd_gettime"}, //
|
||||
{__NR_linux_recvmmsg, "recvmmsg"}, //
|
||||
{__NR_linux_fanotify_init, "fanotify_init"}, //
|
||||
{__NR_linux_fanotify_mark, "fanotify_mark"}, //
|
||||
{__NR_linux_prlimit, "prlimit"}, //
|
||||
{__NR_linux_name_to_handle_at, "name_to_handle_at"}, //
|
||||
{__NR_linux_open_by_handle_at, "open_by_handle_at"}, //
|
||||
{__NR_linux_clock_adjtime, "clock_adjtime"}, //
|
||||
{__NR_linux_syncfs, "syncfs"}, //
|
||||
{__NR_linux_sendmmsg, "sendmmsg"}, //
|
||||
{__NR_linux_setns, "setns"}, //
|
||||
{__NR_linux_getcpu, "getcpu"}, //
|
||||
{__NR_linux_process_vm_readv, "process_vm_readv"}, //
|
||||
{__NR_linux_process_vm_writev, "process_vm_writev"}, //
|
||||
{__NR_linux_kcmp, "kcmp"}, //
|
||||
{__NR_linux_finit_module, "finit_module"}, //
|
||||
{__NR_linux_sched_setattr, "sched_setattr"}, //
|
||||
{__NR_linux_sched_getattr, "sched_getattr"}, //
|
||||
{__NR_linux_renameat2, "renameat2"}, //
|
||||
{__NR_linux_seccomp, "seccomp"}, //
|
||||
{__NR_linux_getrandom, "getrandom"}, //
|
||||
{__NR_linux_memfd_create, "memfd_create"}, //
|
||||
{__NR_linux_kexec_file_load, "kexec_file_load"}, //
|
||||
{__NR_linux_bpf, "bpf"}, //
|
||||
{__NR_linux_execveat, "execveat"}, //
|
||||
{__NR_linux_userfaultfd, "userfaultfd"}, //
|
||||
{__NR_linux_membarrier, "membarrier"}, //
|
||||
{__NR_linux_mlock2, "mlock2"}, //
|
||||
{__NR_linux_copy_file_range, "copy_file_range"}, //
|
||||
{__NR_linux_preadv2, "preadv2"}, //
|
||||
{__NR_linux_pwritev2, "pwritev2"}, //
|
||||
{__NR_linux_pkey_mprotect, "pkey_mprotect"}, //
|
||||
{__NR_linux_pkey_alloc, "pkey_alloc"}, //
|
||||
{__NR_linux_pkey_free, "pkey_free"}, //
|
||||
{__NR_linux_statx, "statx"}, //
|
||||
{__NR_linux_io_pgetevents, "io_pgetevents"}, //
|
||||
{__NR_linux_rseq, "rseq"}, //
|
||||
{__NR_linux_pidfd_send_signal, "pidfd_send_signal"}, //
|
||||
{__NR_linux_io_uring_setup, "io_uring_setup"}, //
|
||||
{__NR_linux_io_uring_enter, "io_uring_enter"}, //
|
||||
{__NR_linux_io_uring_register, "io_uring_register"}, //
|
||||
{__NR_linux_open_tree, "open_tree"}, //
|
||||
{__NR_linux_move_mount, "move_mount"}, //
|
||||
{__NR_linux_fsopen, "fsopen"}, //
|
||||
{__NR_linux_fsconfig, "fsconfig"}, //
|
||||
{__NR_linux_fsmount, "fsmount"}, //
|
||||
{__NR_linux_fspick, "fspick"}, //
|
||||
{__NR_linux_pidfd_open, "pidfd_open"}, //
|
||||
{__NR_linux_clone3, "clone3"}, //
|
||||
{__NR_linux_close_range, "close_range"}, //
|
||||
{__NR_linux_openat2, "openat2"}, //
|
||||
{__NR_linux_pidfd_getfd, "pidfd_getfd"}, //
|
||||
{__NR_linux_faccessat2, "faccessat2"}, //
|
||||
{__NR_linux_process_madvise, "process_madvise"}, //
|
||||
{__NR_linux_epoll_pwait2, "epoll_pwait2"}, //
|
||||
{__NR_linux_mount_setattr, "mount_setattr"}, //
|
||||
{__NR_linux_quotactl_fd, "quotactl_fd"}, //
|
||||
{__NR_linux_landlock_create_ruleset, "landlock_create_ruleset"}, //
|
||||
{__NR_linux_landlock_add_rule, "landlock_add_rule"}, //
|
||||
{__NR_linux_landlock_restrict_self, "landlock_restrict_self"}, //
|
||||
{__NR_linux_memfd_secret, "memfd_secret"}, //
|
||||
{__NR_linux_process_mrelease, "process_mrelease"}, //
|
||||
{__NR_linux_futex_waitv, "futex_waitv"}, //
|
||||
{__NR_linux_set_mempolicy_home_node, "set_mempolicy_home_node"}, //
|
||||
};
|
||||
|
||||
static const uint16_t kPledgeDefault[] = {
|
||||
__NR_linux_exit, // thread return / exit()
|
||||
};
|
||||
|
@ -935,16 +584,6 @@ static privileged void KillThisThread(void) {
|
|||
: "rcx", "r11", "memory");
|
||||
}
|
||||
|
||||
static privileged const char *GetSyscallName(uint16_t n) {
|
||||
int i;
|
||||
for (i = 0; i < ARRAYLEN(kSyscallName); ++i) {
|
||||
if (kSyscallName[i].n == n) {
|
||||
return kSyscallName[i].s;
|
||||
}
|
||||
}
|
||||
return "unknown";
|
||||
}
|
||||
|
||||
static privileged int HasSyscall(struct Pledges *p, uint16_t n) {
|
||||
int i;
|
||||
for (i = 0; i < p->len; ++i) {
|
||||
|
@ -967,16 +606,23 @@ static privileged void OnSigSys(int sig, siginfo_t *si, ucontext_t *ctx) {
|
|||
FixCpy(ord, si->si_syscall, 12);
|
||||
HexCpy(rip, ctx->uc_mcontext.rip);
|
||||
for (found = i = 0; i < ARRAYLEN(kPledge); ++i) {
|
||||
if (HasSyscall(kPledge + i, si->si_syscall)) {
|
||||
Log("error: pledge ", kPledge[i].name, " for ",
|
||||
GetSyscallName(si->si_syscall), " (ord=", ord, " rip=", rip, ")\n",
|
||||
0);
|
||||
found = true;
|
||||
switch (HasSyscall(kPledge + i, si->si_syscall)) {
|
||||
case 1:
|
||||
Log("error: should pledge ", kPledge[i].name, //
|
||||
" (ord=", ord, " rip=", rip, ")\n", 0);
|
||||
found = true;
|
||||
break;
|
||||
case 2:
|
||||
Log("error: maybe pledge ", kPledge[i].name, //
|
||||
" (ord=", ord, " rip=", rip, ")\n", 0);
|
||||
found = true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
Log("error: bad syscall (", GetSyscallName(si->si_syscall), " ord=", ord,
|
||||
" rip=", rip, ")\n", 0);
|
||||
Log("error: bad syscall (ord=", ord, " rip=", rip, ")\n", 0);
|
||||
}
|
||||
switch (mode) {
|
||||
case kPledgeModeKillProcess:
|
||||
|
@ -1908,8 +1554,8 @@ static privileged void AppendPledge(struct Filter *f, //
|
|||
privileged int sys_pledge_linux(unsigned long ipromises, //
|
||||
enum PledgeMode mode, //
|
||||
bool want_msyscall) { //
|
||||
int i, rc = -1;
|
||||
struct Filter f;
|
||||
int i, e, rc = -1;
|
||||
struct sock_filter sf[1] = {BPF_STMT(BPF_RET | BPF_K, 0)};
|
||||
CheckLargeStackAllocation(&f, sizeof(f));
|
||||
f.n = 0;
|
||||
|
@ -1964,24 +1610,10 @@ privileged int sys_pledge_linux(unsigned long ipromises, //
|
|||
AppendFilter(&f, PLEDGE(sf));
|
||||
}
|
||||
|
||||
// drop privileges
|
||||
//
|
||||
// PR_SET_SECCOMP (Linux 2.6.23+) will refuse to work if
|
||||
// PR_SET_NO_NEW_PRIVS (Linux 3.5+) wasn't called so we punt the error
|
||||
// detection to the seccomp system call below.
|
||||
Prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0);
|
||||
|
||||
// register our seccomp filter with the kernel
|
||||
struct sock_fprog sandbox = {.len = f.n, .filter = f.p};
|
||||
rc = Prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &sandbox, 0, 0);
|
||||
|
||||
// the EINVAL error could mean a lot of things. it could mean the bpf
|
||||
// code is broken. it could also mean we're running on RHEL5 which
|
||||
// doesn't have SECCOMP support. since we don't consider lack of
|
||||
// system support for security to be an error, we distinguish these
|
||||
// two cases by running a simpler SECCOMP operation.
|
||||
if (rc == -Einval && Prctl(PR_GET_SECCOMP, 0, 0, 0, 0) == -Einval) {
|
||||
rc = 0; // -Enosys
|
||||
if ((rc = Prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)) != -1) {
|
||||
struct sock_fprog sandbox = {.len = f.n, .filter = f.p};
|
||||
rc = Prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &sandbox, 0, 0);
|
||||
}
|
||||
|
||||
return rc;
|
||||
|
|
|
@ -28,20 +28,14 @@
|
|||
#include "libc/sysv/errfuns.h"
|
||||
|
||||
/**
|
||||
* Permits system operations, e.g.
|
||||
* Restricts system operations, e.g.
|
||||
*
|
||||
* if (pledge("stdio rfile tty", 0)) {
|
||||
* perror("pledge");
|
||||
* exit(1);
|
||||
* }
|
||||
* pledge("stdio rfile tty", 0);
|
||||
*
|
||||
* Pledging causes most system calls to become unavailable. Your system
|
||||
* call policy is enforced by the kernel (which means it can propagate
|
||||
* across execve() if permitted). Root access is not required. Support
|
||||
* is limited to Linux 2.6.23+ (c. RHEL6) and OpenBSD. If your kernel
|
||||
* isn't supported, then pledge() will return 0 and do nothing rather
|
||||
* than raising ENOSYS. We don't consider lack of system support to be
|
||||
* an error, because the specified operations will be permitted.
|
||||
* is limited to Linux and OpenBSD.
|
||||
*
|
||||
* The promises you give pledge() define which system calls are allowed.
|
||||
* Error messages are logged when sandbox violations occur that well you
|
||||
|
@ -219,13 +213,14 @@
|
|||
* be weakened to have execute permissions too.
|
||||
*
|
||||
* @return 0 on success, or -1 w/ errno
|
||||
* @raise ENOSYS if host os isn't Linux or OpenBSD
|
||||
* @raise EINVAL if `execpromises` on Linux isn't a subset of `promises`
|
||||
* @raise EINVAL if `promises` allows exec and `execpromises` is null
|
||||
* @threadsafe
|
||||
* @vforksafe
|
||||
*/
|
||||
int pledge(const char *promises, const char *execpromises) {
|
||||
int e, rc;
|
||||
int rc;
|
||||
unsigned long ipromises, iexecpromises;
|
||||
if (!ParsePromises(promises, &ipromises) &&
|
||||
!ParsePromises(execpromises, &iexecpromises)) {
|
||||
|
@ -244,12 +239,7 @@ int pledge(const char *promises, const char *execpromises) {
|
|||
if (rc > -4096u) errno = -rc, rc = -1;
|
||||
}
|
||||
} else {
|
||||
e = errno;
|
||||
rc = sys_pledge(promises, execpromises);
|
||||
if (rc && errno == ENOSYS) {
|
||||
errno = e;
|
||||
rc = 0;
|
||||
}
|
||||
}
|
||||
if (!rc && !__vforked &&
|
||||
(IsOpenbsd() || (IsLinux() && getpid() == gettid()))) {
|
||||
|
|
|
@ -8,7 +8,6 @@ struct timespec {
|
|||
};
|
||||
|
||||
int sys_futex(int *, int, int, const struct timespec *, int *);
|
||||
int64_t _timespec_tonanos(struct timespec) pureconst;
|
||||
int64_t _timespec_tomicros(struct timespec) pureconst;
|
||||
int64_t _timespec_tomillis(struct timespec) pureconst;
|
||||
struct timespec _timespec_frommicros(int64_t) pureconst;
|
||||
|
|
|
@ -93,15 +93,13 @@ _Thread_local static struct {
|
|||
} State;
|
||||
|
||||
static int unveil_final(void) {
|
||||
int e, rc;
|
||||
int rc;
|
||||
struct sock_fprog sandbox = {
|
||||
.filter = kUnveilBlacklist,
|
||||
.len = ARRAYLEN(kUnveilBlacklist),
|
||||
};
|
||||
e = errno;
|
||||
prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0);
|
||||
errno = e;
|
||||
if ((rc = landlock_restrict_self(State.fd, 0)) != -1 &&
|
||||
if ((rc = prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)) != -1 &&
|
||||
(rc = landlock_restrict_self(State.fd, 0)) != -1 &&
|
||||
(rc = sys_close(State.fd)) != -1 &&
|
||||
(rc = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &sandbox)) != -1) {
|
||||
State.fd = 0;
|
||||
|
@ -119,11 +117,9 @@ static int err_close(int rc, int fd) {
|
|||
static int unveil_init(void) {
|
||||
int rc, fd;
|
||||
State.fs_mask = UNVEIL_READ | UNVEIL_WRITE | UNVEIL_EXEC | UNVEIL_CREATE;
|
||||
if ((rc = landlock_create_ruleset(0, 0, LANDLOCK_CREATE_RULESET_VERSION)) ==
|
||||
-1) {
|
||||
if (errno == EOPNOTSUPP) {
|
||||
errno = ENOSYS;
|
||||
}
|
||||
if ((rc = landlock_create_ruleset(0, 0, LANDLOCK_CREATE_RULESET_VERSION)) <
|
||||
0) {
|
||||
if (errno == EOPNOTSUPP) errno = ENOSYS;
|
||||
return -1;
|
||||
}
|
||||
if (rc < 2) {
|
||||
|
@ -254,7 +250,7 @@ int sys_unveil_linux(const char *path, const char *permissions) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Makes files accessible, e.g.
|
||||
* Restricts filesystem operations, e.g.
|
||||
*
|
||||
* unveil(".", "r"); // current directory + children are visible
|
||||
* unveil("/etc", "r"); // make /etc readable too
|
||||
|
@ -268,10 +264,6 @@ int sys_unveil_linux(const char *path, const char *permissions) {
|
|||
* should become unhidden. When you're finished, you call `unveil(0,0)`
|
||||
* which commits your policy.
|
||||
*
|
||||
* This function requires OpenBSD or Linux 5.13+. We don't consider lack
|
||||
* of system support to be an ENOSYS error, because the files will still
|
||||
* become unveiled. Therefore we return 0 in such cases.
|
||||
*
|
||||
* There are some differences between unveil() on Linux versus OpenBSD.
|
||||
*
|
||||
* 1. Build your policy and lock it in one go. On OpenBSD, policies take
|
||||
|
@ -341,6 +333,8 @@ int sys_unveil_linux(const char *path, const char *permissions) {
|
|||
* the pledge promise "cpath".
|
||||
*
|
||||
* @return 0 on success, or -1 w/ errno
|
||||
* @raise ENOSYS if host os isn't Linux or OpenBSD
|
||||
* @raise ENOSYS if Landlock isn't supported on this kernel
|
||||
* @raise EINVAL if one argument is set and the other is not
|
||||
* @raise EINVAL if an invalid character in `permissions` was found
|
||||
* @raise EPERM if unveil() is called after locking
|
||||
|
@ -349,17 +343,12 @@ int sys_unveil_linux(const char *path, const char *permissions) {
|
|||
* @threadsafe
|
||||
*/
|
||||
int unveil(const char *path, const char *permissions) {
|
||||
int e, rc;
|
||||
e = errno;
|
||||
int rc;
|
||||
if (IsLinux()) {
|
||||
rc = sys_unveil_linux(path, permissions);
|
||||
} else {
|
||||
rc = sys_unveil(path, permissions);
|
||||
}
|
||||
if (rc == -1 && errno == ENOSYS) {
|
||||
errno = e;
|
||||
rc = 0;
|
||||
}
|
||||
STRACE("unveil(%#s, %#s) → %d% m", path, permissions, rc);
|
||||
return rc;
|
||||
}
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/dns/prototxt.h"
|
||||
#include "libc/nt/systeminfo.h"
|
||||
#include "libc/str/str.h"
|
||||
|
||||
textwindows char *GetNtProtocolsTxtPath(char *pathbuf, uint32_t size) {
|
||||
/* protocol, not plural */
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/dns/servicestxt.h"
|
||||
#include "libc/nt/systeminfo.h"
|
||||
#include "libc/str/str.h"
|
||||
|
||||
textwindows char *GetNtServicesTxtPath(char *pathbuf, uint32_t size) {
|
||||
const char *const kWinHostsPath = "\\drivers\\etc\\services";
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/dns/ent.h"
|
||||
#include "libc/dns/prototxt.h"
|
||||
#include "libc/mem/mem.h"
|
||||
|
||||
struct protoent *getprotobyname(const char *name) {
|
||||
static struct protoent *ptr0, pe0;
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/dns/ent.h"
|
||||
#include "libc/dns/prototxt.h"
|
||||
#include "libc/mem/mem.h"
|
||||
|
||||
struct protoent *getprotobynumber(int proto) {
|
||||
static struct protoent *ptr1, pe1;
|
||||
|
|
|
@ -25,13 +25,10 @@
|
|||
│ OTHER DEALINGS IN THE SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/bits/safemacros.internal.h"
|
||||
#include "libc/dce.h"
|
||||
#include "libc/dns/prototxt.h"
|
||||
#include "libc/errno.h"
|
||||
#include "libc/fmt/conv.h"
|
||||
#include "libc/macros.internal.h"
|
||||
#include "libc/mem/mem.h"
|
||||
#include "libc/str/str.h"
|
||||
|
||||
/**
|
||||
* Opens and searches /etc/protocols to find number for a given name.
|
||||
|
|
|
@ -25,13 +25,10 @@
|
|||
│ OTHER DEALINGS IN THE SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/bits/safemacros.internal.h"
|
||||
#include "libc/dce.h"
|
||||
#include "libc/dns/prototxt.h"
|
||||
#include "libc/errno.h"
|
||||
#include "libc/fmt/conv.h"
|
||||
#include "libc/macros.internal.h"
|
||||
#include "libc/mem/mem.h"
|
||||
#include "libc/str/str.h"
|
||||
|
||||
/**
|
||||
* Opens and searches /etc/protocols to find name for a given number.
|
||||
|
|
|
@ -25,13 +25,10 @@
|
|||
│ OTHER DEALINGS IN THE SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/bits/safemacros.internal.h"
|
||||
#include "libc/dce.h"
|
||||
#include "libc/dns/servicestxt.h"
|
||||
#include "libc/errno.h"
|
||||
#include "libc/fmt/conv.h"
|
||||
#include "libc/macros.internal.h"
|
||||
#include "libc/mem/mem.h"
|
||||
#include "libc/str/str.h"
|
||||
|
||||
/**
|
||||
* Opens and searches /etc/services to find port for a given name.
|
||||
|
|
|
@ -25,13 +25,10 @@
|
|||
│ OTHER DEALINGS IN THE SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/bits/safemacros.internal.h"
|
||||
#include "libc/dce.h"
|
||||
#include "libc/dns/servicestxt.h"
|
||||
#include "libc/errno.h"
|
||||
#include "libc/fmt/conv.h"
|
||||
#include "libc/macros.internal.h"
|
||||
#include "libc/mem/mem.h"
|
||||
#include "libc/str/str.h"
|
||||
|
||||
/**
|
||||
* Opens and searches /etc/services to find name for a given port.
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/fmt/fmt.h"
|
||||
#include "libc/str/str.h"
|
||||
|
||||
int __xpg_strerror_r(int a, char *b, size_t c) {
|
||||
return strerror_r(a, b, c);
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
#ifndef COSMOPOLITAN_LIBC_FMT_PFLINK_H_
|
||||
#define COSMOPOLITAN_LIBC_FMT_PFLINK_H_
|
||||
#include "libc/dce.h"
|
||||
#include "libc/mem/mem.h"
|
||||
#include "libc/runtime/runtime.h"
|
||||
#include "libc/str/str.h"
|
||||
#include "libc/unicode/unicode.h"
|
||||
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
||||
#ifndef __STRICT_ANSI__
|
||||
|
||||
|
@ -18,8 +23,8 @@
|
|||
if (___PFLINK(FMT, strpbrk, "faAeg")) STATIC_YOINK("__fmt_dtoa"); \
|
||||
if (___PFLINK(FMT, strpbrk, "cmrqs")) { \
|
||||
if (___PFLINK(FMT, strstr, "%m")) STATIC_YOINK("strerror"); \
|
||||
if (___PFLINK(FMT, strstr, "%*") || \
|
||||
___PFLINK(FMT, strpbrk, "0123456789")) { \
|
||||
if (!IsTiny() && (___PFLINK(FMT, strstr, "%*") || \
|
||||
___PFLINK(FMT, strpbrk, "0123456789"))) { \
|
||||
STATIC_YOINK("strnwidth"); \
|
||||
STATIC_YOINK("strnwidth16"); \
|
||||
STATIC_YOINK("wcsnwidth"); \
|
||||
|
@ -58,8 +63,36 @@
|
|||
* respects by disabling all the esoteric tuning in headers like this.
|
||||
*/
|
||||
#pragma GCC diagnostic ignored "-Wformat-security"
|
||||
#endif /* __GNUC__ + 0 < 6 */
|
||||
#else
|
||||
#define PFLINK(FMT) FMT
|
||||
#define SFLINK(FMT) FMT
|
||||
#ifdef __GNUC__
|
||||
__asm__(".section .yoink\n\t"
|
||||
"nopl\t__fmt_dtoa(%rip)\n\t"
|
||||
"nopl\tkCp437(%rip)\n\t"
|
||||
"nopl\tstrerror(%rip)\n\t"
|
||||
"nopl\tstrnwidth(%rip)\n\t"
|
||||
"nopl\tstrnwidth16(%rip)\n\t"
|
||||
"nopl\twcsnwidth(%rip)\n\t"
|
||||
"nopl\tmalloc(%rip)\n\t"
|
||||
"nopl\tcalloc(%rip)\n\t"
|
||||
"nopl\t__grow(%rip)\n\t"
|
||||
".previous");
|
||||
#else
|
||||
static long __pflink(long x) {
|
||||
x |= kCp437[0];
|
||||
x |= __fmt_dtoa(0, 0, 0, 0, 0, 0);
|
||||
x |= strnwidth(0, 0, 0);
|
||||
x |= strnwidth16(0, 0, 0);
|
||||
x |= wcsnwidth(0, 0, 0);
|
||||
x |= malloc(0);
|
||||
x |= __grow(0, 0, 0, 0);
|
||||
x |= (intptr_t)strerror(0);
|
||||
x |= (intptr_t)calloc(0, 0);
|
||||
return x;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __STRICT_ANSI__ */
|
||||
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
||||
#endif /* COSMOPOLITAN_LIBC_FMT_PFLINK_H_ */
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/fmt/conv.h"
|
||||
#include "libc/fmt/fmt.h"
|
||||
#include "libc/str/str.h"
|
||||
|
||||
static int GetExponent(int c) {
|
||||
switch (c) {
|
||||
|
|
|
@ -17,9 +17,7 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/bits/safemacros.internal.h"
|
||||
#include "libc/dce.h"
|
||||
#include "libc/fmt/fmt.h"
|
||||
#include "libc/str/str.h"
|
||||
|
||||
/**
|
||||
* Converts errno value to string non-reentrantly.
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/fmt/fmt.h"
|
||||
#include "libc/nt/runtime.h"
|
||||
#include "libc/str/str.h"
|
||||
|
||||
/**
|
||||
* Converts errno value to string.
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
#include "libc/limits.h"
|
||||
#include "libc/macros.internal.h"
|
||||
#include "libc/runtime/runtime.h"
|
||||
#include "libc/str/str.h"
|
||||
|
||||
struct SprintfStr {
|
||||
char *p;
|
||||
|
|
|
@ -39,7 +39,6 @@
|
|||
#include "libc/log/log.h"
|
||||
#include "libc/macros.internal.h"
|
||||
#include "libc/mem/hook/hook.internal.h"
|
||||
#include "libc/mem/mem.h"
|
||||
#include "libc/nexgen32e/gc.internal.h"
|
||||
#include "libc/nexgen32e/stackframe.h"
|
||||
#include "libc/nt/enum/version.h"
|
||||
|
@ -196,7 +195,8 @@ static uint64_t __asan_roundup2pow(uint64_t x) {
|
|||
static char *__asan_utf8cpy(char *p, unsigned c) {
|
||||
uint64_t z;
|
||||
z = tpenc(c);
|
||||
do *p++ = z;
|
||||
do
|
||||
*p++ = z;
|
||||
while ((z >>= 8));
|
||||
return p;
|
||||
}
|
||||
|
@ -947,7 +947,8 @@ static void __asan_trace(struct AsanTrace *bt, const struct StackFrame *bp) {
|
|||
if (!__asan_checka(SHADOW(bp), sizeof(*bp) >> 3).kind) {
|
||||
addr = bp->addr;
|
||||
if (addr == weakaddr("__gc") && weakaddr("__gc")) {
|
||||
do --gi;
|
||||
do
|
||||
--gi;
|
||||
while ((addr = garbage->p[gi].ret) == weakaddr("__gc"));
|
||||
}
|
||||
bt->p[i] = addr;
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
#ifndef COSMOPOLITAN_LIBC_RUNTIME_PTHREAD_H_
|
||||
#define COSMOPOLITAN_LIBC_RUNTIME_PTHREAD_H_
|
||||
#include "libc/calls/struct/timespec.h"
|
||||
#include "libc/dce.h"
|
||||
|
||||
#define PTHREAD_KEYS_MAX 64
|
||||
|
||||
|
@ -82,6 +84,7 @@ int pthread_mutex_init(pthread_mutex_t *, const pthread_mutexattr_t *);
|
|||
int pthread_mutex_lock(pthread_mutex_t *);
|
||||
int pthread_mutex_unlock(pthread_mutex_t *);
|
||||
int pthread_mutex_trylock(pthread_mutex_t *);
|
||||
int pthread_mutex_timedlock(pthread_mutex_t *, const struct timespec *);
|
||||
int pthread_mutex_destroy(pthread_mutex_t *);
|
||||
int pthread_mutex_consistent(pthread_mutex_t *);
|
||||
int pthread_mutexattr_init(pthread_mutexattr_t *);
|
||||
|
@ -91,6 +94,8 @@ int pthread_mutexattr_settype(pthread_mutexattr_t *, int);
|
|||
int pthread_cond_init(pthread_cond_t *, const pthread_condattr_t *);
|
||||
int pthread_cond_destroy(pthread_cond_t *);
|
||||
int pthread_cond_wait(pthread_cond_t *, pthread_mutex_t *);
|
||||
int pthread_cond_timedwait(pthread_cond_t *, pthread_mutex_t *,
|
||||
const struct timespec *);
|
||||
int pthread_cond_broadcast(pthread_cond_t *);
|
||||
int pthread_cancel(pthread_t);
|
||||
int pthread_cond_signal(pthread_cond_t *);
|
||||
|
@ -98,8 +103,10 @@ int pthread_rwlock_init(pthread_rwlock_t *, const pthread_rwlockattr_t *);
|
|||
int pthread_rwlock_destroy(pthread_rwlock_t *);
|
||||
int pthread_rwlock_rdlock(pthread_rwlock_t *);
|
||||
int pthread_rwlock_tryrdlock(pthread_rwlock_t *);
|
||||
int pthread_rwlock_timedrdlock(pthread_rwlock_t *, const struct timespec *);
|
||||
int pthread_rwlock_wrlock(pthread_rwlock_t *);
|
||||
int pthread_rwlock_trywrlock(pthread_rwlock_t *);
|
||||
int pthread_rwlock_timedwrlock(pthread_rwlock_t *, const struct timespec *);
|
||||
int pthread_rwlock_unlock(pthread_rwlock_t *);
|
||||
int pthread_key_create(pthread_key_t *, pthread_key_dtor);
|
||||
int pthread_key_delete(pthread_key_t);
|
||||
|
@ -132,8 +139,9 @@ void *pthread_getspecific(pthread_key_t);
|
|||
#define pthread_mutex_unlock(mutex) \
|
||||
((mutex)->attr == PTHREAD_MUTEX_NORMAL \
|
||||
? (__atomic_store_n(&(mutex)->lock, 0, __ATOMIC_RELAXED), \
|
||||
__atomic_load_n(&(mutex)->waits, __ATOMIC_RELAXED) && \
|
||||
_pthread_mutex_wake(mutex), \
|
||||
((IsLinux() || IsOpenbsd()) && \
|
||||
__atomic_load_n(&(mutex)->waits, __ATOMIC_RELAXED) && \
|
||||
_pthread_mutex_wake(mutex)), \
|
||||
0) \
|
||||
: pthread_mutex_unlock(mutex))
|
||||
#endif
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
#include "libc/assert.h"
|
||||
#include "libc/bits/atomic.h"
|
||||
#include "libc/calls/calls.h"
|
||||
#include "libc/dce.h"
|
||||
#include "libc/errno.h"
|
||||
#include "libc/intrin/kprintf.h"
|
||||
#include "libc/intrin/pthread.h"
|
||||
|
|
|
@ -17,15 +17,9 @@
|
|||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/bits/atomic.h"
|
||||
#include "libc/dce.h"
|
||||
#include "libc/intrin/futex.internal.h"
|
||||
#include "libc/intrin/pthread.h"
|
||||
|
||||
int _pthread_mutex_wake(pthread_mutex_t *mutex) {
|
||||
if ((IsLinux() || IsOpenbsd()) &&
|
||||
atomic_load_explicit(&mutex->waits, memory_order_relaxed) > 0) {
|
||||
return _futex_wake(&mutex->lock, 1);
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
return _futex_wake(&mutex->lock, 1);
|
||||
}
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
#include "libc/nt/enum/formatmessageflags.h"
|
||||
#include "libc/nt/enum/lang.h"
|
||||
#include "libc/nt/process.h"
|
||||
#include "libc/str/str.h"
|
||||
|
||||
/**
|
||||
* Converts errno value to string with explicit windows errno too.
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
#define LIBC_ISYSTEM_STDIO_H_
|
||||
#include "libc/calls/calls.h"
|
||||
#include "libc/fmt/fmt.h"
|
||||
#include "libc/stdio/lock.h"
|
||||
#include "libc/stdio/stdio.h"
|
||||
#include "libc/stdio/temp.h"
|
||||
#endif
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
#include "libc/math.h"
|
||||
#include "libc/runtime/runtime.h"
|
||||
#include "libc/stdio/stdio.h"
|
||||
#include "libc/str/str.h"
|
||||
|
||||
static double GetTotal(const struct countbranch *p) {
|
||||
return p->total;
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
#include "libc/errno.h"
|
||||
#include "libc/log/log.h"
|
||||
#include "libc/stdio/stdio.h"
|
||||
#include "libc/str/str.h"
|
||||
|
||||
/**
|
||||
* Writes error messages to standard error.
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
#include "libc/macros.internal.h"
|
||||
#include "libc/runtime/stack.h"
|
||||
#include "libc/runtime/symbols.internal.h"
|
||||
#include "libc/str/str.h"
|
||||
#include "libc/sysv/consts/map.h"
|
||||
#include "libc/sysv/consts/prot.h"
|
||||
#include "libc/sysv/consts/sa.h"
|
||||
|
|
|
@ -33,7 +33,6 @@
|
|||
#include "libc/math.h"
|
||||
#include "libc/nexgen32e/nexgen32e.h"
|
||||
#include "libc/runtime/runtime.h"
|
||||
#include "libc/stdio/lock.h"
|
||||
#include "libc/stdio/stdio.h"
|
||||
#include "libc/str/str.h"
|
||||
#include "libc/sysv/consts/fileno.h"
|
||||
|
|
2
libc/nt/gdi32/GdiCurrentProcessSplWow64.s
Normal file
2
libc/nt/gdi32/GdiCurrentProcessSplWow64.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp gdi32,__imp_GdiCurrentProcessSplWow64,GdiCurrentProcessSplWow64,1510
|
2
libc/nt/kernel32/GetSystemWow64DirectoryA.s
Normal file
2
libc/nt/kernel32/GetSystemWow64DirectoryA.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp kernel32,__imp_GetSystemWow64DirectoryA,GetSystemWow64DirectoryA,0
|
2
libc/nt/kernel32/GetSystemWow64DirectoryW.s
Normal file
2
libc/nt/kernel32/GetSystemWow64DirectoryW.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp kernel32,__imp_GetSystemWow64DirectoryW,GetSystemWow64DirectoryW,0
|
2
libc/nt/kernel32/IsWow64Process.s
Normal file
2
libc/nt/kernel32/IsWow64Process.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp kernel32,__imp_IsWow64Process,IsWow64Process,0
|
2
libc/nt/kernel32/Wow64DisableWow64FsRedirection.s
Normal file
2
libc/nt/kernel32/Wow64DisableWow64FsRedirection.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp kernel32,__imp_Wow64DisableWow64FsRedirection,Wow64DisableWow64FsRedirection,0
|
2
libc/nt/kernel32/Wow64EnableWow64FsRedirection.s
Normal file
2
libc/nt/kernel32/Wow64EnableWow64FsRedirection.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp kernel32,__imp_Wow64EnableWow64FsRedirection,Wow64EnableWow64FsRedirection,1545
|
2
libc/nt/kernel32/Wow64GetThreadContext.s
Normal file
2
libc/nt/kernel32/Wow64GetThreadContext.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp kernel32,__imp_Wow64GetThreadContext,Wow64GetThreadContext,1546
|
2
libc/nt/kernel32/Wow64GetThreadSelectorEntry.s
Normal file
2
libc/nt/kernel32/Wow64GetThreadSelectorEntry.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp kernel32,__imp_Wow64GetThreadSelectorEntry,Wow64GetThreadSelectorEntry,1547
|
2
libc/nt/kernel32/Wow64RevertWow64FsRedirection.s
Normal file
2
libc/nt/kernel32/Wow64RevertWow64FsRedirection.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp kernel32,__imp_Wow64RevertWow64FsRedirection,Wow64RevertWow64FsRedirection,0
|
2
libc/nt/kernel32/Wow64SetThreadContext.s
Normal file
2
libc/nt/kernel32/Wow64SetThreadContext.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp kernel32,__imp_Wow64SetThreadContext,Wow64SetThreadContext,1549
|
2
libc/nt/kernel32/Wow64SuspendThread.s
Normal file
2
libc/nt/kernel32/Wow64SuspendThread.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp kernel32,__imp_Wow64SuspendThread,Wow64SuspendThread,1550
|
|
@ -667,6 +667,8 @@ imp 'GetSystemTimePreciseAsFileTime' GetSystemTimePreciseAsFileTime kernel3
|
|||
imp 'GetSystemTimes' GetSystemTimes kernel32 0 3
|
||||
imp 'GetSystemWindowsDirectory' GetSystemWindowsDirectoryW kernel32 0
|
||||
imp 'GetSystemWindowsDirectoryA' GetSystemWindowsDirectoryA kernel32 0
|
||||
imp 'GetSystemWow64Directory' GetSystemWow64DirectoryW kernel32 0
|
||||
imp 'GetSystemWow64DirectoryA' GetSystemWow64DirectoryA kernel32 0
|
||||
imp 'GetTapeParameters' GetTapeParameters kernel32 756
|
||||
imp 'GetTapePosition' GetTapePosition kernel32 757
|
||||
imp 'GetTapeStatus' GetTapeStatus kernel32 758
|
||||
|
@ -807,6 +809,7 @@ imp 'IsValidLanguageGroup' IsValidLanguageGroup kernel32 0
|
|||
imp 'IsValidLocale' IsValidLocale kernel32 0
|
||||
imp 'IsValidLocaleName' IsValidLocaleName kernel32 0
|
||||
imp 'IsValidNLSVersion' IsValidNLSVersion kernel32 0
|
||||
imp 'IsWow64Process' IsWow64Process kernel32 0
|
||||
imp 'K32EmptyWorkingSet' K32EmptyWorkingSet kernel32 0
|
||||
imp 'K32EnumDeviceDrivers' K32EnumDeviceDrivers kernel32 0
|
||||
imp 'K32EnumPageFiles' K32EnumPageFilesW kernel32 0
|
||||
|
@ -1302,6 +1305,13 @@ imp 'WerpNotifyLoadStringResourceWorker' WerpNotifyLoadStringResourceWorker
|
|||
imp 'WerpNotifyUseStringResourceWorker' WerpNotifyUseStringResourceWorker kernel32 1541
|
||||
imp 'WideCharToMultiByte' WideCharToMultiByte kernel32 1553 8
|
||||
imp 'WinExec' WinExec kernel32 1543
|
||||
imp 'Wow64DisableWow64FsRedirection' Wow64DisableWow64FsRedirection kernel32 0
|
||||
imp 'Wow64EnableWow64FsRedirection' Wow64EnableWow64FsRedirection kernel32 1545
|
||||
imp 'Wow64GetThreadContext' Wow64GetThreadContext kernel32 1546
|
||||
imp 'Wow64GetThreadSelectorEntry' Wow64GetThreadSelectorEntry kernel32 1547
|
||||
imp 'Wow64RevertWow64FsRedirection' Wow64RevertWow64FsRedirection kernel32 0
|
||||
imp 'Wow64SetThreadContext' Wow64SetThreadContext kernel32 1549
|
||||
imp 'Wow64SuspendThread' Wow64SuspendThread kernel32 1550
|
||||
imp 'WriteConsole' WriteConsoleW kernel32 0 5
|
||||
imp 'WriteConsoleA' WriteConsoleA kernel32 0 5
|
||||
imp 'WriteConsoleInput' WriteConsoleInputW kernel32 0 4
|
||||
|
@ -2588,6 +2598,7 @@ imp 'IsWindowInDestroy' IsWindowInDestroy user32 2087
|
|||
imp 'IsWindowRedirectedForPrint' IsWindowRedirectedForPrint user32 2088
|
||||
imp 'IsWindowUnicode' IsWindowUnicode user32 2089
|
||||
imp 'IsWindowVisible' IsWindowVisible user32 2090 1
|
||||
imp 'IsWow64Message' IsWow64Message user32 2091
|
||||
imp 'IsZoomed' IsZoomed user32 2092 1
|
||||
imp 'KillTimer' KillTimer user32 2093 2
|
||||
imp 'LoadAccelerators' LoadAcceleratorsW user32 2095
|
||||
|
@ -3365,6 +3376,7 @@ imp 'GdiConvertRegion' GdiConvertRegion gdi32 1506
|
|||
imp 'GdiConvertToDevmode' GdiConvertToDevmodeW gdi32 1507
|
||||
imp 'GdiCreateLocalEnhMetaFile' GdiCreateLocalEnhMetaFile gdi32 1508
|
||||
imp 'GdiCreateLocalMetaFilePict' GdiCreateLocalMetaFilePict gdi32 1509
|
||||
imp 'GdiCurrentProcessSplWow64' GdiCurrentProcessSplWow64 gdi32 1510
|
||||
imp 'GdiDeleteLocalDC' GdiDeleteLocalDC gdi32 1511
|
||||
imp 'GdiDeleteSpoolFileHandle' GdiDeleteSpoolFileHandle gdi32 1512
|
||||
imp 'GdiDescribePixelFormat' GdiDescribePixelFormat gdi32 1513
|
||||
|
@ -4083,6 +4095,89 @@ imp 'InitializeProcessForWsWatch' InitializeProcessForWsWatch psapi 0
|
|||
imp 'QueryWorkingSet' QueryWorkingSet psapi 0
|
||||
imp 'QueryWorkingSetEx' QueryWorkingSetEx psapi 0
|
||||
|
||||
# NETAPI32.DLL
|
||||
#
|
||||
# Name Actual DLL Hint Arity
|
||||
imp 'I_BrowserSetNetlogonState' I_BrowserSetNetlogonState netapi32 34
|
||||
imp 'NetAccessAdd' NetAccessAdd netapi32 71
|
||||
imp 'NetAccessDel' NetAccessDel netapi32 72
|
||||
imp 'NetAccessEnum' NetAccessEnum netapi32 73
|
||||
imp 'NetAccessGetInfo' NetAccessGetInfo netapi32 74
|
||||
imp 'NetAccessGetUserPerms' NetAccessGetUserPerms netapi32 75
|
||||
imp 'NetAccessSetInfo' NetAccessSetInfo netapi32 76
|
||||
imp 'NetAlertRaise' NetAlertRaise netapi32 79
|
||||
imp 'NetAlertRaiseEx' NetAlertRaiseEx netapi32 80
|
||||
imp 'NetAuditClear' NetAuditClear netapi32 85
|
||||
imp 'NetAuditRead' NetAuditRead netapi32 86
|
||||
imp 'NetAuditWrite' NetAuditWrite netapi32 87
|
||||
imp 'NetConfigGet' NetConfigGet netapi32 88
|
||||
imp 'NetConfigGetAll' NetConfigGetAll netapi32 89
|
||||
imp 'NetConfigSet' NetConfigSet netapi32 90
|
||||
imp 'NetErrorLogClear' NetErrorLogClear netapi32 124
|
||||
imp 'NetErrorLogRead' NetErrorLogRead netapi32 125
|
||||
imp 'NetErrorLogWrite' NetErrorLogWrite netapi32 126
|
||||
imp 'NetMessageBufferSend' NetMessageBufferSend netapi32 161
|
||||
imp 'NetMessageNameAdd' NetMessageNameAdd netapi32 162
|
||||
imp 'NetMessageNameDel' NetMessageNameDel netapi32 163
|
||||
imp 'NetMessageNameEnum' NetMessageNameEnum netapi32 164
|
||||
imp 'NetMessageNameGetInfo' NetMessageNameGetInfo netapi32 165
|
||||
imp 'NetRegisterDomainNameChangeNotification' NetRegisterDomainNameChangeNotification netapi32 169
|
||||
imp 'NetReplExportDirAdd' NetReplExportDirAdd netapi32 175
|
||||
imp 'NetReplExportDirDel' NetReplExportDirDel netapi32 176
|
||||
imp 'NetReplExportDirEnum' NetReplExportDirEnum netapi32 177
|
||||
imp 'NetReplExportDirGetInfo' NetReplExportDirGetInfo netapi32 178
|
||||
imp 'NetReplExportDirLock' NetReplExportDirLock netapi32 179
|
||||
imp 'NetReplExportDirSetInfo' NetReplExportDirSetInfo netapi32 180
|
||||
imp 'NetReplExportDirUnlock' NetReplExportDirUnlock netapi32 181
|
||||
imp 'NetReplGetInfo' NetReplGetInfo netapi32 182
|
||||
imp 'NetReplImportDirAdd' NetReplImportDirAdd netapi32 183
|
||||
imp 'NetReplImportDirDel' NetReplImportDirDel netapi32 184
|
||||
imp 'NetReplImportDirEnum' NetReplImportDirEnum netapi32 185
|
||||
imp 'NetReplImportDirGetInfo' NetReplImportDirGetInfo netapi32 186
|
||||
imp 'NetReplImportDirLock' NetReplImportDirLock netapi32 187
|
||||
imp 'NetReplImportDirUnlock' NetReplImportDirUnlock netapi32 188
|
||||
imp 'NetReplSetInfo' NetReplSetInfo netapi32 189
|
||||
imp 'NetServerEnum' NetServerEnum netapi32 202
|
||||
imp 'NetServerEnumEx' NetServerEnumEx netapi32 203
|
||||
imp 'NetServiceControl' NetServiceControl netapi32 210
|
||||
imp 'NetServiceEnum' NetServiceEnum netapi32 211
|
||||
imp 'NetServiceGetInfo' NetServiceGetInfo netapi32 212
|
||||
imp 'NetServiceInstall' NetServiceInstall netapi32 213
|
||||
imp 'NetStatisticsGet' NetStatisticsGet netapi32 227
|
||||
imp 'NetUnregisterDomainNameChangeNotification' NetUnregisterDomainNameChangeNotification netapi32 229
|
||||
imp 'NetWkstaGetInfo' NetWkstaGetInfo netapi32 248
|
||||
imp 'NetWkstaSetInfo' NetWkstaSetInfo netapi32 249
|
||||
imp 'Netbios' Netbios netapi32 257
|
||||
imp 'NetpAddTlnFtinfoEntry' NetpAddTlnFtinfoEntry netapi32 258
|
||||
imp 'NetpAllocFtinfoEntry' NetpAllocFtinfoEntry netapi32 259
|
||||
imp 'NetpAssertFailed' NetpAssertFailed netapi32 260
|
||||
imp 'NetpCleanFtinfoContext' NetpCleanFtinfoContext netapi32 261
|
||||
imp 'NetpCloseConfigData' NetpCloseConfigData netapi32 262
|
||||
imp 'NetpCopyFtinfoContext' NetpCopyFtinfoContext netapi32 263
|
||||
imp 'NetpDbgPrint' NetpDbgPrint netapi32 264
|
||||
imp 'NetpGetConfigBool' NetpGetConfigBool netapi32 265
|
||||
imp 'NetpGetConfigDword' NetpGetConfigDword netapi32 266
|
||||
imp 'NetpGetConfigTStrArray' NetpGetConfigTStrArray netapi32 267
|
||||
imp 'NetpGetConfigValue' NetpGetConfigValue netapi32 268
|
||||
imp 'NetpGetFileSecurity' NetpGetFileSecurity netapi32 269
|
||||
imp 'NetpHexDump' NetpHexDump netapi32 270
|
||||
imp 'NetpInitFtinfoContext' NetpInitFtinfoContext netapi32 271
|
||||
imp 'NetpIsUncComputerNameValid' NetpIsUncComputerNameValid netapi32 273
|
||||
imp 'NetpMergeFtinfo' NetpMergeFtinfo netapi32 274
|
||||
imp 'NetpNetBiosReset' NetpNetBiosReset netapi32 275
|
||||
imp 'NetpNetBiosStatusToApiStatus' NetpNetBiosStatusToApiStatus netapi32 276
|
||||
imp 'NetpOpenConfigData' NetpOpenConfigData netapi32 277
|
||||
imp 'NetpSetFileSecurity' NetpSetFileSecurity netapi32 278
|
||||
imp 'RxNetAccessAdd' RxNetAccessAdd netapi32 288
|
||||
imp 'RxNetAccessDel' RxNetAccessDel netapi32 289
|
||||
imp 'RxNetAccessEnum' RxNetAccessEnum netapi32 290
|
||||
imp 'RxNetAccessGetInfo' RxNetAccessGetInfo netapi32 291
|
||||
imp 'RxNetAccessGetUserPerms' RxNetAccessGetUserPerms netapi32 292
|
||||
imp 'RxNetAccessSetInfo' RxNetAccessSetInfo netapi32 293
|
||||
imp 'RxNetServerEnum' RxNetServerEnum netapi32 294
|
||||
imp 'RxNetUserPasswordSet' RxNetUserPasswordSet netapi32 295
|
||||
imp 'RxRemoteApi' RxRemoteApi netapi32 296
|
||||
|
||||
# URL.DLL
|
||||
#
|
||||
# Name Actual DLL Hint Arity
|
||||
|
@ -4097,6 +4192,265 @@ imp 'InetIsOffline' InetIsOffline url 106
|
|||
imp 'MIMEAssociationDialog' MIMEAssociationDialogW url 108
|
||||
imp 'MailToProtocolHandler' MailToProtocolHandler url 109
|
||||
|
||||
# SHELL32.DLL
|
||||
#
|
||||
# Name Actual DLL Hint Arity
|
||||
imp 'AppCompat_RunDLLW' AppCompat_RunDLLW shell32 255
|
||||
imp 'AssocCreateForClasses' AssocCreateForClasses shell32 263
|
||||
imp 'AssocGetDetailsOfPropKey' AssocGetDetailsOfPropKey shell32 267
|
||||
imp 'CDefFolderMenu_Create2' CDefFolderMenu_Create2 shell32 701
|
||||
imp 'CIDLData_CreateFromIDArray' CIDLData_CreateFromIDArray shell32 83
|
||||
imp 'CStorageItem_GetValidatedStorageItemObject' CStorageItem_GetValidatedStorageItemObject shell32 937
|
||||
imp 'CheckEscapes' CheckEscapesW shell32 268
|
||||
imp 'CommandLineToArgv' CommandLineToArgvW shell32 269
|
||||
imp 'Control_RunDLL' Control_RunDLL shell32 272
|
||||
imp 'Control_RunDLLAsUser' Control_RunDLLAsUserW shell32 274
|
||||
imp 'Control_RunDLLW' Control_RunDLLW shell32 275
|
||||
imp 'DAD_AutoScroll' DAD_AutoScroll shell32 129
|
||||
imp 'DAD_DragEnterEx' DAD_DragEnterEx shell32 131
|
||||
imp 'DAD_DragEnterEx2' DAD_DragEnterEx2 shell32 22
|
||||
imp 'DAD_DragLeave' DAD_DragLeave shell32 132
|
||||
imp 'DAD_DragMove' DAD_DragMove shell32 134
|
||||
imp 'DAD_SetDragImage' DAD_SetDragImage shell32 136
|
||||
imp 'DAD_ShowDragImage' DAD_ShowDragImage shell32 137
|
||||
imp 'DllGetActivationFactory' DllGetActivationFactory shell32 277
|
||||
imp 'DllGetVersion' DllGetVersion shell32 279
|
||||
imp 'DllInstall' DllInstall shell32 280
|
||||
imp 'DllRegisterServer' DllRegisterServer shell32 281
|
||||
imp 'DllUnregisterServer' DllUnregisterServer shell32 282
|
||||
imp 'DoEnvironmentSubst' DoEnvironmentSubstW shell32 284
|
||||
imp 'DragAcceptFiles' DragAcceptFiles shell32 285
|
||||
imp 'DragFinish' DragFinish shell32 286
|
||||
imp 'DragQueryFile' DragQueryFileW shell32 290
|
||||
imp 'DragQueryFileAor' DragQueryFileAorW shell32 289
|
||||
imp 'DragQueryPoint' DragQueryPoint shell32 291
|
||||
imp 'DriveType' DriveType shell32 64
|
||||
imp 'DuplicateIcon' DuplicateIcon shell32 292
|
||||
imp 'ExtractAssociatedIcon' ExtractAssociatedIconW shell32 296
|
||||
imp 'ExtractAssociatedIconEx' ExtractAssociatedIconExW shell32 295
|
||||
imp 'ExtractIcon' ExtractIconW shell32 301
|
||||
imp 'ExtractIconEx' ExtractIconExW shell32 300
|
||||
imp 'FindExecutable' FindExecutableW shell32 303
|
||||
imp 'FreeIconList' FreeIconList shell32 304
|
||||
imp 'GetCurrentProcessExplicitAppUserModelID' GetCurrentProcessExplicitAppUserModelID shell32 305
|
||||
imp 'GetFileNameFromBrowse' GetFileNameFromBrowse shell32 63
|
||||
imp 'GetSystemPersistedStorageItemList' GetSystemPersistedStorageItemList shell32 919
|
||||
imp 'ILAppendID' ILAppendID shell32 154
|
||||
imp 'ILClone' ILClone shell32 18
|
||||
imp 'ILCloneFirst' ILCloneFirst shell32 19
|
||||
imp 'ILCombine' ILCombine shell32 25
|
||||
imp 'ILCreateFromPath' ILCreateFromPathW shell32 190
|
||||
imp 'ILFindChild' ILFindChild shell32 24
|
||||
imp 'ILFindLastID' ILFindLastID shell32 16
|
||||
imp 'ILFree' ILFree shell32 155
|
||||
imp 'ILGetNext' ILGetNext shell32 153
|
||||
imp 'ILGetSize' ILGetSize shell32 152
|
||||
imp 'ILIsEqual' ILIsEqual shell32 21
|
||||
imp 'ILIsParent' ILIsParent shell32 23
|
||||
imp 'ILLoadFromStreamEx' ILLoadFromStreamEx shell32 846
|
||||
imp 'ILRemoveLastID' ILRemoveLastID shell32 17
|
||||
imp 'ILSaveToStream' ILSaveToStream shell32 27
|
||||
imp 'InitNetworkAddressControl' InitNetworkAddressControl shell32 306
|
||||
imp 'InternalExtractIconList' InternalExtractIconListW shell32 308
|
||||
imp 'IsDesktopExplorerProcess' IsDesktopExplorerProcess shell32 942
|
||||
imp 'IsLFNDrive' IsLFNDriveW shell32 42
|
||||
imp 'IsNetDrive' IsNetDrive shell32 66
|
||||
imp 'IsProcessAnExplorer' IsProcessAnExplorer shell32 941
|
||||
imp 'IsUserAnAdmin' IsUserAnAdmin shell32 680
|
||||
imp 'LaunchMSHelp_RunDLLW' LaunchMSHelp_RunDLLW shell32 309
|
||||
imp 'OpenAs_RunDLL' OpenAs_RunDLL shell32 81
|
||||
imp 'OpenAs_RunDLLW' OpenAs_RunDLLW shell32 133
|
||||
imp 'OpenRegStream' OpenRegStream shell32 85
|
||||
imp 'Options_RunDLL' Options_RunDLL shell32 310
|
||||
imp 'Options_RunDLLW' Options_RunDLLW shell32 312
|
||||
imp 'PathCleanupSpec' PathCleanupSpec shell32 171
|
||||
imp 'PathGetShortPath' PathGetShortPath shell32 92
|
||||
imp 'PathIsExe' PathIsExe shell32 43
|
||||
imp 'PathIsSlow' PathIsSlowW shell32 239
|
||||
imp 'PathMakeUniqueName' PathMakeUniqueName shell32 47
|
||||
imp 'PathQualify' PathQualify shell32 49
|
||||
imp 'PathResolve' PathResolve shell32 51
|
||||
imp 'PathYetAnotherMakeUniqueName' PathYetAnotherMakeUniqueName shell32 75
|
||||
imp 'PickIconDlg' PickIconDlg shell32 62
|
||||
imp 'PifMgr_CloseProperties' PifMgr_CloseProperties shell32 13
|
||||
imp 'PifMgr_GetProperties' PifMgr_GetProperties shell32 10
|
||||
imp 'PifMgr_OpenProperties' PifMgr_OpenProperties shell32 9
|
||||
imp 'PifMgr_SetProperties' PifMgr_SetProperties shell32 11
|
||||
imp 'PrepareDiscForBurnRunDll' PrepareDiscForBurnRunDllW shell32 135
|
||||
imp 'PrintersGetCommand_RunDLL' PrintersGetCommand_RunDLL shell32 138
|
||||
imp 'PrintersGetCommand_RunDLLW' PrintersGetCommand_RunDLLW shell32 150
|
||||
imp 'ReadCabinetState' ReadCabinetState shell32 654
|
||||
imp 'RealDriveType' RealDriveType shell32 524
|
||||
imp 'RealShellExecute' RealShellExecuteW shell32 226
|
||||
imp 'RealShellExecuteEx' RealShellExecuteExW shell32 208
|
||||
imp 'RegenerateUserEnvironment' RegenerateUserEnvironment shell32 313
|
||||
imp 'RestartDialog' RestartDialog shell32 59
|
||||
imp 'RestartDialogEx' RestartDialogEx shell32 730
|
||||
imp 'RunAsNewUser_RunDLLW' RunAsNewUser_RunDLLW shell32 314
|
||||
imp 'SHAddDefaultPropertiesByExt' SHAddDefaultPropertiesByExt shell32 315
|
||||
imp 'SHAddFromPropSheetExtArray' SHAddFromPropSheetExtArray shell32 167
|
||||
imp 'SHAddToRecentDocs' SHAddToRecentDocs shell32 316
|
||||
imp 'SHAlloc' SHAlloc shell32 196
|
||||
imp 'SHAppBarMessage' SHAppBarMessage shell32 317
|
||||
imp 'SHAssocEnumHandlers' SHAssocEnumHandlers shell32 318
|
||||
imp 'SHAssocEnumHandlersForProtocolByApplication' SHAssocEnumHandlersForProtocolByApplication shell32 319
|
||||
imp 'SHBindToFolderIDListParent' SHBindToFolderIDListParent shell32 320
|
||||
imp 'SHBindToFolderIDListParentEx' SHBindToFolderIDListParentEx shell32 321
|
||||
imp 'SHBindToObject' SHBindToObject shell32 322
|
||||
imp 'SHBindToParent' SHBindToParent shell32 323
|
||||
imp 'SHBrowseForFolder' SHBrowseForFolderW shell32 326
|
||||
imp 'SHCLSIDFromString' SHCLSIDFromString shell32 147
|
||||
imp 'SHChangeNotification_Lock' SHChangeNotification_Lock shell32 644
|
||||
imp 'SHChangeNotification_Unlock' SHChangeNotification_Unlock shell32 645
|
||||
imp 'SHChangeNotify' SHChangeNotify shell32 327
|
||||
imp 'SHChangeNotifyDeregister' SHChangeNotifyDeregister shell32 4
|
||||
imp 'SHChangeNotifyRegister' SHChangeNotifyRegister shell32 2
|
||||
imp 'SHChangeNotifyRegisterThread' SHChangeNotifyRegisterThread shell32 328
|
||||
imp 'SHChangeNotifySuspendResume' SHChangeNotifySuspendResume shell32 329
|
||||
imp 'SHCloneSpecialIDList' SHCloneSpecialIDList shell32 89
|
||||
imp 'SHCoCreateInstanceWorker' SHCoCreateInstanceWorker shell32 330
|
||||
imp 'SHCreateAssociationRegistration' SHCreateAssociationRegistration shell32 331
|
||||
imp 'SHCreateCategoryEnum' SHCreateCategoryEnum shell32 332
|
||||
imp 'SHCreateDataObject' SHCreateDataObject shell32 333
|
||||
imp 'SHCreateDefaultContextMenu' SHCreateDefaultContextMenu shell32 334
|
||||
imp 'SHCreateDefaultExtractIcon' SHCreateDefaultExtractIcon shell32 335
|
||||
imp 'SHCreateDefaultPropertiesOp' SHCreateDefaultPropertiesOp shell32 336
|
||||
imp 'SHCreateDirectory' SHCreateDirectory shell32 165
|
||||
imp 'SHCreateDirectoryEx' SHCreateDirectoryExW shell32 338
|
||||
imp 'SHCreateDrvExtIcon' SHCreateDrvExtIcon shell32 339
|
||||
imp 'SHCreateFileExtractIcon' SHCreateFileExtractIconW shell32 743
|
||||
imp 'SHCreateItemFromIDList' SHCreateItemFromIDList shell32 340
|
||||
imp 'SHCreateItemFromParsingName' SHCreateItemFromParsingName shell32 341
|
||||
imp 'SHCreateItemFromRelativeName' SHCreateItemFromRelativeName shell32 342
|
||||
imp 'SHCreateItemInKnownFolder' SHCreateItemInKnownFolder shell32 343
|
||||
imp 'SHCreateItemWithParent' SHCreateItemWithParent shell32 344
|
||||
imp 'SHCreateLocalServerRunDll' SHCreateLocalServerRunDll shell32 345
|
||||
imp 'SHCreateProcessAsUser' SHCreateProcessAsUserW shell32 346
|
||||
imp 'SHCreatePropSheetExtArray' SHCreatePropSheetExtArray shell32 168
|
||||
imp 'SHCreateQueryCancelAutoPlayMoniker' SHCreateQueryCancelAutoPlayMoniker shell32 347
|
||||
imp 'SHCreateShellFolderView' SHCreateShellFolderView shell32 256
|
||||
imp 'SHCreateShellFolderViewEx' SHCreateShellFolderViewEx shell32 174
|
||||
imp 'SHCreateShellItem' SHCreateShellItem shell32 348
|
||||
imp 'SHCreateShellItemArray' SHCreateShellItemArray shell32 349
|
||||
imp 'SHCreateShellItemArrayFromDataObject' SHCreateShellItemArrayFromDataObject shell32 350
|
||||
imp 'SHCreateShellItemArrayFromIDLists' SHCreateShellItemArrayFromIDLists shell32 351
|
||||
imp 'SHCreateShellItemArrayFromShellItem' SHCreateShellItemArrayFromShellItem shell32 352
|
||||
imp 'SHCreateStdEnumFmtEtc' SHCreateStdEnumFmtEtc shell32 74
|
||||
imp 'SHDefExtractIcon' SHDefExtractIconW shell32 6
|
||||
imp 'SHDestroyPropSheetExtArray' SHDestroyPropSheetExtArray shell32 169
|
||||
imp 'SHDoDragDrop' SHDoDragDrop shell32 88
|
||||
imp 'SHEmptyRecycleBin' SHEmptyRecycleBinW shell32 487
|
||||
imp 'SHEnableServiceObject' SHEnableServiceObject shell32 488
|
||||
imp 'SHEnumerateUnreadMailAccounts' SHEnumerateUnreadMailAccountsW shell32 489
|
||||
imp 'SHEvaluateSystemCommandTemplate' SHEvaluateSystemCommandTemplate shell32 490
|
||||
imp 'SHExtractIcons' SHExtractIconsW shell32 491
|
||||
imp 'SHFileOperation' SHFileOperationW shell32 494
|
||||
imp 'SHFindFiles' SHFindFiles shell32 90
|
||||
imp 'SHFind_InitMenuPopup' SHFind_InitMenuPopup shell32 149
|
||||
imp 'SHFlushSFCache' SHFlushSFCache shell32 526
|
||||
imp 'SHFormatDrive' SHFormatDrive shell32 495
|
||||
imp 'SHFree' SHFree shell32 195
|
||||
imp 'SHFreeNameMappings' SHFreeNameMappings shell32 496
|
||||
imp 'SHGetAttributesFromDataObject' SHGetAttributesFromDataObject shell32 750
|
||||
imp 'SHGetDataFromIDList' SHGetDataFromIDListW shell32 498
|
||||
imp 'SHGetDesktopFolder' SHGetDesktopFolder shell32 499
|
||||
imp 'SHGetDiskFreeSpaceEx' SHGetDiskFreeSpaceExW shell32 502
|
||||
imp 'SHGetDriveMedia' SHGetDriveMedia shell32 503
|
||||
imp 'SHGetFileInfo' SHGetFileInfoW shell32 506
|
||||
imp 'SHGetFolderLocation' SHGetFolderLocation shell32 507
|
||||
imp 'SHGetFolderPath' SHGetFolderPathW shell32 512
|
||||
imp 'SHGetFolderPathAndSubDir' SHGetFolderPathAndSubDirW shell32 510
|
||||
imp 'SHGetFolderPathEx' SHGetFolderPathEx shell32 511
|
||||
imp 'SHGetIDListFromObject' SHGetIDListFromObject shell32 513
|
||||
imp 'SHGetIconOverlayIndex' SHGetIconOverlayIndexW shell32 515
|
||||
imp 'SHGetImageList' SHGetImageList shell32 727
|
||||
imp 'SHGetInstanceExplorer' SHGetInstanceExplorer shell32 516
|
||||
imp 'SHGetItemFromDataObject' SHGetItemFromDataObject shell32 517
|
||||
imp 'SHGetItemFromObject' SHGetItemFromObject shell32 518
|
||||
imp 'SHGetKnownFolderIDList' SHGetKnownFolderIDList shell32 519
|
||||
imp 'SHGetKnownFolderItem' SHGetKnownFolderItem shell32 527
|
||||
imp 'SHGetKnownFolderPath' SHGetKnownFolderPath shell32 528
|
||||
imp 'SHGetLocalizedName' SHGetLocalizedName shell32 529
|
||||
imp 'SHGetMalloc' SHGetMalloc shell32 530
|
||||
imp 'SHGetNameFromIDList' SHGetNameFromIDList shell32 531
|
||||
imp 'SHGetNewLinkInfo' SHGetNewLinkInfoW shell32 180
|
||||
imp 'SHGetPathFromIDList' SHGetPathFromIDListW shell32 536
|
||||
imp 'SHGetPathFromIDListEx' SHGetPathFromIDListEx shell32 535
|
||||
imp 'SHGetPropertyStoreForWindow' SHGetPropertyStoreForWindow shell32 537
|
||||
imp 'SHGetPropertyStoreFromIDList' SHGetPropertyStoreFromIDList shell32 538
|
||||
imp 'SHGetPropertyStoreFromParsingName' SHGetPropertyStoreFromParsingName shell32 539
|
||||
imp 'SHGetRealIDL' SHGetRealIDL shell32 98
|
||||
imp 'SHGetSetFolderCustomSettings' SHGetSetFolderCustomSettings shell32 709
|
||||
imp 'SHGetSetSettings' SHGetSetSettings shell32 68
|
||||
imp 'SHGetSettings' SHGetSettings shell32 540
|
||||
imp 'SHGetSpecialFolderLocation' SHGetSpecialFolderLocation shell32 541
|
||||
imp 'SHGetSpecialFolderPath' SHGetSpecialFolderPathW shell32 543
|
||||
imp 'SHGetStockIconInfo' SHGetStockIconInfo shell32 544
|
||||
imp 'SHGetTemporaryPropertyForItem' SHGetTemporaryPropertyForItem shell32 545
|
||||
imp 'SHGetUnreadMailCount' SHGetUnreadMailCountW shell32 546
|
||||
imp 'SHHandleUpdateImage' SHHandleUpdateImage shell32 193
|
||||
imp 'SHHelpShortcuts_RunDLL' SHHelpShortcuts_RunDLL shell32 228
|
||||
imp 'SHHelpShortcuts_RunDLLW' SHHelpShortcuts_RunDLLW shell32 238
|
||||
imp 'SHILCreateFromPath' SHILCreateFromPath shell32 28
|
||||
imp 'SHInvokePrinterCommand' SHInvokePrinterCommandW shell32 548
|
||||
imp 'SHIsFileAvailableOffline' SHIsFileAvailableOffline shell32 549
|
||||
imp 'SHLimitInputEdit' SHLimitInputEdit shell32 747
|
||||
imp 'SHLoadInProc' SHLoadInProc shell32 550
|
||||
imp 'SHLoadNonloadedIconOverlayIdentifiers' SHLoadNonloadedIconOverlayIdentifiers shell32 551
|
||||
imp 'SHMapPIDLToSystemImageListIndex' SHMapPIDLToSystemImageListIndex shell32 77
|
||||
imp 'SHMultiFileProperties' SHMultiFileProperties shell32 716
|
||||
imp 'SHObjectProperties' SHObjectProperties shell32 178
|
||||
imp 'SHOpenFolderAndSelectItems' SHOpenFolderAndSelectItems shell32 552
|
||||
imp 'SHOpenPropSheet' SHOpenPropSheetW shell32 80
|
||||
imp 'SHOpenWithDialog' SHOpenWithDialog shell32 553
|
||||
imp 'SHParseDisplayName' SHParseDisplayName shell32 554
|
||||
imp 'SHPathPrepareForWrite' SHPathPrepareForWriteW shell32 556
|
||||
imp 'SHPropStgCreate' SHPropStgCreate shell32 685
|
||||
imp 'SHPropStgReadMultiple' SHPropStgReadMultiple shell32 688
|
||||
imp 'SHPropStgWriteMultiple' SHPropStgWriteMultiple shell32 689
|
||||
imp 'SHQueryRecycleBin' SHQueryRecycleBinW shell32 558
|
||||
imp 'SHQueryUserNotificationState' SHQueryUserNotificationState shell32 559
|
||||
imp 'SHRemoveLocalizedName' SHRemoveLocalizedName shell32 560
|
||||
imp 'SHReplaceFromPropSheetExtArray' SHReplaceFromPropSheetExtArray shell32 170
|
||||
imp 'SHResolveLibrary' SHResolveLibrary shell32 561
|
||||
imp 'SHRestricted' SHRestricted shell32 100
|
||||
imp 'SHSetDefaultProperties' SHSetDefaultProperties shell32 562
|
||||
imp 'SHSetFolderPath' SHSetFolderPathW shell32 232
|
||||
imp 'SHSetInstanceExplorer' SHSetInstanceExplorer shell32 176
|
||||
imp 'SHSetKnownFolderPath' SHSetKnownFolderPath shell32 563
|
||||
imp 'SHSetLocalizedName' SHSetLocalizedName shell32 564
|
||||
imp 'SHSetTemporaryPropertyForItem' SHSetTemporaryPropertyForItem shell32 565
|
||||
imp 'SHSetUnreadMailCount' SHSetUnreadMailCountW shell32 566
|
||||
imp 'SHShellFolderView_Message' SHShellFolderView_Message shell32 73
|
||||
imp 'SHShowManageLibraryUI' SHShowManageLibraryUI shell32 567
|
||||
imp 'SHSimpleIDListFromPath' SHSimpleIDListFromPath shell32 162
|
||||
imp 'SHStartNetConnectionDialog' SHStartNetConnectionDialogW shell32 14
|
||||
imp 'SHTestTokenMembership' SHTestTokenMembership shell32 245
|
||||
imp 'SHUpdateImage' SHUpdateImageW shell32 192
|
||||
imp 'SHUpdateRecycleBinIcon' SHUpdateRecycleBinIcon shell32 568
|
||||
imp 'SHValidateUNC' SHValidateUNC shell32 173
|
||||
imp 'SetCurrentProcessExplicitAppUserModelID' SetCurrentProcessExplicitAppUserModelID shell32 569
|
||||
imp 'SheChangeDirEx' SheChangeDirExW shell32 571
|
||||
imp 'SheSetCurDrive' SheSetCurDrive shell32 573
|
||||
imp 'ShellAbout' ShellAboutW shell32 575
|
||||
imp 'ShellExec_RunDLL' ShellExec_RunDLL shell32 576
|
||||
imp 'ShellExec_RunDLLW' ShellExec_RunDLLW shell32 578
|
||||
imp 'ShellExecute' ShellExecuteW shell32 583
|
||||
imp 'ShellExecuteEx' ShellExecuteExW shell32 582
|
||||
imp 'ShellHookProc' ShellHookProc shell32 584
|
||||
imp 'Shell_GetCachedImageIndex' Shell_GetCachedImageIndexW shell32 586
|
||||
imp 'Shell_GetImageLists' Shell_GetImageLists shell32 71
|
||||
imp 'Shell_MergeMenus' Shell_MergeMenus shell32 67
|
||||
imp 'Shell_NotifyIcon' Shell_NotifyIconW shell32 590
|
||||
imp 'Shell_NotifyIconGetRect' Shell_NotifyIconGetRect shell32 589
|
||||
imp 'SignalFileOpen' SignalFileOpen shell32 103
|
||||
imp 'StgMakeUniqueName' StgMakeUniqueName shell32 682
|
||||
imp 'UsersLibrariesFolderUI_CreateInstance' UsersLibrariesFolderUI_CreateInstance shell32 615
|
||||
imp 'WOWShellExecute' WOWShellExecute shell32 616
|
||||
imp 'WaitForExplorerRestart' WaitForExplorerRestartW shell32 617
|
||||
imp 'Win32DeleteFile' Win32DeleteFile shell32 164
|
||||
imp 'WriteCabinetState' WriteCabinetState shell32 652
|
||||
|
||||
# NTDLL.DLL
|
||||
# BEYOND THE PALE
|
||||
#
|
||||
|
@ -5394,6 +5748,7 @@ imp 'RtlQueryValidationRunlevel' RtlQueryValidationRunlevel ntdll 1311
|
|||
imp 'RtlQueryWnfMetaNotification' RtlQueryWnfMetaNotification ntdll 1312
|
||||
imp 'RtlQueryWnfStateData' RtlQueryWnfStateData ntdll 1313
|
||||
imp 'RtlQueryWnfStateDataWithExplicitScope' RtlQueryWnfStateDataWithExplicitScope ntdll 1314
|
||||
imp 'RtlQueueApcWow64Thread' RtlQueueApcWow64Thread ntdll 1315
|
||||
imp 'RtlQueueWorkItem' RtlQueueWorkItem ntdll 1316
|
||||
imp 'RtlRaiseCustomSystemEventTrigger' RtlRaiseCustomSystemEventTrigger ntdll 1317
|
||||
imp 'RtlRaiseException' RtlRaiseException ntdll 1318
|
||||
|
@ -5616,6 +5971,24 @@ imp 'RtlWeaklyEnumerateEntryHashTable' RtlWeaklyEnumerateEntryHashTable ntdl
|
|||
imp 'RtlWerpReportException' RtlWerpReportException ntdll 1535
|
||||
imp 'RtlWnfCompareChangeStamp' RtlWnfCompareChangeStamp ntdll 1536
|
||||
imp 'RtlWnfDllUnloadCallback' RtlWnfDllUnloadCallback ntdll 1537
|
||||
imp 'RtlWow64CallFunction64' RtlWow64CallFunction64 ntdll 1538
|
||||
imp 'RtlWow64EnableFsRedirection' RtlWow64EnableFsRedirection ntdll 1539
|
||||
imp 'RtlWow64EnableFsRedirectionEx' RtlWow64EnableFsRedirectionEx ntdll 1540
|
||||
imp 'RtlWow64GetCpuAreaInfo' RtlWow64GetCpuAreaInfo ntdll 1541
|
||||
imp 'RtlWow64GetCurrentCpuArea' RtlWow64GetCurrentCpuArea ntdll 1542
|
||||
imp 'RtlWow64GetCurrentMachine' RtlWow64GetCurrentMachine ntdll 1543
|
||||
imp 'RtlWow64GetEquivalentMachineCHPE' RtlWow64GetEquivalentMachineCHPE ntdll 1544
|
||||
imp 'RtlWow64GetProcessMachines' RtlWow64GetProcessMachines ntdll 1545
|
||||
imp 'RtlWow64GetSharedInfoProcess' RtlWow64GetSharedInfoProcess ntdll 1546
|
||||
imp 'RtlWow64GetThreadContext' RtlWow64GetThreadContext ntdll 1547
|
||||
imp 'RtlWow64GetThreadSelectorEntry' RtlWow64GetThreadSelectorEntry ntdll 1548
|
||||
imp 'RtlWow64IsWowGuestMachineSupported' RtlWow64IsWowGuestMachineSupported ntdll 1549
|
||||
imp 'RtlWow64LogMessageInEventLogger' RtlWow64LogMessageInEventLogger ntdll 1550
|
||||
imp 'RtlWow64PopAllCrossProcessWork' RtlWow64PopAllCrossProcessWork ntdll 1551
|
||||
imp 'RtlWow64PopCrossProcessWork' RtlWow64PopCrossProcessWork ntdll 1552
|
||||
imp 'RtlWow64PushCrossProcessWork' RtlWow64PushCrossProcessWork ntdll 1553
|
||||
imp 'RtlWow64SetThreadContext' RtlWow64SetThreadContext ntdll 1554
|
||||
imp 'RtlWow64SuspendThread' RtlWow64SuspendThread ntdll 1555
|
||||
imp 'RtlWriteMemoryStream' RtlWriteMemoryStream ntdll 1556
|
||||
imp 'RtlWriteNonVolatileMemory' RtlWriteNonVolatileMemory ntdll 1557
|
||||
imp 'RtlWriteRegistryValue' RtlWriteRegistryValue ntdll 1558
|
||||
|
@ -5655,6 +6028,7 @@ imp 'RtlpNtOpenKey' RtlpNtOpenKey ntdll 1591
|
|||
imp 'RtlpNtQueryValueKey' RtlpNtQueryValueKey ntdll 1592
|
||||
imp 'RtlpNtSetValueKey' RtlpNtSetValueKey ntdll 1593
|
||||
imp 'RtlpQueryDefaultUILanguage' RtlpQueryDefaultUILanguage ntdll 1594
|
||||
imp 'RtlpQueryProcessDebugInformationFromWow64' RtlpQueryProcessDebugInformationFromWow64 ntdll 1595
|
||||
imp 'RtlpQueryProcessDebugInformationRemote' RtlpQueryProcessDebugInformationRemote ntdll 1596
|
||||
imp 'RtlpRefreshCachedUILanguage' RtlpRefreshCachedUILanguage ntdll 1597
|
||||
imp 'RtlpSetInstallLanguage' RtlpSetInstallLanguage ntdll 1598
|
||||
|
|
2
libc/nt/netapi32/I_BrowserSetNetlogonState.s
Normal file
2
libc/nt/netapi32/I_BrowserSetNetlogonState.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_I_BrowserSetNetlogonState,I_BrowserSetNetlogonState,34
|
2
libc/nt/netapi32/NetAccessAdd.s
Normal file
2
libc/nt/netapi32/NetAccessAdd.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetAccessAdd,NetAccessAdd,71
|
2
libc/nt/netapi32/NetAccessDel.s
Normal file
2
libc/nt/netapi32/NetAccessDel.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetAccessDel,NetAccessDel,72
|
2
libc/nt/netapi32/NetAccessEnum.s
Normal file
2
libc/nt/netapi32/NetAccessEnum.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetAccessEnum,NetAccessEnum,73
|
2
libc/nt/netapi32/NetAccessGetInfo.s
Normal file
2
libc/nt/netapi32/NetAccessGetInfo.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetAccessGetInfo,NetAccessGetInfo,74
|
2
libc/nt/netapi32/NetAccessGetUserPerms.s
Normal file
2
libc/nt/netapi32/NetAccessGetUserPerms.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetAccessGetUserPerms,NetAccessGetUserPerms,75
|
2
libc/nt/netapi32/NetAccessSetInfo.s
Normal file
2
libc/nt/netapi32/NetAccessSetInfo.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetAccessSetInfo,NetAccessSetInfo,76
|
2
libc/nt/netapi32/NetAlertRaise.s
Normal file
2
libc/nt/netapi32/NetAlertRaise.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetAlertRaise,NetAlertRaise,79
|
2
libc/nt/netapi32/NetAlertRaiseEx.s
Normal file
2
libc/nt/netapi32/NetAlertRaiseEx.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetAlertRaiseEx,NetAlertRaiseEx,80
|
2
libc/nt/netapi32/NetAuditClear.s
Normal file
2
libc/nt/netapi32/NetAuditClear.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetAuditClear,NetAuditClear,85
|
2
libc/nt/netapi32/NetAuditRead.s
Normal file
2
libc/nt/netapi32/NetAuditRead.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetAuditRead,NetAuditRead,86
|
2
libc/nt/netapi32/NetAuditWrite.s
Normal file
2
libc/nt/netapi32/NetAuditWrite.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetAuditWrite,NetAuditWrite,87
|
2
libc/nt/netapi32/NetConfigGet.s
Normal file
2
libc/nt/netapi32/NetConfigGet.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetConfigGet,NetConfigGet,88
|
2
libc/nt/netapi32/NetConfigGetAll.s
Normal file
2
libc/nt/netapi32/NetConfigGetAll.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetConfigGetAll,NetConfigGetAll,89
|
2
libc/nt/netapi32/NetConfigSet.s
Normal file
2
libc/nt/netapi32/NetConfigSet.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetConfigSet,NetConfigSet,90
|
2
libc/nt/netapi32/NetErrorLogClear.s
Normal file
2
libc/nt/netapi32/NetErrorLogClear.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetErrorLogClear,NetErrorLogClear,124
|
2
libc/nt/netapi32/NetErrorLogRead.s
Normal file
2
libc/nt/netapi32/NetErrorLogRead.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetErrorLogRead,NetErrorLogRead,125
|
2
libc/nt/netapi32/NetErrorLogWrite.s
Normal file
2
libc/nt/netapi32/NetErrorLogWrite.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetErrorLogWrite,NetErrorLogWrite,126
|
2
libc/nt/netapi32/NetMessageBufferSend.s
Normal file
2
libc/nt/netapi32/NetMessageBufferSend.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetMessageBufferSend,NetMessageBufferSend,161
|
2
libc/nt/netapi32/NetMessageNameAdd.s
Normal file
2
libc/nt/netapi32/NetMessageNameAdd.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetMessageNameAdd,NetMessageNameAdd,162
|
2
libc/nt/netapi32/NetMessageNameDel.s
Normal file
2
libc/nt/netapi32/NetMessageNameDel.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetMessageNameDel,NetMessageNameDel,163
|
2
libc/nt/netapi32/NetMessageNameEnum.s
Normal file
2
libc/nt/netapi32/NetMessageNameEnum.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetMessageNameEnum,NetMessageNameEnum,164
|
2
libc/nt/netapi32/NetMessageNameGetInfo.s
Normal file
2
libc/nt/netapi32/NetMessageNameGetInfo.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetMessageNameGetInfo,NetMessageNameGetInfo,165
|
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetRegisterDomainNameChangeNotification,NetRegisterDomainNameChangeNotification,169
|
2
libc/nt/netapi32/NetReplExportDirAdd.s
Normal file
2
libc/nt/netapi32/NetReplExportDirAdd.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetReplExportDirAdd,NetReplExportDirAdd,175
|
2
libc/nt/netapi32/NetReplExportDirDel.s
Normal file
2
libc/nt/netapi32/NetReplExportDirDel.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetReplExportDirDel,NetReplExportDirDel,176
|
2
libc/nt/netapi32/NetReplExportDirEnum.s
Normal file
2
libc/nt/netapi32/NetReplExportDirEnum.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetReplExportDirEnum,NetReplExportDirEnum,177
|
2
libc/nt/netapi32/NetReplExportDirGetInfo.s
Normal file
2
libc/nt/netapi32/NetReplExportDirGetInfo.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetReplExportDirGetInfo,NetReplExportDirGetInfo,178
|
2
libc/nt/netapi32/NetReplExportDirLock.s
Normal file
2
libc/nt/netapi32/NetReplExportDirLock.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetReplExportDirLock,NetReplExportDirLock,179
|
2
libc/nt/netapi32/NetReplExportDirSetInfo.s
Normal file
2
libc/nt/netapi32/NetReplExportDirSetInfo.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetReplExportDirSetInfo,NetReplExportDirSetInfo,180
|
2
libc/nt/netapi32/NetReplExportDirUnlock.s
Normal file
2
libc/nt/netapi32/NetReplExportDirUnlock.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetReplExportDirUnlock,NetReplExportDirUnlock,181
|
2
libc/nt/netapi32/NetReplGetInfo.s
Normal file
2
libc/nt/netapi32/NetReplGetInfo.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetReplGetInfo,NetReplGetInfo,182
|
2
libc/nt/netapi32/NetReplImportDirAdd.s
Normal file
2
libc/nt/netapi32/NetReplImportDirAdd.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetReplImportDirAdd,NetReplImportDirAdd,183
|
2
libc/nt/netapi32/NetReplImportDirDel.s
Normal file
2
libc/nt/netapi32/NetReplImportDirDel.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetReplImportDirDel,NetReplImportDirDel,184
|
2
libc/nt/netapi32/NetReplImportDirEnum.s
Normal file
2
libc/nt/netapi32/NetReplImportDirEnum.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetReplImportDirEnum,NetReplImportDirEnum,185
|
2
libc/nt/netapi32/NetReplImportDirGetInfo.s
Normal file
2
libc/nt/netapi32/NetReplImportDirGetInfo.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetReplImportDirGetInfo,NetReplImportDirGetInfo,186
|
2
libc/nt/netapi32/NetReplImportDirLock.s
Normal file
2
libc/nt/netapi32/NetReplImportDirLock.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetReplImportDirLock,NetReplImportDirLock,187
|
2
libc/nt/netapi32/NetReplImportDirUnlock.s
Normal file
2
libc/nt/netapi32/NetReplImportDirUnlock.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetReplImportDirUnlock,NetReplImportDirUnlock,188
|
2
libc/nt/netapi32/NetReplSetInfo.s
Normal file
2
libc/nt/netapi32/NetReplSetInfo.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetReplSetInfo,NetReplSetInfo,189
|
2
libc/nt/netapi32/NetServerEnum.s
Normal file
2
libc/nt/netapi32/NetServerEnum.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetServerEnum,NetServerEnum,202
|
2
libc/nt/netapi32/NetServerEnumEx.s
Normal file
2
libc/nt/netapi32/NetServerEnumEx.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetServerEnumEx,NetServerEnumEx,203
|
2
libc/nt/netapi32/NetServiceControl.s
Normal file
2
libc/nt/netapi32/NetServiceControl.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp netapi32,__imp_NetServiceControl,NetServiceControl,210
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue