aboutsummaryrefslogtreecommitdiff
path: root/src/link
AgeCommit message (Collapse)Author
2024-08-21elf: fixes after rebaseJakub Konka
2024-08-21elf: allow for concatenating atoms to merge sectionsJakub Konka
2024-08-21elf: remove obsolete call to Dwarf.resolveRelocsJakub Konka
2024-08-21elf: fix emitting cross-section relocs for .debug* sectionsJakub Konka
2024-08-21elf: emit DTPOFF32/DTPOFF64 relocation for .debug* sectionsJakub Konka
2024-08-21elf: parse and emit Elf relocs for cross section refs for .debug* sectionsJakub Konka
2024-08-21elf: emit .rela.debug* sections for relocatable if requiredJakub Konka
2024-08-21elf: start unraveling Dwarf relocs into Elf relocsJakub Konka
2024-08-21elf: populate debug atoms on the linker side after Dwarf.flushModuleJakub Konka
2024-08-21elf: create section symbols and atoms per each ZigObject debug sectionJakub Konka
2024-08-21elf: remove unused codeJakub Konka
2024-08-20Dwarf: fix issues with inline call sitesJacob Young
2024-08-20Dwarf: emit info about inline call sitesJacob Young
2024-08-20Dwarf: delete incorrect logic that also has the possibility of crashingJacob Young
2024-08-19replace Compilation.Emit with std.Build.Cache.PathRobin Voetter
This type is exactly the same as std.Build.Cache.Path, except for one function which is not used anymore. Therefore we can replace it without consequences.
2024-08-18Zir: add instructions to fetch std.builtin typesmlugg
This replaces the constant `Zir.Inst.Ref` tags (and the analagous tags in `Air.Inst.Ref`, `InternPool.Index`) referring to types in `std.builtin` with a ZIR instruction `extended(builtin_type(...))` which instructs Sema to fetch such a type, effectively as if it were a shorthand for the ZIR for `@import("std").builtin.xyz`. Previously, this was achieved through constant tags in `Ref`. The analagous `InternPool` indices began as `simple_type` values, and were later rewritten to the correct type information. This system was kind of brittle, and more importantly, isn't compatible with incremental compilation of std, since incremental compilation relies on the ability to recreate types at different indices when they change. Replacing the old system with this instruction slightly increases the size of ZIR, but it simplifies logic and allows incremental compilation to work correctly on the standard library. This shouldn't have a significant impact on ZIR size or compiler performance, but I will take measurements in the PR to confirm this.
2024-08-17compiler: merge conflicts and typosmlugg
2024-08-17Merge pull request #21111 from jacobly0/self-dwarfJacob Young
Dwarf: debug info progress
2024-08-17Dwarf: fix and test error unionsJacob Young
2024-08-17Dwarf: fix and test allowzero pointersJacob Young
2024-08-17macho: update codegen and linker to distributed jump table approachJakub Konka
2024-08-16Coff: fix missing error lazy symbolsJacob Young
2024-08-16Dwarf: incremental also needs `end_sequence`Jacob Young
The spec says that addresses can only increase within a sequence, so every decl must be a separate sequence since they are not sorted.
2024-08-16Dwarf: fix cross-module inline function line infoJacob Young
2024-08-16Dwarf: rework self-hosted debug info from scratchJacob Young
This is in preparation for incremental and actually being able to debug executables built by the x86_64 backend.
2024-08-16Merge pull request #21065 from ziglang/elf-zig-gotJakub Konka
elf: replace .got.zig with a zig jump table
2024-08-15std.Target: Pull toCoffMachine()/toElfMachine() up from Arch to Target.Alex Rønne Petersen
This enables them to give more correct results. Contributes to #20771.
2024-08-15std.coff: Remove MachineType.fromTargetCpuArch().Alex Rønne Petersen
This does the same thing as std.Target.Cpu.Arch.toCoffMachine(). Just use that.
2024-08-15elf: fix GOT32 reloc resolution logicJakub Konka
2024-08-15riscv: do not emit GOT relocations for special linker symbolsJakub Konka
2024-08-15elf: introduce Symbol.flags.is_extern_ptr for refs potentially needing GOTJakub Konka
2024-08-15elf: check for relocs before deciding on shndx in getNavShdrIndexJakub Konka
2024-08-14elf: re-use old atom slot for a trampoline to that atomJakub Konka
This is the initial implementation of Jacob Young's idea of re-using old function slots as trampolines for new function's location. This way the trampoline is guaranteed to be aligned to the function's alignment. The only edge case is if an incremental update further overaligns the function in which case we skip/delete the trampoline and re-evaluate all references.
2024-08-13fix compile errors in other codegen backendsJakub Konka
2024-08-13elf: do not emit zig jump table in relocatablesJakub Konka
2024-08-13elf: only apply zig jump table indirection to function calls (PLT32)Jakub Konka
2024-08-13elf: commit non-indirected symbol address to symtabJakub Konka
2024-08-13elf: pretty print alingment when pretty printing atomsJakub Konka
2024-08-13elf: make .text.zig bigger now that jump table is part of itJakub Konka
2024-08-13elf: fix circular dep loop in zig jump tableJakub Konka
2024-08-13elf: make zig jump table indirection implicit via Symbol.addressJakub Konka
2024-08-13x86_64: emit call rel32 for near calls with linker relocJakub Konka
2024-08-13elf: rename OffsetTable to JumpTableJakub Konka
2024-08-13elf: add poorman's reporting tool for unallocated NAVs/UAVsJakub Konka
2024-08-13x86_64+elf: fix jump table indirection for functionsJakub Konka
2024-08-13elf: emit a jump table in place of offset table for functionsJakub Konka
2024-08-13elf: nuke ZigGotSection from existenceJakub Konka
2024-08-13elf: relax R_X86_64_32 into jump table indirection if zig_offset_table setJakub Konka
2024-08-13elf: indirect via offset table in the linker away from backendJakub Konka
2024-08-13elf: dirty offset table entry on moving Atom in off/addr spaceJakub Konka