Fix breakages in Linux-only build modes

- compile.com now polyfills -march=native which gcc/clang removed
- Guarantee zero Windows code is linked into non-Windows binaries
- MODE=tinylinux binaries are now back to being as tiny as ~4kb
- Improve the runtime's stack allocation / alignment hack
- GitHub Actions now tests Linux modes for assurance
This commit is contained in:
Justine Tunney 2023-07-09 19:47:46 -07:00
parent 0e4c828a8e
commit 3dc86ce154
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
32 changed files with 283 additions and 104 deletions

View file

@ -71,14 +71,15 @@ _start:
// align stack to GetStackSize() so GetStackAddr() is fast
.weak ape_stack_memsz
mov $ape_stack_memsz,%r9d
mov $ape_stack_align,%r8d
cmp $_HOSTLINUX,%cl
cmove %r9d,%r8d
mov $16,%r8d
test %r9d,%r9d
cmovnz %r9,%r8
neg %r8
and %r8,%rsp
xor %ebp,%ebp
// bofram 9f
#if SupportsWindows()
// make win32 imps noop
.weak ape_idata_iat
.weak ape_idata_iatend
@ -88,6 +89,7 @@ _start:
sub %rdi,%rcx
shr $3,%ecx
rep stosq
#endif
// scan through environment varis
// find start of auxiliary values