aboutsummaryrefslogtreecommitdiff
path: root/src/link/MachO/thunks.zig
AgeCommit message (Collapse)Author
2024-08-29compiler: avoid field/decl name conflictsmlugg
Most of the required renames here are net wins for readaibility, I'd say. The ones in `arch` are a little more verbose, but I think better. I didn't bother renaming the non-conflicting functions in `arch/arm/bits.zig` and `arch/aarch64/bits.zig`, since these backends are pretty bit-rotted anyway AIUI.
2024-08-22macho: emit local symbols for thunksJakub Konka
2024-07-22macho: run more things in parallelJakub Konka
2024-07-18macho: fix compile errorsJakub Konka
2024-07-18macho: migrate Relocation structJakub Konka
2024-04-22link/macho: introduce Atom extras for out-of-band dataJakub Konka
2024-04-20link/elf: implement string mergingJakub Konka
2024-03-08link: refactor common aarch64 helpersJakub Konka
2024-02-21link: introduce common set of aarch64 abstractionsJakub Konka
2024-02-03macho: migrate thunks to use new relative addressing mechanismJakub Konka
2024-01-24macho: sort sections; use Atom.Alignment for alignment; init segmentsJakub 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
2023-10-31std.builtin.Endian: make the tags lower caseAndrew Kelley
Let's take this breaking change opportunity to fix the style of this enum.
2023-10-31mem: fix ub in writeIntJacob Young
Use inline to vastly simplify the exposed API. This allows a comptime-known endian parameter to be propogated, making extra functions for a specific endianness completely unnecessary.
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: remove obsolete error.FailedToResolveRelocationTargetJakub Konka
2023-08-29macho: merge Zld state with MachO stateJakub Konka
2023-08-29macho: unify creating atomsJakub 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: use TableSection for GOT entries in zld driverJakub Konka
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-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-19all: zig fmt and rename "@XToY" to "@YFromX"Eric Joldasov
Signed-off-by: Eric Joldasov <bratishkaerik@getgoogleoff.me>
2023-06-17mem: rename align*Generic to mem.align*Motiejus Jakštys
Anecdote 1: The generic version is way more popular than the non-generic one in Zig codebase: git grep -w alignForward | wc -l 56 git grep -w alignForwardGeneric | wc -l 149 git grep -w alignBackward | wc -l 6 git grep -w alignBackwardGeneric | wc -l 15 Anecdote 2: In my project (turbonss) that does much arithmetic and alignment I exclusively use the Generic functions. Anecdote 3: we used only the Generic versions in the Macho Man's linker workshop.
2023-04-21macho: do not allocate atoms for stub entriesJakub Konka
2023-03-22macho+zld: refactor parsing of relocation targetJakub Konka
2023-02-18update std lib and compiler sources to new for loop syntaxAndrew Kelley
2023-01-20zld: parse, synthesise and emit unwind recordsJakub Konka
2022-10-22macho: some docsJakub Konka
2022-10-22macho: refactor dead code stripping conditionsJakub Konka
1. If an object file was not compiled with `MH_SUBSECTIONS_VIA_SYMBOLS` such a hand-written ASM on x86_64, treat the entire object file as not suitable for dead code stripping aka a GC root. 2. If there are non-extern relocs within a section, treat the entire section as a root, at least temporarily until we work out the exact conditions for marking the atoms live.
2022-10-22macho: upstream rewritten traditional linker, zldJakub Konka
kubkon/zld gitrev 5733ed87abe2f07e1330c3232a252e9defec638a