Ryan Fleury
5badc7f325
sketch out unified RDI_Variable to replace RDI_GlobalVariable, RDI_ThreadVariable, RDI_Local, and RDI_Constant, & plug into new RDI structured namespaces
2026-03-09 15:15:48 -07:00
Ryan Fleury
408b3af27c
rdi namespace baking; cv parsing rec iterator, deduplicate oob-safe cv record iterating
2026-03-09 14:36:05 -07:00
Ryan Fleury
8db4a09941
eliminate global rdim_shared; just use scratch data
2026-03-09 11:56:43 -07:00
Ryan Fleury
4312ee14fd
first pass at (rdi -> loose rdim) path, used in (rdi * ... * rdi) -> rdi joining in radbin; plug in regular conversion path before voff -> line & breakpad paths in radbin, such that PDBs, DWARFs, RDIs, etc. can be used as input; fix up voff -> line path to plug into regular output systems; remove String8 union thing - three reasons: (a) it was only ever introduced for convenience in Linux layers, so let's just keep zero-terminated Linux nonsense in Linux land, (b) it was just alternate syntax for a cast, so let's just cast, (c) it was misleading - 'cstr' implies null-termination, which String8 of course doesn't guarantee. this led to some misuses, where .cstr was trusted to be zero-terminated, when that was not necessarily true (semaphore opening).
2026-03-03 16:24:54 -08:00
Ryan Fleury
2af3990971
do not rely on lane 0 scratch ptrs for results in p2r - prone to races
2026-03-02 12:17:03 -08:00
Nikita Smith
2fbe45cd47
sync before scratch_end to prevent race in the result fill
2026-02-26 16:41:36 -08:00
Nikita Smith
a2336b9991
ASAN false-positives when threads access foreign stack addresses
2026-02-26 16:22:36 -08:00
Nikita Smith
d1b055c62f
Ignore S_REGREL32 during conversion of optimized procedures.
...
In optimized builds, MSVC emits parameters as both S_LOCAL and S_REGREL32.
Most likely because their debugger relies on S_REGREL32 to format
parameters in the call stack window.
2026-01-20 14:47:03 -08:00
Nikita Smith
a51d3fb752
fix case where return local without a type was converted to a parameter
2026-01-20 14:47:01 -08:00
Nikita Smith
8005c31276
remove x86 register code
2025-12-05 16:39:02 -08:00
Ryan Fleury
f396b2eaa3
start dwarf -> rdi cleanup; eliminate some assertions-as-validation, remove incorrect assumption that line info addresses are vaddrs (they seem to be voffs)
2025-11-10 15:06:52 -08:00
Ryan Fleury
b1a91b8247
adjust expiration timeouts for searches; fix unnecessary lowercasing when generating paths from pdbs
2025-10-23 16:41:08 -07:00
Ryan Fleury
c318c10486
pipe through guids in rdi conversion; sketch out 'query' meta cfg evaluation members, which are not stored but computed, but are not sets; plug in debug info guid evaluation that way
2025-10-23 12:10:23 -07:00
Ryan Fleury
b371bff6f2
do not skip basic itypes when building type building dependency chains!
2025-10-20 14:52:10 -07:00
Ryan Fleury
d9d321c074
mask off name map builds
2025-10-15 15:34:08 -07:00
Ryan Fleury
d6a7c8bd00
adjust chunk sizes for per-sym-stream symbol chunk lists
2025-10-15 15:21:42 -07:00
Ryan Fleury
9377efbe13
eliminate rest of p2r_shared usage, just use lane syncs
2025-10-15 14:21:32 -07:00
Ryan Fleury
d347e2473b
eliminate most reliance on p2r_shared for shared data - isolate scratch allocations, pull into scratch arenas, pop when possible
2025-10-15 14:07:42 -07:00
Ryan Fleury
0d06b7d2d2
regrel32: interpret rbp-relative offsets as potential parameters as well (this only shows up with /ZI - usually everything is rsp-relative)
2025-10-14 10:13:44 -07:00
Ryan Fleury
c1e32b93a7
switch from variable size checksum data sections to just making well-defined fixed size ones for all of the concrete cases
2025-10-02 15:43:01 -07:00
Ryan Fleury
56b5792546
rdi checksum kinds, rdim checksums, pull parsed checksum kinds/values from cv, fill out rdim checksums (still haven't put into rdi itself yet)
2025-10-02 13:40:45 -07:00
Ryan Fleury
fa0b2440ec
subset flag for constants conversion; fix empty-tpi-hash case
2025-09-24 12:42:04 -07:00
Ryan Fleury
2ce581fa19
more subset flag respecting
2025-09-22 17:39:26 -07:00
Ryan Fleury
5c1cf77fda
respect subset flags in pdb -> rdi converter
2025-09-22 17:32:05 -07:00
Ryan Fleury
80b65bc0fb
fix treatment of unitless pdbs
2025-09-08 16:06:45 -07:00
Ryan Fleury
40d6ce2f59
do not return zeroes for top-level structures in pdb parser; ensure you have a top-level readable pointer, always
2025-09-06 09:53:04 -07:00
Ryan Fleury
23a68faadd
rdim2 -> rdim; p2r2 -> p2r
2025-09-05 17:06:19 -07:00
Ryan Fleury
51ef166e60
eliminate all old conversion/baking code
2025-09-05 17:02:56 -07:00
Ryan Fleury
78530fb10d
merge p2r2 into original p2r, delete old conversion path; replace pdb -> breakpad converter & dependency on old converter
2025-09-05 16:35:35 -07:00
Ryan Fleury
cd77ddb1b7
pdb converter - new location info building for all cases
2025-09-05 15:19:30 -07:00
Ryan Fleury
6f9b22b258
plug in new location building code to pdb conversion
2025-09-05 15:19:30 -07:00
Ryan Fleury
cc9f45299a
eliminate separate chunk list for location cases
2025-09-05 15:19:30 -07:00
Ryan Fleury
fa05bbf2a5
udt member/enum-val layout & nested baking; use rio to pre-fault all commits
2025-09-05 15:19:30 -07:00
Ryan Fleury
a84142ed77
re-nest enum vals & members into udts; we want to keep the building API flexible with order of member building, and we can assume ~statistically-uniform distribution across all udts, so it makes more sense to just parallelize on udts, and pay the small cost of an upfront per-lane layout.
2025-09-05 15:19:30 -07:00
Ryan Fleury
8b83e5ef48
more non-determinism & bug fixes in name map & idx run map building
2025-09-05 15:19:29 -07:00
Ryan Fleury
4c3bb98c64
more determinism fixes
2025-09-05 15:19:29 -07:00
Ryan Fleury
27f2acd45d
further progress/fixes on pdb -> rdi determinism
2025-09-05 15:19:29 -07:00
Ryan Fleury
27d4793900
fix line table building non-determinism
2025-09-05 15:19:29 -07:00
Ryan Fleury
f093ba9d35
fix src file path gathering determinism - was caused by interleaving each lane's non-inline and inline file paths - with different thread counts, these subdivisions will be different, so the order will change
2025-09-05 15:19:29 -07:00
Ryan Fleury
955f033043
fix incorrect idx run baking; slots need to be laid out based on *idx counts*, rather than *value counts*!
2025-09-05 15:19:29 -07:00
Ryan Fleury
3b1aae44d0
location info baking
2025-09-05 15:19:29 -07:00
Ryan Fleury
71cbdba76e
remove old section requirement part of rdi, since all sections are now fixed; unit/scope/global vmap baking; collapse chunk list impls
2025-09-05 15:19:29 -07:00
Ryan Fleury
e4ac3febd0
finish new udt baking; pull members & enum vals out of sub-udt lists, makes it much harder to layout & parallelize - instead pull them aside into their own chunk lists, require that UDTs just point to their first member; that way we can go wide when baking UDT members/enum-vals
2025-09-05 15:19:29 -07:00
Ryan Fleury
b169090dc6
checkpoint on new rdi baking; line table baking, string map building, plug in radsort over bad radix sort; arena tweak to aovoid unnecessary zeroes
2025-09-05 15:19:29 -07:00
Ryan Fleury
69d0da9586
checkpoint on moving all of radbin to wavefront-style, first step to going wide on rdi baking as well
2025-09-05 15:19:28 -07:00
Ryan Fleury
be5634c448
p2r2 - final conversion output bundling
2025-08-19 17:02:05 -07:00
Ryan Fleury
cdec8d5980
ctrl/demon: fastfail exception codes / notes; p2r2: finish symbol conversion etc. in new wavefront-style version
2025-08-19 16:47:12 -07:00
Ryan Fleury
cff69f287a
p2r2 more progress; src file line sequence equipping, sketch out symbol conversion - we unfortunately cannot currently easily subdivide units! we need to pull out the few 'record-range' concepts and make them flat first, e.g. proc base address for inline sites, frameproc info, etc.
2025-08-18 16:58:05 -07:00
Ryan Fleury
83d4afabd5
p2r2: types building
2025-08-18 16:28:22 -07:00
Ryan Fleury
0fa45fe71b
p2r2: reslice per-lane work; bucket subsets of units by record count, rather than assigning units to lanes
2025-08-18 15:24:25 -07:00