Nikita Smith and Ryan Fleury
25430ea522
assign COMDAT symlinks after weak symbol replacement
...
Previously, COMDAT symlinks were assigned as each object batch was loaded.
Weak symbol replacement could later change the selected leader, leaving
objects from earlier passes with stale COMDAT leader refs. Library search
does not need symlinks to be valid, so solve this by doing a single sweep
assignment of COMDAT leaders after a fixed point is found.
2026-07-27 14:47:13 -07:00
Nikita Smith and Ryan Fleury
541727b819
debug log unresolved symbols specified in .llvm_addrsig
2026-07-27 14:47:11 -07:00
Nikita Smith and Ryan Fleury
83c55aebdc
check that __imp_* archive symbols are import members before applying
...
import queue flags to the member
2026-07-27 14:47:09 -07:00
Nikita Smith and Ryan Fleury
d34e1a7802
implement /OPT:ICF
...
Add identical COMDAT folding using a color-refinement over foldable
read-only sections. Hash section contents, relocation targets, and target
colors until partitions stabilize, then redirect folded COMDAT symlinks
and discard duplicate sections.
Honor .llvm_addrsig via /LLVM_ADDRSIG so address-significant sections
are not folded, keep separate color space for code, unwind info, and
MSVC vftables, and update COMDAT symbol/section mapping after folding.
Add linker tests covering function folding, relocation-sensitive folds,
alignment, color-space separation, symlink chains, .llvm_addrsig,
pdata/xdata, and C++ ICF cases.
2026-07-27 14:47:08 -07:00
Nikita Smith and Ryan Fleury
1ea9fae835
debug report live stats after /OPT:REF pass
2026-07-27 14:47:08 -07:00
Nikita Smith and Ryan Fleury
765b61152d
sort import library member refs by input index
2026-06-23 12:32:52 -07:00
Nikita Smith and Ryan Fleury
ad20900fc0
import hash table -> hash map
2026-06-23 12:32:51 -07:00
Nikita Smith and Ryan Fleury
8dbced6995
set flag on import member from the originally linked library, otherwise
...
on subsequent passes linker may queue same import
2026-06-23 12:32:50 -07:00
Martins Mozeiko and Ryan Fleury
401383bbd8
reorganize intrinsic includes to make clang happy
2026-06-22 14:21:01 -07:00
Nikita Smith and Ryan Fleury
c81c072018
includes for rdi_from_codeview
2026-06-19 20:12:25 -07:00
Nikita Smith and Ryan Fleury
9616307503
add extra node to the symbol ref for better insertion per
2026-06-19 20:12:24 -07:00
Nikita Smith
956df5527a
switch type server from PDB to a custom file format (RRT)
2026-06-16 17:22:50 -07:00
Nikita Smith
ac8c3e7a2d
do not emit relocation for empty resource entry
2026-06-12 12:05:45 -07:00
Nikita Smith
3f6d5df899
apply merge fixes
2026-06-12 11:53:15 -07:00
Nikita Smith
42cf820972
cache for section flags
...
modifying the section flags is expensive with COW file mappings, Windows
maps are set to 64k granularity
2026-06-12 11:40:02 -07:00
Nikita Smith and Ryan Fleury
541d3afefa
WIP /RAD_TYPE_SERVER
...
env vars
replace HashTable with HashMap in config
2026-06-02 12:11:12 -07:00
Nikita Smith and Ryan Fleury
4c8d66b431
fix accidental removal of debug info sections resulting in non-eligible
...
sections not getting marked with 'is_live'
2026-06-02 12:11:11 -07:00
Nikita Smith and Ryan Fleury
4ff6d2cc6c
use the make library to generate RDI
2026-06-02 12:10:49 -07:00
Nikita Smith and Ryan Fleury
2e4069b89a
debug stats for /OPT:REF
2026-06-02 12:10:39 -07:00
Nikita Smith and Ryan Fleury
a3bac20a73
rebase fixes
...
normalize line endings
sort test pointers
rebase fixes
rebase fixes
2026-06-02 12:10:29 -07:00
Nikita Smith and Ryan Fleury
f59784bba0
headers for Linux OS layer
2026-06-02 12:10:13 -07:00
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
Ryan Fleury
9a7782de47
re-slice linux/win32 backends, top-level folder is backend (demon/win32 -> win32/demon, etc.); os_gfx -> window_manager; fix linux / opengl builds for new apis/types
2026-05-08 15:21:22 -07:00
Ryan Fleury
aea4a4ff9d
eliminate os_core, move into base; eliminate regs, move into arch abstraction layer, define x64 regs in x64 layer; move win32 backend for os core (now base) functionality to top-level win32 layer
2026-05-08 15:21:21 -07:00
Nikita Smith
7ed5977d20
improve determinism test speed
2026-04-23 17:18:24 -07:00
Nikita Smith
0a791e5876
add support for LLVM ghash sections
2026-04-20 10:39:50 -07:00
Nikita Smith
e6f49aaded
test stripped PDB
2026-04-20 10:39:50 -07:00
Nikita Smith
18f468bc97
os_process_join closes handle
2026-04-15 15:32:51 -07:00
Nikita Smith
40763c06cf
swap dynamic and static libs
2026-04-11 12:50:41 -07:00
Nikita Smith
89a5acba2c
WIP stripped PDB
2026-04-10 17:02:04 -07:00
Nikita Smith
e54bef58df
implement /INFERASANLIBS
2026-04-06 22:18:26 -07:00
Nikita Smith
3bb8983461
implement /WHOLEARCHIVE
2026-04-06 14:35:46 -07:00
Nikita Smith
f72d127aaa
report unknown directives in debug build
2026-04-06 12:04:32 -07:00
Nikita Smith
99335959b0
ignore invalid type index errors in release
2026-04-06 12:04:32 -07:00
Nikita Smith
b5f0862a91
fixup file checksums in the MSF streams
2026-04-06 12:04:32 -07:00
Nikita Smith
e0c6df710f
WIP change symbol extraction approach
2026-04-06 12:04:31 -07:00
Nikita Smith
8a1203ed35
add mutex around fprintf to linearize log
2026-04-06 12:04:31 -07:00
Nikita Smith
c0418b736d
WIP: internal and external type servers are functioning except for the
...
PCH indirection
2026-04-06 12:04:31 -07:00
Nikita Smith
03ab203fb4
warnings
2026-02-23 11:57:05 -08:00
Nikita Smith
516365e97b
rename CodeView leaf/symbol/debug_s helpers for consistent naming
2026-02-17 03:04:14 -08:00
Nikita Smith
4e4a806b33
pass over the aligner
2026-02-15 23:17:59 -08:00
Nikita Smith
76213ec5cd
switch to using 32-bit offsets for leaf records over the pointers
2026-02-15 23:11:51 -08:00
Nikita Smith
1f51c6f25b
ubsan cleanup
2026-02-13 20:59:26 -08:00
Nikita Smith
fbc3cbd6eb
polish help in radlink
2026-02-13 19:17:53 -08:00
Nikita Smith
519bc154ec
disable async for radlink
2026-02-13 17:33:18 -08:00
Nikita Smith
1e6df05d9f
sort resource pointers
2026-02-11 17:20:38 -08:00
Nikita Smith
aa25570904
improve memory usage when reporting unresolved symbols
2026-02-11 15:28:13 -08:00
Nikita Smith
e8ca3e0d5c
name tag arenas for the memory plots
2026-02-11 15:27:05 -08:00