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