Nikita Smith and Ryan Fleury
11373f4432
disable COFF group info generation
2025-09-05 15:19:31 -07:00
Nikita Smith and Ryan Fleury
f2ee135439
fix up symbols visibility
2025-09-05 15:19:31 -07:00
Nikita Smith and Ryan Fleury
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 and Ryan Fleury
6a3d7e65f3
remove year from the copyright
2025-09-05 15:19:31 -07:00
Nikita Smith and Ryan Fleury
e88dc44f31
clean up debug leftovers
2025-09-05 15:19:31 -07:00
Nikita Smith and Ryan Fleury
580303b0dd
emit jump thunks for imports only when needed
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
43e81b934b
move weak symbol replacer to the symbol table layer
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
8d75497bba
do not set function pad min switch by default
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
0b0a2664d1
merge .idata with .rdata
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
a64f8f4196
clean up over base strings in the linker layer
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
9f6da0ec63
simplify section removal and purging
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
43b35d43dc
change lib sort to preserve input order
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
845e225e81
push alt name strings after they are copied to the config arena
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
fdad3f4f58
natvis for lib member ref
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
78b1f7e701
optionally emit import thunks
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
1aac27095e
WIP: reorder input and library search order to match MSVC behavior
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
240935f0cc
WIP: use MSVC rule for COMDAT symbol replacement
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
d9eb26a830
infer subsystem when only entry point is specified
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
b0db2b19f8
move entry point name redirection helper to MSCRT layer
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
e1b7168605
update weak vs undefined replacement rule
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
d7cdaa98b5
oops forgot to set enum type
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
c397b1dfb1
handle common section case
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
843de72f64
add U8 atomic exchange for clang and gcc
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
0dac1a91db
fix u128 make
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
fc4e269211
ignore sign conversions in stb_sprintf.h
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
daf69ff1c7
fix sign conversion in radsort.h
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
971f1b9a2f
ignore sign conversions in blake3
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
1a9e17ee37
remove invalid normalize helpers for integer vectors (they always produce zero)
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
e0c409e3f4
move prototype decl to base_core.h to fix implicit function usage
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
3bd8f0e1d5
fix argument expansion in github actions and build.bat
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
41fe8a7410
merge undefined and weak search passes
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
b64e1dca9a
WIP fix lib push order and sort new inputs
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
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 and Ryan Fleury
330c8ead38
move member queue-attempt flag from symbol to lib struct
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
f1b22dbe27
change library to use compressed member offsets
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
89d496c855
fix replacement rule for weak search library vs undefined
2025-09-05 15:19:30 -07:00
Nikita Smith and Ryan Fleury
0ceadff525
maintain input order of objs in PDB
2025-09-05 15:19:30 -07:00
Nikita Smith and 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 and 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 and Nikita Smith
1ce2fbfd1a
helper for setting default symbol
2025-08-18 19:09:32 -07:00
Nikita Smith and 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 and Nikita Smith
04d2877b40
strip leading white space
2025-08-18 19:09:31 -07:00
Nikita Smith and Nikita Smith
81381f9a6d
minor cleanups
2025-08-18 19:09:31 -07:00
Nikita Smith and Nikita Smith
81c68cfdd3
register common and absolute symbols in library's symbol table
2025-08-18 19:09:31 -07:00
Nikita Smith and Nikita Smith
e27831902e
note
2025-08-18 19:09:31 -07:00
Nikita Smith and Nikita Smith
c53b8d43d0
assign symbol indices before serializing symbols so forward-references
...
are possible
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
086d774b8b
fix ELF compressed header and skip duplicate sections
2025-08-12 14:10:13 -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
829a35430c
add flag to exclude objs from debug info input
2025-08-11 02:49:26 -07:00
Nikita Smith
702fd74b23
minor cleanup in obj initer
2025-08-10 21:41:39 -07:00
Nikita Smith
2b02f5cec6
lifetime fixes
...
- fully serialize the lib because we cannot guarantee that its members
will have the same lifetime as the serialized lib
- put import stub symbols on the symbol table arena
2025-08-10 21:35:33 -07:00
Nikita Smith
7466da1479
mark referenced symbols as live for unresolved-symbol detection
2025-08-08 15:54:21 -07:00
Nikita Smith
9893a8135d
fix crash when linking undefined weak symbol
2025-08-08 13:35:47 -07:00
Nikita Smith
137eb6403a
fix crash when relocation points to an undefined section symbol
2025-08-07 22:40:20 -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 and Ryan Fleury
cff6426741
null check for obj
2025-08-05 08:39:12 -07:00
Nikita Smith and Ryan Fleury
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 and Ryan Fleury
dd715dacf7
assign COMDAT symlinks as soon as the symbol table is processed
2025-08-05 08:39:11 -07:00
Nikita Smith and Ryan Fleury
1fe85acff8
refactor include symbols to go through same code path as alternate name symbols
2025-08-05 08:39:11 -07:00
Nikita Smith and Ryan Fleury
c1958809eb
make use of undocumented anti-dependency search property on weak symbols
...
to implement alternate name using weak symbols
2025-08-05 08:39:11 -07:00
Nikita Smith and Ryan Fleury
8d246d0c6a
pass down to config obj; preparing to refactor alternate name out of the symbol table
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
18f83521e4
clean up pass over directives handler; preparing to collapse code paths
2025-07-28 20:07:56 -07:00
Nikita Smith
0b904f4e24
extract function size infer logic into its own block
2025-07-28 20:07:56 -07:00
Nikita Smith
7be9df0e90
move directive section gather logic to obj layer
2025-07-28 20:07:56 -07:00
Nikita Smith
72e073e4e6
fix typo that broke /NODEFAULTLIB usage
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
1e1d903878
store library pointer in the obj instead of path; required for prioritized symbol lookup implementation
2025-07-28 20:07:56 -07:00
Nikita Smith
4cb09e73c2
remove warning pragma
2025-07-28 20:07:56 -07:00
Nikita Smith
0b37fac81c
move delay load helper to mscrt layer
2025-07-28 20:07:55 -07:00
Nikita Smith
6fda20ec9c
helper script for extracting obj paths out of pdb
2025-07-24 17:44:13 -07:00
Nikita Smith
54fad8a89c
validate strong symbol interp type
2025-07-24 17:32:05 -07:00
Nikita Smith
6cc5be0065
opt ref test
2025-07-24 17:32:05 -07:00
Nikita Smith
2d52e274ce
remove debug code
2025-07-24 17:32:05 -07:00
Nikita Smith
cc6e56eee1
do full path check for thin objs only
2025-07-24 17:32:05 -07:00
Nikita Smith and Ryan Fleury
9b91a0f907
github actions fun
2025-07-23 16:09:48 -07:00
Nikita Smith and Ryan Fleury
9fab69002c
fix buffer over-read in sinfl.h
2025-07-23 16:09:48 -07:00
Nikita and Ryan Fleury
295a822889
put quotes around arguments to prevent command injection
2025-07-23 16:09:48 -07:00
Nikita Smith and Ryan Fleury
07c7178770
filter out removed COMDATs from the PDB public symbols
2025-07-23 16:09:48 -07:00
Nikita Smith and Ryan Fleury
ffc9317067
add a relocation to "a" to prevent linker from removing .test
2025-07-23 16:09:48 -07:00
Nikita Smith and Ryan Fleury
17d35cd327
add garbage collector for COMDAT sections
2025-07-23 16:09:48 -07:00
Nikita Smith and Ryan Fleury
a6b2cf64ba
WIP collect sections associations
2025-07-23 16:09:48 -07:00
Nikita Smith and Ryan Fleury
a4ac07162e
test abs vs abs
2025-07-23 16:09:48 -07:00
Nikita Smith and Ryan Fleury
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 and Ryan Fleury
7cd5a670e3
WIP factoring out symbol table fixups
2025-07-23 16:09:48 -07:00
Nikita Smith and Ryan Fleury
db52ba32e6
helper for profiling parallel fors
2025-07-16 13:54:58 -07:00
Nikita Smith and Ryan Fleury
093e43d2ff
change output folder name
2025-07-16 13:54:58 -07:00
Nikita Smith and Ryan Fleury
4322c9ccfc
change torture to assume default liker to be radlink, typo fix, and
...
added progress report
2025-06-25 10:53:25 -07:00
Nikita Smith and Ryan Fleury
17ca83697b
draft symbol table fixups to prepare for refactoring symbol table patching step
2025-06-25 10:53:25 -07:00
Nikita Smith and Ryan Fleury
08f2b749e8
omit file offset, file size, and hash on bss sections
2025-06-25 10:53:25 -07:00
Nikita Smith and Ryan Fleury
7769a485ba
more merge fixes
2025-06-25 10:53:25 -07:00
Nikita Smith and Ryan Fleury
91ddd214b3
fix string to U64 conversion
...
- handle zero on input string
- handle upper and lower case prefixes
2025-06-25 10:53:25 -07:00
Nikita Smith and Ryan Fleury
a954c2125c
merge fixups
2025-06-25 10:53:25 -07:00
Nikita Smith and Ryan Fleury
fcb06579a4
collapse symbol scope and symbol type enums
2025-06-25 10:53:25 -07:00
Nikita Smith and Ryan Fleury
b1723ce066
gracefully handle invalid libs
2025-06-25 10:53:25 -07:00
Nikita Smith and Ryan Fleury
2ba9f2a61b
fix uinited var warning
2025-06-25 10:53:24 -07:00
Nikita Smith and Ryan Fleury
153d78ec6a
unpoison memory-mapped files
2025-06-25 10:53:24 -07:00
Nikita Smith and Ryan Fleury
790c95fc80
organization pass over symbol table files
2025-06-25 10:53:24 -07:00