aboutsummaryrefslogtreecommitdiff
path: root/src/link/Elf/Object.zig
AgeCommit message (Collapse)Author
2024-01-01fix remaining compile errors except oneAndrew Kelley
2024-01-01linker: fix some allocator referencesAndrew Kelley
2024-01-01compiler: miscellaneous branch progressAndrew Kelley
implement builtin.zig file population for all modules rather than assuming there is only one global builtin.zig module. move some fields from link.File to Compilation move some fields from Module to Compilation compute debug_format in global Compilation config resolution wire up C compilation to the concept of owner modules make whole cache mode call link.File.createEmpty() instead of link.File.open()
2024-01-01linkers: update references to "options" fieldAndrew Kelley
2024-01-01linker: update target referencesAndrew Kelley
2023-12-05elf: exit early with an error when parsing or init failedJakub Konka
2023-12-05elf: upcast e_shnum to u64 to check for valid rangesJakub Konka
2023-12-05elf: re-instate basic error reporting for LD script parserJakub Konka
2023-12-05elf: do not write ELF header if there were errorsJakub Konka
2023-12-05elf: report error at the point where it is happeningJakub Konka
2023-11-15elf: we were writing too many symbols in the symtabJakub Konka
2023-11-09elf: add SHF_INFO_LINK flag to any emitted SHT_RELA sectionJakub Konka
2023-11-09elf: init output COMDAT group sectionsJakub Konka
2023-11-09elf: correctly format output .eh_frame when emitting relocatableJakub Konka
2023-11-08elf: claim unresolved dangling symbols as undef externs in -r modeJakub Konka
2023-11-08elf: reference .rela sections via output section indexJakub Konka
2023-11-07elf: actually track output symtab index of symbolsJakub Konka
2023-11-07elf: create link between .rela and output sectionJakub Konka
2023-11-07elf: update .rela section sizesJakub Konka
2023-11-07elf: generate section symbols when writing symtabJakub Konka
2023-11-07elf: create skeleton of required changes for supporting -r modeJakub Konka
2023-11-05elf: hook up saving object files in an archiveJakub Konka
2023-11-05elf: add hooks for archiving ObjectsJakub Konka
2023-11-05elf: init objects after parsing themJakub Konka
2023-11-04elf: redo strings management in the linkerJakub Konka
* atom names - are stored locally and pulled from defining object's strtab * local symbols - same * global symbols - in principle, we could store them locally, but for better debugging experience - when things go wrong - we store the offsets in a global strtab used by the symbol resolver
2023-10-24elf: improve parsing of ld scripts and actually test linking against themJakub Konka
2023-10-18elf: parse GNU ld script as system lib indirectionJakub Konka
2023-10-16elf: fix 32bit buildJakub Konka
2023-10-16codegen+elf: check if extern is a variable refJakub Konka
2023-10-16elf: make init/fini sorting deterministicJakub Konka
2023-10-16elf: hook up common symbols handlerJakub Konka
2023-10-16elf: fix synthetic section handling and actually parse DSOsJakub Konka
2023-10-16elf: fix COMDAT deduping logicJakub Konka
2023-10-16elf: add more prepwork for linking c++ objectsJakub Konka
2023-10-16elf: handle .eh_frame and non-alloc sectionsJakub Konka
2023-10-16elf: refactor object.shdrContents to never error outJakub Konka
2023-10-16elf: get hello-world with LLVM in Zig workingJakub Konka
2023-10-16elf: port zld's allocation mechanismJakub Konka
2023-10-16elf: update section sizes accumulated from objectsJakub Konka
2023-10-16elf: initialize output sections from input objects in a separate stepJakub Konka
2023-09-28elf: move logic for extracing atom's code into input filesJakub Konka
2023-09-28elf: report fatal linker error for unhandled relocation typesJakub Konka
2023-09-27elf: allow expanding segments in virtual memoryJakub Konka
2023-09-26elf: dynamically allocate remaining alloc sections (and segments)Jakub Konka
2023-09-23elf: improve decl-to-section mapping logicJakub 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-09-13elf: parse archivesJakub Konka
2023-09-13elf: add u64 to usize casts where requiredJakub Konka
2023-09-12elf: clean up and unify symbol ref handling in relocsJakub Konka
Also, this lets us re-enable proper undefined symbols tracking.
2023-09-12elf: resolve and write objects to fileJakub Konka