fix line info voff baking; default selected inline frame depth to being shallowest; rework rich unwind to not lose concrete/inline frame structured info

This commit is contained in:
Ryan Fleury
2024-07-26 11:09:55 -07:00
parent 1d87c34dca
commit c13833f74f
9 changed files with 6279 additions and 6249 deletions
+16 -22
View File
@@ -77,7 +77,7 @@ struct DF_CtrlCtx
{
DF_Handle thread;
U64 unwind_count;
U64 inline_unwind_count;
U64 inline_depth;
};
////////////////////////////////
@@ -452,37 +452,32 @@ struct DF_EntityFuzzyItemArray
////////////////////////////////
//~ rjf: Rich (Including Inline) Unwind Types
typedef struct DF_UnwindInlineFrame DF_UnwindInlineFrame;
struct DF_UnwindInlineFrame
{
DF_UnwindInlineFrame *next;
DF_UnwindInlineFrame *prev;
RDI_InlineSite *inline_site;
};
typedef struct DF_UnwindFrame DF_UnwindFrame;
struct DF_UnwindFrame
{
DF_UnwindInlineFrame *first_inline_frame;
DF_UnwindInlineFrame *last_inline_frame;
U64 inline_frame_count;
void *regs;
RDI_Parsed *rdi;
RDI_Procedure *procedure;
RDI_InlineSite *inline_site;
U64 base_unwind_idx;
U64 inline_unwind_idx;
};
typedef struct DF_UnwindFrameNode DF_UnwindFrameNode;
struct DF_UnwindFrameNode
{
DF_UnwindFrameNode *next;
DF_UnwindFrame v;
};
typedef struct DF_UnwindFrameList DF_UnwindFrameList;
struct DF_UnwindFrameList
{
DF_UnwindFrameNode *first;
DF_UnwindFrameNode *last;
U64 count;
};
typedef struct DF_UnwindFrameArray DF_UnwindFrameArray;
struct DF_UnwindFrameArray
{
DF_UnwindFrame *v;
U64 count;
U64 concrete_frame_count;
U64 inline_frame_count;
U64 total_frame_count;
};
typedef struct DF_Unwind DF_Unwind;
@@ -598,7 +593,7 @@ struct DF_InteractRegs
DF_Handle process;
DF_Handle thread;
U64 unwind_count;
U64 inline_unwind_count;
U64 inline_depth;
DF_Handle window;
DF_Handle panel;
DF_Handle view;
@@ -1609,7 +1604,6 @@ internal EVAL_String2NumMap *df_push_member_map_from_dbgi_key_voff(Arena *arena,
internal B32 df_set_thread_rip(DF_Entity *thread, U64 vaddr);
internal DF_Entity *df_module_from_thread_candidates(DF_Entity *thread, DF_EntityList *candidates);
internal DF_Unwind df_unwind_from_ctrl_unwind(Arena *arena, DI_Scope *di_scope, DF_Entity *process, CTRL_Unwind *base_unwind);
internal DF_UnwindFrame *df_frame_from_unwind_idxs(DF_Unwind *unwind, U64 base_unwind_idx, U64 inline_unwind_idx);
////////////////////////////////
//~ rjf: Target Controls