diff --git a/src/base/base_processes.h b/src/base/base_processes.h index 57a48aa1..c1250fc1 100644 --- a/src/base/base_processes.h +++ b/src/base/base_processes.h @@ -13,6 +13,7 @@ struct ProcessInfo String8 binary_path; String8 initial_path; String8 user_program_data_path; + String8 symbol_cache_path; String8List module_load_paths; String8List environment; }; diff --git a/src/dbg_engine/dbg_engine_ctrl.c b/src/dbg_engine/dbg_engine_ctrl.c index 12cdba0b..3bc802e1 100644 --- a/src/dbg_engine/dbg_engine_ctrl.c +++ b/src/dbg_engine/dbg_engine_ctrl.c @@ -1834,7 +1834,7 @@ d_initial_debug_info_path_from_module(Arena *arena, D_Handle module_handle) { if(d_handle_match(n->module, module_handle)) { - result = push_str8_copy(arena, n->initial_debug_info_path); + result = str8_copy(arena, n->local_debug_info_path); break; } } @@ -4110,12 +4110,37 @@ d_ctrl_thread__module_open(D_Handle process, D_Handle module, Rng1U64 vaddr_rang FileProperties props = properties_from_file_path(candidate_path); if(props.modified != 0 && props.size != 0) { - initial_debug_info_path = push_str8_copy(arena, path_normalized_from_string(scratch.arena, candidate_path)); + initial_debug_info_path = str8_copy(arena, path_normalized_from_string(scratch.arena, candidate_path)); break; } } } + ////////////////////////////// + //- rjf: determine debug info unique identifier + // + String8 debug_info_unique_identifier = {0}; + if(pdb_dbg_path.size != 0) + { + Guid guid = pdb_dbg_guid; + debug_info_unique_identifier = str8f(scratch.arena, "%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X%x", + guid.data1, guid.data2, guid.data3, guid.data4[0], guid.data4[1], guid.data4[2], guid.data4[3], guid.data4[4], guid.data4[5], guid.data4[6], guid.data4[7], pdb_dbg_age); + } + + ////////////////////////////// + //- rjf: build local server cache debug info path + // + String8 local_server_cache_debug_info_path = {0}; + if(debug_info_unique_identifier.size != 0 && pdb_dbg_path.size != 0) + { + // TODO(rjf): this is not complete - assuming stripped etc. - just following pattern from ntdll.dll for now + String8 symbol_cache_path = get_process_info()->symbol_cache_path; + String8 module_name = str8_skip_last_slash(path); + String8 dbg_name = str8_skip_last_slash(pdb_dbg_path); + String8 path = str8f(scratch.arena, "%S/%S/%S/stripped/%S", symbol_cache_path, module_name, debug_info_unique_identifier, dbg_name); + local_server_cache_debug_info_path = path_normalized_from_string(arena, path); + } + ////////////////////////////// //- rjf: insert info into cache // @@ -4149,7 +4174,8 @@ d_ctrl_thread__module_open(D_Handle process, D_Handle module, Rng1U64 vaddr_rang node->eh_frame_hdr = eh_frame_hdr; node->eh_ptr_ctx = eh_ptr_ctx; node->entry_point_voff = entry_point_voff; - node->initial_debug_info_path = initial_debug_info_path; + node->local_debug_info_path = initial_debug_info_path; + node->debug_info_unique_identifier= debug_info_unique_identifier; node->raddbg_attached_marker_voff = raddbg_is_attached_section_voff_range.min; node->raddbg_data = str8_copy(arena, raddbg_data); } diff --git a/src/dbg_engine/dbg_engine_ctrl.h b/src/dbg_engine/dbg_engine_ctrl.h index 7463567c..05d418e6 100644 --- a/src/dbg_engine/dbg_engine_ctrl.h +++ b/src/dbg_engine/dbg_engine_ctrl.h @@ -186,7 +186,9 @@ struct D_ModuleImageInfoCacheNode EH_FrameHdr eh_frame_hdr; EH_PtrCtx eh_ptr_ctx; U64 entry_point_voff; - String8 initial_debug_info_path; + String8 local_debug_info_path; + String8 local_server_cache_debug_info_path; + String8 debug_info_unique_identifier; U64 raddbg_attached_marker_voff; String8 raddbg_data; }; diff --git a/src/raddbg/generated/raddbg.meta.c b/src/raddbg/generated/raddbg.meta.c index 07150263..5945b106 100644 --- a/src/raddbg/generated/raddbg.meta.c +++ b/src/raddbg/generated/raddbg.meta.c @@ -460,7 +460,7 @@ RD_NameSchemaInfo rd_name_schema_info_table[39] = {str8_lit_comp("target"), 0, str8_lit_comp("@row_commands(@cmd_line save_cfg_to_project, enable_cfg, launch_and_run, launch_and_step_into, duplicate_cfg, remove_cfg)\n@collection_commands(add_target)\nx:\n{\n 'label': code_string,\n 'executable': path,\n 'arguments': string,\n 'working_directory': path,\n 'entry_point': expr_string,\n @default(\"output\") 'output_label': code_string,\n 'stdout_path': @no_relativize path,\n 'stderr_path': @no_relativize path,\n 'stdin_path': @no_relativize path,\n 'environment': set,\n 'debug_subprocesses': bool,\n @no_revert @no_expand @default(0) 'enabled': bool,\n}\n")}, {str8_lit_comp("breakpoint"), 0, str8_lit_comp("@row_commands(enable_cfg, duplicate_cfg, remove_cfg)\n@collection_commands(toggle_breakpoint, add_breakpoint, add_address_breakpoint, add_function_breakpoint, clear_breakpoints)\nx:\n{\n 'label': code_string,\n 'condition': expr_string,\n 'source_location': path_pt,\n 'address_location': expr_string,\n 'hit_count': u64,\n 'address_range_size': @or(0, 1, 2, 4, 8) u64,\n 'break_on_write': bool,\n 'break_on_read': bool,\n 'break_on_execute': bool,\n @no_revert @no_expand @default(1) 'enabled': bool,\n}\n")}, {str8_lit_comp("watch_pin"), 0, str8_lit_comp("@row_commands(duplicate_cfg, remove_cfg)\n@collection_commands(add_watch_pin, toggle_watch_pin)\nx:\n{\n 'expression': expr_string,\n 'source_location': path_pt,\n 'address_location': expr_string,\n}\n")}, -{str8_lit_comp("debug_info"), 0, str8_lit_comp("@row_commands(enable_cfg, duplicate_cfg, remove_cfg)\n@collection_commands(load_debug_info)\nx:\n{\n 'path': @no_relativize path,\n @query 'guid': string,\n @no_revert @no_expand @default(1) 'enabled': bool,\n}\n")}, +{str8_lit_comp("debug_info"), 0, str8_lit_comp("@row_commands(enable_cfg, duplicate_cfg, remove_cfg)\n@collection_commands(load_debug_info)\nx:\n{\n 'path': @no_relativize path,\n @no_revert @no_expand @default(1) 'enabled': bool,\n @query 'guid': string,\n}\n")}, {str8_lit_comp("file_path_map"), 0, str8_lit_comp("@collection_commands(add_file_path_map) @row_commands(remove_cfg) x:{'source': @no_relativize path, 'dest': @no_relativize path}")}, {str8_lit_comp("type_view"), 0, str8_lit_comp("@collection_commands(add_type_view) @row_commands(remove_cfg) x:{'type':expr_string, 'expr':expr_string}")}, {str8_lit_comp("recent_project"), 0, str8_lit_comp("x:{'path':path, 'name':string}")}, @@ -1102,7 +1102,7 @@ str8_lit_comp("far_manager"), String8 rd_theme_preset_cfg_string_table[11] = { -str8_lit_comp("theme:\n{\n theme_color:{tags: background, value: 0x1f1f1fff}\n theme_color:{tags: \"alt background\", value: 0x222222ff}\n theme_color:{tags: \"pop background\", value: 0x675331ff}\n theme_color:{tags: \"fresh background\", value: 0x3d3631ff}\n theme_color:{tags: \"match background\", value: 0x31393dff}\n theme_color:{tags: border, value: 0x404040ff}\n theme_color:{tags: text, value: 0xe5e5e5ff}\n theme_color:{tags: \"weak text\", value: 0xa4a4a4ff}\n theme_color:{tags: \"good text\", value: 0x32a852ff}\n theme_color:{tags: \"neutral text\", value: 0x3a90bbff}\n theme_color:{tags: \"bad text\", value: 0xcf5242ff}\n theme_color:{tags: hover, value: 0xabdeffff}\n theme_color:{tags: \"focus overlay\", value: 0x2292eb14}\n theme_color:{tags: \"focus border\", value: 0x2392ebff}\n theme_color:{tags: cursor, value: 0x8aff00ff}\n theme_color:{tags: selection, value: 0x99ccff0f}\n theme_color:{tags: \"inactive background\", value: 0x16}\n theme_color:{tags: drop_shadow, value: 0x0000007f}\n theme_color:{tags: \"good_pop background\", value: 0x2c5b36ff}\n theme_color:{tags: \"good_pop border\", value: 0x568761ff}\n theme_color:{tags: \"good_pop hover\", value: 0xe3f5d3ff}\n theme_color:{tags: \"good_pop weak text\", value: 0xe3f5d3ff}\n theme_color:{tags: \"bad_pop background\", value: 0x803425ff}\n theme_color:{tags: \"bad_pop hover\", value: 0xff825cff}\n theme_color:{tags: code_default, value: 0xecececff}\n theme_color:{tags: code_symbol, value: 0xebb624ff}\n theme_color:{tags: code_type, value: 0xebb624ff}\n theme_color:{tags: code_local, value: 0xa7dae8ff}\n theme_color:{tags: code_register, value: 0xb7afd5ff}\n theme_color:{tags: code_keyword, value: 0x838b8fff}\n theme_color:{tags: code_delimiter_or_operator, value: 0x838b8fff}\n theme_color:{tags: code_numeric, value: 0x9cb198ff}\n theme_color:{tags: code_numeric_alt_digit_group, value: 0x6d8e67ff}\n theme_color:{tags: code_string, value: 0x9cb198ff}\n theme_color:{tags: code_meta, value: 0xb9819aff}\n theme_color:{tags: code_comment, value: 0x627b5eff}\n theme_color:{tags: line_info_0, value: 0x3c2d25ff}\n theme_color:{tags: line_info_1, value: 0x3c3925ff}\n theme_color:{tags: line_info_2, value: 0x2e4837ff}\n theme_color:{tags: line_info_3, value: 0x2e3d48ff}\n theme_color:{tags: line_info_4, value: 0x3c2d25ff}\n theme_color:{tags: line_info_5, value: 0x3c3925ff}\n theme_color:{tags: line_info_6, value: 0x2e4837ff}\n theme_color:{tags: line_info_7, value: 0x2e3d48ff}\n theme_color:{tags: thread_0, value: 0xebb624ff}\n theme_color:{tags: thread_1, value: 0x26d0d2ff}\n theme_color:{tags: thread_unwound, value: 0xb2ccd8ff}\n theme_color:{tags: thread_error, value: 0xb23219ff}\n theme_color:{tags: breakpoint, value: 0xa72911ff}\n theme_color:{tags: \"floating background\", value: 0x1b1b1baf}\n theme_color:{tags: \"floating background alt\", value: 0x0000005f}\n theme_color:{tags: \"floating background fresh\", value: 0x31393d5f}\n theme_color:{tags: \"floating border\", value: 0xbfbfbf1f}\n theme_color:{tags: \"floating scroll_bar background\", value: 0x3b3b3b5f}\n theme_color:{tags: \"floating scroll_bar border\", value: 0x5f5f5f5f}\n theme_color:{tags: \"scroll_bar background\", value: 0x2b2b2bff}\n theme_color:{tags: \"scroll_bar border\", value: 0x3f3f3fff}\n theme_color:{tags: \"implicit background\", value: 0x00000000}\n theme_color:{tags: \"implicit border\", value: 0x00000000}\n theme_color:{tags: \"hollow background\", value: 0x00000000}\n theme_color:{tags: \"hollow border\", value: 0xffffff1f}\n theme_color:{tags: \"tab background\", value: 0x333333ff}\n theme_color:{tags: \"tab border\", value: 0x2392ebff}\n theme_color:{tags: \"tab inactive background\", value: 0}\n theme_color:{tags: \"tab inactive border\", value: 0x42494eff}\n theme_color:{tags: \"tab auto background\", value: 0x3e4d6eff}\n theme_color:{tags: \"tab auto inactive background\", value: 0x3e4d6e39}\n theme_color:{tags: \"drop_site background\", value: 0xffffff05}\n theme_color:{tags: \"drop_site border\", value: 0xffffff0f}\n}\n"), +str8_lit_comp("theme:\n{\n theme_color:{tags: background, value: 0x1f1f1fff}\n theme_color:{tags: \"alt background\", value: 0x222222ff}\n theme_color:{tags: \"pop background\", value: 0x675331ff}\n theme_color:{tags: \"fresh background\", value: 0x3d3631ff}\n theme_color:{tags: \"match background\", value: 0x31393dff}\n theme_color:{tags: border, value: 0x404040ff}\n theme_color:{tags: text, value: 0xe5e5e5ff}\n theme_color:{tags: \"weak text\", value: 0xa4a4a4ff}\n theme_color:{tags: \"good text\", value: 0x32a852ff}\n theme_color:{tags: \"neutral text\", value: 0x3a90bbff}\n theme_color:{tags: \"bad text\", value: 0xcf5242ff}\n theme_color:{tags: hover, value: 0xabdeffff}\n theme_color:{tags: \"focus overlay\", value: 0x2292eb14}\n theme_color:{tags: \"focus border\", value: 0x2392ebff}\n theme_color:{tags: cursor, value: 0x8aff00ff}\n theme_color:{tags: selection, value: 0x99ccff0f}\n theme_color:{tags: \"inactive background\", value: 0x16}\n theme_color:{tags: drop_shadow, value: 0x0000007f}\n theme_color:{tags: \"good_pop background\", value: 0x2c5b36ff}\n theme_color:{tags: \"good_pop border\", value: 0x568761ff}\n theme_color:{tags: \"good_pop hover\", value: 0xe3f5d3ff}\n theme_color:{tags: \"good_pop weak text\", value: 0xe3f5d3ff}\n theme_color:{tags: \"bad_pop background\", value: 0x803425ff}\n theme_color:{tags: \"bad_pop hover\", value: 0xff825cff}\n theme_color:{tags: code_default, value: 0xecececff}\n theme_color:{tags: code_symbol, value: 0xceaf64ff}\n theme_color:{tags: code_type, value: 0xceaf64ff}\n theme_color:{tags: code_local, value: 0xa7dae8ff}\n theme_color:{tags: code_register, value: 0xb7afd5ff}\n theme_color:{tags: code_keyword, value: 0x838b8fff}\n theme_color:{tags: code_delimiter_or_operator, value: 0x838b8fff}\n theme_color:{tags: code_numeric, value: 0x9cb198ff}\n theme_color:{tags: code_numeric_alt_digit_group, value: 0x6d8e67ff}\n theme_color:{tags: code_string, value: 0x9cb198ff}\n theme_color:{tags: code_meta, value: 0xb9819aff}\n theme_color:{tags: code_comment, value: 0x627b5eff}\n theme_color:{tags: line_info_0, value: 0x3c2d25ff}\n theme_color:{tags: line_info_1, value: 0x3c3925ff}\n theme_color:{tags: line_info_2, value: 0x2e4837ff}\n theme_color:{tags: line_info_3, value: 0x2e3d48ff}\n theme_color:{tags: line_info_4, value: 0x3c2d25ff}\n theme_color:{tags: line_info_5, value: 0x3c3925ff}\n theme_color:{tags: line_info_6, value: 0x2e4837ff}\n theme_color:{tags: line_info_7, value: 0x2e3d48ff}\n theme_color:{tags: thread_0, value: 0xebb624ff}\n theme_color:{tags: thread_1, value: 0x26d0d2ff}\n theme_color:{tags: thread_unwound, value: 0xb2ccd8ff}\n theme_color:{tags: thread_error, value: 0xb23219ff}\n theme_color:{tags: breakpoint, value: 0xa72911ff}\n theme_color:{tags: \"floating background\", value: 0x1b1b1baf}\n theme_color:{tags: \"floating background alt\", value: 0x0000005f}\n theme_color:{tags: \"floating background fresh\", value: 0x31393d5f}\n theme_color:{tags: \"floating border\", value: 0xbfbfbf1f}\n theme_color:{tags: \"floating scroll_bar background\", value: 0x3b3b3b5f}\n theme_color:{tags: \"floating scroll_bar border\", value: 0x5f5f5f5f}\n theme_color:{tags: \"scroll_bar background\", value: 0x2b2b2bff}\n theme_color:{tags: \"scroll_bar border\", value: 0x3f3f3fff}\n theme_color:{tags: \"implicit background\", value: 0x00000000}\n theme_color:{tags: \"implicit border\", value: 0x00000000}\n theme_color:{tags: \"hollow background\", value: 0x00000000}\n theme_color:{tags: \"hollow border\", value: 0xffffff1f}\n theme_color:{tags: \"tab background\", value: 0x333333ff}\n theme_color:{tags: \"tab border\", value: 0x2392ebff}\n theme_color:{tags: \"tab inactive background\", value: 0}\n theme_color:{tags: \"tab inactive border\", value: 0x42494eff}\n theme_color:{tags: \"tab auto background\", value: 0x3e4d6eff}\n theme_color:{tags: \"tab auto inactive background\", value: 0x3e4d6e39}\n theme_color:{tags: \"drop_site background\", value: 0xffffff05}\n theme_color:{tags: \"drop_site border\", value: 0xffffff0f}\n}\n"), str8_lit_comp("theme:\n{\n theme_color:{ tags: background , value: 0xffffffff }\n theme_color:{ tags: \"alt background\" , value: 0xf8f8f8ff }\n theme_color:{ tags: \"pop background\" , value: 0xcbe4f2ff }\n theme_color:{ tags: \"menu_bar pop background\" , value: 0x5aabd9ff }\n theme_color:{ tags: \"fresh background\" , value: 0xeaddceff }\n theme_color:{ tags: \"match background\" , value: 0xc1e9c4ff }\n theme_color:{ tags: border , value: 0xcbcbcbff }\n theme_color:{ tags: text , value: 0xff }\n theme_color:{ tags: \"weak text\" , value: 0x727272ff }\n theme_color:{ tags: \"good text\" , value: 0x217538ff }\n theme_color:{ tags: \"neutral text\" , value: 0x1a5b7cff }\n theme_color:{ tags: \"bad text\" , value: 0x972717ff }\n theme_color:{ tags: hover , value: 0xff }\n theme_color:{ tags: \"focus overlay\" , value: 0x67ff4b }\n theme_color:{ tags: \"focus border\" , value: 0x67ffff }\n theme_color:{ tags: cursor , value: 0xff }\n theme_color:{ tags: selection , value: 0x283d5166 }\n theme_color:{ tags: \"inactive background\" , value: 0x8 }\n theme_color:{ tags: drop_shadow , value: 0xb }\n theme_color:{ tags: \"good_pop background\" , value: 0x90c09aff }\n theme_color:{ tags: \"good_pop border\" , value: 0x1e7231ff }\n theme_color:{ tags: \"good_pop hover\" , value: 0xe3f5d3ff }\n theme_color:{ tags: \"good_pop weak text\" , value: 0xe3f5d3ff }\n theme_color:{ tags: \"good_pop text\" , value: 0xe3f5d3ff }\n theme_color:{ tags: \"bad_pop background\" , value: 0xa93620ff }\n theme_color:{ tags: \"bad_pop text\" , value: 0xffffffff }\n theme_color:{ tags: \"bad_pop text weak\" , value: 0xffffffff }\n theme_color:{ tags: \"menu_bar bad_pop background\" , value: 0xff2a00ff }\n theme_color:{ tags: \"menu_bar bad_pop text\" , value: 0xffffffff }\n theme_color:{ tags: \"bad_pop hover\" , value: 0xff825cff }\n theme_color:{ tags: code_default , value: 0x80808ff }\n theme_color:{ tags: code_symbol , value: 0x4ac3ff }\n theme_color:{ tags: code_type , value: 0xf46200ff }\n theme_color:{ tags: code_local , value: 0x317c00ff }\n theme_color:{ tags: code_register , value: 0x9a00ffff }\n theme_color:{ tags: code_keyword , value: 0xff0600ff }\n theme_color:{ tags: code_delimiter_or_operator , value: 0x8a8a8aff }\n theme_color:{ tags: code_numeric , value: 0x7d49ff }\n theme_color:{ tags: code_numeric_alt_digit_group , value: 0xb56aff }\n theme_color:{ tags: code_string , value: 0x63549fff }\n theme_color:{ tags: code_meta , value: 0xd96759ff }\n theme_color:{ tags: code_comment , value: 0x717171ff }\n theme_color:{ tags: line_info_0 , value: 0xe6d5cdff }\n theme_color:{ tags: line_info_1 , value: 0xdbcfb2ff }\n theme_color:{ tags: line_info_2 , value: 0xddeac1ff }\n theme_color:{ tags: line_info_3 , value: 0xddc4bdff }\n theme_color:{ tags: line_info_4 , value: 0xba917eff }\n theme_color:{ tags: thread_0 , value: 0xffa700ff }\n theme_color:{ tags: thread_1 , value: 0xb41fff }\n theme_color:{ tags: thread_2 , value: 0xff99e5ff }\n theme_color:{ tags: thread_3 , value: 0x6598ffff }\n theme_color:{ tags: thread_4 , value: 0x65ffcbff }\n theme_color:{ tags: thread_5 , value: 0xff9819ff }\n theme_color:{ tags: thread_6 , value: 0x9932ffff }\n theme_color:{ tags: thread_7 , value: 0x65ff4cff }\n theme_color:{ tags: thread_unwound , value: 0xb2ccd8ff }\n theme_color:{ tags: thread_error , value: 0xb23219ff }\n theme_color:{ tags: breakpoint , value: 0xff2800ff }\n theme_color:{ tags: \"floating background\" , value: 0xffffffc7 }\n theme_color:{ tags: \"floating background alt\" , value: 0x23 }\n theme_color:{ tags: \"floating background fresh\" , value: 0xeaddceff }\n theme_color:{ tags: \"floating border\" , value: 0x88888884 }\n theme_color:{ tags: \"scroll_bar background\" , value: 0xe9e9e9ff }\n theme_color:{ tags: \"scroll_bar border\" , value: 0x5f5f5f5f }\n theme_color:{ tags: \"floating scroll_bar background\" , value: 0xe9e9e9ff }\n theme_color:{ tags: \"floating scroll_bar border\" , value: 0x5f5f5f5f }\n theme_color:{ tags: \"menu_bar background\" , value: 0x2b6b9aff }\n theme_color:{ tags: \"menu_bar border\" , value: 0x4d }\n theme_color:{ tags: \"menu_bar text\" , value: 0xffffffff }\n theme_color:{ tags: \"menu_bar text weak\" , value: 0xffffffff }\n theme_color:{ tags: \"good menu_bar text\" , value: 0x70db8dff }\n theme_color:{ tags: \"bad menu_bar text\" , value: 0xffa79bff }\n theme_color:{ tags: \"neutral menu_bar text\" , value: 0xc4dbe7ff }\n theme_color:{ tags: \"implicit background\" , value: 0x00000000 }\n theme_color:{ tags: \"implicit border\" , value: 0x00000000 }\n theme_color:{ tags: \"hollow background\" , value: 0x00000000 }\n theme_color:{ tags: \"hollow border\" , value: 0xffffff1f }\n theme_color:{ tags: \"tab text\" , value: 0xffffffff }\n theme_color:{ tags: \"tab text weak\" , value: 0xffffffff }\n theme_color:{ tags: \"tab background\" , value: 0xb67e48ff }\n theme_color:{ tags: \"tab border\" , value: 0x875b31ff }\n theme_color:{ tags: \"tab inactive background\" , value: 0xcacacaff }\n theme_color:{ tags: \"tab inactive border\" , value: 0xb5b5b5ff }\n theme_color:{ tags: \"tab auto background\" , value: 0xc41c69ff }\n theme_color:{ tags: \"tab auto border\" , value: 0x981039ff }\n theme_color:{ tags: \"tab auto inactive background\" , value: 0x9b88a3ff }\n theme_color:{ tags: \"tab auto inactive border\" , value: 0x373737ff }\n theme_color:{ tags: \"drop_site background\" , value: 0xffffff05 }\n theme_color:{ tags: \"drop_site border\" , value: 0xffffff0f }\n}\n"), str8_lit_comp("theme:\n{\n theme_color:{ tags: background , value: 0x1f1f1fff }\n theme_color:{ tags: \"alt background\" , value: 0x222222ff }\n theme_color:{ tags: \"pop background\" , value: 0x383167ff }\n theme_color:{ tags: \"fresh background\" , value: 0x31393dff }\n theme_color:{ tags: \"match background\" , value: 0x31393dff }\n theme_color:{ tags: border , value: 0x404040ff }\n theme_color:{ tags: text , value: 0xe5e5e5ff }\n theme_color:{ tags: \"weak text\" , value: 0xa4a4a4ff }\n theme_color:{ tags: \"good text\" , value: 0x32a852ff }\n theme_color:{ tags: \"neutral text\" , value: 0x3a90bbff }\n theme_color:{ tags: \"bad text\" , value: 0xcf5242ff }\n theme_color:{ tags: hover , value: 0xffffffff }\n theme_color:{ tags: \"focus overlay\" , value: 0x7160e81e }\n theme_color:{ tags: \"focus border\" , value: 0x7160e8ff }\n theme_color:{ tags: cursor , value: 0x8aff00ff }\n theme_color:{ tags: selection , value: 0x99ccff0f }\n theme_color:{ tags: \"inactive background\" , value: 0x0000002f }\n theme_color:{ tags: drop_shadow , value: 0x0000007f }\n theme_color:{ tags: \"good_pop background\" , value: 0x2c5b36ff }\n theme_color:{ tags: \"good_pop border\" , value: 0x568761ff }\n theme_color:{ tags: \"good_pop hover\" , value: 0xe3f5d3ff }\n theme_color:{ tags: \"good_pop weak text\" , value: 0xe3f5d3ff }\n theme_color:{ tags: \"bad_pop background\" , value: 0x803425ff }\n theme_color:{ tags: \"bad_pop hover\" , value: 0xff825cff }\n theme_color:{ tags: code_default , value: 0xe0e0e0ff }\n theme_color:{ tags: code_symbol , value: 0xdcdcaaff }\n theme_color:{ tags: code_type , value: 0x4ec9b0ff }\n theme_color:{ tags: code_local , value: 0x9cdcfeff }\n theme_color:{ tags: code_register , value: 0xb7afd5ff }\n theme_color:{ tags: code_keyword , value: 0x569cd6ff }\n theme_color:{ tags: code_delimiter_or_operator , value: 0x767676ff }\n theme_color:{ tags: code_numeric , value: 0xb5cea8ff }\n theme_color:{ tags: code_numeric_alt_digit_group , value: 0x7c986dff }\n theme_color:{ tags: code_string , value: 0xd69d85ff }\n theme_color:{ tags: code_meta , value: 0x9b9b9bff }\n theme_color:{ tags: code_comment , value: 0x51a644ff }\n theme_color:{ tags: line_info_0 , value: 0x4f3022ff }\n theme_color:{ tags: line_info_1 , value: 0x4f3e15ff }\n theme_color:{ tags: line_info_2 , value: 0x434e2aff }\n theme_color:{ tags: line_info_3 , value: 0x36241fff }\n theme_color:{ tags: line_info_4 , value: 0x4f3022ff }\n theme_color:{ tags: line_info_5 , value: 0x4f3e15ff }\n theme_color:{ tags: line_info_6 , value: 0x434e2aff }\n theme_color:{ tags: line_info_7 , value: 0x36241fff }\n theme_color:{ tags: thread_0 , value: 0xffdc48ff }\n theme_color:{ tags: thread_1 , value: 0xb2ff65ff }\n theme_color:{ tags: thread_2 , value: 0xff99e5ff }\n theme_color:{ tags: thread_3 , value: 0x6598ffff }\n theme_color:{ tags: thread_4 , value: 0x65ffcbff }\n theme_color:{ tags: thread_5 , value: 0xff9819ff }\n theme_color:{ tags: thread_6 , value: 0x9932ffff }\n theme_color:{ tags: thread_7 , value: 0x65ff4cff }\n theme_color:{ tags: thread_unwound , value: 0xb2ccd8ff }\n theme_color:{ tags: thread_error , value: 0xb23219ff }\n theme_color:{ tags: breakpoint , value: 0xa72911ff }\n theme_color:{ tags: \"floating background\" , value: 0x1b1b1baf }\n theme_color:{ tags: \"floating background alt\" , value: 0x0000005f }\n theme_color:{ tags: \"floating background fresh\" , value: 0x31393d5f }\n theme_color:{ tags: \"floating border\" , value: 0xbfbfbf1f }\n theme_color:{ tags: \"floating scroll_bar background\" , value: 0x3b3b3b5f }\n theme_color:{ tags: \"floating scroll_bar border\" , value: 0x5f5f5f5f }\n theme_color:{ tags: \"scroll_bar background\" , value: 0x2b2b2bff }\n theme_color:{ tags: \"scroll_bar border\" , value: 0x3f3f3fff }\n theme_color:{ tags: \"implicit background\" , value: 0x00000000 }\n theme_color:{ tags: \"implicit border\" , value: 0x00000000 }\n theme_color:{ tags: \"hollow background\" , value: 0x00000000 }\n theme_color:{ tags: \"hollow border\" , value: 0xffffff1f }\n theme_color:{ tags: \"tab background\" , value: 0x333333ff }\n theme_color:{ tags: \"tab border\" , value: 0x7160e8ff }\n theme_color:{ tags: \"tab inactive background\" , value: 0x171717ff }\n theme_color:{ tags: \"tab inactive border\" , value: 0x3e4c57ff }\n theme_color:{ tags: \"tab auto background\" , value: 0x3f386dff }\n theme_color:{ tags: \"tab auto border\" , value: 0x7160e8ff }\n theme_color:{ tags: \"tab auto inactive background\" , value: 0x2f2633ff }\n theme_color:{ tags: \"tab auto inactive border\" , value: 0x685073ff }\n theme_color:{ tags: \"drop_site background\" , value: 0xffffff05 }\n theme_color:{ tags: \"drop_site border\" , value: 0xffffff0f }\n}\n"), str8_lit_comp("theme:\n{\n theme_color:{tags: background, value: 0xffffffff}\n theme_color:{tags: \"alt background\", value: 0xefefefff}\n theme_color:{tags: \"pop background\", value: 0xe3eaf2ff}\n theme_color:{tags: \"fresh background\", value: 0xeccbbeff}\n theme_color:{tags: \"match background\", value: 0xedcbf9ff}\n theme_color:{tags: border, value: 0xe7e7e7ff}\n theme_color:{tags: text, value: 0xff}\n theme_color:{tags: \"weak text\", value: 0x353535ff}\n theme_color:{tags: \"good text\", value: 0x32a852ff}\n theme_color:{tags: \"neutral text\", value: 0x3a90bbff}\n theme_color:{tags: \"bad text\", value: 0xcf5242ff}\n theme_color:{tags: hover, value: 0xa7ffff}\n theme_color:{tags: \"focus overlay\", value: 0x8eff3f}\n theme_color:{tags: \"focus border\", value: 0x8effff}\n theme_color:{tags: cursor, value: 0xff}\n theme_color:{tags: selection, value: 0x56aaff77}\n theme_color:{tags: \"inactive background\", value: 0x17}\n theme_color:{tags: drop_shadow, value: 0xe7b27}\n theme_color:{tags: \"good_pop background\", value: 0x21a43dff}\n theme_color:{tags: \"good_pop border\", value: 0x21a43dff}\n theme_color:{tags: \"good_pop hover\", value: 0xe3f5d3ff}\n theme_color:{tags: \"good_pop weak text\", value: 0xe3f5d3ff}\n theme_color:{tags: \"good_pop text\", value: 0xe3f5d3ff}\n theme_color:{tags: \"bad_pop background\", value: 0xcb3f23ff}\n theme_color:{tags: \"bad_pop text\", value: 0xffcdc4ff}\n theme_color:{tags: \"bad_pop text weak\", value: 0xffcdc4ff}\n theme_color:{tags: \"bad_pop hover\", value: 0xff825cff}\n theme_color:{tags: code_default, value: 0x000000ff}\n theme_color:{tags: code_symbol, value: 0x74531fff}\n theme_color:{tags: code_type, value: 0x2b91afff}\n theme_color:{tags: code_local, value: 0x1f377fff}\n theme_color:{tags: code_register, value: 0x8a1bffff}\n theme_color:{tags: code_keyword, value: 0x0000ffff}\n theme_color:{tags: code_delimiter_or_operator, value: 0x767676ff}\n theme_color:{tags: code_numeric, value: 0xff}\n theme_color:{tags: code_numeric_alt_digit_group, value: 0x1d1d1dff}\n theme_color:{tags: code_string, value: 0xa61515ff}\n theme_color:{tags: code_meta, value: 0x808080ff}\n theme_color:{tags: code_comment, value: 0x008000ff}\n theme_color:{tags: line_info_0, value: 0xb5d9c8ff}\n theme_color:{tags: line_info_1, value: 0xa9c1d0ff}\n theme_color:{tags: line_info_2, value: 0x99abc5ff}\n theme_color:{tags: line_info_3, value: 0xc6bcd5ff}\n theme_color:{tags: thread_0, value: 0xffb141ff}\n theme_color:{tags: thread_1, value: 0x66c407ff}\n theme_color:{tags: thread_unwound, value: 0x67b3d7ff}\n theme_color:{tags: thread_error, value: 0xff2900ff}\n theme_color:{tags: breakpoint, value: 0xff2800ff}\n theme_color:{tags: \"floating background\", value: 0xffffffff}\n theme_color:{tags: \"floating background alt\", value: 0x11}\n theme_color:{tags: \"floating background fresh\", value: 0xa0c2d318}\n theme_color:{tags: \"floating border\", value: 0x50}\n theme_color:{tags: \"floating scroll_bar background\", value: 0x3b3b3b5f}\n theme_color:{tags: \"floating scroll_bar border\", value: 0x5f5f5f5f}\n theme_color:{tags: \"menu_bar background\", value: 0xccd5f0ff}\n theme_color:{tags: \"menu_bar border\", value: 0xbabdc3ff}\n theme_color:{tags: \"scroll_bar background\", value: 0xe4e4e4ff}\n theme_color:{tags: \"implicit background\", value: 0x00000000}\n theme_color:{tags: \"implicit border\", value: 0x00000000}\n theme_color:{tags: \"hollow background\", value: 0x00000000}\n theme_color:{tags: \"hollow border\", value: 0xffffff1f}\n theme_color:{tags: \"tab background\", value: 0xf5cc84ff}\n theme_color:{tags: \"tab border\", value: 0xae7718ff}\n theme_color:{tags: \"tab inactive background\", value: 0x3b4f81ff}\n theme_color:{tags: \"tab inactive text\", value: 0xffffffff}\n theme_color:{tags: \"tab inactive border\", value: 0x3b4f81ff}\n theme_color:{tags: \"tab auto background\", value: 0xe99595ff}\n theme_color:{tags: \"tab auto border\", value: 0xff6262ff}\n theme_color:{tags: \"tab auto inactive background\", value: 0xac6060ff}\n theme_color:{tags: \"tab auto inactive border\", value: 0xff6262ff}\n theme_color:{tags: \"drop_site background\", value: 0xffffff05}\n theme_color:{tags: \"drop_site border\", value: 0xa7ffff}\n}\n"), diff --git a/src/raddbg/raddbg.mdesk b/src/raddbg/raddbg.mdesk index 273c78c3..b0168d61 100644 --- a/src/raddbg/raddbg.mdesk +++ b/src/raddbg/raddbg.mdesk @@ -765,8 +765,8 @@ RD_VocabTable: x: { 'path': @no_relativize path, - @query 'guid': string, @no_revert @no_expand @default(1) 'enabled': bool, + @query 'guid': string, } ```, } @@ -1594,8 +1594,8 @@ RD_ThemePresetTable: theme_color:{tags: "bad_pop background", value: 0x803425ff} theme_color:{tags: "bad_pop hover", value: 0xff825cff} theme_color:{tags: code_default, value: 0xecececff} - theme_color:{tags: code_symbol, value: 0xebb624ff} - theme_color:{tags: code_type, value: 0xebb624ff} + theme_color:{tags: code_symbol, value: 0xceaf64ff} + theme_color:{tags: code_type, value: 0xceaf64ff} theme_color:{tags: code_local, value: 0xa7dae8ff} theme_color:{tags: code_register, value: 0xb7afd5ff} theme_color:{tags: code_keyword, value: 0x838b8fff} diff --git a/src/win32/base/win32_base.c b/src/win32/base/win32_base.c index f7f1e38f..4e6add41 100644 --- a/src/win32/base/win32_base.c +++ b/src/win32/base/win32_base.c @@ -1923,12 +1923,30 @@ w32_entry_point_caller(int argc, WCHAR **wargv) { String16 string16 = str16((U16 *)this_proc_env + start_idx, idx - start_idx); String8 string = str8_from_16(arena, string16); + if(str8_match(string, s("_NT_SYMBOL_PATH="), StringMatchFlag_RightSideSloppy)) + { + info->symbol_cache_path = str8_skip(string, 16); + info->symbol_cache_path = str8_skip_chop_whitespace(info->symbol_cache_path); + } str8_list_push(arena, &info->environment, string); start_idx = idx+1; } } } } + if(info->symbol_cache_path.size == 0) + { + Temp scratch = scratch_begin(0, 0); + U64 size = KB(32); + U16 *buffer = push_array_no_zero(scratch.arena, U16, size); + if(SUCCEEDED(SHGetFolderPathW(0, CSIDL_LOCAL_APPDATA, 0, 0, (WCHAR*)buffer))) + { + String8 local_appdata = str8_from_16(scratch.arena, str16_cstring(buffer)); + info->symbol_cache_path = str8f(arena, "%S\\Temp\\SymbolCache", local_appdata); + + } + scratch_end(scratch); + } } //- rjf: set up entity storage