Nikita Smith and Ryan Fleury
7197398f31
split external-symbol handling from section-definition fallbacks
2026-07-27 14:47:15 -07:00
Nikita Smith and Ryan Fleury
d790412219
refactor radlink section gathering
...
Fold section definition and contributions collection into a worker-count
task with barriers around the serial merge. Share section filtering
between both phases and keep zero-size COMDATs so offset-zero symbols
still map to a section.
2026-07-27 14:47:15 -07:00
Nikita Smith and Ryan Fleury
b77c958b5f
add DEF, GUARD, and SECTION config support
...
Parse /DEF, /GUARD, and /SECTION switches, including DEF
handling for NAME/LIBRARY, BASE, VERSION, HEAPSIZE, STACKSIZE, EXPORTS,
and SECTIONS.
Store section directives in linker config and apply them consistently
when gathering object sections when pushing/searching image sections.
Pull load-config symbols for /GUARD without setting GUARD_CF until guard
tables are emitted.
Add coverage for DEF file parity, section directives, and guard
load-config handling.
2026-07-27 14:47:14 -07:00
Nikita Smith and Ryan Fleury
35722f2a01
handle BOMs in linker response files
...
Decode UTF-16LE response files with a BOM and strip UTF-8 BOMs before
parsing arguments. Add coverage for UTF-16 response-file input.
2026-07-27 14:47:13 -07:00
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
65541eaf91
LLVM BC magic sniffer
2026-07-27 14:47:12 -07:00
Nikita Smith and Ryan Fleury
afd454b41f
fix DBI SC image-section range mapping
...
Log and skip section contributions that fail to map into the linked image.
Keep a file-range-to-section-number map so compact file ranges produce the
correct DBI section numbers.
2026-07-27 14:47:12 -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
3eeae8d365
enable binary for stdout and stderr to bypass CRLF mangling issues in
...
captured output under build systems
2026-07-27 14:47:10 -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
941b8a011e
duplicate identical search aliases are not an error case
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
Ryan Fleury
62328cea3f
checkpoint on text patches
2026-07-27 14:47:07 -07:00
Ryan Fleury
20cd955cc9
eval2: first pass at type_key -> string path
2026-07-27 14:47:06 -07:00
Ryan Fleury
0963f4a6de
const/volatile/unsigned/signed type operators
2026-07-27 14:47:06 -07:00
Ryan Fleury
78d12eb914
custom module loads -> support manually specifying pdb path
2026-07-23 20:28:52 -07:00
Ryan Fleury
b0841ff2da
first pass at custom load-module exception (long term for JIT)
2026-07-23 20:22:54 -07:00
Ryan Fleury
16c447bb79
eval2: leaf bytecode in ir tree
2026-06-28 07:36:24 -07:00
Ryan Fleury
96cfb441fd
correctly use command titles in native file explorer
2026-06-27 12:07:24 -07:00
Ryan Fleury
0e2b4ac5e7
ui discoverability adjustments
2026-06-27 06:21:31 -07:00
Ryan Fleury
969851b6f0
flip NO_ASYNC; turn on as needed, if a layer requiring it is included
2026-06-27 04:54:30 -07:00
Ryan Fleury
410a8e3afa
eval2: function pointer type parsing/compiling
2026-06-27 04:43:58 -07:00
Ryan Fleury
cae9754099
eval2: fix parsing task popping rules, still give chance to rhs when popping tasks in all cases
2026-06-27 04:25:05 -07:00
Ryan Fleury
b704e797e2
notes
2026-06-27 03:50:17 -07:00
Ryan Fleury
773e6554dc
cycle detection in fully qualified string generation
2026-06-26 20:35:50 -07:00
Ryan Fleury
fdbcf7ccdc
eval2: first pass at c recursive type expression parsing
2026-06-26 16:19:19 -07:00
Ryan Fleury
f1f654ecfd
eval2: simplify expression parsing info, allow child reversal (for parsing non-canonical expression orders into canonical shapes, e.g. Rust-style casts like 123 as float32 -> cast(float32, 123); ptr/array type operators, etc./
2026-06-26 13:20:38 -07:00
Ryan Fleury
60b266a1cc
support size_of and type_of in clike expressions
2026-06-26 11:28:01 -06:00
Ryan Fleury
9491fdf5c2
eval2: split out expression kinds from parse styles of expressions - lets us separate semantic expression tree from frontend, so that we can easily switch frontend
2026-06-26 11:22:43 -06:00
Ryan Fleury
bcbc5e4a2a
eval2: macro argument expression tree parsing
2026-06-26 10:07:02 -06:00
Ryan Fleury
d7393b2f65
eval2: split string -> expr compilation path into frontend / middle end - string -> expr, where expr is a loose structural syntax tree (where we can get macros and stuff without doing typechecking etc.), and expr -> irtree, where irtree is the usual typed / typechecked / ir structured representation - preserve minimal identifier resolution path for parser, but move most resolution things to the middle-end
2026-06-25 15:48:14 -07:00
Ryan Fleury
c2b74260ef
eval2: opkind -> exprkind, prepare for exprs being looser
2026-06-25 13:58:03 -07:00
Ryan Fleury
6b52d68c62
eval2 checkpoint: type operations, constructed types, checkpoint before splitting back to frontend / compiler split - we need to do things with the parse tree that we can't with an ir tree
2026-06-25 13:50:16 -07:00
Ryan Fleury
c1b3461709
eval2: switch to extrusive lists for expression lists - this lets us reuse expression trees. also solve strange isolated unload module events in win32 demon as well
2026-06-25 11:36:18 -06:00
Ryan Fleury
6c309038ce
dbg_engine: ctrl thread - be robust to strange duplicate module unload events
2026-06-25 09:51:13 -06:00
Ryan Fleury
9d651f4bd5
EpicGamesExt -> EpicGames
2026-06-25 09:08:52 -06:00
Ryan Fleury
38c1e2a414
eval2: ptr arithmetic & comparisons
2026-06-25 09:07:34 -06:00
Ryan Fleury
c817d1f136
eval2: type keys checkpoint
2026-06-24 20:39:53 -07:00
Ryan Fleury
296c851272
eval2 checkpoint: casts, function calls, expression-embedded identifier definitions, ternaries, compile-time ternaries
2026-06-24 16:29:57 -07:00
Ryan Fleury
6b841d9959
rdi_make: allow duplicates in bake name map insertions - they become extremely costly to check for, and we don't produce them anyways...
2026-06-24 07:20:06 -06:00
Ryan Fleury
1901e67f39
use synchronous reads for call stack computation, but extend artifact cache with the ability to say that a non-retryable failure occurred, so that we can fall back to stale call stacks
2026-06-23 20:00:57 -06:00
Ryan Fleury
3d6851c57a
rdi_from_Dwarf: count dependency counts correctly when using cached type content hashes
2026-06-23 16:07:53 -07:00
Nikita Smith and Ryan Fleury
4daefad31e
map GNU lib extension
2026-06-23 12:32:52 -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
Nikita Smith and Ryan Fleury
84d025e940
force inline string compars
2026-06-23 12:32:50 -07:00
Ryan Fleury
98b7b5859c
rdi_from_dwarf: stub out pointers for now, cache as we go, merge type dependency count calculation with hash computation
2026-06-23 12:32:11 -07:00
Ryan Fleury
28009ec01e
rdi_from_dwarf type dedup hashing experiments checkpoint
2026-06-23 10:05:28 -07:00