Fix XNU / FreeBSD / OpenBSD / RHEL5 / NT bugs

For the first time ever, all tests in this codebase now pass, when
run automatically on macos, freebsd, openbsd, rhel5, rhel7, alpine
and windows via the network using the runit and runitd build tools

- Fix vfork exec path etc.
- Add XNU opendir() support
- Add OpenBSD opendir() support
- Add Linux history to syscalls.sh
- Use copy_file_range on FreeBSD 13+
- Fix system calls with 7+ arguments
- Fix Windows with greater than 16 FDs
- Fix RUNIT.COM and RUNITD.COM flakiness
- Fix OpenBSD munmap() when files are mapped
- Fix long double so it's actually long on Windows
- Fix OpenBSD truncate() and ftruncate() thunk typo
- Let Windows fcntl() be used on socket files descriptors
- Fix Windows fstat() which had an accidental printf statement
- Fix RHEL5 CLOCK_MONOTONIC by not aliasing to CLOCK_MONOTONIC_RAW

This is wonderful. I never could have dreamed it would be possible
to get it working so well on so many platforms with tiny binaries.

Fixes #31
Fixes #25
Fixes #14
This commit is contained in:
Justine Tunney 2021-01-25 13:08:05 -08:00
parent c20dad3534
commit 45b72485ad
1032 changed files with 6083 additions and 2348 deletions

View file

@ -1,2 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon clock CLOCK_MONOTONIC 4 1 4 3 1
.syscon clock CLOCK_MONOTONIC 1 1 4 3 1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_ATTACH 16 10 10 9 -1

View file

@ -1,2 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon pt PT_ATTACH 0x10 10 10 9 0
.syscon ptrace PTRACE_CONT 7 7 7 7 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_DETACH 17 11 11 10 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_EVENT_CLONE 3 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_EVENT_EXEC 4 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_EVENT_EXIT 6 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_EVENT_FORK 1 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_EVENT_VFORK 2 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_EVENT_VFORK_DONE 5 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_GETEVENTMSG 0x4201 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_GETFPREGS 14 -1 35 35 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_GETFPXREGS 18 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_GETREGS 12 -1 33 33 -1

View file

@ -1,2 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_GETREGSET 0x4204 0 0 0 0
.syscon ptrace PTRACE_GETREGSET 0x4204 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_GETSIGINFO 0x4202 -1 -1 -1 -1

View file

@ -1,2 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_GETSIGMASK 0x420a 0 0 0 0
.syscon ptrace PTRACE_GETSIGMASK 0x420a -1 -1 -1 -1

View file

@ -1,2 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_INTERRUPT 0x4207 0 0 0 0
.syscon ptrace PTRACE_INTERRUPT 0x4207 -1 -1 -1 -1

View file

@ -1,2 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon pt PT_CONTINUE 7 7 7 7 0
.syscon ptrace PTRACE_KILL 8 8 8 8 -1

View file

@ -1,2 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_LISTEN 0x4208 0 0 0 0
.syscon ptrace PTRACE_LISTEN 0x4208 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_O_MASK 0x007f -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_O_TRACECLONE 0x0008 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_O_TRACEEXEC 0x0010 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_O_TRACEEXIT 0x0040 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_O_TRACEFORK 0x0002 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_O_TRACESYSGOOD 0x0001 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_O_TRACEVFORK 0x0004 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_O_TRACEVFORKDONE 0x0020 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_PEEKDATA 2 2 2 2 -1

View file

@ -1,2 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_PEEKSIGINFO 0x4209 0 0 0 0
.syscon ptrace PTRACE_PEEKSIGINFO 0x4209 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_PEEKTEXT 1 1 1 1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_PEEKUSER 3 3 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_POKEDATA 5 5 5 5 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_POKETEXT 4 4 4 4 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_POKEUSER 6 6 -1 -1 -1

View file

@ -1,2 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_SECCOMP_GET_FILTER 0x420c 0 0 0 0
.syscon ptrace PTRACE_SECCOMP_GET_FILTER 0x420c -1 -1 -1 -1

View file

@ -1,2 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_SEIZE 0x4206 0 0 0 0
.syscon ptrace PTRACE_SEIZE 0x4206 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_SETFPREGS 15 -1 36 36 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_SETFPXREGS 19 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_SETOPTIONS 0x4200 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_SETREGS 13 -1 34 34 -1

View file

@ -1,2 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_SETREGSET 0x4205 0 0 0 0
.syscon ptrace PTRACE_SETREGSET 0x4205 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_SETSIGINFO 0x4203 -1 -1 -1 -1

View file

@ -1,2 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_SETSIGMASK 0x420b 0 0 0 0
.syscon ptrace PTRACE_SETSIGMASK 0x420b -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_SINGLESTEP 9 9 9 32 -1

View file

@ -1,2 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_SYSCALL 0 0 6 0 0
.syscon ptrace PTRACE_SYSCALL 24 -1 22 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon ptrace PTRACE_TRACEME 0 0 0 0 -1

View file

@ -1,2 +0,0 @@
.include "libc/sysv/consts/syscon.inc"
.syscon pt PT_GETEVENTMSG 0x4201 0 0 0 0

View file

@ -1,2 +0,0 @@
.include "libc/sysv/consts/syscon.inc"
.syscon pt PT_GETFPXREGS 18 0 0 0 0

View file

@ -1,2 +0,0 @@
.include "libc/sysv/consts/syscon.inc"
.syscon pt PT_GETREGS 12 0 33 33 0

View file

@ -1,2 +0,0 @@
.include "libc/sysv/consts/syscon.inc"
.syscon pt PT_GETSIGINFO 0x4202 0 0 0 0

View file

@ -1,2 +0,0 @@
.include "libc/sysv/consts/syscon.inc"
.syscon pt PT_KILL 8 8 8 8 0

View file

@ -1,2 +0,0 @@
.include "libc/sysv/consts/syscon.inc"
.syscon pt PT_READ_D 2 2 2 2 0

View file

@ -1,2 +0,0 @@
.include "libc/sysv/consts/syscon.inc"
.syscon pt PT_READ_I 1 1 1 1 0

View file

@ -1,2 +0,0 @@
.include "libc/sysv/consts/syscon.inc"
.syscon pt PT_READ_U 3 3 0 0 0

View file

@ -1,2 +0,0 @@
.include "libc/sysv/consts/syscon.inc"
.syscon pt PT_SETFPREGS 15 0 36 36 0

View file

@ -1,2 +0,0 @@
.include "libc/sysv/consts/syscon.inc"
.syscon pt PT_SETFPXREGS 19 0 0 0 0

View file

@ -1,2 +0,0 @@
.include "libc/sysv/consts/syscon.inc"
.syscon pt PT_SETOPTIONS 0x4200 0 0 0 0

View file

@ -1,2 +0,0 @@
.include "libc/sysv/consts/syscon.inc"
.syscon pt PT_SETREGS 13 0 34 34 0

View file

@ -1,2 +0,0 @@
.include "libc/sysv/consts/syscon.inc"
.syscon pt PT_SETSIGINFO 0x4203 0 0 0 0

View file

@ -1,2 +0,0 @@
.include "libc/sysv/consts/syscon.inc"
.syscon pt PT_STEP 9 9 9 0x20 0

View file

@ -1,2 +0,0 @@
.include "libc/sysv/consts/syscon.inc"
.syscon pt PT_SYSCALL 24 0 22 0 0

View file

@ -1,2 +0,0 @@
.include "libc/sysv/consts/syscon.inc"
.syscon pt PT_TRACE_ME 0 0 0 0 0

View file

@ -1,2 +0,0 @@
.include "libc/sysv/consts/syscon.inc"
.syscon pt PT_WRITE_D 5 5 5 5 0

View file

@ -1,2 +0,0 @@
.include "libc/sysv/consts/syscon.inc"
.syscon pt PT_WRITE_I 4 4 4 4 0

View file

@ -1,2 +0,0 @@
.include "libc/sysv/consts/syscon.inc"
.syscon pt PT_WRITE_U 6 6 0 0 0

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR___mac_syscall -1 0x200017d -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR___sysctl -1 -1 0x00ca -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR__sysctl 0x009c -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR__umtx_op -1 -1 0x01c6 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_abort2 -1 -1 0x01cf -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_abort_with_payload -1 0x2000209 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_accept 0x002b 0x200001e 0x0063 0x001e -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_accept4 0x0120 -1 0x021d 0x005d -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_accept_nocancel -1 0x2000194 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_access_extended -1 0x200011c -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_acct 0x00a3 0x2000033 0x0033 0x0033 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_acl_aclcheck_fd -1 -1 0x0162 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_acl_aclcheck_file -1 -1 0x0161 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_acl_aclcheck_link -1 -1 0x01ac -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_acl_delete_fd -1 -1 0x0160 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_acl_delete_file -1 -1 0x015f -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_acl_delete_link -1 -1 0x01ab -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_acl_get_fd -1 -1 0x015d -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_acl_get_file -1 -1 0x015b -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_acl_get_link -1 -1 0x01a9 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_acl_set_fd -1 -1 0x015e -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_acl_set_file -1 -1 0x015c -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_acl_set_link -1 -1 0x01aa -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_add_key 0x00f8 -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_adjfreq -1 -1 -1 0x0131 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_adjtime -1 0x200008c 0x008c 0x008c -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_adjtimex 0x009f -1 -1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_afs3_syscall -1 -1 0x0179 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_aio_cancel -1 0x200013c 0x013c -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_aio_error -1 0x200013d 0x013d -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_aio_fsync -1 0x2000139 0x01d1 -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_aio_mlock -1 -1 0x021f -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_aio_read -1 0x200013e 0x013e -1 -1

View file

@ -0,0 +1,2 @@
.include "libc/sysv/consts/syscon.inc"
.syscon nr __NR_aio_return -1 0x200013a 0x013a -1 -1

Some files were not shown because too many files have changed in this diff Show more