mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-26 21:44:59 -07:00
sketch out new markup API for programmatic address/data breakpoints
This commit is contained in:
+28
-2
@@ -131,6 +131,16 @@ ctrl_dmn_trap_flags_from_user_breakpoint_flags(CTRL_UserBreakpointFlags flags)
|
||||
return result;
|
||||
}
|
||||
|
||||
internal CTRL_UserBreakpointFlags
|
||||
ctrl_user_breakpoint_flags_from_dmn_trap_flags(DMN_TrapFlags flags)
|
||||
{
|
||||
CTRL_UserBreakpointFlags result = 0;
|
||||
if(flags & DMN_TrapFlag_BreakOnWrite) { result |= CTRL_UserBreakpointFlag_BreakOnWrite; }
|
||||
if(flags & DMN_TrapFlag_BreakOnRead) { result |= CTRL_UserBreakpointFlag_BreakOnRead; }
|
||||
if(flags & DMN_TrapFlag_BreakOnExecute) { result |= CTRL_UserBreakpointFlag_BreakOnExecute; }
|
||||
return result;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Machine/Handle Pair Type Functions
|
||||
|
||||
@@ -588,8 +598,9 @@ ctrl_serialized_string_from_event(Arena *arena, CTRL_Event *event, U64 max)
|
||||
str8_serial_push_struct(scratch.arena, &srl, &event->stack_base);
|
||||
str8_serial_push_struct(scratch.arena, &srl, &event->tls_root);
|
||||
str8_serial_push_struct(scratch.arena, &srl, &event->timestamp);
|
||||
str8_serial_push_struct(scratch.arena, &srl, &event->rgba);
|
||||
str8_serial_push_struct(scratch.arena, &srl, &event->exception_code);
|
||||
str8_serial_push_struct(scratch.arena, &srl, &event->rgba);
|
||||
str8_serial_push_struct(scratch.arena, &srl, &event->bp_flags);
|
||||
String8 string = event->string;
|
||||
string.size = Min(string.size, max-srl.total_size);
|
||||
str8_serial_push_struct(scratch.arena, &srl, &string.size);
|
||||
@@ -620,8 +631,9 @@ ctrl_event_from_serialized_string(Arena *arena, String8 string)
|
||||
read_off += str8_deserial_read_struct(string, read_off, &event.stack_base);
|
||||
read_off += str8_deserial_read_struct(string, read_off, &event.tls_root);
|
||||
read_off += str8_deserial_read_struct(string, read_off, &event.timestamp);
|
||||
read_off += str8_deserial_read_struct(string, read_off, &event.rgba);
|
||||
read_off += str8_deserial_read_struct(string, read_off, &event.exception_code);
|
||||
read_off += str8_deserial_read_struct(string, read_off, &event.rgba);
|
||||
read_off += str8_deserial_read_struct(string, read_off, &event.bp_flags);
|
||||
read_off += str8_deserial_read_struct(string, read_off, &event.string.size);
|
||||
event.string.str = push_array_no_zero(arena, U8, event.string.size);
|
||||
read_off += str8_deserial_read(string, read_off, event.string.str, event.string.size, 1);
|
||||
@@ -4353,6 +4365,20 @@ ctrl_thread__next_dmn_event(Arena *arena, DMN_CtrlCtx *ctrl_ctx, CTRL_Msg *msg,
|
||||
out_evt->parent = ctrl_handle_make(CTRL_MachineID_Local, event->process);
|
||||
out_evt->rgba = event->code;
|
||||
}break;
|
||||
case DMN_EventKind_SetBreakpoint:
|
||||
{
|
||||
CTRL_Event *out_evt = ctrl_event_list_push(scratch.arena, &evts);
|
||||
out_evt->kind = CTRL_EventKind_SetBreakpoint;
|
||||
out_evt->vaddr_rng = r1u64(event->address, event->address+event->size);
|
||||
out_evt->bp_flags = ctrl_user_breakpoint_flags_from_dmn_trap_flags(event->flags);
|
||||
}break;
|
||||
case DMN_EventKind_UnsetBreakpoint:
|
||||
{
|
||||
CTRL_Event *out_evt = ctrl_event_list_push(scratch.arena, &evts);
|
||||
out_evt->kind = CTRL_EventKind_UnsetBreakpoint;
|
||||
out_evt->vaddr_rng = r1u64(event->address, event->address+event->size);
|
||||
out_evt->bp_flags = ctrl_user_breakpoint_flags_from_dmn_trap_flags(event->flags);
|
||||
}break;
|
||||
}
|
||||
ctrl_c2u_push_events(&evts);
|
||||
|
||||
|
||||
@@ -406,10 +406,12 @@ typedef enum CTRL_EventKind
|
||||
//- rjf: debug info changes
|
||||
CTRL_EventKind_ModuleDebugInfoPathChange,
|
||||
|
||||
//- rjf: debug strings / decorations
|
||||
//- rjf: debug strings / decorations / markup
|
||||
CTRL_EventKind_DebugString,
|
||||
CTRL_EventKind_ThreadName,
|
||||
CTRL_EventKind_ThreadColor,
|
||||
CTRL_EventKind_SetBreakpoint,
|
||||
CTRL_EventKind_UnsetBreakpoint,
|
||||
|
||||
//- rjf: memory
|
||||
CTRL_EventKind_MemReserve,
|
||||
@@ -465,6 +467,7 @@ struct CTRL_Event
|
||||
U64 timestamp;
|
||||
U32 exception_code;
|
||||
U32 rgba;
|
||||
CTRL_UserBreakpointFlags bp_flags;
|
||||
String8 string;
|
||||
};
|
||||
|
||||
@@ -755,6 +758,7 @@ internal String8 ctrl_string_from_event_kind(CTRL_EventKind kind);
|
||||
internal String8 ctrl_string_from_msg_kind(CTRL_MsgKind kind);
|
||||
internal CTRL_EntityKind ctrl_entity_kind_from_string(String8 string);
|
||||
internal DMN_TrapFlags ctrl_dmn_trap_flags_from_user_breakpoint_flags(CTRL_UserBreakpointFlags flags);
|
||||
internal CTRL_UserBreakpointFlags ctrl_user_breakpoint_flags_from_dmn_trap_flags(DMN_TrapFlags flags);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Handle Type Functions
|
||||
|
||||
Reference in New Issue
Block a user