Commit Graph
100 Commits
Author SHA1 Message Date
Nikita Smith ddfeba8ae1 natvis for DWARF writer 2026-02-11 00:01:21 -08:00
Nikita Smith da6fd986f0 do not exit on failed call 2026-02-11 00:00:56 -08:00
Nikita Smith aaa5b0cb59 pass over DWARF dumper 2026-02-11 00:00:43 -08:00
Nikita Smith 031e24e1aa handle zero operand count 2026-02-10 23:59:09 -08:00
Nikita Smith ee8562ed97 fix type for the implicit const 2026-02-10 23:58:45 -08:00
Nikita Smith 69434278bd WIP DWARF writer 2026-02-10 23:57:43 -08:00
Nikita Smith ff82d9843c matcher for DW_Form 2026-02-10 15:27:57 -08:00
Nikita Smith 6e100ad52f make form_kind part of DW_Form 2026-02-10 15:27:27 -08:00
Nikita Smith 12f8f4e078 move DW_Form to the DWARF format header 2026-02-10 15:26:56 -08:00
Nikita Smith 988b0f5541 header guard typo 2026-02-09 23:42:09 -08:00
Nikita Smith 9b1a5ae8f8 minor fix 2026-02-09 23:41:33 -08:00
Nikita Smith 482a61aaf7 obj -> COFF serializer 2026-02-09 23:41:19 -08:00
Nikita Smith 33b1e25295 arch -> COFF machine 2026-02-09 23:40:31 -08:00
Nikita Smith 1579e6eae6 simplify serial pushes for u32 and u64 2026-02-09 23:40:10 -08:00
Nikita Smith d7ffea785f compact print abbrev data 2026-02-06 18:49:52 -08:00
Nikita Smith 71a46985b6 use string table extension for long section names 2026-02-05 19:45:35 -08:00
Nikita Smith 010f54674f test for LEB128 reader and writer 2026-02-05 19:45:35 -08:00
Nikita Smith b0d0b6a2b2 factor out LEB128 writer 2026-02-05 19:45:34 -08:00
Nikita Smith b44f79fe44 test section folding with different alignment 2026-02-05 19:45:34 -08:00
Nikita Smith 0c02e21284 WIP tests for ICF 2026-02-05 19:45:34 -08:00
Nikita Smith b6c74ae9bc update values in import_export test 2026-02-05 19:45:34 -08:00
Nikita Smith 0015e52d3c add /FAILIFMISMATCH 2026-02-05 19:45:34 -08:00
Nikita Smith 8b729d4588 refactored testing utility
- factored out common parts in tests into T_BeginTest and T_EndTest
- separated radlink and DWARF tests
2026-02-05 19:45:34 -08:00
Nikita Smith d363c30e95 copy out generic 2026-02-05 19:43:47 -08:00
Nikita Smith ae236f5ccf assert element size does not overflow the simple buffer in radsort 2026-02-05 19:43:47 -08:00
Nikita Smith 09472fafbd typo in the ordinal export sorter 2026-02-05 19:43:47 -08:00
Nikita Smith 15831c704f lock free hash trie 2026-02-05 17:46:10 -08:00
Nikita Smith edd982852e pass over DWARF converter
- prepare to thread line table conversion
- error handling
- organizational improvements
2026-02-05 17:43:20 -08:00
Nikita Smith 4b893d50ec implement swap and drop opcodes; stub out GNU_UnInit 2026-02-05 17:43:20 -08:00
Nikita Smith 5986e595ce eval type group for F80 and F128 2026-02-05 17:43:20 -08:00
Nikita Smith 7d4a64aae6 change size of immediate on Cond opcode to match Skip immediate size 2026-02-05 17:43:20 -08:00
Nikita Smith 2ccb6f6409 natvis 2026-02-05 17:43:19 -08:00
Nikita Smith 3bc9bacf6f update line table dumper; pipe down verbose switch to the DWARF dumper 2026-02-05 17:43:19 -08:00
Nikita Smith 469fbece3d fix check extension in attrib formatter 2026-02-05 17:43:19 -08:00
Nikita Smith 4f30f64914 switched to TryRead helper macro for parsing abbrev table and compile units 2026-02-05 17:43:19 -08:00
Nikita Smith cd70b7e1ec define default debug macros for third party code 2026-02-05 17:43:19 -08:00
Nikita Smith 3d6ca7d610 indent macros 2026-02-05 17:43:19 -08:00
Nikita Smith 6d8cbe8e60 fix stack reference 2026-02-05 17:43:19 -08:00
Nikita Smith 2ca68c1039 flush output buffer before formatting 2026-02-05 17:43:19 -08:00
Nikita Smith c81eafb656 fix memory poisoning for arenas allocated from an optional buffer 2026-02-05 17:43:19 -08:00
Nikita Smith dec5258c32 piece opcodes do not pop the stack 2026-02-05 17:43:19 -08:00
Nikita Smith 82169462a4 detect variable length array in upper bound and lower bound 2026-02-05 17:43:19 -08:00
Nikita Smith 2071e31f29 refactor bad read handling in DWARF parser 2026-02-05 17:43:19 -08:00
Nikita Smith 3abfb800a8 group forwarder and named exports and sort them together 2026-01-27 11:26:24 -08:00
Nikita Smith cc43d17496 bugfix export by ordinal 2026-01-27 11:25:54 -08:00
Nikita Smith 3113db2d08 add missing retry wraps around syscalls 2026-01-26 15:34:06 -08:00
Nikita Smith be350c4147 add cstr union field to String8 and remove char* casts from the Linux code 2026-01-22 14:04:40 -08:00
Nikita Smith e724ee8185 use /proc/pid/exe to extract ELF header 2026-01-22 13:59:12 -08:00
Nikita Smith e907d895c6 refactored Linux layer to use static types for the entities 2026-01-22 13:30:39 -08:00
Nikita Smith 1ecd970f31 STAP copy functions 2026-01-22 13:30:03 -08:00
Nikita Smith 7627ccf84e move str8 list pop to the base layer 2026-01-22 13:29:45 -08:00
Nikita Smith 29a7dfedac natvis type 2026-01-20 15:35:02 -08:00
Nikita Smith 4f95819eb0 by default linker creates a bind table 2026-01-20 15:33:00 -08:00
Nikita Smith 85df75c30b defer import link test 2026-01-20 15:27:40 -08:00
Nikita Smith 1c0e9030fa move lib member queue state to the link step and release it after link step is done 2026-01-20 15:27:31 -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 0c4009c328 bugfix import member queue detection 2026-01-16 18:53:03 -08:00
Nikita Smith 8f47ce7616 filter out duplicate page entries before computing the buffer size 2026-01-16 18:52:55 -08:00
Nikita Smith 4ab89cd120 set default values for unload and nobind 2026-01-16 18:41:15 -08:00
Nikita Smith 0168448924 by default commit a page for heap and stack 2026-01-16 18:40:32 -08:00
Nikita Smith 6e32a1f11c ignore /EXPERIMENTAL 2026-01-15 18:29:37 -08:00
Nikita Smith 0c0b7ac6d3 bugfix import linking 2026-01-15 18:25:46 -08:00
Nikita Smith 2729aae982 natvis for linker types 2026-01-15 16:41:07 -08:00
Nikita Smith de164784d0 fix typos in runtime GNU struct parser 2026-01-12 19:06:29 -08:00
Nikita Smith 70d04ac807 clean up unused process fields 2026-01-12 16:48:31 -08:00
Nikita Smith 12b53f4174 move register layout struct to Linux OS layer; use only GPR portion of
the layout struct for reg r/w; handle orig_rax
2026-01-12 16:48:31 -08:00
Nikita Smith fd6c3ef0e0 move GNU and ELF specific struct readers to appropriate layers 2025-12-28 01:16:55 -08:00
Nikita Smith f150662cc4 update logic for tracking new threads 2025-12-20 14:41:01 -08:00
Nikita Smith 13ce0cf020 fix race condition in artifact cache 2025-12-19 17:34:35 -08:00
Nikita Smith 717781e0a3 adjust cursor by delta read size 2025-12-19 17:34:14 -08:00
Nikita Smith 99fe1bc2f2 typo 2025-12-18 20:06:20 -08:00
Nikita Smith cf849f7875 add missing GNU expr opcodes 2025-12-18 20:06:14 -08:00
Nikita Smith cc01c04b8a use p_vaddr for computing dynamic segment address 2025-12-18 20:05:47 -08:00
Nikita Smith ce4d09d431 WIP DW_OP_piece 2025-12-17 17:32:03 -08:00
Nikita Smith 43cb8b7b1a handle DW_Op_FBReg, DW_ExprOp_Deref, DW_ExprOp_BReg*, and DW_ExprOp_BRegX 2025-12-16 17:32:12 -08:00
Nikita Smith 0aea6c4e8f finish value in register test 2025-12-16 13:49:23 -08:00
Nikita Smith da57259379 move DWARF expressions test to the torture 2025-12-16 11:14:17 -08:00
Nikita Smith 823cbf6a72 missing func decls 2025-12-16 11:13:56 -08:00
Nikita Smith 2b4e0f8b77 WIP DWARF expression eval
- fixup jump offsets after expression is serialized
- use generalized machine ops for register reads
- add option to limit number of executed opcodes
2025-12-16 11:12:43 -08:00
Nikita Smith 44123e9712 extend regs with DWARF registers mappings and read/write machine ops 2025-12-16 10:47:05 -08:00
Nikita Smith 952afd49a7 generalize machine ops 2025-12-16 10:40:48 -08:00
Nikita Smith 782f87e512 WIP DWARF expression encoder 2025-12-12 17:39:56 -08:00
Nikita Smith 7d0e168f8f typoes 2025-12-12 12:16:28 -08:00
Nikita Smith 7947d4dc55 outline DWARF expression evaluator 2025-12-11 16:43:21 -08:00
Nikita Smith 5b6ffd5a49 clean up instrumentation inherited during fork 2025-12-09 16:08:19 -08:00
Nikita Smith 094370c028 bugfix last string query 2025-12-09 14:02:06 -08:00
Nikita Smith 962f0e30ae WIP fork 2025-12-09 09:56:43 -08:00
Nikita Smith c221286ab8 WIP process attaching 2025-12-08 13:29:24 -08:00
Nikita Smith 9659ab4ad2 remove privileged registers 2025-12-05 17:03:05 -08:00
Nikita Smith 8005c31276 remove x86 register code 2025-12-05 16:39:02 -08:00
Nikita Smith ce77442d37 fix x87 register layout 2025-12-05 16:36:46 -08:00
Nikita Smith f4ceaecf75 set flags in xstate_bv for updated registers 2025-12-05 13:35:10 -08:00
Nikita Smith 38dbcde3f4 debug info path entity is needed otherwise unwinder fails to map key to RDI 2025-12-02 17:00:05 -08:00
Nikita Smith 81f08a01bc inline anonymous members 2025-12-02 14:39:36 -08:00
Nikita Smith f8f3f95d33 set trace options in PTRACE_SEIZE and remove unnecessary PTRACE_SETOPTIONS 2025-11-27 15:45:36 -08:00
Nikita Smith 1602a9e6ea runtime target OS handling 2025-11-27 11:17:47 -08:00
Nikita Smith 7f701dd806 minor fix 2025-11-26 20:31:34 -08:00
Nikita Smith f9561cb618 add support for CFA in the eval system
Canonical Frame Address is a DWARF-only concept encoded in the unwind info.
Debugger must store this data for each call frame and provide it to
the eval system based on selected stack frame.

To abstract over format details, we introduce a "Frame Unwind Context".
For DWARF, this context maintains the intermediate unwind state and exposes
the CFA, whereas for PE, it remains empty.
2025-11-26 15:42:40 -08:00
Nikita Smith 2a6d0d737c add CFA op to the bytecode 2025-11-26 15:13:24 -08:00