zld 0.0.3
A complete MachO driver rewrite + ELF x86_64 support
- MachO driver has been fully redesigned mainly so that we can easily plug it in into Zig much like we did with the ELF driver.
- This is the first tagged release of the ELF x86_64 driver.
- Thanks to @Luukdegram we also get some Wasm linker support π
Better MachO link times (on Apple Silicon)
Seems we have regressed in link times prior to the MachO rewrite. Below you will find a quick benchmark of linking Zig's stage4 binary. You can also see what Rui meant when he mentioned that Apple stepped up their game - Apple's stock linker crushed zld
before and after the rewrite and so it did with LLVM's LLD. That's good though - it's something we can strive for. The results are also good news for us since the rewrite is significantly faster than what we had before (zld_old
is based on 19ccd5c FWIW), and I haven't yet even started thinking about parallelising parsing input objects, etc., a trick that all three linkers currently employ (Apple's ld
, ld64.lld
and Rui's sold
linker).
$ hyperfine ./zld ./zld_old ./lld ./ld64
Benchmark 1: ./zld
Time (mean Β± Ο): 3.236 s Β± 0.014 s [User: 3.460 s, System: 0.750 s]
Range (min β¦ max): 3.219 s β¦ 3.269 s 10 runs
Benchmark 2: ./zld_old
Time (mean Β± Ο): 4.419 s Β± 0.011 s [User: 4.671 s, System: 0.761 s]
Range (min β¦ max): 4.398 s β¦ 4.430 s 10 runs
Benchmark 3: ./lld
Time (mean Β± Ο): 1.497 s Β± 0.019 s [User: 1.700 s, System: 0.308 s]
Range (min β¦ max): 1.457 s β¦ 1.529 s 10 runs
Benchmark 4: ./ld64
Time (mean Β± Ο): 627.0 ms Β± 7.2 ms [User: 2140.1 ms, System: 385.3 ms]
Range (min β¦ max): 617.8 ms β¦ 639.4 ms 10 runs
Summary
./ld64 ran
2.39 Β± 0.04 times faster than ./lld
5.16 Β± 0.06 times faster than ./zld
7.05 Β± 0.08 times faster than ./zld_old
The actual full linker invocation is as follows:
/Users/kubkon/dev/zld/zig-out/bin/ld64.zld -dynamic -platform_version macos 13.6.3 14.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk -headerpad_max_install_names /Users/kubkon/dev/zig/build/zigcpp/libzigcpp.a /Users/kubkon/opt/llvm17-release/lib/libclangFrontendTool.a /Users/kubkon/opt/llvm17-release/lib/libclangCodeGen.a /Users/kubkon/opt/llvm17-release/lib/libclangFrontend.a /Users/kubkon/opt/llvm17-release/lib/libclangDriver.a /Users/kubkon/opt/llvm17-release/lib/libclangSerialization.a /Users/kubkon/opt/llvm17-release/lib/libclangSema.a /Users/kubkon/opt/llvm17-release/lib/libclangStaticAnalyzerFrontend.a /Users/kubkon/opt/llvm17-release/lib/libclangStaticAnalyzerCheckers.a /Users/kubkon/opt/llvm17-release/lib/libclangStaticAnalyzerCore.a /Users/kubkon/opt/llvm17-release/lib/libclangAnalysis.a /Users/kubkon/opt/llvm17-release/lib/libclangASTMatchers.a /Users/kubkon/opt/llvm17-release/lib/libclangAST.a /Users/kubkon/opt/llvm17-release/lib/libclangParse.a /Users/kubkon/opt/llvm17-release/lib/libclangSema.a /Users/kubkon/opt/llvm17-release/lib/libclangBasic.a /Users/kubkon/opt/llvm17-release/lib/libclangEdit.a /Users/kubkon/opt/llvm17-release/lib/libclangLex.a /Users/kubkon/opt/llvm17-release/lib/libclangARCMigrate.a /Users/kubkon/opt/llvm17-release/lib/libclangRewriteFrontend.a /Users/kubkon/opt/llvm17-release/lib/libclangRewrite.a /Users/kubkon/opt/llvm17-release/lib/libclangCrossTU.a /Users/kubkon/opt/llvm17-release/lib/libclangIndex.a /Users/kubkon/opt/llvm17-release/lib/libclangToolingCore.a /Users/kubkon/opt/llvm17-release/lib/libclangExtractAPI.a /Users/kubkon/opt/llvm17-release/lib/libclangSupport.a /Users/kubkon/opt/llvm17-release/lib/liblldMinGW.a /Users/kubkon/opt/llvm17-release/lib/liblldELF.a /Users/kubkon/opt/llvm17-release/lib/liblldCOFF.a /Users/kubkon/opt/llvm17-release/lib/liblldWasm.a /Users/kubkon/opt/llvm17-release/lib/liblldMachO.a /Users/kubkon/opt/llvm17-release/lib/liblldCommon.a /Users/kubkon/opt/llvm17-release/lib/libLLVMWindowsManifest.a /Users/kubkon/opt/llvm17-release/lib/libLLVMXRay.a /Users/kubkon/opt/llvm17-release/lib/libLLVMLibDriver.a /Users/kubkon/opt/llvm17-release/lib/libLLVMDlltoolDriver.a /Users/kubkon/opt/llvm17-release/lib/libLLVMCoverage.a /Users/kubkon/opt/llvm17-release/lib/libLLVMLineEditor.a /Users/kubkon/opt/llvm17-release/lib/libLLVMXCoreDisassembler.a /Users/kubkon/opt/llvm17-release/lib/libLLVMXCoreCodeGen.a /Users/kubkon/opt/llvm17-release/lib/libLLVMXCoreDesc.a /Users/kubkon/opt/llvm17-release/lib/libLLVMXCoreInfo.a /Users/kubkon/opt/llvm17-release/lib/libLLVMX86TargetMCA.a /Users/kubkon/opt/llvm17-release/lib/libLLVMX86Disassembler.a /Users/kubkon/opt/llvm17-release/lib/libLLVMX86AsmParser.a /Users/kubkon/opt/llvm17-release/lib/libLLVMX86CodeGen.a /Users/kubkon/opt/llvm17-release/lib/libLLVMX86Desc.a /Users/kubkon/opt/llvm17-release/lib/libLLVMX86Info.a /Users/kubkon/opt/llvm17-release/lib/libLLVMWebAssemblyDisassembler.a /Users/kubkon/opt/llvm17-release/lib/libLLVMWebAssemblyAsmParser.a /Users/kubkon/opt/llvm17-release/lib/libLLVMWebAssemblyCodeGen.a /Users/kubkon/opt/llvm17-release/lib/libLLVMWebAssemblyUtils.a /Users/kubkon/opt/llvm17-release/lib/libLLVMWebAssemblyDesc.a /Users/kubkon/opt/llvm17-release/lib/libLLVMWebAssemblyInfo.a /Users/kubkon/opt/llvm17-release/lib/libLLVMVEDisassembler.a /Users/kubkon/opt/llvm17-release/lib/libLLVMVEAsmParser.a /Users/kubkon/opt/llvm17-release/lib/libLLVMVECodeGen.a /Users/kubkon/opt/llvm17-release/lib/libLLVMVEDesc.a /Users/kubkon/opt/llvm17-release/lib/libLLVMVEInfo.a /Users/kubkon/opt/llvm17-release/lib/libLLVMSystemZDisassembler.a /Users/kubkon/opt/llvm17-release/lib/libLLVMSystemZAsmParser.a /Users/kubkon/opt/llvm17-release/lib/libLLVMSystemZCodeGen.a /Users/kubkon/opt/llvm17-release/lib/libLLVMSystemZDesc.a /Users/kubkon/opt/llvm17-release/lib/libLLVMSystemZInfo.a /Users/kubkon/opt/llvm17-release/lib/libLLVMSparcDisassembler.a /Users/kubkon/opt/llvm17-release/lib/libLLVMSparcAsmParser.a /Users/kubkon/opt/llvm17-release/lib/libLLVMSparcCodeGen.a /Users/kubkon/opt/llvm17-release/lib/libLLVMSparcDesc.a /Users/kubkon/opt/llvm17-release/lib/libLLVMSparcInfo.a /Users/kubkon/opt/llvm17-release/lib/libLLVMRISCVTargetMCA.a /Users/kubkon/opt/llvm17-release/lib/libLLVMRISCVDisassembler.a /Users/kubkon/opt/llvm17-release/lib/libLLVMRISCVAsmParser.a /Users/kubkon/opt/llvm17-release/lib/libLLVMRISCVCodeGen.a /Users/kubkon/opt/llvm17-release/lib/libLLVMRISCVDesc.a /Users/kubkon/opt/llvm17-release/lib/libLLVMRISCVInfo.a /Users/kubkon/opt/llvm17-release/lib/libLLVMPowerPCDisassembler.a /Users/kubkon/opt/llvm17-release/lib/libLLVMPowerPCAsmParser.a /Users/kubkon/opt/llvm17-release/lib/libLLVMPowerPCCodeGen.a /Users/kubkon/opt/llvm17-release/lib/libLLVMPowerPCDesc.a /Users/kubkon/opt/llvm17-release/lib/libLLVMPowerPCInfo.a /Users/kubkon/opt/llvm17-release/lib/libLLVMNVPTXCodeGen.a /Users/kubkon/opt/llvm17-release/lib/libLLVMNVPTXDesc.a /Users/kubkon/opt/llvm17-release/lib/libLLVMNVPTXInfo.a /Users/kubkon/opt/llvm17-release/lib/libLLVMMSP430Disassembler.a /Users/kubkon/opt/llvm17-release/lib/libLLVMMSP430AsmParser.a /Users/kubkon/opt/llvm17-release/lib/libLLVMMSP430CodeGen.a /Users/kubkon/opt/llvm17-release/lib/libLLVMMSP430Desc.a /Users/kubkon/opt/llvm17-release/lib/libLLVMMSP430Info.a /Users/kubkon/opt/llvm17-release/lib/libLLVMMipsDisassembler.a /Users/kubkon/opt/llvm17-release/lib/libLLVMMipsAsmParser.a /Users/kubkon/opt/llvm17-release/lib/libLLVMMipsCodeGen.a /Users/kubkon/opt/llvm17-release/lib/libLLVMMipsDesc.a /Users/kubkon/opt/llvm17-release/lib/libLLVMMipsInfo.a /Users/kubkon/opt/llvm17-release/lib/libLLVMLoongArchDisassembler.a /Users/kubkon/opt/llvm17-release/lib/libLLVMLoongArchAsmParser.a /Users/kubkon/opt/llvm17-release/lib/libLLVMLoongArchCodeGen.a /Users/kubkon/opt/llvm17-release/lib/libLLVMLoongArchDesc.a /Users/kubkon/opt/llvm17-release/lib/libLLVMLoongArchInfo.a /Users/kubkon/opt/llvm17-release/lib/libLLVMLanaiDisassembler.a /Users/kubkon/opt/llvm17-release/lib/libLLVMLanaiCodeGen.a /Users/kubkon/opt/llvm17-release/lib/libLLVMLanaiAsmParser.a /Users/kubkon/opt/llvm17-release/lib/libLLVMLanaiDesc.a /Users/kubkon/opt/llvm17-release/lib/libLLVMLanaiInfo.a /Users/kubkon/opt/llvm17-release/lib/libLLVMHexagonDisassembler.a /Users/kubkon/opt/llvm17-release/lib/libLLVMHexagonCodeGen.a /Users/kubkon/opt/llvm17-release/lib/libLLVMHexagonAsmParser.a /Users/kubkon/opt/llvm17-release/lib/libLLVMHexagonDesc.a /Users/kubkon/opt/llvm17-release/lib/libLLVMHexagonInfo.a /Users/kubkon/opt/llvm17-release/lib/libLLVMBPFDisassembler.a /Users/kubkon/opt/llvm17-release/lib/libLLVMBPFAsmParser.a /Users/kubkon/opt/llvm17-release/lib/libLLVMBPFCodeGen.a /Users/kubkon/opt/llvm17-release/lib/libLLVMBPFDesc.a /Users/kubkon/opt/llvm17-release/lib/libLLVMBPFInfo.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAVRDisassembler.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAVRAsmParser.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAVRCodeGen.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAVRDesc.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAVRInfo.a /Users/kubkon/opt/llvm17-release/lib/libLLVMARMDisassembler.a /Users/kubkon/opt/llvm17-release/lib/libLLVMARMAsmParser.a /Users/kubkon/opt/llvm17-release/lib/libLLVMARMCodeGen.a /Users/kubkon/opt/llvm17-release/lib/libLLVMARMDesc.a /Users/kubkon/opt/llvm17-release/lib/libLLVMARMUtils.a /Users/kubkon/opt/llvm17-release/lib/libLLVMARMInfo.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAMDGPUTargetMCA.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAMDGPUDisassembler.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAMDGPUAsmParser.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAMDGPUCodeGen.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAMDGPUDesc.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAMDGPUUtils.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAMDGPUInfo.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAArch64Disassembler.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAArch64AsmParser.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAArch64CodeGen.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAArch64Desc.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAArch64Utils.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAArch64Info.a /Users/kubkon/opt/llvm17-release/lib/libLLVMOrcJIT.a /Users/kubkon/opt/llvm17-release/lib/libLLVMWindowsDriver.a /Users/kubkon/opt/llvm17-release/lib/libLLVMMCJIT.a /Users/kubkon/opt/llvm17-release/lib/libLLVMJITLink.a /Users/kubkon/opt/llvm17-release/lib/libLLVMInterpreter.a /Users/kubkon/opt/llvm17-release/lib/libLLVMExecutionEngine.a /Users/kubkon/opt/llvm17-release/lib/libLLVMRuntimeDyld.a /Users/kubkon/opt/llvm17-release/lib/libLLVMOrcTargetProcess.a /Users/kubkon/opt/llvm17-release/lib/libLLVMOrcShared.a /Users/kubkon/opt/llvm17-release/lib/libLLVMDWP.a /Users/kubkon/opt/llvm17-release/lib/libLLVMDebugInfoLogicalView.a /Users/kubkon/opt/llvm17-release/lib/libLLVMDebugInfoGSYM.a /Users/kubkon/opt/llvm17-release/lib/libLLVMOption.a /Users/kubkon/opt/llvm17-release/lib/libLLVMObjectYAML.a /Users/kubkon/opt/llvm17-release/lib/libLLVMObjCopy.a /Users/kubkon/opt/llvm17-release/lib/libLLVMMCA.a /Users/kubkon/opt/llvm17-release/lib/libLLVMMCDisassembler.a /Users/kubkon/opt/llvm17-release/lib/libLLVMLTO.a /Users/kubkon/opt/llvm17-release/lib/libLLVMPasses.a /Users/kubkon/opt/llvm17-release/lib/libLLVMCFGuard.a /Users/kubkon/opt/llvm17-release/lib/libLLVMCoroutines.a /Users/kubkon/opt/llvm17-release/lib/libLLVMipo.a /Users/kubkon/opt/llvm17-release/lib/libLLVMVectorize.a /Users/kubkon/opt/llvm17-release/lib/libLLVMLinker.a /Users/kubkon/opt/llvm17-release/lib/libLLVMInstrumentation.a /Users/kubkon/opt/llvm17-release/lib/libLLVMFrontendOpenMP.a /Users/kubkon/opt/llvm17-release/lib/libLLVMFrontendOpenACC.a /Users/kubkon/opt/llvm17-release/lib/libLLVMFrontendHLSL.a /Users/kubkon/opt/llvm17-release/lib/libLLVMExtensions.a /Users/kubkon/opt/llvm17-release/lib/libLLVMDWARFLinkerParallel.a /Users/kubkon/opt/llvm17-release/lib/libLLVMDWARFLinker.a /Users/kubkon/opt/llvm17-release/lib/libLLVMGlobalISel.a /Users/kubkon/opt/llvm17-release/lib/libLLVMMIRParser.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAsmPrinter.a /Users/kubkon/opt/llvm17-release/lib/libLLVMSelectionDAG.a /Users/kubkon/opt/llvm17-release/lib/libLLVMCodeGen.a /Users/kubkon/opt/llvm17-release/lib/libLLVMTarget.a /Users/kubkon/opt/llvm17-release/lib/libLLVMObjCARCOpts.a /Users/kubkon/opt/llvm17-release/lib/libLLVMCodeGenTypes.a /Users/kubkon/opt/llvm17-release/lib/libLLVMIRPrinter.a /Users/kubkon/opt/llvm17-release/lib/libLLVMInterfaceStub.a /Users/kubkon/opt/llvm17-release/lib/libLLVMFileCheck.a /Users/kubkon/opt/llvm17-release/lib/libLLVMFuzzMutate.a /Users/kubkon/opt/llvm17-release/lib/libLLVMScalarOpts.a /Users/kubkon/opt/llvm17-release/lib/libLLVMInstCombine.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAggressiveInstCombine.a /Users/kubkon/opt/llvm17-release/lib/libLLVMTransformUtils.a /Users/kubkon/opt/llvm17-release/lib/libLLVMBitWriter.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAnalysis.a /Users/kubkon/opt/llvm17-release/lib/libLLVMProfileData.a /Users/kubkon/opt/llvm17-release/lib/libLLVMSymbolize.a /Users/kubkon/opt/llvm17-release/lib/libLLVMDebugInfoBTF.a /Users/kubkon/opt/llvm17-release/lib/libLLVMDebugInfoPDB.a /Users/kubkon/opt/llvm17-release/lib/libLLVMDebugInfoMSF.a /Users/kubkon/opt/llvm17-release/lib/libLLVMDebugInfoDWARF.a /Users/kubkon/opt/llvm17-release/lib/libLLVMObject.a /Users/kubkon/opt/llvm17-release/lib/libLLVMTextAPI.a /Users/kubkon/opt/llvm17-release/lib/libLLVMMCParser.a /Users/kubkon/opt/llvm17-release/lib/libLLVMIRReader.a /Users/kubkon/opt/llvm17-release/lib/libLLVMAsmParser.a /Users/kubkon/opt/llvm17-release/lib/libLLVMMC.a /Users/kubkon/opt/llvm17-release/lib/libLLVMDebugInfoCodeView.a /Users/kubkon/opt/llvm17-release/lib/libLLVMBitReader.a /Users/kubkon/opt/llvm17-release/lib/libLLVMFuzzerCLI.a /Users/kubkon/opt/llvm17-release/lib/libLLVMCore.a /Users/kubkon/opt/llvm17-release/lib/libLLVMRemarks.a /Users/kubkon/opt/llvm17-release/lib/libLLVMBitstreamReader.a /Users/kubkon/opt/llvm17-release/lib/libLLVMBinaryFormat.a /Users/kubkon/opt/llvm17-release/lib/libLLVMTargetParser.a /Users/kubkon/opt/llvm17-release/lib/libLLVMTableGen.a /Users/kubkon/opt/llvm17-release/lib/libLLVMSupport.a /Users/kubkon/opt/llvm17-release/lib/libLLVMDemangle.a /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk/usr/lib/libz.tbd /opt/homebrew/lib/libzstd.a /opt/homebrew/opt/ncurses/lib/libcurses.a /Users/kubkon/dev/zig/zig-cache/o/788cf4223c49f608e5802528f1c13b38/zig.o /Users/kubkon/.cache/zig/o/c1f114e8bf241e222694edf5fdaf1fc1/libcompiler_rt.a /Users/kubkon/.cache/zig/o/a2e3f9b077377eacfcc4074f52b3b03b/libc++abi.a /Users/kubkon/.cache/zig/o/e11d8307ad378132166a93b1ce4b1c1d/libc++.a -o zig_zld -lSystem -L/Users/kubkon/opt/llvm17-release/lib -L/Users/kubkon/opt/llvm17-release/lib
What's Changed
- Add Tracy integration and fix performance regression in MachO x86_64 by @kubkon in #13
- Upstream zwld by @Luukdegram in #14
- macho: skip atomless synthetic globals in dead_strip by @kubkon in #15
- wasm: check-in Options.zig file by @Luukdegram in #17
- Various wasm-linker improvements by @Luukdegram in #18
- bump CI dependency versions by @Luukdegram in #19
- misc fixes by @Luukdegram in #20
- macho: backport strict layout adherence from Zig by @kubkon in #21
- support --export and --export-dynamic by @Luukdegram in #22
- allow exporting function table by @Luukdegram in #23
- wasm: export data using correct virtual address by @Luukdegram in #24
- Implement ctors for WebAssembly by @Luukdegram in #25
- Support linking with WASI-libc by @Luukdegram in #27
- wasm: implement
__heap_end
by @Luukdegram in #28 - macho: add support for parsing and synthesising unwind records by @kubkon in #29
- update build.zig to Zig master by @Luukdegram in #30
- macho: sync with zig master by @kubkon in #31
- macho: sync with zig by @kubkon in #33
- wasm: Implement shared-memory and TLS by @Luukdegram in #32
- update to latest master build of Zig by @Luukdegram in #35
- wasm: refactor virtual addresses by @Luukdegram in #36
- Update to latest Zig master by @Luukdegram in #37
- Sync macho fixes for Go; actually run tests by @kubkon in #38
- elf: auto-infer target CPU architecture by @kubkon in #39
- macho: handle cases where entrypoint in an archive or dylib by @kubkon in #40
- Update build script to use latest Zig by @kubkon in #41
- zld: update zig-dis-x86_64 dependency by @kubkon in #42
- elf: a complete rewrite by @kubkon in #43
- test: bundle libSystem.tbd for cross-tests by @kubkon in #45
- Refactor Options parsing and introduce dedicated warning/error reporting tool by @kubkon in #46
- elf: minimal gcc compatibility by @kubkon in #47
- elf: handle --strip-debug and --strip-all flags by @kubkon in #48
- elf: dynamic linking - first (baby) steps! by @kubkon in #49
- elf: add handling of local static TLS by @kubkon in #50
- elf: simplify acquiring a handle to a File by @kubkon in #51
- elf: reorg and cleanup by @kubkon in #52
- elf: clean up "path" naming conundrum + dedup shared object by their SO name by @kubkon in #53
- elf: add prelim support for C++ linking by @kubkon in #54
- elf: sort init/fini/preinit entries by @kubkon in #55
- elf: more static TLS + misc fixes and improvements by @kubkon in #56
- elf: handle GNU symbol versioning for executables by @kubkon in #57
- elf: link Zig stage3 correctly! by @kubkon in #58
- elf: implement parsing and emitting DWARF CFI (.eh_frame) by @kubkon in #59
- macho: hash the entire file contents for UUID but calc in parallel by @kubkon in #60
- macho: add fixes to __eh_frame parsing emitted by Nix compiler by @kubkon in #61
- elf: support position-independent executables by @kubkon in #62
- Some ELF DSO gen support, but mostly a new test harness by @kubkon in #64
- elf: add tests requiring -static flag and implement missing functionality for static glibs by @kubkon in #65
- elf: add support for -static -pie by @kubkon in #66
- wasm: Finish TLS & shared-memory implementation by @Luukdegram in #68
- elf: let's finish off TLS implementation by @kubkon in #67
- elf: final stretch before upstreaming by @kubkon in #69
- elf: weed out bugs when linking against musl-libc by @kubkon in #70
- macho: fix matching target triples for TBDv3 lib stubs by @kubkon in #71
- macho: unwind info fixes for objects without MH_SUBSECTIONS_VIA_SYMBOLS by @kubkon in #72
- macho: convert all log.err sites to Zld.ErrorMsg by @kubkon in #73
- wasm - implement garbage collection by @Luukdegram in #74
- macho: tie FDEs and unwind records to all symbol aliases by @kubkon in #76
- wasm: improve linker performance by @Luukdegram in #77
- macho: improve platform and SDK detection by @kubkon in #75
- wasm: parse atoms lazily by @Luukdegram in #78
- elf: sync with Zig master by @kubkon in #80
- macho: reuse elf's ArgParser for parsing cmdline args by @kubkon in #81
- update to latest zig by @kubkon in #82
- Mach-O rewrite, part 1: x86_64 by @kubkon in #83
- elf: refactor various things by @kubkon in #84
- macho: misc fixes, link duckdb project correctly by @kubkon in #85
- macho: actually handle re-exports and dylib hoisting by @kubkon in #86
- macho: handle -flat_namespace by @kubkon in #87
- macho: more flat namespace tests and update to new API by @kubkon in #88
- macho: handle -ObjC, implement synthesising of objc selector stubs, misc all-around improvements by @kubkon in #89
- Better error handling by @kubkon in #90
- macho: pass all non-x86_64 tests on aarch64 by @kubkon in #91
- macho: more arm64 tests by @kubkon in #92
- macho: implement range extension thunks by @kubkon in #93
- macho: add more tracy hooks and speed up
findAtomInSection
function by @kubkon in #94
New Contributors
- @Luukdegram made their first contribution in #14
Full Changelog: v0.0.2...v0.0.3