aboutsummaryrefslogtreecommitdiff
path: root/src/link/MachO/Object.zig
AgeCommit message (Collapse)Author
2024-02-07macho: parse input object files specifically for incl in archiveJakub Konka
2024-02-07macho: emit an archiveJakub Konka
2024-02-07macho: populate output archive symtabJakub Konka
2024-02-06macho: store open file descriptors in a global arrayJakub Konka
2024-01-30macho: improve weak-ref symbols handlingJakub Konka
2024-01-29macho: re-enable dSYM but don't write anything to it yetJakub Konka
2024-01-28macho: fix 32bit buildsJakub Konka
2024-01-28macho: do not allocate input files in fullJakub Konka
2024-01-24macho: exclude symbols from empty sections when parsing unwind infoJakub Konka
2024-01-24macho: synthesise unwind records from __eh_frame even if no __compact_unwindJakub Konka
2024-01-24macho: fix 32bit compilation issuesJakub Konka
2024-01-24macho: do not enforce platform check for nowJakub Konka
2024-01-24macho: fix symbol index dereference in codegen wrt ZigObjectJakub Konka
This is incredibly confusing and I really need to simplify it. Elf also possesses this shortcoming so once I get Coff up to speed it should hopefully become clear on how to refactor this.
2024-01-24macho: create Atom for Decl in ZigObjectJakub Konka
2024-01-24macho: split symbol.flags.got into needs_got and has_gotJakub Konka
2024-01-24macho: introduce ZigObjectJakub Konka
2024-01-24macho: report duplicate symbolsJakub Konka
2024-01-24macho: write to fileJakub Konka
2024-01-24macho: sort sections; use Atom.Alignment for alignment; init segmentsJakub Konka
2024-01-24macho: resolve symbols and mark files liveJakub Konka
2024-01-24macho: parse archivesJakub Konka
2024-01-24macho: create scaffolding for parsing different input objectsJakub Konka
2024-01-24macho: parse an input object file!Jakub Konka
2024-01-24macho: get the ball rolling!Jakub Konka
2024-01-24macho: copy over new implementation sources from zldJakub Konka
2024-01-01fix remaining compile errors except oneAndrew Kelley
2024-01-01linker: update target referencesAndrew Kelley
2023-11-17std.macho: fix LoadCommandIterator to work with underaligned dataJakub Konka
2023-09-21compiler: move struct types into InternPool properAndrew Kelley
Structs were previously using `SegmentedList` to be given indexes, but were not actually backed by the InternPool arrays. After this, the only remaining uses of `SegmentedList` in the compiler are `Module.Decl` and `Module.Namespace`. Once those last two are migrated to become backed by InternPool arrays as well, we can introduce state serialization via writing these arrays to disk all at once. Unfortunately there are a lot of source code locations that touch the struct type API, so this commit is still work-in-progress. Once I get it compiling and passing the test suite, I can provide some interesting data points such as how it affected the InternPool memory size and performance comparison against master branch. I also couldn't resist migrating over a bunch of alignment API over to use the log2 Alignment type rather than a mismash of u32 and u64 byte units with 0 meaning something implicitly different and special at every location. Turns out you can do all the math you need directly on the log2 representation of alignments.
2023-08-30macho: report basic __eh_frame problems as errorsJakub Konka
2023-08-29macho: handle mismatched and missing platform errorsJakub Konka
2023-08-29macho: parse platform info from each object file into Platform structJakub Konka
2023-08-29macho: merge Zld state with MachO stateJakub Konka
2023-08-29macho: save indexes to all sections of interestJakub Konka
2023-08-29macho: unify creating atomsJakub Konka
2023-08-29macho: move initSection into MachO from ZldJakub Konka
2023-08-29macho: move getOutputSection into AtomJakub Konka
2023-08-29macho: use TableSection for stub entries in zld driverJakub Konka
Write thunks separately from other atoms - this can still be improved by not using atoms at all, but one thing at a time.
2023-08-29macho: unify Atom concept between driversJakub Konka
2023-08-29macho: unify Section concept across driversJakub Konka
2023-08-29macho: unify concept of SymbolWithLoc across driversJakub Konka
2023-08-29macho: simplify input file parsing for both driversJakub Konka
2023-08-16macho: tie FDEs and unwind records to all symbol aliasesJakub Konka
This is in particular very important to the Zig language which allows exporting the same symbol under different names. For instance, it is possible to have a case such that: ``` ... 4258 T _foo 4258 T _bar ... ``` In this case we need to keep track of both symbol names when resolving FDEs and unwind records.
2023-08-02macho: track unwind/dwarf cfi records by symbol rather than atomJakub Konka
This solves the nuance case of compiling hand-crafted assembly files which do not feature `MH_SUBSECTIONS_VIA_SYMBOLS` flag resulting in input `Atom`s encompassing multiple symbols each with unique unwind information.
2023-06-25macho: add fixes to __eh_frame parsing emitted by Nix C++ compilerJakub Konka
2023-06-24all: migrate code to new cast builtin syntaxmlugg
Most of this migration was performed automatically with `zig fmt`. There were a few exceptions which I had to manually fix: * `@alignCast` and `@addrSpaceCast` cannot be automatically rewritten * `@truncate`'s fixup is incorrect for vectors * Test cases are not formatted, and their error locations change
2023-06-16migration: std.math.{min, min3, max, max3} -> `@min` & `@max`r00ster91
2023-05-23std.sort: add pdqsort and heapsortAli Chraghi
2023-04-28update codebase to use `@memset` and `@memcpy`Andrew Kelley
2023-03-22macho+zld: make sure we populate source section index lookup if no undefsJakub Konka