cosmopolitan/libc/nexgen32e
Justine Tunney 94afa982c3 Fix zip executables on MacOS
Here's why we got those `Killed: 11` failures on MacOS after modifying
the contentns of the redbean.com executable. If you were inserting a
small file, such as a HelloWorld.html file, then InfoZIP might have
decreased the size of the executable to less than what the Mach-O
section had been expecting.

That's because when zipobj.com put things like time zone data in the
executable, it aligned each zip file entry on a 64-byte boundary, simply
for the sake of readability in binary dumps. But when InfoZIP edited the
file it would rewrite every entry using ZIP's usual 2-byte alignment.
Thus causing shrinkage.

The solution was to reconfigure the linker script so that zip file bits
that get put into the executable at link-time, such as timezone data,
aren't officially part of the executable image, i.e. we don't want the
operating system to load that part.

The original decision to put the linked zip files into the .data section
was mostly made so that when the executable was run in its .com.dbg form
it would still have the zip entries be accessible, even though there was
tons of GNU debug data following the central directory. We're not going
to be able to do that. The .com executable should be the canonical
executable. We have really good tools for automatically attaching and
configuring GDB correctly with debug symbols even when the .com is run.
We'll have to rely on those in cases where zip embedding is used.

See #53
See #54
See #68
2021-02-27 18:16:59 -08:00
..
doc Fix Clang support 2021-02-06 00:29:09 -08:00
bench.h Initial import 2020-06-15 07:18:57 -07:00
bsf.h Add chibicc 2020-12-06 16:20:21 -08:00
bsr.h Add chibicc 2020-12-06 16:20:21 -08:00
bsrmax.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
bzero.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
cachesize.h Get Cosmopolitan into releasable state 2020-11-25 08:19:00 -08:00
cescapec.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
cmpsb.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
cmpsl.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
cmpsq.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
cmpsw.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
cmpub.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
cmpul.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
cmpuq.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
cmpuw.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
cpuid4.internal.h Get Cosmopolitan into releasable state 2020-11-25 08:19:00 -08:00
crc32-pclmul.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
crc32.h Fix Clang support 2021-02-06 00:29:09 -08:00
crc32init.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
div10int64.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
div100int64.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
div1000int64.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
div10000int64.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
div1000000int64.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
div1000000000int64.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
djbsort-avx2.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
environ.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
errno.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
errnolocation.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
explicit_bzero.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
fentry.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
ffs.h Auto-generate some documentation 2020-12-26 02:09:07 -08:00
ffs.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
ffsl.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
g_argv.S Improve signal handling and math 2021-02-25 18:33:33 -08:00
g_auxv.S Improve signal handling and math 2021-02-25 18:33:33 -08:00
gc.internal.h Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
gc.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
gclongjmp.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
hascharacter.internal.h Get Cosmopolitan into releasable state 2020-11-25 08:19:00 -08:00
identity.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
imapxlatab.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
kbase36.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
kcp437.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
kcpuids.h Auto-generate some documentation 2020-12-26 02:09:07 -08:00
kcpuids.S Support malloc() on bare metal 2021-02-24 00:53:24 -08:00
kcrc32ctab.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
khalfcache3.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
kompressor.h Initial import 2020-06-15 07:18:57 -07:00
kreversebits.S Change license 2020-12-27 17:18:44 -08:00
ksha256tab.S Add scouts honor escape hatch for source embedding 2020-06-15 19:01:28 -07:00
ksigsetempty.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
ksigsetfull.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
kstarttsc.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
ktolower.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
llog10.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
loadxmm.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
lolendian.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
longjmp.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
lz4.h Improve dead code elimination 2021-02-08 04:04:42 -08:00
lzcnt.h Initial import 2020-06-15 07:18:57 -07:00
lzcnt.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
lzcntl.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
macros.h Make improvements 2020-12-01 03:43:40 -08:00
macros.internal.inc Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
mcount.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
memcpy.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
memeqmask.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
memjmpinit.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
memmove.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
mempcpy.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
memrchr.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
memrchr16.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
memrchr32.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
memset.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
missingno.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
msr.h Initial import 2020-06-15 07:18:57 -07:00
nexgen32e.h Make more functions friendly to Address Sanitizer 2021-02-02 03:45:31 -08:00
nexgen32e.mk Make more functions friendly to Address Sanitizer 2021-02-02 03:45:31 -08:00
nt2sysv.h Get Cosmopolitan into releasable state 2020-11-25 08:19:00 -08:00
nt2sysv.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
pcmpstr.inc Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
program_invocation_name.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
rdtsc.h Initial import 2020-06-15 07:18:57 -07:00
rdtscp.h Get binaries closer to running without an o/s 2020-11-02 19:12:47 -08:00
rem10int64.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
rem100int64.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
rem1000int64.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
rem10000int64.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
rem1000000int64.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
rem1000000000int64.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
rldecode.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
savexmm.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
setjmp.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
slowcall.h Add x86_64-linux-gnu emulator 2020-08-25 04:43:42 -07:00
slowcall.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
stackframe.h Get address sanitizer mostly working 2020-09-03 05:44:37 -07:00
strcpyzbw.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
strcspn.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
strlen.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
strsak.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
strsak16.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
strsak32.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
strstr-sse42.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
strstr.inc Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
strstr16-sse42.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
tinydivsi.greg.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
tinystrlen.greg.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
tinystrlen.internal.h Get Cosmopolitan into releasable state 2020-11-25 08:19:00 -08:00
tinystrlen16.greg.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
tinystrncmp.ncabi.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
tinystrnlen.greg.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
tinystrnlen16.greg.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
tinywcslen.greg.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
tinywcsnlen.greg.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
trampoline.h Replace .pushsection directives (#30) 2021-01-10 13:36:31 -08:00
triplf.S Support malloc() on bare metal 2021-02-24 00:53:24 -08:00
tzcnt.h Initial import 2020-06-15 07:18:57 -07:00
tzcnt.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
tzcntl.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
uart.internal.h Add epoll and do more release readiness changes 2020-11-28 12:01:51 -08:00
vcls.S Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
vendor.internal.h Add UEFI support 2021-02-21 21:33:04 -08:00
vidya.internal.h Get Cosmopolitan into releasable state 2020-11-25 08:19:00 -08:00
wmemset.inc Change license 2020-12-27 17:18:44 -08:00
x86compiler.h Initial import 2020-06-15 07:18:57 -07:00
x86feature.h Add pseudoteletypewriter to emulator 2020-08-29 23:51:09 -07:00
x86info.h Improve dead code elimination 2021-02-08 04:04:42 -08:00
x87conf.inc Get codebase completely working with LLVM 2021-02-09 02:57:32 -08:00
zip.S Fix zip executables on MacOS 2021-02-27 18:16:59 -08:00