mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 11:37:35 +00:00
Unbloat build config
- 10.5% reduction of o//depend dependency graph - 8.8% reduction in latency of make command - Fix issue with temporary file cleanup There's a new -w option in compile.com that turns off the recent Landlock output path workaround for "good commands" which do not unlink() the output file like GNU tooling does. Our new GNU Make unveil sandboxing appears to have zero overhead in the grand scheme of things. Full builds are pretty fast since the only thing that's actually slowed us down is probably libcxx make -j16 MODE=rel RL: took 85,732,063µs wall time RL: ballooned to 323,612kb in size RL: needed 828,560,521µs cpu (11% kernel) RL: caused 39,080,670 page faults (99% memcpy) RL: 350,073 context switches (72% consensual) RL: performed 0 reads and 11,494,960 write i/o operations pledge() and unveil() no longer consider ENOSYS to be an error. These functions have also been added to Python's cosmo module. This change also removes some WIN32 APIs and System Five magnums which we're not using and it's doubtful anyone else would be too
This commit is contained in:
parent
133c693650
commit
ae5d06dc53
1423 changed files with 2213 additions and 5560 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: .UNSANDBOXED = 1
|
||||||
TAGS: o/$(MODE)/srcs-old.txt $(SRCS)
|
TAGS: o/$(MODE)/srcs-old.txt $(SRCS)
|
||||||
@$(RM) $@
|
@$(RM) $@
|
||||||
@$(COMPILE) -ATAGS -T$@ $(TAGS) $(TAGSFLAGS) -L $< -o $@
|
@$(TAGS) $(TAGSFLAGS) -L $< -o $@
|
||||||
|
|
||||||
HTAGS: .UNSANDBOXED = 1
|
HTAGS: .UNSANDBOXED = 1
|
||||||
HTAGS: o/$(MODE)/hdrs-old.txt $(HDRS)
|
HTAGS: o/$(MODE)/hdrs-old.txt $(HDRS)
|
||||||
@$(RM) $@
|
@$(RM) $@
|
||||||
@$(COMPILE) -ATAGS -T$@ build/htags -L $< -o $@
|
@build/htags -L $< -o $@
|
||||||
|
|
||||||
loc: .UNSANDBOXED = 1
|
loc: .UNSANDBOXED = 1
|
||||||
loc: o/$(MODE)/tool/build/summy.com
|
loc: o/$(MODE)/tool/build/summy.com
|
||||||
|
@ -297,10 +297,8 @@ COSMOPOLITAN_OBJECTS = \
|
||||||
LIBC_NT_PSAPI \
|
LIBC_NT_PSAPI \
|
||||||
LIBC_NT_POWRPROF \
|
LIBC_NT_POWRPROF \
|
||||||
LIBC_NT_PDH \
|
LIBC_NT_PDH \
|
||||||
LIBC_NT_SHELL32 \
|
|
||||||
LIBC_NT_GDI32 \
|
LIBC_NT_GDI32 \
|
||||||
LIBC_NT_COMDLG32 \
|
LIBC_NT_COMDLG32 \
|
||||||
LIBC_NT_NETAPI32 \
|
|
||||||
LIBC_NT_URL \
|
LIBC_NT_URL \
|
||||||
LIBC_NT_USER32 \
|
LIBC_NT_USER32 \
|
||||||
LIBC_NT_NTDLL \
|
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/runit.com \
|
||||||
o/$(MODE)/tool/build/runitd.com \
|
o/$(MODE)/tool/build/runitd.com \
|
||||||
o/$(MODE)/%.com
|
o/$(MODE)/%.com
|
||||||
@$(COMPILE) -ATEST -tT$@ $^ $(HOSTS)
|
@$(COMPILE) -ATEST -wtT$@ $^ $(HOSTS)
|
||||||
|
|
|
@ -20,15 +20,12 @@ o/%.o: %.s ; @$(COMPILE) -AOBJECTIFY.s $(OBJECTIFY.s) $(
|
||||||
o/%.o: o/%.s ; @$(COMPILE) -AOBJECTIFY.s $(OBJECTIFY.s) $(OUTPUT_OPTION) $<
|
o/%.o: o/%.s ; @$(COMPILE) -AOBJECTIFY.s $(OBJECTIFY.s) $(OUTPUT_OPTION) $<
|
||||||
o/%.s: %.S ; @$(COMPILE) -APREPROCESS $(PREPROCESS) $(OUTPUT_OPTION) $<
|
o/%.s: %.S ; @$(COMPILE) -APREPROCESS $(PREPROCESS) $(OUTPUT_OPTION) $<
|
||||||
o/%.s: o/%.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: %.S ; @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) $<
|
||||||
o/%.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/%.lds: %.lds ; @$(COMPILE) -APREPROCESS $(PREPROCESS.lds) $(OUTPUT_OPTION) $<
|
||||||
o/%.inc: %.h ; @$(COMPILE) -APREPROCESS $(PREPROCESS) $(OUTPUT_OPTION) -D__ASSEMBLER__ -P $<
|
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/%.greg.o: %.greg.c ; @$(COMPILE) -AOBJECTIFY.greg $(OBJECTIFY.greg.c) $(OUTPUT_OPTION) $<
|
||||||
o/%.zip.o: o/% ; @$(COMPILE) -AZIPOBJ $(ZIPOBJ) $(ZIPOBJ_FLAGS) $(OUTPUT_OPTION) $<
|
o/%.zip.o: o/% ; @$(COMPILE) -wAZIPOBJ $(ZIPOBJ) $(ZIPOBJ_FLAGS) $(OUTPUT_OPTION) $<
|
||||||
|
|
||||||
o/$(MODE)/%: o/$(MODE)/%.dbg ; @$(COMPILE) -AOBJCOPY -T$@ $(OBJCOPY) -S -O binary $< $@
|
o/$(MODE)/%: o/$(MODE)/%.dbg ; @$(COMPILE) -AOBJCOPY -T$@ $(OBJCOPY) -S -O binary $< $@
|
||||||
o/$(MODE)/%.o: %.s ; @$(COMPILE) -AOBJECTIFY.s $(OBJECTIFY.s) $(OUTPUT_OPTION) $<
|
o/$(MODE)/%.o: %.s ; @$(COMPILE) -AOBJECTIFY.s $(OBJECTIFY.s) $(OUTPUT_OPTION) $<
|
||||||
|
@ -39,32 +36,20 @@ o/$(MODE)/%.o: %.f ; @$(COMPILE) -AOBJECTIFY.f $(OBJECTIFY.f) $(
|
||||||
o/$(MODE)/%.o: %.F ; @$(COMPILE) -AOBJECTIFY.F $(OBJECTIFY.F) $(OUTPUT_OPTION) $<
|
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: %.c ; @$(COMPILE) -ACOMPILE.c $(COMPILE.c) $(OUTPUT_OPTION) $<
|
||||||
o/$(MODE)/%.ss: o/$(MODE)/%.c ; @$(COMPILE) -AOBJECTIFY.s $(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: %.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)/%.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: %.S ; @$(COMPILE) -AOBJECTIFY.S $(OBJECTIFY.S) $(OUTPUT_OPTION) $<
|
||||||
o/$(MODE)/%.o: o/$(MODE)/%.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)/%.o: %.cc ; @$(COMPILE) -AOBJECTIFY.cxx $(OBJECTIFY.cxx) $(OUTPUT_OPTION) $<
|
||||||
o/$(MODE)/%.lds: %.lds ; @$(COMPILE) -APREPROCESS $(PREPROCESS.lds) $(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)/%.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)/%.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)/%.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)/%.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)/%.real.o: %.c ; @$(COMPILE) -AOBJECTIFY.real $(OBJECTIFY.real.c) $(OUTPUT_OPTION) $<
|
||||||
|
|
||||||
o/$(MODE)/%.runs: o/$(MODE)/% ; @$(COMPILE) -ACHECK -tT$@ $< $(TESTARGS)
|
o/$(MODE)/%.runs: o/$(MODE)/% ; @$(COMPILE) -ACHECK -tT$@ $< $(TESTARGS)
|
||||||
o/$(MODE)/%.zip.o: % ; @$(COMPILE) -AZIPOBJ $(ZIPOBJ) $(ZIPOBJ_FLAGS) $(OUTPUT_OPTION) $<
|
o/$(MODE)/%.zip.o: % ; @$(COMPILE) -wAZIPOBJ $(ZIPOBJ) $(ZIPOBJ_FLAGS) $(OUTPUT_OPTION) $<
|
||||||
o/$(MODE)/%-gcc.asm: %.c ; @$(COMPILE) -AOBJECTIFY.c $(OBJECTIFY.c) -S -g0 $(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)/%-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) $<
|
o/$(MODE)/%-clang.asm: %.c ; @$(COMPILE) -AOBJECTIFY.c $(OBJECTIFY.c) -S -g0 $(OUTPUT_OPTION) $<
|
||||||
|
@ -73,66 +58,66 @@ o/$(MODE)/%-clang.asm: CC = $(CLANG)
|
||||||
|
|
||||||
o/%.o: %.cc
|
o/%.o: %.cc
|
||||||
@$(COMPILE) -AOBJECTIFY.cxx $(OBJECTIFY.cxx) $(OUTPUT_OPTION) $<
|
@$(COMPILE) -AOBJECTIFY.cxx $(OBJECTIFY.cxx) $(OUTPUT_OPTION) $<
|
||||||
@$(COMPILE) -AFIXUPOBJ -T$@ $(FIXUPOBJ) $@
|
@$(COMPILE) -AFIXUPOBJ -wT$@ $(FIXUPOBJ) $@
|
||||||
|
|
||||||
o/%.o: o/%.cc
|
o/%.o: o/%.cc
|
||||||
@$(COMPILE) -AOBJECTIFY.cxx $(OBJECTIFY.cxx) $(OUTPUT_OPTION) $<
|
@$(COMPILE) -AOBJECTIFY.cxx $(OBJECTIFY.cxx) $(OUTPUT_OPTION) $<
|
||||||
@$(COMPILE) -AFIXUPOBJ -T$@ $(FIXUPOBJ) $@
|
@$(COMPILE) -AFIXUPOBJ -wT$@ $(FIXUPOBJ) $@
|
||||||
|
|
||||||
o/$(MODE)/%.o: %.c
|
o/$(MODE)/%.o: %.c
|
||||||
@$(COMPILE) -AOBJECTIFY.c $(OBJECTIFY.c) $(OUTPUT_OPTION) $<
|
@$(COMPILE) -AOBJECTIFY.c $(OBJECTIFY.c) $(OUTPUT_OPTION) $<
|
||||||
@$(COMPILE) -AFIXUPOBJ -T$@ $(FIXUPOBJ) $@
|
@$(COMPILE) -AFIXUPOBJ -wT$@ $(FIXUPOBJ) $@
|
||||||
|
|
||||||
o/$(MODE)/%.o: o/$(MODE)/%.c
|
o/$(MODE)/%.o: o/$(MODE)/%.c
|
||||||
@$(COMPILE) -AOBJECTIFY.c $(OBJECTIFY.c) $(OUTPUT_OPTION) $<
|
@$(COMPILE) -AOBJECTIFY.c $(OBJECTIFY.c) $(OUTPUT_OPTION) $<
|
||||||
@$(COMPILE) -AFIXUPOBJ -T$@ $(FIXUPOBJ) $@
|
@$(COMPILE) -AFIXUPOBJ -wT$@ $(FIXUPOBJ) $@
|
||||||
|
|
||||||
o/$(MODE)/%.o: o/$(MODE)/%.cc
|
o/$(MODE)/%.o: o/$(MODE)/%.cc
|
||||||
@$(COMPILE) -AOBJECTIFY.cxx $(OBJECTIFY.cxx) $(OUTPUT_OPTION) $<
|
@$(COMPILE) -AOBJECTIFY.cxx $(OBJECTIFY.cxx) $(OUTPUT_OPTION) $<
|
||||||
@$(COMPILE) -AFIXUPOBJ -T$@ $(FIXUPOBJ) $@
|
@$(COMPILE) -AFIXUPOBJ -wT$@ $(FIXUPOBJ) $@
|
||||||
|
|
||||||
o/%.a:
|
o/%.a:
|
||||||
$(file >$(TMPDIR)/$(subst /,_,$@),$^)
|
$(file >$(TMPDIR)/$(subst /,_,$@),$^)
|
||||||
@$(COMPILE) -AARCHIVE -T$@ $(AR) $(ARFLAGS) $@ @$(TMPDIR)/$(subst /,_,$@)
|
@$(COMPILE) -AARCHIVE -wT$@ $(AR) $(ARFLAGS) $@ @$(TMPDIR)/$(subst /,_,$@)
|
||||||
|
|
||||||
o/%.pkg:
|
o/%.pkg:
|
||||||
$(file >$(TMPDIR)/$(subst /,_,$@).args,$(filter %.o,$^))
|
$(file >$(TMPDIR)/$(subst /,_,$@).args,$(filter %.o,$^))
|
||||||
@$(COMPILE) -APACKAGE -T$@ $(PKG) $(OUTPUT_OPTION) $(addprefix -d,$(filter %.pkg,$^)) @$(TMPDIR)/$(subst /,_,$@)
|
@$(COMPILE) -APACKAGE -wT$@ $(PKG) $(OUTPUT_OPTION) $(addprefix -d,$(filter %.pkg,$^)) @$(TMPDIR)/$(subst /,_,$@)
|
||||||
|
|
||||||
o/$(MODE)/%.pkg:
|
o/$(MODE)/%.pkg:
|
||||||
$(file >$(TMPDIR)/$(subst /,_,$@),$(filter %.o,$^))
|
$(file >$(TMPDIR)/$(subst /,_,$@),$(filter %.o,$^))
|
||||||
@$(COMPILE) -APACKAGE -T$@ $(PKG) $(OUTPUT_OPTION) $(addprefix -d,$(filter %.pkg,$^)) @$(TMPDIR)/$(subst /,_,$@)
|
@$(COMPILE) -APACKAGE -wT$@ $(PKG) $(OUTPUT_OPTION) $(addprefix -d,$(filter %.pkg,$^)) @$(TMPDIR)/$(subst /,_,$@)
|
||||||
|
|
||||||
o/$(MODE)/%.o: %.py o/$(MODE)/third_party/python/pyobj.com
|
o/$(MODE)/%.o: %.py o/$(MODE)/third_party/python/pyobj.com
|
||||||
@$(COMPILE) -APYOBJ o/$(MODE)/third_party/python/pyobj.com $(PYFLAGS) -o $@ $<
|
@$(COMPILE) -wAPYOBJ o/$(MODE)/third_party/python/pyobj.com $(PYFLAGS) -o $@ $<
|
||||||
|
|
||||||
o/$(MODE)/%.pyc: %.py o/$(MODE)/third_party/python/pycomp.com
|
o/$(MODE)/%.pyc: %.py o/$(MODE)/third_party/python/pycomp.com
|
||||||
@$(COMPILE) -APYCOMP o/$(MODE)/third_party/python/pycomp.com $(PYCFLAGS) -o $@ $<
|
@$(COMPILE) -wAPYCOMP o/$(MODE)/third_party/python/pycomp.com $(PYCFLAGS) -o $@ $<
|
||||||
|
|
||||||
o/$(MODE)/%.lua: %.lua o/$(MODE)/third_party/lua/luac.com
|
o/$(MODE)/%.lua: %.lua o/$(MODE)/third_party/lua/luac.com
|
||||||
@$(COMPILE) -ALUAC o/$(MODE)/third_party/lua/luac.com -s -o $@ $<
|
@$(COMPILE) -wALUAC o/$(MODE)/third_party/lua/luac.com -s -o $@ $<
|
||||||
|
|
||||||
o/$(MODE)/%.lua.runs: %.lua o/$(MODE)/tool/net/redbean.com
|
o/$(MODE)/%.lua.runs: %.lua o/$(MODE)/tool/net/redbean.com
|
||||||
@$(COMPILE) -ALUA -tT$@ o/$(MODE)/tool/net/redbean.com $(LUAFLAGS) -i $<
|
@$(COMPILE) -wALUA -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
|
o/$(MODE)/%: o/$(MODE)/%.com o/$(MODE)/tool/build/cp.com o/$(MODE)/tool/build/assimilate.com
|
||||||
@$(COMPILE) -ACP -T$@ o/$(MODE)/tool/build/cp.com $< $@
|
@$(COMPILE) -wACP -wT$@ o/$(MODE)/tool/build/cp.com $< $@
|
||||||
@$(COMPILE) -AASSIMILATE -T$@ o/$(MODE)/tool/build/assimilate.com $@
|
@$(COMPILE) -wAASSIMILATE -wT$@ o/$(MODE)/tool/build/assimilate.com $@
|
||||||
|
|
||||||
# TODO(jart): find a way to generate dependencies
|
# TODO(jart): find a way to generate dependencies
|
||||||
# or alternatively disable sandboxing
|
# or alternatively disable sandboxing
|
||||||
o/%.h.ok: %.h
|
o/%.h.ok: %.h
|
||||||
@$(COMPILE) -ACHECK.h -T$@ build/bootstrap/touch.com $@
|
@$(COMPILE) -wACHECK.h -T$@ build/bootstrap/touch.com $@
|
||||||
# @$(COMPILE) -ACHECK.h $(COMPILE.c) -xc -g0 -o $@ $<
|
# @$(COMPILE) -ACHECK.h $(COMPILE.c) -xc -g0 -o $@ $<
|
||||||
o/$(MODE)/%.h.ok: %.h
|
o/$(MODE)/%.h.ok: %.h
|
||||||
@$(COMPILE) -ACHECK.h -T$@ build/bootstrap/touch.com $@
|
@$(COMPILE) -wACHECK.h -T$@ build/bootstrap/touch.com $@
|
||||||
# @$(COMPILE) -ACHECK.h $(COMPILE.c) -xc -g0 -o $@ $<
|
# @$(COMPILE) -ACHECK.h $(COMPILE.c) -xc -g0 -o $@ $<
|
||||||
o/$(MODE)/%.hh.ok: %.hh
|
o/$(MODE)/%.hh.ok: %.hh
|
||||||
@$(COMPILE) -ACHECK.h -T$@ build/bootstrap/touch.com $@
|
@$(COMPILE) -wACHECK.h -T$@ build/bootstrap/touch.com $@
|
||||||
# @$(COMPILE) -ACHECK.h $(COMPILE.cxx) -xc++ -g0 -o $@ $<
|
# @$(COMPILE) -ACHECK.h $(COMPILE.cxx) -xc++ -g0 -o $@ $<
|
||||||
o/%.okk: %
|
o/%.okk: %
|
||||||
@$(COMPILE) -ACHECK.h -T$@ build/bootstrap/touch.com $@
|
@$(COMPILE) -wACHECK.h -T$@ build/bootstrap/touch.com $@
|
||||||
# @$(COMPILE) -ACHECK.h $(COMPILE.cxx) -xc++ -g0 -o $@ $<
|
# @$(COMPILE) -ACHECK.h $(COMPILE.cxx) -xc++ -g0 -o $@ $<
|
||||||
o/$(MODE)/%.okk: %
|
o/$(MODE)/%.okk: %
|
||||||
@$(COMPILE) -ACHECK.h -T$@ build/bootstrap/touch.com $@
|
@$(COMPILE) -wACHECK.h -T$@ build/bootstrap/touch.com $@
|
||||||
# @$(COMPILE) -ACHECK.h $(COMPILE.cxx) -xc++ -g0 -o $@ $<
|
# @$(COMPILE) -ACHECK.h $(COMPILE.cxx) -xc++ -g0 -o $@ $<
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include "libc/bits/weaken.h"
|
#include "libc/bits/weaken.h"
|
||||||
#include "libc/calls/calls.h"
|
#include "libc/calls/calls.h"
|
||||||
#include "libc/calls/termios.h"
|
#include "libc/calls/termios.h"
|
||||||
|
#include "libc/dce.h"
|
||||||
#include "libc/fmt/fmt.h"
|
#include "libc/fmt/fmt.h"
|
||||||
#include "libc/mem/mem.h"
|
#include "libc/mem/mem.h"
|
||||||
#include "libc/runtime/runtime.h"
|
#include "libc/runtime/runtime.h"
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include "libc/log/internal.h"
|
#include "libc/log/internal.h"
|
||||||
#include "libc/log/log.h"
|
#include "libc/log/log.h"
|
||||||
#include "libc/macros.internal.h"
|
#include "libc/macros.internal.h"
|
||||||
|
#include "libc/mem/mem.h"
|
||||||
#include "libc/runtime/internal.h"
|
#include "libc/runtime/internal.h"
|
||||||
#include "libc/runtime/runtime.h"
|
#include "libc/runtime/runtime.h"
|
||||||
#include "libc/stdio/append.internal.h"
|
#include "libc/stdio/append.internal.h"
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include "libc/mem/mem.h"
|
#include "libc/mem/mem.h"
|
||||||
#include "libc/runtime/gc.internal.h"
|
#include "libc/runtime/gc.internal.h"
|
||||||
#include "libc/stdio/stdio.h"
|
#include "libc/stdio/stdio.h"
|
||||||
|
#include "libc/str/str.h"
|
||||||
#include "third_party/zlib/zlib.h"
|
#include "third_party/zlib/zlib.h"
|
||||||
|
|
||||||
#define CHUNK 32768
|
#define CHUNK 32768
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include "libc/log/gdb.h"
|
#include "libc/log/gdb.h"
|
||||||
#include "libc/log/log.h"
|
#include "libc/log/log.h"
|
||||||
#include "libc/macros.internal.h"
|
#include "libc/macros.internal.h"
|
||||||
|
#include "libc/mem/mem.h"
|
||||||
#include "libc/runtime/gc.internal.h"
|
#include "libc/runtime/gc.internal.h"
|
||||||
#include "libc/runtime/runtime.h"
|
#include "libc/runtime/runtime.h"
|
||||||
#include "libc/str/str.h"
|
#include "libc/str/str.h"
|
||||||
|
|
|
@ -35,7 +35,9 @@
|
||||||
#include "libc/fmt/conv.h"
|
#include "libc/fmt/conv.h"
|
||||||
#include "libc/fmt/fmt.h"
|
#include "libc/fmt/fmt.h"
|
||||||
#include "libc/log/log.h"
|
#include "libc/log/log.h"
|
||||||
|
#include "libc/mem/mem.h"
|
||||||
#include "libc/stdio/stdio.h"
|
#include "libc/stdio/stdio.h"
|
||||||
|
#include "libc/str/str.h"
|
||||||
|
|
||||||
enum { PICOL_OK, PICOL_ERR, PICOL_RETURN, PICOL_BREAK, PICOL_CONTINUE };
|
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 };
|
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 \
|
o/$(MODE)/examples/pylife/pylife.o \
|
||||||
$(CRT) \
|
$(CRT) \
|
||||||
$(APE_NO_MODIFY_SELF)
|
$(APE_NO_MODIFY_SELF)
|
||||||
$(LINK) $(LINKARGS) -o $@
|
@$(COMPILE) -ALINK.ape $(LINK) $(LINKARGS) -o $@
|
||||||
|
|
||||||
# # Unwrap the APE .COM binary, that's embedded within the linked file
|
# # 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
|
# # NOTE: This line can be commented out, since it's in build/rules.mk
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#include "libc/log/log.h"
|
#include "libc/log/log.h"
|
||||||
#include "libc/runtime/gc.h"
|
#include "libc/runtime/gc.h"
|
||||||
#include "libc/stdio/stdio.h"
|
#include "libc/stdio/stdio.h"
|
||||||
|
#include "libc/str/str.h"
|
||||||
#include "libc/sysv/consts/s.h"
|
#include "libc/sysv/consts/s.h"
|
||||||
#include "libc/x/x.h"
|
#include "libc/x/x.h"
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,9 @@
|
||||||
#include "libc/calls/calls.h"
|
#include "libc/calls/calls.h"
|
||||||
#include "libc/fmt/fmt.h"
|
#include "libc/fmt/fmt.h"
|
||||||
#include "libc/log/check.h"
|
#include "libc/log/check.h"
|
||||||
|
#include "libc/mem/mem.h"
|
||||||
#include "libc/stdio/append.internal.h"
|
#include "libc/stdio/append.internal.h"
|
||||||
|
#include "libc/str/str.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @fileoverview Fast Growable Strings Tutorial
|
* @fileoverview Fast Growable Strings Tutorial
|
||||||
|
|
|
@ -14,9 +14,11 @@
|
||||||
#include "libc/fmt/nf32.h"
|
#include "libc/fmt/nf32.h"
|
||||||
#include "libc/log/check.h"
|
#include "libc/log/check.h"
|
||||||
#include "libc/macros.internal.h"
|
#include "libc/macros.internal.h"
|
||||||
|
#include "libc/mem/mem.h"
|
||||||
#include "libc/runtime/runtime.h"
|
#include "libc/runtime/runtime.h"
|
||||||
#include "libc/stdio/append.internal.h"
|
#include "libc/stdio/append.internal.h"
|
||||||
#include "libc/stdio/stdio.h"
|
#include "libc/stdio/stdio.h"
|
||||||
|
#include "libc/str/str.h"
|
||||||
#include "libc/sysv/consts/itimer.h"
|
#include "libc/sysv/consts/itimer.h"
|
||||||
#include "libc/sysv/consts/sig.h"
|
#include "libc/sysv/consts/sig.h"
|
||||||
#include "libc/time/time.h"
|
#include "libc/time/time.h"
|
||||||
|
|
|
@ -23,9 +23,10 @@
|
||||||
* Converts timespec interval to microseconds.
|
* Converts timespec interval to microseconds.
|
||||||
*/
|
*/
|
||||||
int64_t _timespec_tomicros(struct timespec x) {
|
int64_t _timespec_tomicros(struct timespec x) {
|
||||||
int64_t us;
|
int64_t ns;
|
||||||
if (!__builtin_add_overflow(x.tv_sec, x.tv_nsec / 1000, &us)) {
|
if (!__builtin_mul_overflow(x.tv_sec, 1000000ul, &ns) &&
|
||||||
return us;
|
!__builtin_add_overflow(ns, x.tv_nsec / 1000, &ns)) {
|
||||||
|
return ns;
|
||||||
} else {
|
} else {
|
||||||
return INT64_MAX;
|
return INT64_MAX;
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,9 +23,10 @@
|
||||||
* Converts timespec interval to milliseconds.
|
* Converts timespec interval to milliseconds.
|
||||||
*/
|
*/
|
||||||
int64_t _timespec_tomillis(struct timespec x) {
|
int64_t _timespec_tomillis(struct timespec x) {
|
||||||
int64_t us;
|
int64_t ns;
|
||||||
if (!__builtin_add_overflow(x.tv_sec, x.tv_nsec / 1000000, &us)) {
|
if (!__builtin_mul_overflow(x.tv_sec, 1000ul, &ns) &&
|
||||||
return us;
|
!__builtin_add_overflow(ns, x.tv_nsec / 1000000, &ns)) {
|
||||||
|
return ns;
|
||||||
} else {
|
} else {
|
||||||
return INT64_MAX;
|
return INT64_MAX;
|
||||||
}
|
}
|
||||||
|
|
33
libc/calls/_timespec_tonanos.c
Normal file
33
libc/calls/_timespec_tonanos.c
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
/*-*- 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,6 +33,7 @@
|
||||||
* - /tmp/
|
* - /tmp/
|
||||||
*
|
*
|
||||||
* This guarantees trailing slash.
|
* This guarantees trailing slash.
|
||||||
|
* We also guarantee `kTmpPath` won't be longer than `PATH_MAX / 2`.
|
||||||
*/
|
*/
|
||||||
char kTmpPath[PATH_MAX];
|
char kTmpPath[PATH_MAX];
|
||||||
|
|
||||||
|
@ -46,7 +47,7 @@ __attribute__((__constructor__)) static void kTmpPathInit(void) {
|
||||||
uint32_t n;
|
uint32_t n;
|
||||||
char16_t path16[PATH_MAX];
|
char16_t path16[PATH_MAX];
|
||||||
|
|
||||||
if ((s = getenv("TMPDIR")) && (n = strlen(s)) < PATH_MAX) {
|
if ((s = getenv("TMPDIR")) && (n = strlen(s)) < PATH_MAX / 2) {
|
||||||
memcpy(kTmpPath, s, n);
|
memcpy(kTmpPath, s, n);
|
||||||
if (n && kTmpPath[n - 1] != '/') {
|
if (n && kTmpPath[n - 1] != '/') {
|
||||||
kTmpPath[n + 0] = '/';
|
kTmpPath[n + 0] = '/';
|
||||||
|
|
|
@ -47,8 +47,9 @@
|
||||||
|
|
||||||
#define Eperm 1
|
#define Eperm 1
|
||||||
#define Sigabrt 6
|
#define Sigabrt 6
|
||||||
#define Enosys 38
|
#define Einval 22
|
||||||
#define Sigsys 31
|
#define Sigsys 31
|
||||||
|
#define Enosys 38
|
||||||
#define Sig_Setmask 2
|
#define Sig_Setmask 2
|
||||||
#define Sa_Siginfo 4
|
#define Sa_Siginfo 4
|
||||||
#define Sa_Restorer 0x04000000
|
#define Sa_Restorer 0x04000000
|
||||||
|
@ -84,6 +85,356 @@ struct Filter {
|
||||||
struct sock_filter p[700];
|
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[] = {
|
static const uint16_t kPledgeDefault[] = {
|
||||||
__NR_linux_exit, // thread return / exit()
|
__NR_linux_exit, // thread return / exit()
|
||||||
};
|
};
|
||||||
|
@ -584,6 +935,16 @@ static privileged void KillThisThread(void) {
|
||||||
: "rcx", "r11", "memory");
|
: "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) {
|
static privileged int HasSyscall(struct Pledges *p, uint16_t n) {
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < p->len; ++i) {
|
for (i = 0; i < p->len; ++i) {
|
||||||
|
@ -606,23 +967,16 @@ static privileged void OnSigSys(int sig, siginfo_t *si, ucontext_t *ctx) {
|
||||||
FixCpy(ord, si->si_syscall, 12);
|
FixCpy(ord, si->si_syscall, 12);
|
||||||
HexCpy(rip, ctx->uc_mcontext.rip);
|
HexCpy(rip, ctx->uc_mcontext.rip);
|
||||||
for (found = i = 0; i < ARRAYLEN(kPledge); ++i) {
|
for (found = i = 0; i < ARRAYLEN(kPledge); ++i) {
|
||||||
switch (HasSyscall(kPledge + i, si->si_syscall)) {
|
if (HasSyscall(kPledge + i, si->si_syscall)) {
|
||||||
case 1:
|
Log("error: pledge ", kPledge[i].name, " for ",
|
||||||
Log("error: should pledge ", kPledge[i].name, //
|
GetSyscallName(si->si_syscall), " (ord=", ord, " rip=", rip, ")\n",
|
||||||
" (ord=", ord, " rip=", rip, ")\n", 0);
|
0);
|
||||||
found = true;
|
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) {
|
if (!found) {
|
||||||
Log("error: bad syscall (ord=", ord, " rip=", rip, ")\n", 0);
|
Log("error: bad syscall (", GetSyscallName(si->si_syscall), " ord=", ord,
|
||||||
|
" rip=", rip, ")\n", 0);
|
||||||
}
|
}
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case kPledgeModeKillProcess:
|
case kPledgeModeKillProcess:
|
||||||
|
@ -1554,8 +1908,8 @@ static privileged void AppendPledge(struct Filter *f, //
|
||||||
privileged int sys_pledge_linux(unsigned long ipromises, //
|
privileged int sys_pledge_linux(unsigned long ipromises, //
|
||||||
enum PledgeMode mode, //
|
enum PledgeMode mode, //
|
||||||
bool want_msyscall) { //
|
bool want_msyscall) { //
|
||||||
int i, rc = -1;
|
|
||||||
struct Filter f;
|
struct Filter f;
|
||||||
|
int i, e, rc = -1;
|
||||||
struct sock_filter sf[1] = {BPF_STMT(BPF_RET | BPF_K, 0)};
|
struct sock_filter sf[1] = {BPF_STMT(BPF_RET | BPF_K, 0)};
|
||||||
CheckLargeStackAllocation(&f, sizeof(f));
|
CheckLargeStackAllocation(&f, sizeof(f));
|
||||||
f.n = 0;
|
f.n = 0;
|
||||||
|
@ -1610,10 +1964,24 @@ privileged int sys_pledge_linux(unsigned long ipromises, //
|
||||||
AppendFilter(&f, PLEDGE(sf));
|
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
|
// register our seccomp filter with the kernel
|
||||||
if ((rc = Prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)) != -1) {
|
|
||||||
struct sock_fprog sandbox = {.len = f.n, .filter = f.p};
|
struct sock_fprog sandbox = {.len = f.n, .filter = f.p};
|
||||||
rc = Prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &sandbox, 0, 0);
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
|
|
|
@ -28,14 +28,20 @@
|
||||||
#include "libc/sysv/errfuns.h"
|
#include "libc/sysv/errfuns.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Restricts system operations, e.g.
|
* Permits system operations, e.g.
|
||||||
*
|
*
|
||||||
* pledge("stdio rfile tty", 0);
|
* if (pledge("stdio rfile tty", 0)) {
|
||||||
|
* perror("pledge");
|
||||||
|
* exit(1);
|
||||||
|
* }
|
||||||
*
|
*
|
||||||
* Pledging causes most system calls to become unavailable. Your system
|
* Pledging causes most system calls to become unavailable. Your system
|
||||||
* call policy is enforced by the kernel (which means it can propagate
|
* call policy is enforced by the kernel (which means it can propagate
|
||||||
* across execve() if permitted). Root access is not required. Support
|
* across execve() if permitted). Root access is not required. Support
|
||||||
* is limited to Linux and OpenBSD.
|
* 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.
|
||||||
*
|
*
|
||||||
* The promises you give pledge() define which system calls are allowed.
|
* The promises you give pledge() define which system calls are allowed.
|
||||||
* Error messages are logged when sandbox violations occur that well you
|
* Error messages are logged when sandbox violations occur that well you
|
||||||
|
@ -213,14 +219,13 @@
|
||||||
* be weakened to have execute permissions too.
|
* be weakened to have execute permissions too.
|
||||||
*
|
*
|
||||||
* @return 0 on success, or -1 w/ errno
|
* @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 `execpromises` on Linux isn't a subset of `promises`
|
||||||
* @raise EINVAL if `promises` allows exec and `execpromises` is null
|
* @raise EINVAL if `promises` allows exec and `execpromises` is null
|
||||||
* @threadsafe
|
* @threadsafe
|
||||||
* @vforksafe
|
* @vforksafe
|
||||||
*/
|
*/
|
||||||
int pledge(const char *promises, const char *execpromises) {
|
int pledge(const char *promises, const char *execpromises) {
|
||||||
int rc;
|
int e, rc;
|
||||||
unsigned long ipromises, iexecpromises;
|
unsigned long ipromises, iexecpromises;
|
||||||
if (!ParsePromises(promises, &ipromises) &&
|
if (!ParsePromises(promises, &ipromises) &&
|
||||||
!ParsePromises(execpromises, &iexecpromises)) {
|
!ParsePromises(execpromises, &iexecpromises)) {
|
||||||
|
@ -239,7 +244,12 @@ int pledge(const char *promises, const char *execpromises) {
|
||||||
if (rc > -4096u) errno = -rc, rc = -1;
|
if (rc > -4096u) errno = -rc, rc = -1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
e = errno;
|
||||||
rc = sys_pledge(promises, execpromises);
|
rc = sys_pledge(promises, execpromises);
|
||||||
|
if (rc && errno == ENOSYS) {
|
||||||
|
errno = e;
|
||||||
|
rc = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!rc && !__vforked &&
|
if (!rc && !__vforked &&
|
||||||
(IsOpenbsd() || (IsLinux() && getpid() == gettid()))) {
|
(IsOpenbsd() || (IsLinux() && getpid() == gettid()))) {
|
||||||
|
|
|
@ -8,6 +8,7 @@ struct timespec {
|
||||||
};
|
};
|
||||||
|
|
||||||
int sys_futex(int *, int, int, const struct timespec *, int *);
|
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_tomicros(struct timespec) pureconst;
|
||||||
int64_t _timespec_tomillis(struct timespec) pureconst;
|
int64_t _timespec_tomillis(struct timespec) pureconst;
|
||||||
struct timespec _timespec_frommicros(int64_t) pureconst;
|
struct timespec _timespec_frommicros(int64_t) pureconst;
|
||||||
|
|
|
@ -93,13 +93,15 @@ _Thread_local static struct {
|
||||||
} State;
|
} State;
|
||||||
|
|
||||||
static int unveil_final(void) {
|
static int unveil_final(void) {
|
||||||
int rc;
|
int e, rc;
|
||||||
struct sock_fprog sandbox = {
|
struct sock_fprog sandbox = {
|
||||||
.filter = kUnveilBlacklist,
|
.filter = kUnveilBlacklist,
|
||||||
.len = ARRAYLEN(kUnveilBlacklist),
|
.len = ARRAYLEN(kUnveilBlacklist),
|
||||||
};
|
};
|
||||||
if ((rc = prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0)) != -1 &&
|
e = errno;
|
||||||
(rc = landlock_restrict_self(State.fd, 0)) != -1 &&
|
prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0);
|
||||||
|
errno = e;
|
||||||
|
if ((rc = landlock_restrict_self(State.fd, 0)) != -1 &&
|
||||||
(rc = sys_close(State.fd)) != -1 &&
|
(rc = sys_close(State.fd)) != -1 &&
|
||||||
(rc = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &sandbox)) != -1) {
|
(rc = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &sandbox)) != -1) {
|
||||||
State.fd = 0;
|
State.fd = 0;
|
||||||
|
@ -117,9 +119,11 @@ static int err_close(int rc, int fd) {
|
||||||
static int unveil_init(void) {
|
static int unveil_init(void) {
|
||||||
int rc, fd;
|
int rc, fd;
|
||||||
State.fs_mask = UNVEIL_READ | UNVEIL_WRITE | UNVEIL_EXEC | UNVEIL_CREATE;
|
State.fs_mask = UNVEIL_READ | UNVEIL_WRITE | UNVEIL_EXEC | UNVEIL_CREATE;
|
||||||
if ((rc = landlock_create_ruleset(0, 0, LANDLOCK_CREATE_RULESET_VERSION)) <
|
if ((rc = landlock_create_ruleset(0, 0, LANDLOCK_CREATE_RULESET_VERSION)) ==
|
||||||
0) {
|
-1) {
|
||||||
if (errno == EOPNOTSUPP) errno = ENOSYS;
|
if (errno == EOPNOTSUPP) {
|
||||||
|
errno = ENOSYS;
|
||||||
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (rc < 2) {
|
if (rc < 2) {
|
||||||
|
@ -250,7 +254,7 @@ int sys_unveil_linux(const char *path, const char *permissions) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Restricts filesystem operations, e.g.
|
* Makes files accessible, e.g.
|
||||||
*
|
*
|
||||||
* unveil(".", "r"); // current directory + children are visible
|
* unveil(".", "r"); // current directory + children are visible
|
||||||
* unveil("/etc", "r"); // make /etc readable too
|
* unveil("/etc", "r"); // make /etc readable too
|
||||||
|
@ -264,6 +268,10 @@ int sys_unveil_linux(const char *path, const char *permissions) {
|
||||||
* should become unhidden. When you're finished, you call `unveil(0,0)`
|
* should become unhidden. When you're finished, you call `unveil(0,0)`
|
||||||
* which commits your policy.
|
* 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.
|
* There are some differences between unveil() on Linux versus OpenBSD.
|
||||||
*
|
*
|
||||||
* 1. Build your policy and lock it in one go. On OpenBSD, policies take
|
* 1. Build your policy and lock it in one go. On OpenBSD, policies take
|
||||||
|
@ -333,8 +341,6 @@ int sys_unveil_linux(const char *path, const char *permissions) {
|
||||||
* the pledge promise "cpath".
|
* the pledge promise "cpath".
|
||||||
*
|
*
|
||||||
* @return 0 on success, or -1 w/ errno
|
* @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 one argument is set and the other is not
|
||||||
* @raise EINVAL if an invalid character in `permissions` was found
|
* @raise EINVAL if an invalid character in `permissions` was found
|
||||||
* @raise EPERM if unveil() is called after locking
|
* @raise EPERM if unveil() is called after locking
|
||||||
|
@ -343,12 +349,17 @@ int sys_unveil_linux(const char *path, const char *permissions) {
|
||||||
* @threadsafe
|
* @threadsafe
|
||||||
*/
|
*/
|
||||||
int unveil(const char *path, const char *permissions) {
|
int unveil(const char *path, const char *permissions) {
|
||||||
int rc;
|
int e, rc;
|
||||||
|
e = errno;
|
||||||
if (IsLinux()) {
|
if (IsLinux()) {
|
||||||
rc = sys_unveil_linux(path, permissions);
|
rc = sys_unveil_linux(path, permissions);
|
||||||
} else {
|
} else {
|
||||||
rc = sys_unveil(path, permissions);
|
rc = sys_unveil(path, permissions);
|
||||||
}
|
}
|
||||||
|
if (rc == -1 && errno == ENOSYS) {
|
||||||
|
errno = e;
|
||||||
|
rc = 0;
|
||||||
|
}
|
||||||
STRACE("unveil(%#s, %#s) → %d% m", path, permissions, rc);
|
STRACE("unveil(%#s, %#s) → %d% m", path, permissions, rc);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/dns/prototxt.h"
|
#include "libc/dns/prototxt.h"
|
||||||
#include "libc/nt/systeminfo.h"
|
#include "libc/nt/systeminfo.h"
|
||||||
|
#include "libc/str/str.h"
|
||||||
|
|
||||||
textwindows char *GetNtProtocolsTxtPath(char *pathbuf, uint32_t size) {
|
textwindows char *GetNtProtocolsTxtPath(char *pathbuf, uint32_t size) {
|
||||||
/* protocol, not plural */
|
/* protocol, not plural */
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/dns/servicestxt.h"
|
#include "libc/dns/servicestxt.h"
|
||||||
#include "libc/nt/systeminfo.h"
|
#include "libc/nt/systeminfo.h"
|
||||||
|
#include "libc/str/str.h"
|
||||||
|
|
||||||
textwindows char *GetNtServicesTxtPath(char *pathbuf, uint32_t size) {
|
textwindows char *GetNtServicesTxtPath(char *pathbuf, uint32_t size) {
|
||||||
const char *const kWinHostsPath = "\\drivers\\etc\\services";
|
const char *const kWinHostsPath = "\\drivers\\etc\\services";
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/dns/ent.h"
|
#include "libc/dns/ent.h"
|
||||||
#include "libc/dns/prototxt.h"
|
#include "libc/dns/prototxt.h"
|
||||||
|
#include "libc/mem/mem.h"
|
||||||
|
|
||||||
struct protoent *getprotobyname(const char *name) {
|
struct protoent *getprotobyname(const char *name) {
|
||||||
static struct protoent *ptr0, pe0;
|
static struct protoent *ptr0, pe0;
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/dns/ent.h"
|
#include "libc/dns/ent.h"
|
||||||
#include "libc/dns/prototxt.h"
|
#include "libc/dns/prototxt.h"
|
||||||
|
#include "libc/mem/mem.h"
|
||||||
|
|
||||||
struct protoent *getprotobynumber(int proto) {
|
struct protoent *getprotobynumber(int proto) {
|
||||||
static struct protoent *ptr1, pe1;
|
static struct protoent *ptr1, pe1;
|
||||||
|
|
|
@ -25,10 +25,13 @@
|
||||||
│ OTHER DEALINGS IN THE SOFTWARE. │
|
│ OTHER DEALINGS IN THE SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/bits/safemacros.internal.h"
|
#include "libc/bits/safemacros.internal.h"
|
||||||
|
#include "libc/dce.h"
|
||||||
#include "libc/dns/prototxt.h"
|
#include "libc/dns/prototxt.h"
|
||||||
#include "libc/errno.h"
|
#include "libc/errno.h"
|
||||||
#include "libc/fmt/conv.h"
|
#include "libc/fmt/conv.h"
|
||||||
#include "libc/macros.internal.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.
|
* Opens and searches /etc/protocols to find number for a given name.
|
||||||
|
|
|
@ -25,10 +25,13 @@
|
||||||
│ OTHER DEALINGS IN THE SOFTWARE. │
|
│ OTHER DEALINGS IN THE SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/bits/safemacros.internal.h"
|
#include "libc/bits/safemacros.internal.h"
|
||||||
|
#include "libc/dce.h"
|
||||||
#include "libc/dns/prototxt.h"
|
#include "libc/dns/prototxt.h"
|
||||||
#include "libc/errno.h"
|
#include "libc/errno.h"
|
||||||
#include "libc/fmt/conv.h"
|
#include "libc/fmt/conv.h"
|
||||||
#include "libc/macros.internal.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.
|
* Opens and searches /etc/protocols to find name for a given number.
|
||||||
|
|
|
@ -25,10 +25,13 @@
|
||||||
│ OTHER DEALINGS IN THE SOFTWARE. │
|
│ OTHER DEALINGS IN THE SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/bits/safemacros.internal.h"
|
#include "libc/bits/safemacros.internal.h"
|
||||||
|
#include "libc/dce.h"
|
||||||
#include "libc/dns/servicestxt.h"
|
#include "libc/dns/servicestxt.h"
|
||||||
#include "libc/errno.h"
|
#include "libc/errno.h"
|
||||||
#include "libc/fmt/conv.h"
|
#include "libc/fmt/conv.h"
|
||||||
#include "libc/macros.internal.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.
|
* Opens and searches /etc/services to find port for a given name.
|
||||||
|
|
|
@ -25,10 +25,13 @@
|
||||||
│ OTHER DEALINGS IN THE SOFTWARE. │
|
│ OTHER DEALINGS IN THE SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/bits/safemacros.internal.h"
|
#include "libc/bits/safemacros.internal.h"
|
||||||
|
#include "libc/dce.h"
|
||||||
#include "libc/dns/servicestxt.h"
|
#include "libc/dns/servicestxt.h"
|
||||||
#include "libc/errno.h"
|
#include "libc/errno.h"
|
||||||
#include "libc/fmt/conv.h"
|
#include "libc/fmt/conv.h"
|
||||||
#include "libc/macros.internal.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.
|
* Opens and searches /etc/services to find name for a given port.
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/fmt/fmt.h"
|
#include "libc/fmt/fmt.h"
|
||||||
|
#include "libc/str/str.h"
|
||||||
|
|
||||||
int __xpg_strerror_r(int a, char *b, size_t c) {
|
int __xpg_strerror_r(int a, char *b, size_t c) {
|
||||||
return strerror_r(a, b, c);
|
return strerror_r(a, b, c);
|
||||||
|
|
|
@ -1,10 +1,5 @@
|
||||||
#ifndef COSMOPOLITAN_LIBC_FMT_PFLINK_H_
|
#ifndef COSMOPOLITAN_LIBC_FMT_PFLINK_H_
|
||||||
#define 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)
|
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
||||||
#ifndef __STRICT_ANSI__
|
#ifndef __STRICT_ANSI__
|
||||||
|
|
||||||
|
@ -23,8 +18,8 @@
|
||||||
if (___PFLINK(FMT, strpbrk, "faAeg")) STATIC_YOINK("__fmt_dtoa"); \
|
if (___PFLINK(FMT, strpbrk, "faAeg")) STATIC_YOINK("__fmt_dtoa"); \
|
||||||
if (___PFLINK(FMT, strpbrk, "cmrqs")) { \
|
if (___PFLINK(FMT, strpbrk, "cmrqs")) { \
|
||||||
if (___PFLINK(FMT, strstr, "%m")) STATIC_YOINK("strerror"); \
|
if (___PFLINK(FMT, strstr, "%m")) STATIC_YOINK("strerror"); \
|
||||||
if (!IsTiny() && (___PFLINK(FMT, strstr, "%*") || \
|
if (___PFLINK(FMT, strstr, "%*") || \
|
||||||
___PFLINK(FMT, strpbrk, "0123456789"))) { \
|
___PFLINK(FMT, strpbrk, "0123456789")) { \
|
||||||
STATIC_YOINK("strnwidth"); \
|
STATIC_YOINK("strnwidth"); \
|
||||||
STATIC_YOINK("strnwidth16"); \
|
STATIC_YOINK("strnwidth16"); \
|
||||||
STATIC_YOINK("wcsnwidth"); \
|
STATIC_YOINK("wcsnwidth"); \
|
||||||
|
@ -63,36 +58,8 @@
|
||||||
* respects by disabling all the esoteric tuning in headers like this.
|
* respects by disabling all the esoteric tuning in headers like this.
|
||||||
*/
|
*/
|
||||||
#pragma GCC diagnostic ignored "-Wformat-security"
|
#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
|
||||||
|
|
||||||
#endif /* __STRICT_ANSI__ */
|
#endif /* __STRICT_ANSI__ */
|
||||||
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
||||||
#endif /* COSMOPOLITAN_LIBC_FMT_PFLINK_H_ */
|
#endif /* COSMOPOLITAN_LIBC_FMT_PFLINK_H_ */
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/fmt/conv.h"
|
#include "libc/fmt/conv.h"
|
||||||
#include "libc/fmt/fmt.h"
|
#include "libc/fmt/fmt.h"
|
||||||
|
#include "libc/str/str.h"
|
||||||
|
|
||||||
static int GetExponent(int c) {
|
static int GetExponent(int c) {
|
||||||
switch (c) {
|
switch (c) {
|
||||||
|
|
|
@ -17,7 +17,9 @@
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/bits/safemacros.internal.h"
|
#include "libc/bits/safemacros.internal.h"
|
||||||
|
#include "libc/dce.h"
|
||||||
#include "libc/fmt/fmt.h"
|
#include "libc/fmt/fmt.h"
|
||||||
|
#include "libc/str/str.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts errno value to string non-reentrantly.
|
* Converts errno value to string non-reentrantly.
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/fmt/fmt.h"
|
#include "libc/fmt/fmt.h"
|
||||||
#include "libc/nt/runtime.h"
|
#include "libc/nt/runtime.h"
|
||||||
|
#include "libc/str/str.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts errno value to string.
|
* Converts errno value to string.
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include "libc/limits.h"
|
#include "libc/limits.h"
|
||||||
#include "libc/macros.internal.h"
|
#include "libc/macros.internal.h"
|
||||||
#include "libc/runtime/runtime.h"
|
#include "libc/runtime/runtime.h"
|
||||||
|
#include "libc/str/str.h"
|
||||||
|
|
||||||
struct SprintfStr {
|
struct SprintfStr {
|
||||||
char *p;
|
char *p;
|
||||||
|
|
|
@ -39,6 +39,7 @@
|
||||||
#include "libc/log/log.h"
|
#include "libc/log/log.h"
|
||||||
#include "libc/macros.internal.h"
|
#include "libc/macros.internal.h"
|
||||||
#include "libc/mem/hook/hook.internal.h"
|
#include "libc/mem/hook/hook.internal.h"
|
||||||
|
#include "libc/mem/mem.h"
|
||||||
#include "libc/nexgen32e/gc.internal.h"
|
#include "libc/nexgen32e/gc.internal.h"
|
||||||
#include "libc/nexgen32e/stackframe.h"
|
#include "libc/nexgen32e/stackframe.h"
|
||||||
#include "libc/nt/enum/version.h"
|
#include "libc/nt/enum/version.h"
|
||||||
|
@ -195,8 +196,7 @@ static uint64_t __asan_roundup2pow(uint64_t x) {
|
||||||
static char *__asan_utf8cpy(char *p, unsigned c) {
|
static char *__asan_utf8cpy(char *p, unsigned c) {
|
||||||
uint64_t z;
|
uint64_t z;
|
||||||
z = tpenc(c);
|
z = tpenc(c);
|
||||||
do
|
do *p++ = z;
|
||||||
*p++ = z;
|
|
||||||
while ((z >>= 8));
|
while ((z >>= 8));
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
@ -947,8 +947,7 @@ static void __asan_trace(struct AsanTrace *bt, const struct StackFrame *bp) {
|
||||||
if (!__asan_checka(SHADOW(bp), sizeof(*bp) >> 3).kind) {
|
if (!__asan_checka(SHADOW(bp), sizeof(*bp) >> 3).kind) {
|
||||||
addr = bp->addr;
|
addr = bp->addr;
|
||||||
if (addr == weakaddr("__gc") && weakaddr("__gc")) {
|
if (addr == weakaddr("__gc") && weakaddr("__gc")) {
|
||||||
do
|
do --gi;
|
||||||
--gi;
|
|
||||||
while ((addr = garbage->p[gi].ret) == weakaddr("__gc"));
|
while ((addr = garbage->p[gi].ret) == weakaddr("__gc"));
|
||||||
}
|
}
|
||||||
bt->p[i] = addr;
|
bt->p[i] = addr;
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
#ifndef COSMOPOLITAN_LIBC_RUNTIME_PTHREAD_H_
|
#ifndef COSMOPOLITAN_LIBC_RUNTIME_PTHREAD_H_
|
||||||
#define 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
|
#define PTHREAD_KEYS_MAX 64
|
||||||
|
|
||||||
|
@ -84,7 +82,6 @@ int pthread_mutex_init(pthread_mutex_t *, const pthread_mutexattr_t *);
|
||||||
int pthread_mutex_lock(pthread_mutex_t *);
|
int pthread_mutex_lock(pthread_mutex_t *);
|
||||||
int pthread_mutex_unlock(pthread_mutex_t *);
|
int pthread_mutex_unlock(pthread_mutex_t *);
|
||||||
int pthread_mutex_trylock(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_destroy(pthread_mutex_t *);
|
||||||
int pthread_mutex_consistent(pthread_mutex_t *);
|
int pthread_mutex_consistent(pthread_mutex_t *);
|
||||||
int pthread_mutexattr_init(pthread_mutexattr_t *);
|
int pthread_mutexattr_init(pthread_mutexattr_t *);
|
||||||
|
@ -94,8 +91,6 @@ int pthread_mutexattr_settype(pthread_mutexattr_t *, int);
|
||||||
int pthread_cond_init(pthread_cond_t *, const pthread_condattr_t *);
|
int pthread_cond_init(pthread_cond_t *, const pthread_condattr_t *);
|
||||||
int pthread_cond_destroy(pthread_cond_t *);
|
int pthread_cond_destroy(pthread_cond_t *);
|
||||||
int pthread_cond_wait(pthread_cond_t *, pthread_mutex_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_cond_broadcast(pthread_cond_t *);
|
||||||
int pthread_cancel(pthread_t);
|
int pthread_cancel(pthread_t);
|
||||||
int pthread_cond_signal(pthread_cond_t *);
|
int pthread_cond_signal(pthread_cond_t *);
|
||||||
|
@ -103,10 +98,8 @@ int pthread_rwlock_init(pthread_rwlock_t *, const pthread_rwlockattr_t *);
|
||||||
int pthread_rwlock_destroy(pthread_rwlock_t *);
|
int pthread_rwlock_destroy(pthread_rwlock_t *);
|
||||||
int pthread_rwlock_rdlock(pthread_rwlock_t *);
|
int pthread_rwlock_rdlock(pthread_rwlock_t *);
|
||||||
int pthread_rwlock_tryrdlock(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_wrlock(pthread_rwlock_t *);
|
||||||
int pthread_rwlock_trywrlock(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_rwlock_unlock(pthread_rwlock_t *);
|
||||||
int pthread_key_create(pthread_key_t *, pthread_key_dtor);
|
int pthread_key_create(pthread_key_t *, pthread_key_dtor);
|
||||||
int pthread_key_delete(pthread_key_t);
|
int pthread_key_delete(pthread_key_t);
|
||||||
|
@ -139,9 +132,8 @@ void *pthread_getspecific(pthread_key_t);
|
||||||
#define pthread_mutex_unlock(mutex) \
|
#define pthread_mutex_unlock(mutex) \
|
||||||
((mutex)->attr == PTHREAD_MUTEX_NORMAL \
|
((mutex)->attr == PTHREAD_MUTEX_NORMAL \
|
||||||
? (__atomic_store_n(&(mutex)->lock, 0, __ATOMIC_RELAXED), \
|
? (__atomic_store_n(&(mutex)->lock, 0, __ATOMIC_RELAXED), \
|
||||||
((IsLinux() || IsOpenbsd()) && \
|
|
||||||
__atomic_load_n(&(mutex)->waits, __ATOMIC_RELAXED) && \
|
__atomic_load_n(&(mutex)->waits, __ATOMIC_RELAXED) && \
|
||||||
_pthread_mutex_wake(mutex)), \
|
_pthread_mutex_wake(mutex), \
|
||||||
0) \
|
0) \
|
||||||
: pthread_mutex_unlock(mutex))
|
: pthread_mutex_unlock(mutex))
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include "libc/assert.h"
|
#include "libc/assert.h"
|
||||||
#include "libc/bits/atomic.h"
|
#include "libc/bits/atomic.h"
|
||||||
#include "libc/calls/calls.h"
|
#include "libc/calls/calls.h"
|
||||||
|
#include "libc/dce.h"
|
||||||
#include "libc/errno.h"
|
#include "libc/errno.h"
|
||||||
#include "libc/intrin/kprintf.h"
|
#include "libc/intrin/kprintf.h"
|
||||||
#include "libc/intrin/pthread.h"
|
#include "libc/intrin/pthread.h"
|
||||||
|
|
|
@ -17,9 +17,15 @@
|
||||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
#include "libc/bits/atomic.h"
|
#include "libc/bits/atomic.h"
|
||||||
|
#include "libc/dce.h"
|
||||||
#include "libc/intrin/futex.internal.h"
|
#include "libc/intrin/futex.internal.h"
|
||||||
#include "libc/intrin/pthread.h"
|
#include "libc/intrin/pthread.h"
|
||||||
|
|
||||||
int _pthread_mutex_wake(pthread_mutex_t *mutex) {
|
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);
|
return _futex_wake(&mutex->lock, 1);
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include "libc/nt/enum/formatmessageflags.h"
|
#include "libc/nt/enum/formatmessageflags.h"
|
||||||
#include "libc/nt/enum/lang.h"
|
#include "libc/nt/enum/lang.h"
|
||||||
#include "libc/nt/process.h"
|
#include "libc/nt/process.h"
|
||||||
|
#include "libc/str/str.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts errno value to string with explicit windows errno too.
|
* Converts errno value to string with explicit windows errno too.
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#define LIBC_ISYSTEM_STDIO_H_
|
#define LIBC_ISYSTEM_STDIO_H_
|
||||||
#include "libc/calls/calls.h"
|
#include "libc/calls/calls.h"
|
||||||
#include "libc/fmt/fmt.h"
|
#include "libc/fmt/fmt.h"
|
||||||
|
#include "libc/stdio/lock.h"
|
||||||
#include "libc/stdio/stdio.h"
|
#include "libc/stdio/stdio.h"
|
||||||
#include "libc/stdio/temp.h"
|
#include "libc/stdio/temp.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include "libc/math.h"
|
#include "libc/math.h"
|
||||||
#include "libc/runtime/runtime.h"
|
#include "libc/runtime/runtime.h"
|
||||||
#include "libc/stdio/stdio.h"
|
#include "libc/stdio/stdio.h"
|
||||||
|
#include "libc/str/str.h"
|
||||||
|
|
||||||
static double GetTotal(const struct countbranch *p) {
|
static double GetTotal(const struct countbranch *p) {
|
||||||
return p->total;
|
return p->total;
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include "libc/errno.h"
|
#include "libc/errno.h"
|
||||||
#include "libc/log/log.h"
|
#include "libc/log/log.h"
|
||||||
#include "libc/stdio/stdio.h"
|
#include "libc/stdio/stdio.h"
|
||||||
|
#include "libc/str/str.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Writes error messages to standard error.
|
* Writes error messages to standard error.
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include "libc/macros.internal.h"
|
#include "libc/macros.internal.h"
|
||||||
#include "libc/runtime/stack.h"
|
#include "libc/runtime/stack.h"
|
||||||
#include "libc/runtime/symbols.internal.h"
|
#include "libc/runtime/symbols.internal.h"
|
||||||
|
#include "libc/str/str.h"
|
||||||
#include "libc/sysv/consts/map.h"
|
#include "libc/sysv/consts/map.h"
|
||||||
#include "libc/sysv/consts/prot.h"
|
#include "libc/sysv/consts/prot.h"
|
||||||
#include "libc/sysv/consts/sa.h"
|
#include "libc/sysv/consts/sa.h"
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#include "libc/math.h"
|
#include "libc/math.h"
|
||||||
#include "libc/nexgen32e/nexgen32e.h"
|
#include "libc/nexgen32e/nexgen32e.h"
|
||||||
#include "libc/runtime/runtime.h"
|
#include "libc/runtime/runtime.h"
|
||||||
|
#include "libc/stdio/lock.h"
|
||||||
#include "libc/stdio/stdio.h"
|
#include "libc/stdio/stdio.h"
|
||||||
#include "libc/str/str.h"
|
#include "libc/str/str.h"
|
||||||
#include "libc/sysv/consts/fileno.h"
|
#include "libc/sysv/consts/fileno.h"
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp gdi32,__imp_GdiCurrentProcessSplWow64,GdiCurrentProcessSplWow64,1510
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp kernel32,__imp_GetSystemWow64DirectoryA,GetSystemWow64DirectoryA,0
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp kernel32,__imp_GetSystemWow64DirectoryW,GetSystemWow64DirectoryW,0
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp kernel32,__imp_IsWow64Process,IsWow64Process,0
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp kernel32,__imp_Wow64DisableWow64FsRedirection,Wow64DisableWow64FsRedirection,0
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp kernel32,__imp_Wow64EnableWow64FsRedirection,Wow64EnableWow64FsRedirection,1545
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp kernel32,__imp_Wow64GetThreadContext,Wow64GetThreadContext,1546
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp kernel32,__imp_Wow64GetThreadSelectorEntry,Wow64GetThreadSelectorEntry,1547
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp kernel32,__imp_Wow64RevertWow64FsRedirection,Wow64RevertWow64FsRedirection,0
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp kernel32,__imp_Wow64SetThreadContext,Wow64SetThreadContext,1549
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp kernel32,__imp_Wow64SuspendThread,Wow64SuspendThread,1550
|
|
|
@ -667,8 +667,6 @@ imp 'GetSystemTimePreciseAsFileTime' GetSystemTimePreciseAsFileTime kernel3
|
||||||
imp 'GetSystemTimes' GetSystemTimes kernel32 0 3
|
imp 'GetSystemTimes' GetSystemTimes kernel32 0 3
|
||||||
imp 'GetSystemWindowsDirectory' GetSystemWindowsDirectoryW kernel32 0
|
imp 'GetSystemWindowsDirectory' GetSystemWindowsDirectoryW kernel32 0
|
||||||
imp 'GetSystemWindowsDirectoryA' GetSystemWindowsDirectoryA kernel32 0
|
imp 'GetSystemWindowsDirectoryA' GetSystemWindowsDirectoryA kernel32 0
|
||||||
imp 'GetSystemWow64Directory' GetSystemWow64DirectoryW kernel32 0
|
|
||||||
imp 'GetSystemWow64DirectoryA' GetSystemWow64DirectoryA kernel32 0
|
|
||||||
imp 'GetTapeParameters' GetTapeParameters kernel32 756
|
imp 'GetTapeParameters' GetTapeParameters kernel32 756
|
||||||
imp 'GetTapePosition' GetTapePosition kernel32 757
|
imp 'GetTapePosition' GetTapePosition kernel32 757
|
||||||
imp 'GetTapeStatus' GetTapeStatus kernel32 758
|
imp 'GetTapeStatus' GetTapeStatus kernel32 758
|
||||||
|
@ -809,7 +807,6 @@ imp 'IsValidLanguageGroup' IsValidLanguageGroup kernel32 0
|
||||||
imp 'IsValidLocale' IsValidLocale kernel32 0
|
imp 'IsValidLocale' IsValidLocale kernel32 0
|
||||||
imp 'IsValidLocaleName' IsValidLocaleName kernel32 0
|
imp 'IsValidLocaleName' IsValidLocaleName kernel32 0
|
||||||
imp 'IsValidNLSVersion' IsValidNLSVersion kernel32 0
|
imp 'IsValidNLSVersion' IsValidNLSVersion kernel32 0
|
||||||
imp 'IsWow64Process' IsWow64Process kernel32 0
|
|
||||||
imp 'K32EmptyWorkingSet' K32EmptyWorkingSet kernel32 0
|
imp 'K32EmptyWorkingSet' K32EmptyWorkingSet kernel32 0
|
||||||
imp 'K32EnumDeviceDrivers' K32EnumDeviceDrivers kernel32 0
|
imp 'K32EnumDeviceDrivers' K32EnumDeviceDrivers kernel32 0
|
||||||
imp 'K32EnumPageFiles' K32EnumPageFilesW kernel32 0
|
imp 'K32EnumPageFiles' K32EnumPageFilesW kernel32 0
|
||||||
|
@ -1305,13 +1302,6 @@ imp 'WerpNotifyLoadStringResourceWorker' WerpNotifyLoadStringResourceWorker
|
||||||
imp 'WerpNotifyUseStringResourceWorker' WerpNotifyUseStringResourceWorker kernel32 1541
|
imp 'WerpNotifyUseStringResourceWorker' WerpNotifyUseStringResourceWorker kernel32 1541
|
||||||
imp 'WideCharToMultiByte' WideCharToMultiByte kernel32 1553 8
|
imp 'WideCharToMultiByte' WideCharToMultiByte kernel32 1553 8
|
||||||
imp 'WinExec' WinExec kernel32 1543
|
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 'WriteConsole' WriteConsoleW kernel32 0 5
|
||||||
imp 'WriteConsoleA' WriteConsoleA kernel32 0 5
|
imp 'WriteConsoleA' WriteConsoleA kernel32 0 5
|
||||||
imp 'WriteConsoleInput' WriteConsoleInputW kernel32 0 4
|
imp 'WriteConsoleInput' WriteConsoleInputW kernel32 0 4
|
||||||
|
@ -2598,7 +2588,6 @@ imp 'IsWindowInDestroy' IsWindowInDestroy user32 2087
|
||||||
imp 'IsWindowRedirectedForPrint' IsWindowRedirectedForPrint user32 2088
|
imp 'IsWindowRedirectedForPrint' IsWindowRedirectedForPrint user32 2088
|
||||||
imp 'IsWindowUnicode' IsWindowUnicode user32 2089
|
imp 'IsWindowUnicode' IsWindowUnicode user32 2089
|
||||||
imp 'IsWindowVisible' IsWindowVisible user32 2090 1
|
imp 'IsWindowVisible' IsWindowVisible user32 2090 1
|
||||||
imp 'IsWow64Message' IsWow64Message user32 2091
|
|
||||||
imp 'IsZoomed' IsZoomed user32 2092 1
|
imp 'IsZoomed' IsZoomed user32 2092 1
|
||||||
imp 'KillTimer' KillTimer user32 2093 2
|
imp 'KillTimer' KillTimer user32 2093 2
|
||||||
imp 'LoadAccelerators' LoadAcceleratorsW user32 2095
|
imp 'LoadAccelerators' LoadAcceleratorsW user32 2095
|
||||||
|
@ -3376,7 +3365,6 @@ imp 'GdiConvertRegion' GdiConvertRegion gdi32 1506
|
||||||
imp 'GdiConvertToDevmode' GdiConvertToDevmodeW gdi32 1507
|
imp 'GdiConvertToDevmode' GdiConvertToDevmodeW gdi32 1507
|
||||||
imp 'GdiCreateLocalEnhMetaFile' GdiCreateLocalEnhMetaFile gdi32 1508
|
imp 'GdiCreateLocalEnhMetaFile' GdiCreateLocalEnhMetaFile gdi32 1508
|
||||||
imp 'GdiCreateLocalMetaFilePict' GdiCreateLocalMetaFilePict gdi32 1509
|
imp 'GdiCreateLocalMetaFilePict' GdiCreateLocalMetaFilePict gdi32 1509
|
||||||
imp 'GdiCurrentProcessSplWow64' GdiCurrentProcessSplWow64 gdi32 1510
|
|
||||||
imp 'GdiDeleteLocalDC' GdiDeleteLocalDC gdi32 1511
|
imp 'GdiDeleteLocalDC' GdiDeleteLocalDC gdi32 1511
|
||||||
imp 'GdiDeleteSpoolFileHandle' GdiDeleteSpoolFileHandle gdi32 1512
|
imp 'GdiDeleteSpoolFileHandle' GdiDeleteSpoolFileHandle gdi32 1512
|
||||||
imp 'GdiDescribePixelFormat' GdiDescribePixelFormat gdi32 1513
|
imp 'GdiDescribePixelFormat' GdiDescribePixelFormat gdi32 1513
|
||||||
|
@ -4095,89 +4083,6 @@ imp 'InitializeProcessForWsWatch' InitializeProcessForWsWatch psapi 0
|
||||||
imp 'QueryWorkingSet' QueryWorkingSet psapi 0
|
imp 'QueryWorkingSet' QueryWorkingSet psapi 0
|
||||||
imp 'QueryWorkingSetEx' QueryWorkingSetEx 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
|
# URL.DLL
|
||||||
#
|
#
|
||||||
# Name Actual DLL Hint Arity
|
# Name Actual DLL Hint Arity
|
||||||
|
@ -4192,265 +4097,6 @@ imp 'InetIsOffline' InetIsOffline url 106
|
||||||
imp 'MIMEAssociationDialog' MIMEAssociationDialogW url 108
|
imp 'MIMEAssociationDialog' MIMEAssociationDialogW url 108
|
||||||
imp 'MailToProtocolHandler' MailToProtocolHandler url 109
|
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
|
# NTDLL.DLL
|
||||||
# BEYOND THE PALE
|
# BEYOND THE PALE
|
||||||
#
|
#
|
||||||
|
@ -5748,7 +5394,6 @@ imp 'RtlQueryValidationRunlevel' RtlQueryValidationRunlevel ntdll 1311
|
||||||
imp 'RtlQueryWnfMetaNotification' RtlQueryWnfMetaNotification ntdll 1312
|
imp 'RtlQueryWnfMetaNotification' RtlQueryWnfMetaNotification ntdll 1312
|
||||||
imp 'RtlQueryWnfStateData' RtlQueryWnfStateData ntdll 1313
|
imp 'RtlQueryWnfStateData' RtlQueryWnfStateData ntdll 1313
|
||||||
imp 'RtlQueryWnfStateDataWithExplicitScope' RtlQueryWnfStateDataWithExplicitScope ntdll 1314
|
imp 'RtlQueryWnfStateDataWithExplicitScope' RtlQueryWnfStateDataWithExplicitScope ntdll 1314
|
||||||
imp 'RtlQueueApcWow64Thread' RtlQueueApcWow64Thread ntdll 1315
|
|
||||||
imp 'RtlQueueWorkItem' RtlQueueWorkItem ntdll 1316
|
imp 'RtlQueueWorkItem' RtlQueueWorkItem ntdll 1316
|
||||||
imp 'RtlRaiseCustomSystemEventTrigger' RtlRaiseCustomSystemEventTrigger ntdll 1317
|
imp 'RtlRaiseCustomSystemEventTrigger' RtlRaiseCustomSystemEventTrigger ntdll 1317
|
||||||
imp 'RtlRaiseException' RtlRaiseException ntdll 1318
|
imp 'RtlRaiseException' RtlRaiseException ntdll 1318
|
||||||
|
@ -5971,24 +5616,6 @@ imp 'RtlWeaklyEnumerateEntryHashTable' RtlWeaklyEnumerateEntryHashTable ntdl
|
||||||
imp 'RtlWerpReportException' RtlWerpReportException ntdll 1535
|
imp 'RtlWerpReportException' RtlWerpReportException ntdll 1535
|
||||||
imp 'RtlWnfCompareChangeStamp' RtlWnfCompareChangeStamp ntdll 1536
|
imp 'RtlWnfCompareChangeStamp' RtlWnfCompareChangeStamp ntdll 1536
|
||||||
imp 'RtlWnfDllUnloadCallback' RtlWnfDllUnloadCallback ntdll 1537
|
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 'RtlWriteMemoryStream' RtlWriteMemoryStream ntdll 1556
|
||||||
imp 'RtlWriteNonVolatileMemory' RtlWriteNonVolatileMemory ntdll 1557
|
imp 'RtlWriteNonVolatileMemory' RtlWriteNonVolatileMemory ntdll 1557
|
||||||
imp 'RtlWriteRegistryValue' RtlWriteRegistryValue ntdll 1558
|
imp 'RtlWriteRegistryValue' RtlWriteRegistryValue ntdll 1558
|
||||||
|
@ -6028,7 +5655,6 @@ imp 'RtlpNtOpenKey' RtlpNtOpenKey ntdll 1591
|
||||||
imp 'RtlpNtQueryValueKey' RtlpNtQueryValueKey ntdll 1592
|
imp 'RtlpNtQueryValueKey' RtlpNtQueryValueKey ntdll 1592
|
||||||
imp 'RtlpNtSetValueKey' RtlpNtSetValueKey ntdll 1593
|
imp 'RtlpNtSetValueKey' RtlpNtSetValueKey ntdll 1593
|
||||||
imp 'RtlpQueryDefaultUILanguage' RtlpQueryDefaultUILanguage ntdll 1594
|
imp 'RtlpQueryDefaultUILanguage' RtlpQueryDefaultUILanguage ntdll 1594
|
||||||
imp 'RtlpQueryProcessDebugInformationFromWow64' RtlpQueryProcessDebugInformationFromWow64 ntdll 1595
|
|
||||||
imp 'RtlpQueryProcessDebugInformationRemote' RtlpQueryProcessDebugInformationRemote ntdll 1596
|
imp 'RtlpQueryProcessDebugInformationRemote' RtlpQueryProcessDebugInformationRemote ntdll 1596
|
||||||
imp 'RtlpRefreshCachedUILanguage' RtlpRefreshCachedUILanguage ntdll 1597
|
imp 'RtlpRefreshCachedUILanguage' RtlpRefreshCachedUILanguage ntdll 1597
|
||||||
imp 'RtlpSetInstallLanguage' RtlpSetInstallLanguage ntdll 1598
|
imp 'RtlpSetInstallLanguage' RtlpSetInstallLanguage ntdll 1598
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_I_BrowserSetNetlogonState,I_BrowserSetNetlogonState,34
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetAccessAdd,NetAccessAdd,71
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetAccessDel,NetAccessDel,72
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetAccessEnum,NetAccessEnum,73
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetAccessGetInfo,NetAccessGetInfo,74
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetAccessGetUserPerms,NetAccessGetUserPerms,75
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetAccessSetInfo,NetAccessSetInfo,76
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetAlertRaise,NetAlertRaise,79
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetAlertRaiseEx,NetAlertRaiseEx,80
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetAuditClear,NetAuditClear,85
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetAuditRead,NetAuditRead,86
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetAuditWrite,NetAuditWrite,87
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetConfigGet,NetConfigGet,88
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetConfigGetAll,NetConfigGetAll,89
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetConfigSet,NetConfigSet,90
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetErrorLogClear,NetErrorLogClear,124
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetErrorLogRead,NetErrorLogRead,125
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetErrorLogWrite,NetErrorLogWrite,126
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetMessageBufferSend,NetMessageBufferSend,161
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetMessageNameAdd,NetMessageNameAdd,162
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetMessageNameDel,NetMessageNameDel,163
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetMessageNameEnum,NetMessageNameEnum,164
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetMessageNameGetInfo,NetMessageNameGetInfo,165
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetRegisterDomainNameChangeNotification,NetRegisterDomainNameChangeNotification,169
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetReplExportDirAdd,NetReplExportDirAdd,175
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetReplExportDirDel,NetReplExportDirDel,176
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetReplExportDirEnum,NetReplExportDirEnum,177
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetReplExportDirGetInfo,NetReplExportDirGetInfo,178
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetReplExportDirLock,NetReplExportDirLock,179
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetReplExportDirSetInfo,NetReplExportDirSetInfo,180
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetReplExportDirUnlock,NetReplExportDirUnlock,181
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetReplGetInfo,NetReplGetInfo,182
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetReplImportDirAdd,NetReplImportDirAdd,183
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetReplImportDirDel,NetReplImportDirDel,184
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetReplImportDirEnum,NetReplImportDirEnum,185
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetReplImportDirGetInfo,NetReplImportDirGetInfo,186
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetReplImportDirLock,NetReplImportDirLock,187
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetReplImportDirUnlock,NetReplImportDirUnlock,188
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetReplSetInfo,NetReplSetInfo,189
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetServerEnum,NetServerEnum,202
|
|
|
@ -1,2 +0,0 @@
|
||||||
.include "o/libc/nt/codegen.inc"
|
|
||||||
.imp netapi32,__imp_NetServerEnumEx,NetServerEnumEx,203
|
|
|
@ -1,2 +0,0 @@
|
||||||
.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