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
8a22910d9b
add "Links" log type for diagnosing linked lib members
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
7cea036bc1
clean up pass over symbol table
...
- rename functions for consistency
- remove unused code
2025-09-08 16:07:31 -07:00
Nikita Smith
069d683690
fix crash when obj does not have debug info
2025-09-06 09:54:23 -07:00
Nikita Smith
a6432cce8e
improve unresolved symbol errors
...
- collect symbol references and print out objs that reference
unresolved symbol
- print source file location of the references
2025-09-06 09:54:23 -07:00
Nikita Smith
d92f45784d
rename defined symbol to obj ref, as the symbol table no longer has
...
scopes and it makes no sense to refer to them that way
2025-09-06 09:54:22 -07:00
Nikita Smith
21163264d4
redirect entry point to CRT version if name is inferred
2025-09-06 09:54:22 -07:00
Nikita Smith
f2ee135439
fix up symbols visibility
2025-09-05 15:19:31 -07:00
Nikita Smith
56c43ad614
clean up HashTable, removed unused command line switches, added
...
list wrapper for alt names, added natvis for HashTable, AltNameList,
MergeDirectiveList, and IncludeSymbolList
2025-09-05 15:19:31 -07:00
Nikita Smith
6a3d7e65f3
remove year from the copyright
2025-09-05 15:19:31 -07:00
Nikita Smith
e88dc44f31
clean up debug leftovers
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
8d75497bba
do not set function pad min switch by default
2025-09-05 15:19:30 -07:00
Nikita Smith
0b0a2664d1
merge .idata with .rdata
2025-09-05 15:19:30 -07:00
Nikita Smith
a64f8f4196
clean up over base strings in the linker layer
2025-09-05 15:19:30 -07:00
Nikita Smith
9f6da0ec63
simplify section removal and purging
2025-09-05 15:19:30 -07:00
Nikita Smith
43b35d43dc
change lib sort to preserve input order
2025-09-05 15:19:30 -07:00
Nikita Smith
845e225e81
push alt name strings after they are copied to the config arena
2025-09-05 15:19:30 -07:00
Nikita Smith
fdad3f4f58
natvis for lib member ref
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
240935f0cc
WIP: use MSVC rule for COMDAT symbol replacement
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
e1b7168605
update weak vs undefined replacement rule
2025-09-05 15:19:30 -07:00
Nikita Smith
d7cdaa98b5
oops forgot to set enum type
2025-09-05 15:19:30 -07:00
Nikita Smith
971f1b9a2f
ignore sign conversions in blake3
2025-09-05 15:19:30 -07:00
Nikita Smith
41fe8a7410
merge undefined and weak search passes
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
89d496c855
fix replacement rule for weak search library vs undefined
2025-09-05 15:19:30 -07:00
Nikita Smith
0ceadff525
maintain input order of objs in PDB
2025-09-05 15:19:30 -07:00
Nikita Smith
0656020ab3
sync primitive fixes
2025-08-18 19:26:35 -07:00
Nikita Smith
eee6a9c08a
natvis for obj list
2025-08-18 19:09:32 -07:00
Nikita Smith
b56ce72b7f
test cases for weak vs weak
2025-08-18 19:09:32 -07:00
Nikita Smith
257914da2f
handle alternate name directive after obj input
2025-08-18 19:09:32 -07:00
Nikita Smith
b19f73b93a
change unresolved weak symbol type to undefined
2025-08-18 19:09:32 -07:00
Nikita Smith
cdf515793f
stop walking on reaching an undefined symbol
2025-08-18 19:09:32 -07:00
Nikita Smith
0983915f40
oops forgot to init the delay load dll hash table and the established name string
2025-08-18 19:09:32 -07:00
Nikita Smith
b05237ceec
handle anti-dependency weak symbol
2025-08-18 19:09:32 -07:00
Nikita Smith
31b2b1c0f7
add replacement cases for weak vs. undefined and vice versa
2025-08-18 19:09:32 -07:00
Nikita Smith
1bca83610f
changed symbol search logic to run in three steps: undefined, weak,
...
and anti-dependency weak, allowing linking to proceed only after
symbols from previous step are added to the symbol table
this solves the problem of anti-dependency symbols because they are
searched in libraries if the dependency is unresolved weak symbol
2025-08-18 19:09:32 -07:00
Nikita Smith
e1786d0a11
discard delay loads in the config before they get to link context builder
2025-08-18 19:09:32 -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
04d2877b40
strip leading white space
2025-08-18 19:09:31 -07:00
Nikita Smith
81381f9a6d
minor cleanups
2025-08-18 19:09:31 -07:00
Nikita Smith
1d6eae2b18
minor fixes for gathering library members
2025-08-12 19:03:51 -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