Nikita Smith
8c58086585
batch relocations to reduce contention on global reference list
2026-05-18 18:11:48 -07:00
Nikita Smith
e1e8ba826d
fix duplicate defer import link
2026-05-18 18:11:48 -07:00
Nikita Smith
1dc72b2bcf
replace single-hop associative section walk to multi-hop
2026-05-18 18:11:48 -07:00
Nikita Smith
e54bef58df
implement /INFERASANLIBS
2026-04-06 22:18:26 -07:00
Nikita Smith
fbc3cbd6eb
polish help in radlink
2026-02-13 19:17:53 -08:00
Nikita Smith
71a46985b6
use string table extension for long section names
2026-02-05 19:45:35 -08:00
Nikita Smith
1c0e9030fa
move lib member queue state to the link step and release it after link step is done
2026-01-20 15:27:31 -08:00
Nikita Smith
0c0b7ac6d3
bugfix import linking
2026-01-15 18:25:46 -08:00
Nikita Smith
06e895be7c
organize task structs
2025-09-24 12:42:17 -07:00
Nikita Smith
20c92e0baf
speed up base reloc gather step and serialize pages in parallel
2025-09-24 12:42:17 -07:00
Nikita Smith
6b278e1ccc
parallelize image fill
2025-09-22 10:06:21 -07:00
Nikita Smith
e72512f638
switch over to 64-bit pointer tagging
2025-09-22 10:06:21 -07:00
Nikita Smith
5a12513306
parallelize section garbage collection
...
currently we tag pointers to solve ABA problem however if the list
has more than max_U16 items, the tag will overflow and cause serious issues.
To fix this, we need to use 64-bit tags together with 128-bit interlocked
compare-exchange intrinsic
2025-09-17 15:21:37 -07:00
Nikita Smith
630c3b42a7
do lightweight import gathering while resolving links
2025-09-17 15:21:37 -07:00
Nikita Smith
80967fac12
pre-parse section names and flag debug info sections
2025-09-16 10:31:02 -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
ee3832ea3b
parallel for lib symbol search
2025-09-08 16:07:31 -07:00
Nikita Smith
8f749f4239
use global symbol table to detect duplicate imports
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
580303b0dd
emit jump thunks for imports only when needed
2025-09-05 15:19:30 -07:00
Nikita Smith
43e81b934b
move weak symbol replacer to the symbol table layer
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
d9eb26a830
infer subsystem when only entry point is specified
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
a3582332ee
push a null symbol as a terminator for /alternatename weak symbol chain
2025-08-18 19:09:31 -07:00
Nikita Smith
b50f309422
modified member queue logic to prioritize libs where pull-in reference
...
symbol is declared
2025-08-11 23:28:03 -07:00
Nikita Smith
7466da1479
mark referenced symbols as live for unresolved-symbol detection
2025-08-08 15:54:21 -07:00
Nikita Smith
4f6f9d61ed
inline function for replacing weak symbols with default symbol
2025-08-07 17:41:45 -07:00
Nikita Smith
9a1f96bda2
progress on /opt:ref
...
Link the debugger and strip unreferenced sections
TODO: Mark referenced undefined symbols for unresolved symbol reporting
2025-08-07 17:36:11 -07:00
Nikita Smith
d3dedd8bef
simplifying symbol table scopes
...
Linker cannot register extern import symbols initially because
the import object files are not available until all other object files are
resolved. To work around this, we create a stub weak symbol and assign
it to each import symbol. This allows linker to proceed. Once the import
object files are generated, linker replaces the stub symbol with
the actual ones from the import objects.
2025-08-05 08:39:12 -07:00
Nikita Smith
dd715dacf7
assign COMDAT symlinks as soon as the symbol table is processed
2025-08-05 08:39:11 -07:00
Nikita Smith
92e6069104
collapse obj directive directive code paths
2025-07-28 20:07:56 -07:00
Nikita Smith
b3efce4b9a
better place for this helper function
2025-07-28 20:07:56 -07:00
Nikita Smith
07c7178770
filter out removed COMDATs from the PDB public symbols
2025-07-23 16:09:48 -07:00
Nikita Smith
17d35cd327
add garbage collector for COMDAT sections
2025-07-23 16:09:48 -07:00
Nikita Smith
d32667546d
factor out weak symbol resolution logic and apply it to the symbol table
...
when building link context
2025-07-23 16:09:48 -07:00
Nikita Smith
7cd5a670e3
WIP factoring out symbol table fixups
2025-07-23 16:09:48 -07:00
Nikita Smith
17ca83697b
draft symbol table fixups to prepare for refactoring symbol table patching step
2025-06-25 10:53:25 -07:00
Nikita Smith
2fbaafa32c
parallel compute common block
2025-06-25 10:53:24 -07:00
Nikita Smith
a395398bdf
remove global variable for null section contrib
2025-06-25 10:53:24 -07:00
Nikita Smith
46663688e2
on read memory map files
2025-06-25 10:53:24 -07:00
Nikita Smith
4c972c0fba
handle COMDAT symbols with non-zero section offset
2025-06-25 10:53:24 -07:00
Nikita Smith
a5119e3b51
WIP function pad min
2025-06-25 10:53:24 -07:00
Nikita Smith
5fb0d978b9
WIP function pad min
2025-06-25 10:53:24 -07:00
Nikita Smith
9d93eda3ed
simplify section table
2025-06-25 10:53:24 -07:00
Nikita Smith
15836572f4
factor out section sort index into contribution chunk and simplify
...
contribution sorting
2025-06-25 10:53:24 -07:00
Nikita Smith
205723f8d6
parallelize symbol tables patching
2025-06-25 10:53:24 -07:00
Nikita Smith
1c08db2705
move image, import lib, and debug info builders outside of the state machine
2025-06-25 10:53:24 -07:00
Nikita Smith
1c656979d2
move MSVC lib symbols to CRT layer
2025-06-25 10:53:23 -07:00
Nikita Smith
e911bf5368
move obj writer for PE debug directory to stand-alone file
2025-06-25 10:53:23 -07:00