Commit Graph
34 Commits
Author SHA1 Message Date
Nikita Smith 17058e71bf remove empty nodes 2025-09-22 10:06:20 -07:00
Nikita Smith 630c3b42a7 do lightweight import gathering while resolving links 2025-09-17 15:21:37 -07:00
Nikita Smith 0b5dd92a87 minor tweaks 2025-09-17 15:21:37 -07:00
Nikita Smith 7095a8cd6e fix bug where new object tracking failed, causing certain objs to be
skipped during the symbol table input step
2025-09-16 10:31:01 -07:00
Nikita Smith 5aff575feb discard empty symbol nodes 2025-09-16 10:31:01 -07:00
Nikita Smith c47b35f635 update link symbol set logic to replace import address symbols with jump
thunk symbols
2025-09-16 10:31:01 -07:00
Nikita Smith ee3832ea3b parallel for lib symbol search 2025-09-08 16:07:31 -07:00
Nikita Smith fb46d0bba4 sort symbol names in first member header 2025-09-08 16:07:31 -07:00
Nikita Smith 00536f7ea8 rewrite set linked symbol logic to respect declaration order in obj symbol table 2025-09-08 16:07:31 -07:00
Nikita Smith 6a3d7e65f3 remove year from the copyright 2025-09-05 15:19:31 -07:00
Nikita Smith 43b35d43dc change lib sort to preserve input order 2025-09-05 15:19:30 -07:00
Nikita Smith 1aac27095e WIP: reorder input and library search order to match MSVC behavior 2025-09-05 15:19:30 -07:00
Nikita Smith b64e1dca9a WIP fix lib push order and sort new inputs 2025-09-05 15:19:30 -07:00
Nikita Smith 67e66dc26e WIP switching to serial library search-style, removed lib scope from
the symbol table
2025-09-05 15:19:30 -07:00
Nikita Smith 330c8ead38 move member queue-attempt flag from symbol to lib struct 2025-09-05 15:19:30 -07:00
Nikita Smith f1b22dbe27 change library to use compressed member offsets 2025-09-05 15:19:30 -07:00
Nikita Smith fcb06579a4 collapse symbol scope and symbol type enums 2025-06-25 10:53:25 -07:00
Nikita Smith b1723ce066 gracefully handle invalid libs 2025-06-25 10:53:25 -07:00
Nikita Smith 73fe9d223a handle /ALTERNATENAME directive 2025-06-25 10:53:22 -07:00
Nikita Smith 3a7afcd80c replace linker lib writer with one from COFF 2025-06-25 10:53:22 -07:00
Nikita Smith 7c071e7238 linker checkpoint 2025-06-25 10:53:22 -07:00
Nikita Smith 19a7ada1dc make export table with COFF obj writer,
partially converted import table to COFF obj writer
2025-06-25 10:53:21 -07:00
Nikita Smith 3a2bb318c7 make import lib objs with COFF obj writer 2025-06-25 10:53:21 -07:00
Nikita Smith 307d3a7f4b check obj compatibility before initializing them 2025-06-25 10:53:21 -07:00
Nikita Smith ab05133f8a picked better name convention for the section table 2025-04-04 15:47:56 -07:00
Nikita Smith 1c518bfa07 prefix COFF machine enums with "Type" 2025-03-31 22:53:10 -07:00
Nikita Smith 153bbc7b1d pass over COFF layer
- updated naming convention on structs, enums, and macros to conform with code base style
- moved related structs closer to each other
- moved parser code to separate file
2025-01-20 19:31:52 -08:00
Nikita Smith a1d5837ff3 helpers for matching string literals 2025-01-18 17:39:11 -08:00
Nikita Smith 80fa226432 pass over COFF archive parser 2024-12-06 11:53:16 -08:00
Nikita Smith c037d6ad75 WIP function padding 2024-11-21 01:05:33 -08:00
Nikita Smith 1d42f1bd66 speed up export table build with hash table 2024-11-07 11:54:24 -08:00
Nikita Smith 4a2e1dd8d0 switch to thread safe hash trie map
Initial implementation of the symbol table allowed us to push symbols
from one thread at a time and required a wonky lock-step and spread out
logic for replacing symbols. And because it was a externally chained
hash table we had to guesstimate optimal capacity for small and big targets.
We erred on the side of larger capacity to prevent degradation and
rehashing, however this meant small targets had to spent unreasonable
amount of time memory allocing slots. With hash trie we can dynamically
scale up to 4 ^ 32 items and atomically replace symbols when needed. Neat!
2024-10-30 15:43:53 -07:00
Nikita Smith e1166abc63 typo in str8 compar name 2024-10-30 15:42:39 -07:00
Nikita Smith 932df7bf68 linker 2024-10-15 17:25:22 -07:00