diff --git a/src/df/core/df_core.c b/src/df/core/df_core.c index 0cae26f8..85eede1b 100644 --- a/src/df/core/df_core.c +++ b/src/df/core/df_core.c @@ -4103,6 +4103,158 @@ df_string_from_ascii_value(Arena *arena, U8 val) return result; } +internal String8 +df_string_from_hresult_facility_code(U32 code) +{ + String8 result = {0}; + switch(code) + { + default:{}break; + case 0x1:{result = str8_lit("RPC");}break; + case 0x2:{result = str8_lit("DISPATCH");}break; + case 0x3:{result = str8_lit("STORAGE");}break; + case 0x4:{result = str8_lit("ITF");}break; + case 0x7:{result = str8_lit("WIN32");}break; + case 0x8:{result = str8_lit("WINDOWS");}break; + case 0x9:{result = str8_lit("SECURITY|SSPI");}break; + case 0xA:{result = str8_lit("CONTROL");}break; + case 0xB:{result = str8_lit("CERT");}break; + case 0xC:{result = str8_lit("INTERNET");}break; + case 0xD:{result = str8_lit("MEDIASERVER");}break; + case 0xE:{result = str8_lit("MSMQ");}break; + case 0xF:{result = str8_lit("SETUPAPI");}break; + case 0x10:{result = str8_lit("SCARD");}break; + case 0x11:{result = str8_lit("COMPLUS");}break; + case 0x12:{result = str8_lit("AAF");}break; + case 0x13:{result = str8_lit("URT");}break; + case 0x14:{result = str8_lit("ACS");}break; + case 0x15:{result = str8_lit("DPLAY");}break; + case 0x16:{result = str8_lit("UMI");}break; + case 0x17:{result = str8_lit("SXS");}break; + case 0x18:{result = str8_lit("WINDOWS_CE");}break; + case 0x19:{result = str8_lit("HTTP");}break; + case 0x1A:{result = str8_lit("USERMODE_COMMONLOG");}break; + case 0x1B:{result = str8_lit("WER");}break; + case 0x1F:{result = str8_lit("USERMODE_FILTER_MANAGER");}break; + case 0x20:{result = str8_lit("BACKGROUNDCOPY");}break; + case 0x21:{result = str8_lit("CONFIGURATION|WIA");}break; + case 0x22:{result = str8_lit("STATE_MANAGEMENT");}break; + case 0x23:{result = str8_lit("METADIRECTORY");}break; + case 0x24:{result = str8_lit("WINDOWSUPDATE");}break; + case 0x25:{result = str8_lit("DIRECTORYSERVICE");}break; + case 0x26:{result = str8_lit("GRAPHICS");}break; + case 0x27:{result = str8_lit("SHELL|NAP");}break; + case 0x28:{result = str8_lit("TPM_SERVICES");}break; + case 0x29:{result = str8_lit("TPM_SOFTWARE");}break; + case 0x2A:{result = str8_lit("UI");}break; + case 0x2B:{result = str8_lit("XAML");}break; + case 0x2C:{result = str8_lit("ACTION_QUEUE");}break; + case 0x30:{result = str8_lit("WINDOWS_SETUP|PLA");}break; + case 0x31:{result = str8_lit("FVE");}break; + case 0x32:{result = str8_lit("FWP");}break; + case 0x33:{result = str8_lit("WINRM");}break; + case 0x34:{result = str8_lit("NDIS");}break; + case 0x35:{result = str8_lit("USERMODE_HYPERVISOR");}break; + case 0x36:{result = str8_lit("CMI");}break; + case 0x37:{result = str8_lit("USERMODE_VIRTUALIZATION");}break; + case 0x38:{result = str8_lit("USERMODE_VOLMGR");}break; + case 0x39:{result = str8_lit("BCD");}break; + case 0x3A:{result = str8_lit("USERMODE_VHD");}break; + case 0x3C:{result = str8_lit("SDIAG");}break; + case 0x3D:{result = str8_lit("WINPE|WEBSERVICES");}break; + case 0x3E:{result = str8_lit("WPN");}break; + case 0x3F:{result = str8_lit("WINDOWS_STORE");}break; + case 0x40:{result = str8_lit("INPUT");}break; + case 0x42:{result = str8_lit("EAP");}break; + case 0x50:{result = str8_lit("WINDOWS_DEFENDER");}break; + case 0x51:{result = str8_lit("OPC");}break; + case 0x52:{result = str8_lit("XPS");}break; + case 0x53:{result = str8_lit("RAS");}break; + case 0x54:{result = str8_lit("POWERSHELL|MBN");}break; + case 0x55:{result = str8_lit("EAS");}break; + case 0x62:{result = str8_lit("P2P_INT");}break; + case 0x63:{result = str8_lit("P2P");}break; + case 0x64:{result = str8_lit("DAF");}break; + case 0x65:{result = str8_lit("BLUETOOTH_ATT");}break; + case 0x66:{result = str8_lit("AUDIO");}break; + case 0x6D:{result = str8_lit("VISUALCPP");}break; + case 0x70:{result = str8_lit("SCRIPT");}break; + case 0x71:{result = str8_lit("PARSE");}break; + case 0x78:{result = str8_lit("BLB");}break; + case 0x79:{result = str8_lit("BLB_CLI");}break; + case 0x7A:{result = str8_lit("WSBAPP");}break; + case 0x80:{result = str8_lit("BLBUI");}break; + case 0x81:{result = str8_lit("USN");}break; + case 0x82:{result = str8_lit("USERMODE_VOLSNAP");}break; + case 0x83:{result = str8_lit("TIERING");}break; + case 0x85:{result = str8_lit("WSB_ONLINE");}break; + case 0x86:{result = str8_lit("ONLINE_ID");}break; + case 0x99:{result = str8_lit("DLS");}break; + case 0xA0:{result = str8_lit("SOS");}break; + case 0xB0:{result = str8_lit("DEBUGGERS");}break; + case 0xE7:{result = str8_lit("USERMODE_SPACES");}break; + case 0x100:{result = str8_lit("DMSERVER|RESTORE|SPP");}break; + case 0x101:{result = str8_lit("DEPLOYMENT_SERVICES_SERVER");}break; + case 0x102:{result = str8_lit("DEPLOYMENT_SERVICES_IMAGING");}break; + case 0x103:{result = str8_lit("DEPLOYMENT_SERVICES_MANAGEMENT");}break; + case 0x104:{result = str8_lit("DEPLOYMENT_SERVICES_UTIL");}break; + case 0x105:{result = str8_lit("DEPLOYMENT_SERVICES_BINLSVC");}break; + case 0x107:{result = str8_lit("DEPLOYMENT_SERVICES_PXE");}break; + case 0x108:{result = str8_lit("DEPLOYMENT_SERVICES_TFTP");}break; + case 0x110:{result = str8_lit("DEPLOYMENT_SERVICES_TRANSPORT_MANAGEMENT");}break; + case 0x116:{result = str8_lit("DEPLOYMENT_SERVICES_DRIVER_PROVISIONING");}break; + case 0x121:{result = str8_lit("DEPLOYMENT_SERVICES_MULTICAST_SERVER");}break; + case 0x122:{result = str8_lit("DEPLOYMENT_SERVICES_MULTICAST_CLIENT");}break; + case 0x125:{result = str8_lit("DEPLOYMENT_SERVICES_CONTENT_PROVIDER");}break; + case 0x131:{result = str8_lit("LINGUISTIC_SERVICES");}break; + case 0x375:{result = str8_lit("WEB");}break; + case 0x376:{result = str8_lit("WEB_SOCKET");}break; + case 0x446:{result = str8_lit("AUDIOSTREAMING");}break; + case 0x600:{result = str8_lit("ACCELERATOR");}break; + case 0x701:{result = str8_lit("MOBILE");}break; + case 0x7CC:{result = str8_lit("WMAAECMA");}break; + case 0x801:{result = str8_lit("WEP");}break; + case 0x802:{result = str8_lit("SYNCENGINE");}break; + case 0x878:{result = str8_lit("DIRECTMUSIC");}break; + case 0x879:{result = str8_lit("DIRECT3D10");}break; + case 0x87A:{result = str8_lit("DXGI");}break; + case 0x87B:{result = str8_lit("DXGI_DDI");}break; + case 0x87C:{result = str8_lit("DIRECT3D11");}break; + case 0x888:{result = str8_lit("LEAP");}break; + case 0x889:{result = str8_lit("AUDCLNT");}break; + case 0x898:{result = str8_lit("WINCODEC_DWRITE_DWM");}break; + case 0x899:{result = str8_lit("DIRECT2D");}break; + case 0x900:{result = str8_lit("DEFRAG");}break; + case 0x901:{result = str8_lit("USERMODE_SDBUS");}break; + case 0x902:{result = str8_lit("JSCRIPT");}break; + case 0xA01:{result = str8_lit("PIDGENX");}break; + } + return result; +} + +internal String8 +df_string_from_hresult_code(U32 code) +{ + String8 result = {0}; + switch(code) + { + default:{}break; + case 0x00000000: {result = str8_lit("S_OK: Operation successful");}break; + case 0x00000001: {result = str8_lit("S_FALSE: Operation successful but returned no results");}break; + case 0x80004004: {result = str8_lit("E_ABORT: Operation aborted");}break; + case 0x80004005: {result = str8_lit("E_FAIL: Unspecified failure");}break; + case 0x80004002: {result = str8_lit("E_NOINTERFACE: No such interface supported");}break; + case 0x80004001: {result = str8_lit("E_NOTIMPL: Not implemented");}break; + case 0x80004003: {result = str8_lit("E_POINTER: Pointer that is not valid");}break; + case 0x8000FFFF: {result = str8_lit("E_UNEXPECTED: Unexpected failure");}break; + case 0x80070005: {result = str8_lit("E_ACCESSDENIED: General access denied error");}break; + case 0x80070006: {result = str8_lit("E_HANDLE: Handle that is not valid");}break; + case 0x80070057: {result = str8_lit("E_INVALIDARG: One or more arguments are not valid");}break; + case 0x8007000E: {result = str8_lit("E_OUTOFMEMORY: Failed to allocate necessary memory");}break; + } + return result; +} + internal String8 df_string_from_simple_typed_eval(Arena *arena, DF_EvalVizStringFlags flags, U32 radix, E_Eval eval) { @@ -4121,10 +4273,38 @@ df_string_from_simple_typed_eval(Arena *arena, DF_EvalVizStringFlags flags, U32 case E_TypeKind_Handle: { - U64 min_digits = (radix == 16) ? type_byte_size*2 : 0; result = str8_from_s64(arena, eval.value.s64, radix, 0, digit_group_separator); }break; + case E_TypeKind_HResult: + { + if(flags & DF_EvalVizStringFlag_ReadOnlyDisplayRules) + { + Temp scratch = scratch_begin(&arena, 1); + U32 hresult_value = (U32)eval.value.u64; + U32 is_error = !!(hresult_value & (1ull<<31)); + U32 error_code = (hresult_value); + U32 facility = (hresult_value & 0x7ff0000) >> 16; + String8 value_string = str8_from_s64(scratch.arena, eval.value.u64, radix, 0, digit_group_separator); + String8 facility_string = df_string_from_hresult_facility_code(facility); + String8 error_string = df_string_from_hresult_code(error_code); + result = push_str8f(arena, "%S%s%s%S%s%s%S%s", + error_string, + error_string.size != 0 ? " " : "", + facility_string.size != 0 ? "[" : "", + facility_string, + facility_string.size != 0 ? "] ": "", + error_string.size != 0 ? "(" : "", + value_string, + error_string.size != 0 ? ")" : ""); + scratch_end(scratch); + } + else + { + result = str8_from_s64(arena, eval.value.u64, radix, 0, digit_group_separator); + } + }break; + case E_TypeKind_Char8: case E_TypeKind_Char16: case E_TypeKind_Char32: @@ -4156,7 +4336,6 @@ df_string_from_simple_typed_eval(Arena *arena, DF_EvalVizStringFlags flags, U32 case E_TypeKind_S32: case E_TypeKind_S64: { - U64 min_digits = (radix == 16) ? type_byte_size*2 : 0; result = str8_from_s64(arena, eval.value.s64, radix, 0, digit_group_separator); }break; @@ -8401,90 +8580,10 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt) } } }break; - case DF_CoreCmdKind_TextBreakpoint: + case DF_CoreCmdKind_AddAddressBreakpoint: + case DF_CoreCmdKind_AddFunctionBreakpoint: { - DF_Entity *entity = df_entity_from_handle(params.entity); - if(df_entity_is_nil(entity)) - { - entity = df_entity_from_path(params.file_path, 0); - } - if(!df_entity_is_nil(entity)) - { - S64 line_num = params.text_point.line; - B32 removed_existing = 0; - for(DF_Entity *child = entity->first, *next = 0; !df_entity_is_nil(child); child = next) - { - next = child->next; - if(child->kind == DF_EntityKind_Breakpoint && child->flags & DF_EntityFlag_HasTextPoint && child->text_point.line == line_num) - { - removed_existing = 1; - df_entity_mark_for_deletion(child); - } - } - if(removed_existing == 0) - { - DF_Entity *bp = &df_g_nil_entity; - DF_StateDeltaHistoryBatch(df_state_delta_history()) - { - bp = df_entity_alloc(entity, DF_EntityKind_Breakpoint); - } - df_entity_equip_txt_pt(bp, params.text_point); - df_entity_equip_cfg_src(bp, DF_CfgSrc_Project); - } - } - }break; - case DF_CoreCmdKind_AddressBreakpoint: - { - U64 vaddr = params.vaddr; - if(vaddr != 0) - { - DF_Entity *bp = &df_g_nil_entity; - DF_EntityList existing_bps = df_query_cached_entity_list_with_kind(DF_EntityKind_Breakpoint); - for(DF_EntityNode *n = existing_bps.first; n != 0; n = n->next) - { - if(n->entity->vaddr == vaddr) - { - bp = n->entity; - break; - } - } - if(df_entity_is_nil(bp)) - { - DF_StateDeltaHistoryBatch(df_state_delta_history()) - { - bp = df_entity_alloc(df_entity_root(), DF_EntityKind_Breakpoint); - } - df_entity_equip_vaddr(bp, vaddr); - df_entity_equip_cfg_src(bp, DF_CfgSrc_Project); - } - else - { - df_entity_mark_for_deletion(bp); - } - } - }break; - case DF_CoreCmdKind_FunctionBreakpoint: - { - String8 function_name = params.string; - if(function_name.size != 0) - { - DF_Entity *symb = df_entity_from_name_and_kind(function_name, DF_EntityKind_EntryPoint); - DF_Entity *bp = df_entity_ancestor_from_kind(symb, DF_EntityKind_Breakpoint); - if(df_entity_is_nil(bp)) - { - DF_StateDeltaHistoryBatch(df_state_delta_history()) - { - bp = df_entity_alloc(df_entity_root(), DF_EntityKind_Breakpoint); - } - DF_Entity *symbol_name_entity = df_entity_alloc(bp, DF_EntityKind_EntryPoint); - df_entity_equip_name(symbol_name_entity, function_name); - df_entity_equip_cfg_src(bp, DF_CfgSrc_Project); - } - else - { - df_entity_mark_for_deletion(bp); - } - } + df_cmd_list_push(arena, cmds, ¶ms, df_cmd_spec_from_core_cmd_kind(DF_CoreCmdKind_AddBreakpoint)); }break; //- rjf: watches diff --git a/src/df/core/df_core.h b/src/df/core/df_core.h index 16e3d847..f15b7c6a 100644 --- a/src/df/core/df_core.h +++ b/src/df/core/df_core.h @@ -1588,6 +1588,8 @@ internal String8 df_eval_view_rule_from_key(DF_EvalView *eval_view, DF_ExpandKey //- rjf: evaluation value string builder helpers internal String8 df_string_from_ascii_value(Arena *arena, U8 val); +internal String8 df_string_from_hresult_facility_code(U32 code); +internal String8 df_string_from_hresult_code(U32 code); internal String8 df_string_from_simple_typed_eval(Arena *arena, DF_EvalVizStringFlags flags, U32 radix, E_Eval eval); //- rjf: writing values back to child processes diff --git a/src/df/core/df_core.mdesk b/src/df/core/df_core.mdesk index f1de14f7..59cb3e87 100644 --- a/src/df/core/df_core.mdesk +++ b/src/df/core/df_core.mdesk @@ -36,6 +36,10 @@ DF_EntityKindTable: //- rjf: auto view rules {AutoViewRule auto_view_rule 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 "Label" Binoculars "Auto View Rule" } + //- rjf: file path maps + {SourcePath source_path 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Path" Null "Source Path" } + {DestPath dest_path 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Path" Null "Destination Path" } + //- rjf: watch pins {WatchPin watch_pin 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 "Expression" Pin "Watch Pin" } @@ -347,13 +351,10 @@ DF_CoreCmdTable:// | | | | {RelocateEntity 0 0 Null Nil 0 0 0 0 0 0 Null "relocate_entity" "Relocate Entity" "Relocates an entity." "" } //- rjf: breakpoints - {AddBreakpoint 0 0 Null Nil 0 0 0 0 0 0 CircleFilled "add_breakpoint" "Add Breakpoint" "Places a breakpoint at a given location (file path and line number, address, or symbol name)." "" } - {ToggleBreakpoint 0 0 Null Nil 0 0 0 0 0 0 CircleFilled "toggle_breakpoint" "Toggle Breakpoint" "Places or removes a breakpoint at a given location (file path and line number, address, or symbol name)." "" } - - //- rjf: [OLD] breakpoints - {TextBreakpoint 0 1 FilePath Nil 0 0 0 0 0 0 CircleFilled "text_breakpoint" "Text Breakpoint" "Places or removes a breakpoint on the specified line of source code." "" } - {AddressBreakpoint 1 1 VirtualAddr Nil 0 0 0 0 1 1 CircleFilled "address_breakpoint" "Address Breakpoint" "Places or removes a breakpoint on the specified address." "" } - {FunctionBreakpoint 1 1 String Nil 0 0 0 0 1 1 CircleFilled "function_breakpoint" "Function Breakpoint" "Places or removes a breakpoint on the first address(es) of the specified function." "" } + {AddBreakpoint 0 1 Null Nil 0 0 0 0 0 0 CircleFilled "add_breakpoint" "Add Breakpoint" "Places a breakpoint at a given location (file path and line number, address, or symbol name)." "" } + {AddAddressBreakpoint 1 0 VirtualAddr Nil 0 0 0 0 1 1 CircleFilled "add_address_breakpoint" "Add Address Breakpoint" "Places a breakpoint on the specified address." "" } + {AddFunctionBreakpoint 1 0 String Nil 0 0 0 0 1 1 CircleFilled "add_function_breakpoint" "Add Function Breakpoint" "Places a breakpoint on the first address(es) of the specified function." "" } + {ToggleBreakpoint 0 1 Null Nil 0 0 0 0 0 0 CircleFilled "toggle_breakpoint" "Toggle Breakpoint" "Places or removes a breakpoint at a given location (file path and line number, address, or symbol name)." "" } {ToggleBreakpointAtCursor 1 1 Null Nil 0 0 0 0 0 0 CircleFilled "toggle_breakpoint_cursor" "Toggle Breakpoint At Cursor" "Places or removes a breakpoint on the line on which the active cursor sits." "" } {RemoveBreakpoint 1 1 Entity Breakpoint 0 0 0 0 0 1 Trash "remove_breakpoint" "Remove Breakpoint" "Removes an existing breakpoint." "" } {EnableBreakpoint 1 1 Entity Breakpoint 0 0 0 0 0 1 CheckFilled "enable_breakpoint" "Enable Breakpoint" "Enables a breakpoint." "" } diff --git a/src/df/core/generated/df_core.meta.c b/src/df/core/generated/df_core.meta.c index bba998a6..ae0d4f1d 100644 --- a/src/df/core/generated/df_core.meta.c +++ b/src/df/core/generated/df_core.meta.c @@ -32,7 +32,7 @@ Rng1U64 df_g_cmd_param_slot_range_table[24] = {OffsetOf(DF_CmdParams, inline_depth), OffsetOf(DF_CmdParams, inline_depth) + sizeof(U64)}, }; -DF_IconKind df_g_entity_kind_icon_kind_table[28] = +DF_IconKind df_g_entity_kind_icon_kind_table[30] = { DF_IconKind_Null, DF_IconKind_Null, @@ -40,6 +40,8 @@ DF_IconKind_Machine, DF_IconKind_FileOutline, DF_IconKind_FileOutline, DF_IconKind_Binoculars, +DF_IconKind_Null, +DF_IconKind_Null, DF_IconKind_Pin, DF_IconKind_Binoculars, DF_IconKind_Binoculars, @@ -64,7 +66,7 @@ DF_IconKind_Null, DF_IconKind_Null, }; -String8 df_g_entity_kind_display_string_table[28] = +String8 df_g_entity_kind_display_string_table[30] = { str8_lit_comp("Nil"), str8_lit_comp("Root"), @@ -72,6 +74,8 @@ str8_lit_comp("Machine"), str8_lit_comp("File"), str8_lit_comp("Override File Link"), str8_lit_comp("Auto View Rule"), +str8_lit_comp("Source Path"), +str8_lit_comp("Destination Path"), str8_lit_comp("Watch Pin"), str8_lit_comp("Watch"), str8_lit_comp("View Rule"), @@ -96,7 +100,7 @@ str8_lit_comp("Conversion Failure"), str8_lit_comp("EndedProcess"), }; -String8 df_g_entity_kind_name_lower_table[28] = +String8 df_g_entity_kind_name_lower_table[30] = { str8_lit_comp("nil"), str8_lit_comp("root"), @@ -104,6 +108,8 @@ str8_lit_comp("machine"), str8_lit_comp("file"), str8_lit_comp("override_file_link"), str8_lit_comp("auto_view_rule"), +str8_lit_comp("source_path"), +str8_lit_comp("dest_path"), str8_lit_comp("watch_pin"), str8_lit_comp("watch"), str8_lit_comp("view_rule"), @@ -128,7 +134,7 @@ str8_lit_comp("conversion_fail"), str8_lit_comp("ended_process"), }; -String8 df_g_entity_kind_name_label_table[28] = +String8 df_g_entity_kind_name_label_table[30] = { str8_lit_comp("Label"), str8_lit_comp("Label"), @@ -136,6 +142,8 @@ str8_lit_comp("Label"), str8_lit_comp("Label"), str8_lit_comp("Label"), str8_lit_comp("Label"), +str8_lit_comp("Path"), +str8_lit_comp("Path"), str8_lit_comp("Expression"), str8_lit_comp("Expression"), str8_lit_comp("Expression"), @@ -160,7 +168,7 @@ str8_lit_comp("Label"), str8_lit_comp("Label"), }; -DF_EntityKindFlags df_g_entity_kind_flags_table[28] = +DF_EntityKindFlags df_g_entity_kind_flags_table[30] = { (0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), (0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), @@ -168,6 +176,8 @@ DF_EntityKindFlags df_g_entity_kind_flags_table[28] = (0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), (0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (1*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), (0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime), +(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), +(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), (1*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (1*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 1*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime), (1*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (1*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (1*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 1*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime), (1*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (1*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (1*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 1*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime), @@ -224,7 +234,7 @@ DF_CoreCmdKind_Null, DF_CoreCmdKind_Null, }; -DF_CmdSpecInfo df_g_core_cmd_kind_spec_info_table[222] = +DF_CmdSpecInfo df_g_core_cmd_kind_spec_info_table[221] = { { str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), (DF_CmdSpecFlag_ListInUI*0)|(DF_CmdSpecFlag_ListInIPCDocs*0), {DF_CmdParamSlot_Null, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_Null}, { str8_lit_comp("exit"), str8_lit_comp("Exits the debugger."), str8_lit_comp("quit,close,abort"), str8_lit_comp("Exit"), (DF_CmdSpecFlag_ListInUI*1)|(DF_CmdSpecFlag_ListInIPCDocs*1), {DF_CmdParamSlot_Null, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_X}, @@ -390,11 +400,10 @@ DF_CmdSpecInfo df_g_core_cmd_kind_spec_info_table[222] = { str8_lit_comp("edit_entity"), str8_lit_comp("Opens the editor for an entity."), str8_lit_comp(""), str8_lit_comp("Edit Entity"), (DF_CmdSpecFlag_ListInUI*0)|(DF_CmdSpecFlag_ListInIPCDocs*0), {DF_CmdParamSlot_Null, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_Null}, { str8_lit_comp("duplicate_entity"), str8_lit_comp("Duplicates an entity."), str8_lit_comp(""), str8_lit_comp("Duplicate Entity"), (DF_CmdSpecFlag_ListInUI*0)|(DF_CmdSpecFlag_ListInIPCDocs*0), {DF_CmdParamSlot_Null, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_Null}, { str8_lit_comp("relocate_entity"), str8_lit_comp("Relocates an entity."), str8_lit_comp(""), str8_lit_comp("Relocate Entity"), (DF_CmdSpecFlag_ListInUI*0)|(DF_CmdSpecFlag_ListInIPCDocs*0), {DF_CmdParamSlot_Null, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_Null}, -{ str8_lit_comp("add_breakpoint"), str8_lit_comp("Places a breakpoint at a given location (file path and line number, address, or symbol name)."), str8_lit_comp(""), str8_lit_comp("Add Breakpoint"), (DF_CmdSpecFlag_ListInUI*0)|(DF_CmdSpecFlag_ListInIPCDocs*0), {DF_CmdParamSlot_Null, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_CircleFilled}, -{ str8_lit_comp("toggle_breakpoint"), str8_lit_comp("Places or removes a breakpoint at a given location (file path and line number, address, or symbol name)."), str8_lit_comp(""), str8_lit_comp("Toggle Breakpoint"), (DF_CmdSpecFlag_ListInUI*0)|(DF_CmdSpecFlag_ListInIPCDocs*0), {DF_CmdParamSlot_Null, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_CircleFilled}, -{ str8_lit_comp("text_breakpoint"), str8_lit_comp("Places or removes a breakpoint on the specified line of source code."), str8_lit_comp(""), str8_lit_comp("Text Breakpoint"), (DF_CmdSpecFlag_ListInUI*0)|(DF_CmdSpecFlag_ListInIPCDocs*1), {DF_CmdParamSlot_FilePath, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_CircleFilled}, -{ str8_lit_comp("address_breakpoint"), str8_lit_comp("Places or removes a breakpoint on the specified address."), str8_lit_comp(""), str8_lit_comp("Address Breakpoint"), (DF_CmdSpecFlag_ListInUI*1)|(DF_CmdSpecFlag_ListInIPCDocs*1), {DF_CmdParamSlot_VirtualAddr, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*1)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*1)}, DF_IconKind_CircleFilled}, -{ str8_lit_comp("function_breakpoint"), str8_lit_comp("Places or removes a breakpoint on the first address(es) of the specified function."), str8_lit_comp(""), str8_lit_comp("Function Breakpoint"), (DF_CmdSpecFlag_ListInUI*1)|(DF_CmdSpecFlag_ListInIPCDocs*1), {DF_CmdParamSlot_String, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*1)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*1)}, DF_IconKind_CircleFilled}, +{ str8_lit_comp("add_breakpoint"), str8_lit_comp("Places a breakpoint at a given location (file path and line number, address, or symbol name)."), str8_lit_comp(""), str8_lit_comp("Add Breakpoint"), (DF_CmdSpecFlag_ListInUI*0)|(DF_CmdSpecFlag_ListInIPCDocs*1), {DF_CmdParamSlot_Null, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_CircleFilled}, +{ str8_lit_comp("add_address_breakpoint"), str8_lit_comp("Places a breakpoint on the specified address."), str8_lit_comp(""), str8_lit_comp("Add Address Breakpoint"), (DF_CmdSpecFlag_ListInUI*1)|(DF_CmdSpecFlag_ListInIPCDocs*0), {DF_CmdParamSlot_VirtualAddr, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*1)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*1)}, DF_IconKind_CircleFilled}, +{ str8_lit_comp("add_function_breakpoint"), str8_lit_comp("Places a breakpoint on the first address(es) of the specified function."), str8_lit_comp(""), str8_lit_comp("Add Function Breakpoint"), (DF_CmdSpecFlag_ListInUI*1)|(DF_CmdSpecFlag_ListInIPCDocs*0), {DF_CmdParamSlot_String, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*1)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*1)}, DF_IconKind_CircleFilled}, +{ str8_lit_comp("toggle_breakpoint"), str8_lit_comp("Places or removes a breakpoint at a given location (file path and line number, address, or symbol name)."), str8_lit_comp(""), str8_lit_comp("Toggle Breakpoint"), (DF_CmdSpecFlag_ListInUI*0)|(DF_CmdSpecFlag_ListInIPCDocs*1), {DF_CmdParamSlot_Null, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_CircleFilled}, { str8_lit_comp("toggle_breakpoint_cursor"), str8_lit_comp("Places or removes a breakpoint on the line on which the active cursor sits."), str8_lit_comp(""), str8_lit_comp("Toggle Breakpoint At Cursor"), (DF_CmdSpecFlag_ListInUI*1)|(DF_CmdSpecFlag_ListInIPCDocs*1), {DF_CmdParamSlot_Null, DF_EntityKind_Nil, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*0)}, DF_IconKind_CircleFilled}, { str8_lit_comp("remove_breakpoint"), str8_lit_comp("Removes an existing breakpoint."), str8_lit_comp(""), str8_lit_comp("Remove Breakpoint"), (DF_CmdSpecFlag_ListInUI*1)|(DF_CmdSpecFlag_ListInIPCDocs*1), {DF_CmdParamSlot_Entity, DF_EntityKind_Breakpoint, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*1)}, DF_IconKind_Trash}, { str8_lit_comp("enable_breakpoint"), str8_lit_comp("Enables a breakpoint."), str8_lit_comp(""), str8_lit_comp("Enable Breakpoint"), (DF_CmdSpecFlag_ListInUI*1)|(DF_CmdSpecFlag_ListInIPCDocs*1), {DF_CmdParamSlot_Entity, DF_EntityKind_Breakpoint, (DF_CmdQueryFlag_AllowFiles*0)|(DF_CmdQueryFlag_AllowFolders*0)|(DF_CmdQueryFlag_CodeInput*0)|(DF_CmdQueryFlag_KeepOldInput*0)|(DF_CmdQueryFlag_SelectOldInput*0)|(DF_CmdQueryFlag_Required*1)}, DF_IconKind_CheckFilled}, diff --git a/src/df/core/generated/df_core.meta.h b/src/df/core/generated/df_core.meta.h index 3fb11475..4d710ef3 100644 --- a/src/df/core/generated/df_core.meta.h +++ b/src/df/core/generated/df_core.meta.h @@ -23,6 +23,8 @@ DF_EntityKind_Machine, DF_EntityKind_File, DF_EntityKind_OverrideFileLink, DF_EntityKind_AutoViewRule, +DF_EntityKind_SourcePath, +DF_EntityKind_DestPath, DF_EntityKind_WatchPin, DF_EntityKind_Watch, DF_EntityKind_ViewRule, @@ -215,10 +217,9 @@ DF_CoreCmdKind_EditEntity, DF_CoreCmdKind_DuplicateEntity, DF_CoreCmdKind_RelocateEntity, DF_CoreCmdKind_AddBreakpoint, +DF_CoreCmdKind_AddAddressBreakpoint, +DF_CoreCmdKind_AddFunctionBreakpoint, DF_CoreCmdKind_ToggleBreakpoint, -DF_CoreCmdKind_TextBreakpoint, -DF_CoreCmdKind_AddressBreakpoint, -DF_CoreCmdKind_FunctionBreakpoint, DF_CoreCmdKind_ToggleBreakpointAtCursor, DF_CoreCmdKind_RemoveBreakpoint, DF_CoreCmdKind_EnableBreakpoint, @@ -467,11 +468,11 @@ struct {B32 *value_ptr; String8 name;} DEV_toggle_table[] = }; C_LINKAGE_BEGIN extern Rng1U64 df_g_cmd_param_slot_range_table[24]; -extern DF_IconKind df_g_entity_kind_icon_kind_table[28]; -extern String8 df_g_entity_kind_display_string_table[28]; -extern String8 df_g_entity_kind_name_lower_table[28]; -extern String8 df_g_entity_kind_name_label_table[28]; -extern DF_EntityKindFlags df_g_entity_kind_flags_table[28]; +extern DF_IconKind df_g_entity_kind_icon_kind_table[30]; +extern String8 df_g_entity_kind_display_string_table[30]; +extern String8 df_g_entity_kind_name_lower_table[30]; +extern String8 df_g_entity_kind_name_label_table[30]; +extern DF_EntityKindFlags df_g_entity_kind_flags_table[30]; extern String8 df_g_cfg_src_string_table[4]; extern DF_CoreCmdKind df_g_cfg_src_load_cmd_kind_table[4]; extern DF_CoreCmdKind df_g_cfg_src_write_cmd_kind_table[4]; diff --git a/src/df/gfx/df_gfx.c b/src/df/gfx/df_gfx.c index b5410885..fce2d7eb 100644 --- a/src/df/gfx/df_gfx.c +++ b/src/df/gfx/df_gfx.c @@ -3795,19 +3795,11 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) } if(range.min.line == range.max.line && ui_clicked(df_icon_buttonf(ws, DF_IconKind_CircleFilled, 0, "Toggle Breakpoint"))) { - if(ws->code_ctx_menu_vaddr != 0) - { - DF_CmdParams p = df_cmd_params_from_window(ws); - p.vaddr = ws->code_ctx_menu_vaddr; - df_push_cmd__root(&p, df_cmd_spec_from_core_cmd_kind(DF_CoreCmdKind_AddressBreakpoint)); - } - else - { - DF_CmdParams p = df_cmd_params_from_window(ws); - p.file_path = ws->code_ctx_menu_file_path; - p.text_point = range.min; - df_push_cmd__root(&p, df_cmd_spec_from_core_cmd_kind(DF_CoreCmdKind_TextBreakpoint)); - } + DF_CmdParams p = df_cmd_params_from_window(ws); + p.file_path = ws->code_ctx_menu_file_path; + p.text_point = range.min; + p.vaddr = ws->code_ctx_menu_vaddr; + df_push_cmd__root(&p, df_cmd_spec_from_core_cmd_kind(DF_CoreCmdKind_ToggleBreakpoint)); ui_ctx_menu_close(); } if(range.min.line == range.max.line && ui_clicked(df_icon_buttonf(ws, DF_IconKind_Binoculars, 0, "Toggle Watch Expression"))) diff --git a/src/df/gfx/df_gfx.mdesk b/src/df/gfx/df_gfx.mdesk index 9460364b..293ebace 100644 --- a/src/df/gfx/df_gfx.mdesk +++ b/src/df/gfx/df_gfx.mdesk @@ -193,6 +193,8 @@ DF_BindingVersionRemapTable: {"load_profile" "open_profile"} {"load_project" "open_project"} {"open_profile" "open_project"} + {"address_breakpoint" "add_address_breakpoint"} + {"function_breakpoint" "add_function_breakpoint"} } @data(String8) df_g_binding_version_remap_old_name_table: @@ -269,13 +271,13 @@ DF_GfxViewTable: @table(slot view_spec opt_cmd_spec) DF_CmdParamSlot2ViewSpecMap: { - {Entity "entity_lister" "" } - {EntityList "entity_lister" "" } - {FilePath "file_system" "" } - {CmdSpec "commands" "" } - {ID "system_processes" "" } - {String "symbol_lister" "goto_name" } - {String "symbol_lister" "function_breakpoint" } + {Entity "entity_lister" "" } + {EntityList "entity_lister" "" } + {FilePath "file_system" "" } + {CmdSpec "commands" "" } + {ID "system_processes" "" } + {String "symbol_lister" "goto_name" } + {String "symbol_lister" "add_function_breakpoint" } } @data(DF_CmdParamSlot) df_g_cmd_param_slot_2_view_spec_src_map: diff --git a/src/df/gfx/df_views.c b/src/df/gfx/df_views.c index 120a1ff1..43d5bffc 100644 --- a/src/df/gfx/df_views.c +++ b/src/df/gfx/df_views.c @@ -2076,14 +2076,20 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS if((evt->delta_2s32.x < 0 || evt->delta_2s32.y < 0) && !df_expand_key_match(df_expand_key_zero(), fallback_pt_prev.key)) { DF_Entity *fallback_watch = df_entity_from_expand_key_and_kind(fallback_pt_prev.key, DF_EntityKind_Watch); - new_cursor_key = fallback_pt_prev.key; - new_cursor_parent_key = df_parent_expand_key_from_entity(fallback_watch); + if(!df_entity_is_nil(fallback_watch)) + { + new_cursor_key = fallback_pt_prev.key; + new_cursor_parent_key = df_parent_expand_key_from_entity(fallback_watch); + } } else if(!df_expand_key_match(df_expand_key_zero(), fallback_pt_next.key)) { DF_Entity *fallback_watch = df_entity_from_expand_key_and_kind(fallback_pt_next.key, DF_EntityKind_Watch); - new_cursor_key = fallback_pt_next.key; - new_cursor_parent_key = df_parent_expand_key_from_entity(fallback_watch); + if(!df_entity_is_nil(fallback_watch)) + { + new_cursor_key = fallback_pt_next.key; + new_cursor_parent_key = df_parent_expand_key_from_entity(fallback_watch); + } } DF_WatchViewPoint new_cursor_pt = {DF_WatchViewColumnKind_Expr, new_cursor_parent_key, new_cursor_key}; df_entity_mark_for_deletion(watch); diff --git a/src/df/gfx/generated/df_gfx.meta.c b/src/df/gfx/generated/df_gfx.meta.c index 543a9571..64629172 100644 --- a/src/df/gfx/generated/df_gfx.meta.c +++ b/src/df/gfx/generated/df_gfx.meta.c @@ -118,22 +118,26 @@ DF_StringBindingPair df_g_default_binding_table[110] = {str8_lit_comp("log_marker"), {OS_Key_M, 0 |OS_EventFlag_Ctrl |OS_EventFlag_Shift |OS_EventFlag_Alt}}, }; -String8 df_g_binding_version_remap_old_name_table[5] = +String8 df_g_binding_version_remap_old_name_table[7] = { str8_lit_comp("commands"), str8_lit_comp("load_user"), str8_lit_comp("load_profile"), str8_lit_comp("load_project"), str8_lit_comp("open_profile"), +str8_lit_comp("address_breakpoint"), +str8_lit_comp("function_breakpoint"), }; -String8 df_g_binding_version_remap_new_name_table[5] = +String8 df_g_binding_version_remap_new_name_table[7] = { str8_lit_comp("run_command"), str8_lit_comp("open_user"), str8_lit_comp("open_profile"), str8_lit_comp("open_project"), str8_lit_comp("open_project"), +str8_lit_comp("add_address_breakpoint"), +str8_lit_comp("add_function_breakpoint"), }; DF_ViewSpecInfo df_g_gfx_view_kind_spec_info_table[31] = @@ -201,7 +205,7 @@ str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp("goto_name"), -str8_lit_comp("function_breakpoint"), +str8_lit_comp("add_function_breakpoint"), }; DF_ViewSpecInfo df_g_gfx_view_rule_tab_view_spec_info_table[4] = diff --git a/src/df/gfx/generated/df_gfx.meta.h b/src/df/gfx/generated/df_gfx.meta.h index 4dc2fd83..c46d529e 100644 --- a/src/df/gfx/generated/df_gfx.meta.h +++ b/src/df/gfx/generated/df_gfx.meta.h @@ -321,8 +321,8 @@ DF_VIEW_UI_FUNCTION_DEF(bitmap); DF_VIEW_UI_FUNCTION_DEF(geo); C_LINKAGE_BEGIN extern DF_StringBindingPair df_g_default_binding_table[110]; -extern String8 df_g_binding_version_remap_old_name_table[5]; -extern String8 df_g_binding_version_remap_new_name_table[5]; +extern String8 df_g_binding_version_remap_old_name_table[7]; +extern String8 df_g_binding_version_remap_new_name_table[7]; extern DF_ViewSpecInfo df_g_gfx_view_kind_spec_info_table[31]; extern DF_CmdParamSlot df_g_cmd_param_slot_2_view_spec_src_map[7]; extern String8 df_g_cmd_param_slot_2_view_spec_dst_map[7]; diff --git a/src/eval/eval.mdesk b/src/eval/eval.mdesk index 06ff159f..36c945c5 100644 --- a/src/eval/eval.mdesk +++ b/src/eval/eval.mdesk @@ -19,6 +19,7 @@ E_TypeKindTable: {Null "" 0 } {Void "void" 0 } {Handle "HANDLE" 0xFF } + {HResult "HRESULT" 4 } {Char8 "char8" 1 } {Char16 "char16" 2 } {Char32 "char32" 4 } diff --git a/src/eval/eval_types.c b/src/eval/eval_types.c index 79daae8d..f2ebf6bf 100644 --- a/src/eval/eval_types.c +++ b/src/eval/eval_types.c @@ -13,6 +13,7 @@ e_type_kind_from_rdi(RDI_TypeKind kind) default:{}break; case RDI_TypeKind_Void: {result = E_TypeKind_Void;}break; case RDI_TypeKind_Handle: {result = E_TypeKind_Handle;}break; + case RDI_TypeKind_HResult: {result = E_TypeKind_HResult;}break; case RDI_TypeKind_Char8: {result = E_TypeKind_Char8;}break; case RDI_TypeKind_Char16: {result = E_TypeKind_Char16;}break; case RDI_TypeKind_Char32: {result = E_TypeKind_Char32;}break; diff --git a/src/eval/generated/eval.meta.c b/src/eval/generated/eval.meta.c index 9a600996..0ddad195 100644 --- a/src/eval/generated/eval.meta.c +++ b/src/eval/generated/eval.meta.c @@ -119,11 +119,12 @@ str8_lit_comp("function"), str8_lit_comp("="), }; -U8 e_kind_basic_byte_size_table[54] = +U8 e_kind_basic_byte_size_table[55] = { 0, 0, 0xFF, +4, 1, 2, 4, @@ -177,11 +178,12 @@ U8 e_kind_basic_byte_size_table[54] = 0, }; -String8 e_kind_basic_string_table[54] = +String8 e_kind_basic_string_table[55] = { str8_lit_comp(""), str8_lit_comp("void"), str8_lit_comp("HANDLE"), +str8_lit_comp("HRESULT"), str8_lit_comp("char8"), str8_lit_comp("char16"), str8_lit_comp("char32"), diff --git a/src/eval/generated/eval.meta.h b/src/eval/generated/eval.meta.h index 1dd04d6e..70ba6c7e 100644 --- a/src/eval/generated/eval.meta.h +++ b/src/eval/generated/eval.meta.h @@ -22,6 +22,7 @@ typedef enum E_TypeKind E_TypeKind_Null, E_TypeKind_Void, E_TypeKind_Handle, +E_TypeKind_HResult, E_TypeKind_Char8, E_TypeKind_Char16, E_TypeKind_Char32, @@ -154,8 +155,8 @@ extern String8 e_token_kind_strings[6]; extern String8 e_expr_kind_strings[41]; extern String8 e_interpretation_code_display_strings[11]; extern String8 e_expr_op_strings[41]; -extern U8 e_kind_basic_byte_size_table[54]; -extern String8 e_kind_basic_string_table[54]; +extern U8 e_kind_basic_byte_size_table[55]; +extern String8 e_kind_basic_string_table[55]; C_LINKAGE_END diff --git a/src/lib_rdi_format/rdi_format.c b/src/lib_rdi_format/rdi_format.c index ec22412f..9b6163fe 100644 --- a/src/lib_rdi_format/rdi_format.c +++ b/src/lib_rdi_format/rdi_format.c @@ -182,6 +182,7 @@ switch(kind) { default:{}break; case RDI_TypeKind_Handle:{result = 0xFFFFFFFF;}break; +case RDI_TypeKind_HResult:{result = 4;}break; case RDI_TypeKind_Char8:{result = 1;}break; case RDI_TypeKind_Char16:{result = 2;}break; case RDI_TypeKind_Char32:{result = 4;}break; diff --git a/src/lib_rdi_format/rdi_format.h b/src/lib_rdi_format/rdi_format.h index e0d8b349..d47a0cad 100644 --- a/src/lib_rdi_format/rdi_format.h +++ b/src/lib_rdi_format/rdi_format.h @@ -52,7 +52,7 @@ typedef int64_t RDI_S64; // \"raddbg\0\0\" #define RDI_MAGIC_CONSTANT 0x0000676264646172 -#define RDI_ENCODING_VERSION 8 +#define RDI_ENCODING_VERSION 9 //////////////////////////////////////////////////////////////// //~ Format Types & Functions @@ -315,38 +315,39 @@ typedef enum RDI_TypeKindEnum RDI_TypeKind_NULL = 0x0000, RDI_TypeKind_Void = 0x0001, RDI_TypeKind_Handle = 0x0002, -RDI_TypeKind_Char8 = 0x0003, -RDI_TypeKind_Char16 = 0x0004, -RDI_TypeKind_Char32 = 0x0005, -RDI_TypeKind_UChar8 = 0x0006, -RDI_TypeKind_UChar16 = 0x0007, -RDI_TypeKind_UChar32 = 0x0008, -RDI_TypeKind_U8 = 0x0009, -RDI_TypeKind_U16 = 0x000A, -RDI_TypeKind_U32 = 0x000B, -RDI_TypeKind_U64 = 0x000C, -RDI_TypeKind_U128 = 0x000D, -RDI_TypeKind_U256 = 0x000E, -RDI_TypeKind_U512 = 0x000F, -RDI_TypeKind_S8 = 0x0010, -RDI_TypeKind_S16 = 0x0011, -RDI_TypeKind_S32 = 0x0012, -RDI_TypeKind_S64 = 0x0013, -RDI_TypeKind_S128 = 0x0014, -RDI_TypeKind_S256 = 0x0015, -RDI_TypeKind_S512 = 0x0016, -RDI_TypeKind_Bool = 0x0017, -RDI_TypeKind_F16 = 0x0018, -RDI_TypeKind_F32 = 0x0019, -RDI_TypeKind_F32PP = 0x001A, -RDI_TypeKind_F48 = 0x001B, -RDI_TypeKind_F64 = 0x001C, -RDI_TypeKind_F80 = 0x001D, -RDI_TypeKind_F128 = 0x001E, -RDI_TypeKind_ComplexF32 = 0x001F, -RDI_TypeKind_ComplexF64 = 0x0020, -RDI_TypeKind_ComplexF80 = 0x0021, -RDI_TypeKind_ComplexF128 = 0x0022, +RDI_TypeKind_HResult = 0x0003, +RDI_TypeKind_Char8 = 0x0004, +RDI_TypeKind_Char16 = 0x0005, +RDI_TypeKind_Char32 = 0x0006, +RDI_TypeKind_UChar8 = 0x0007, +RDI_TypeKind_UChar16 = 0x0008, +RDI_TypeKind_UChar32 = 0x0009, +RDI_TypeKind_U8 = 0x000A, +RDI_TypeKind_U16 = 0x000B, +RDI_TypeKind_U32 = 0x000C, +RDI_TypeKind_U64 = 0x000D, +RDI_TypeKind_U128 = 0x000E, +RDI_TypeKind_U256 = 0x000F, +RDI_TypeKind_U512 = 0x0010, +RDI_TypeKind_S8 = 0x0011, +RDI_TypeKind_S16 = 0x0012, +RDI_TypeKind_S32 = 0x0013, +RDI_TypeKind_S64 = 0x0014, +RDI_TypeKind_S128 = 0x0015, +RDI_TypeKind_S256 = 0x0016, +RDI_TypeKind_S512 = 0x0017, +RDI_TypeKind_Bool = 0x0018, +RDI_TypeKind_F16 = 0x0019, +RDI_TypeKind_F32 = 0x001A, +RDI_TypeKind_F32PP = 0x001B, +RDI_TypeKind_F48 = 0x001C, +RDI_TypeKind_F64 = 0x001D, +RDI_TypeKind_F80 = 0x001E, +RDI_TypeKind_F128 = 0x001F, +RDI_TypeKind_ComplexF32 = 0x0020, +RDI_TypeKind_ComplexF64 = 0x0021, +RDI_TypeKind_ComplexF80 = 0x0022, +RDI_TypeKind_ComplexF128 = 0x0023, RDI_TypeKind_Modifier = 0x1000, RDI_TypeKind_Ptr = 0x1001, RDI_TypeKind_LRef = 0x1002, @@ -657,6 +658,7 @@ X(COUNT)\ X(NULL)\ X(Void)\ X(Handle)\ +X(HResult)\ X(Char8)\ X(Char16)\ X(Char32)\ diff --git a/src/rdi_format/rdi_format.mdesk b/src/rdi_format/rdi_format.mdesk index 1cab3983..99822768 100644 --- a/src/rdi_format/rdi_format.mdesk +++ b/src/rdi_format/rdi_format.mdesk @@ -62,7 +62,7 @@ ""; "// \"raddbg\0\0\""; "#define RDI_MAGIC_CONSTANT 0x0000676264646172"; - "#define RDI_ENCODING_VERSION 8"; + "#define RDI_ENCODING_VERSION 9"; ""; "////////////////////////////////////////////////////////////////"; "//~ Format Types & Functions"; @@ -711,38 +711,39 @@ RDI_TypeKindTable: //- {Void 0x0001 0 FirstBuiltIn } {Handle 0x0002 0xFFFFFFFF } - {Char8 0x0003 1 } - {Char16 0x0004 2 } - {Char32 0x0005 4 } - {UChar8 0x0006 1 } - {UChar16 0x0007 2 } - {UChar32 0x0008 4 } - {U8 0x0009 1 } - {U16 0x000A 2 } - {U32 0x000B 4 } - {U64 0x000C 8 } - {U128 0x000D 16 } - {U256 0x000E 32 } - {U512 0x000F 64 } - {S8 0x0010 1 } - {S16 0x0011 2 } - {S32 0x0012 4 } - {S64 0x0013 8 } - {S128 0x0014 16 } - {S256 0x0015 32 } - {S512 0x0016 64 } - {Bool 0x0017 1 } - {F16 0x0018 2 } - {F32 0x0019 4 } - {F32PP 0x001A 4 } - {F48 0x001B 6 } - {F64 0x001C 8 } - {F80 0x001D 10 } - {F128 0x001E 16 } - {ComplexF32 0x001F 8 } - {ComplexF64 0x0020 16 } - {ComplexF80 0x0021 20 } - {ComplexF128 0x0022 32 LastBuiltIn } + {HResult 0x0003 4 } + {Char8 0x0004 1 } + {Char16 0x0005 2 } + {Char32 0x0006 4 } + {UChar8 0x0007 1 } + {UChar16 0x0008 2 } + {UChar32 0x0009 4 } + {U8 0x000A 1 } + {U16 0x000B 2 } + {U32 0x000C 4 } + {U64 0x000D 8 } + {U128 0x000E 16 } + {U256 0x000F 32 } + {U512 0x0010 64 } + {S8 0x0011 1 } + {S16 0x0012 2 } + {S32 0x0013 4 } + {S64 0x0014 8 } + {S128 0x0015 16 } + {S256 0x0016 32 } + {S512 0x0017 64 } + {Bool 0x0018 1 } + {F16 0x0019 2 } + {F32 0x001A 4 } + {F32PP 0x001B 4 } + {F48 0x001C 6 } + {F64 0x001D 8 } + {F80 0x001E 10 } + {F128 0x001F 16 } + {ComplexF32 0x0020 8 } + {ComplexF64 0x0021 16 } + {ComplexF80 0x0022 20 } + {ComplexF128 0x0023 32 LastBuiltIn } //- {Modifier 0x1000 0 FirstConstructed } {Ptr 0x1001 0 } diff --git a/src/rdi_from_pdb/rdi_from_pdb.c b/src/rdi_from_pdb/rdi_from_pdb.c index 11abf6b2..02079220 100644 --- a/src/rdi_from_pdb/rdi_from_pdb.c +++ b/src/rdi_from_pdb/rdi_from_pdb.c @@ -303,7 +303,7 @@ p2r_rdi_type_kind_from_cv_basic_type(CV_BasicType basic_type) switch(basic_type) { case CV_BasicType_VOID: {result = RDI_TypeKind_Void;}break; - case CV_BasicType_HRESULT: {result = RDI_TypeKind_Handle;}break; + case CV_BasicType_HRESULT: {result = RDI_TypeKind_HResult;}break; case CV_BasicType_RCHAR: case CV_BasicType_CHAR: diff --git a/src/rdi_from_pdb/rdi_from_pdb.h b/src/rdi_from_pdb/rdi_from_pdb.h index d94500b8..c3f5c149 100644 --- a/src/rdi_from_pdb/rdi_from_pdb.h +++ b/src/rdi_from_pdb/rdi_from_pdb.h @@ -542,10 +542,10 @@ internal RDI_BinarySectionFlags p2r_rdi_binary_section_flags_from_coff_section_f //////////////////////////////// //~ rjf: CodeView => RDI Canonical Conversions -internal RDI_Arch p2r_rdi_arch_from_cv_arch(CV_Arch arch); -internal RDI_RegCode p2r_rdi_reg_code_from_cv_reg_code(RDI_Arch arch, CV_Reg reg_code); -internal RDI_Language p2r_rdi_language_from_cv_language(CV_Language language); -internal RDI_TypeKind p2r_rdi_type_kind_from_cv_basic_type(CV_BasicType basic_type); +internal RDI_Arch p2r_rdi_arch_from_cv_arch(CV_Arch arch); +internal RDI_RegCode p2r_rdi_reg_code_from_cv_reg_code(RDI_Arch arch, CV_Reg reg_code); +internal RDI_Language p2r_rdi_language_from_cv_language(CV_Language language); +internal RDI_TypeKind p2r_rdi_type_kind_from_cv_basic_type(CV_BasicType basic_type); //////////////////////////////// //~ rjf: Location Info Building Helpers