Commit Graph
298 Commits
Author SHA1 Message Date
Nikita SmithandRyan 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 SmithandRyan Fleury 541727b819 debug log unresolved symbols specified in .llvm_addrsig 2026-07-27 14:47:11 -07:00
Nikita SmithandRyan 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 SmithandRyan 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 SmithandRyan Fleury 1ea9fae835 debug report live stats after /OPT:REF pass 2026-07-27 14:47:08 -07:00
Nikita SmithandRyan Fleury 765b61152d sort import library member refs by input index 2026-06-23 12:32:52 -07:00
Nikita SmithandRyan Fleury ad20900fc0 import hash table -> hash map 2026-06-23 12:32:51 -07:00
Nikita SmithandRyan 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 MozeikoandRyan Fleury 401383bbd8 reorganize intrinsic includes to make clang happy 2026-06-22 14:21:01 -07:00
Nikita SmithandRyan Fleury c81c072018 includes for rdi_from_codeview 2026-06-19 20:12:25 -07:00
Nikita SmithandRyan 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 SmithandRyan Fleury 541d3afefa WIP /RAD_TYPE_SERVER
env vars

replace HashTable with HashMap in config
2026-06-02 12:11:12 -07:00
Nikita SmithandRyan 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 SmithandRyan Fleury 4ff6d2cc6c use the make library to generate RDI 2026-06-02 12:10:49 -07:00
Nikita SmithandRyan Fleury 2e4069b89a debug stats for /OPT:REF 2026-06-02 12:10:39 -07:00
Nikita SmithandRyan Fleury a3bac20a73 rebase fixes
normalize line endings

sort test pointers

rebase fixes

rebase fixes
2026-06-02 12:10:29 -07:00
Nikita SmithandRyan 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