major clean-up pass over unwinding/module-info abstraction, + usage in the debug engine. simplified / cleaned up DWARF helpers for unwind info & expressions. decoupling unwinding / DWARF evaluation from memory read callbacks. light module info now prepared by demon layer - debug engine no longer duplicates per-backend parsing. unwind abstraction layer now does thin abstraction over unwinding backends, debug engine only calls abstraction. clean up demon to have fewer ad-hoc 'queries' on handles, and prefer sending info over debug events when possible / when it fits the usage pattern. move DWARF enum specifications to metacode, generate enums/xlists/tables/etc. decouple raddbg/radbin completely from old parsing helpers. replace portion of DWARF dumping; pull out some new parsing helpers from converter / dumper.

This commit is contained in:
Ryan Fleury committed 2026-06-02 12:11:13 -07:00
1 parent 541d3afefa
commit d73ce364b9
88 files changed
+9899 -4723

No files matched your search

+4 -3
View File
@@ -97,7 +97,6 @@ struct DMN_ModuleInfo
// rjf: unwinding info
Rng1U64 pe_intel_pdatas_vaddr_range;
Rng1U64 eh_frame_header_vaddr_range;
U64 cfi_rebase;
// rjf: special raddbg data
Rng1U64 raddbg_info_voff_range;
@@ -135,6 +134,9 @@ struct DMN_Event
// rjf: module info
DMN_ModuleInfo *module_info;
// rjf: thread info
U64 tls_root_vaddr;
};
typedef struct DMN_EventNode DMN_EventNode;
@@ -291,10 +293,9 @@ internal U64 dmn_process_read(DMN_Handle process, Rng1U64 range, void *dst);
internal B32 dmn_process_write(DMN_Handle process, Rng1U64 range, void *src);
//- rjf: threads
internal U64 dmn_stack_base_vaddr_from_thread(DMN_Handle handle);
internal U64 dmn_tls_root_vaddr_from_thread(DMN_Handle handle);
internal B32 dmn_thread_read_reg_block(DMN_Handle handle, void *reg_block);
internal B32 dmn_thread_write_reg_block(DMN_Handle handle, void *reg_block);
internal B32 dmn_thread_get_module_tls_vaddr(DMN_Handle thread, DMN_Handle module, U64 *vaddr_out);
//- rjf: system process listing
internal void dmn_process_iter_begin(DMN_ProcessIter *iter);