diff --git a/build.bat b/build.bat index 79d3fb91..7fdf96ad 100644 --- a/build.bat +++ b/build.bat @@ -15,7 +15,7 @@ cd /D "%~dp0" :: `build raddbg clang` :: `build raddbg release` :: `build raddbg asan telemetry` -:: `build raddbg_from_pdb` +:: `build raddbgi_from_pdb` :: :: For a full list of possible build targets and their build command lines, :: search for @build_targets in this file. @@ -85,7 +85,7 @@ pushd build popd :: --- Get Current Git Commit Id ---------------------------------------------- -for /f %%i in ('call git describe --always --dirty') do set compile=%compile% -DRADDBG_GIT=\"%%i\" +for /f %%i in ('call git describe --always --dirty') do set compile=%compile% -DRADDBGI_GIT=\"%%i\" :: --- Build & Run Metaprogram ------------------------------------------------ if "%no_meta%"=="1" echo [skipping metagen] diff --git a/project.4coder b/project.4coder index 1a4474d3..30ba820b 100644 --- a/project.4coder +++ b/project.4coder @@ -74,7 +74,7 @@ commands = }, .rjf_f4 = { - .win = "build raddbgi_from_pdb && pushd build && raddbg_from_pdb.exe --exe:raddbg.exe --pdb:raddbg.pdb --out:raddbg.raddbg --dump:table_diagnostics && popd", + .win = "build raddbgi_from_pdb && pushd build && raddbgi_from_pdb.exe --exe:raddbg.exe --pdb:raddbg.pdb --out:raddbg.raddbg --dump:table_diagnostics && popd", .linux = "", .out = "*compilation*", .footer_panel = true, diff --git a/src/ctrl/ctrl_core.c b/src/ctrl/ctrl_core.c index 416ab856..62e303ab 100644 --- a/src/ctrl/ctrl_core.c +++ b/src/ctrl/ctrl_core.c @@ -199,7 +199,7 @@ ctrl_append_resolved_module_user_bp_traps(Arena *arena, DEMON_Handle process, DE DBGI_Scope *scope = dbgi_scope_open(); String8 exe_path = demon_full_path_from_module(scratch.arena, module); DBGI_Parse *dbgi = dbgi_parse_from_exe_path(scope, exe_path, max_U64); - RADDBG_Parsed *rdbg = &dbgi->rdbg; + RADDBGI_Parsed *rdbg = &dbgi->rdbg; U64 base_vaddr = demon_base_vaddr_from_module(module); for(CTRL_UserBreakpointNode *n = user_bps->first; n != 0; n = n->next) { @@ -224,16 +224,16 @@ ctrl_append_resolved_module_user_bp_traps(Arena *arena, DEMON_Handle process, DE // rjf: filename -> src_id U32 src_id = 0; { - RADDBG_NameMap *mapptr = raddbg_name_map_from_kind(rdbg, RADDBG_NameMapKind_NormalSourcePaths); + RADDBGI_NameMap *mapptr = raddbgi_name_map_from_kind(rdbg, RADDBGI_NameMapKind_NormalSourcePaths); if(mapptr != 0) { - RADDBG_ParsedNameMap map = {0}; - raddbg_name_map_parse(rdbg, mapptr, &map); - RADDBG_NameMapNode *node = raddbg_name_map_lookup(rdbg, &map, filename_normalized.str, filename_normalized.size); + RADDBGI_ParsedNameMap map = {0}; + raddbgi_name_map_parse(rdbg, mapptr, &map); + RADDBGI_NameMapNode *node = raddbgi_name_map_lookup(rdbg, &map, filename_normalized.str, filename_normalized.size); if(node != 0) { U32 id_count = 0; - U32 *ids = raddbg_matches_from_map_node(rdbg, node, &id_count); + U32 *ids = raddbgi_matches_from_map_node(rdbg, node, &id_count); if(id_count > 0) { src_id = ids[0]; @@ -244,11 +244,11 @@ ctrl_append_resolved_module_user_bp_traps(Arena *arena, DEMON_Handle process, DE // rjf: src_id * pt -> push { - RADDBG_SourceFile *src = raddbg_element_from_idx(rdbg, source_files, src_id); - RADDBG_ParsedLineMap line_map = {0}; - raddbg_line_map_from_source_file(rdbg, src, &line_map); + RADDBGI_SourceFile *src = raddbgi_element_from_idx(rdbg, source_files, src_id); + RADDBGI_ParsedLineMap line_map = {0}; + raddbgi_line_map_from_source_file(rdbg, src, &line_map); U32 voff_count = 0; - U64 *voffs = raddbg_line_voffs_from_num(&line_map, pt.line, &voff_count); + U64 *voffs = raddbgi_line_voffs_from_num(&line_map, pt.line, &voff_count); for(U32 i = 0; i < voff_count; i += 1) { U64 vaddr = voffs[i] + base_vaddr; @@ -265,19 +265,19 @@ ctrl_append_resolved_module_user_bp_traps(Arena *arena, DEMON_Handle process, DE U64 voff = bp->u64; if(rdbg != 0 && rdbg->procedures != 0) { - RADDBG_NameMap *mapptr = raddbg_name_map_from_kind(rdbg, RADDBG_NameMapKind_Procedures); + RADDBGI_NameMap *mapptr = raddbgi_name_map_from_kind(rdbg, RADDBGI_NameMapKind_Procedures); if(mapptr != 0) { - RADDBG_ParsedNameMap map = {0}; - raddbg_name_map_parse(rdbg, mapptr, &map); - RADDBG_NameMapNode *node = raddbg_name_map_lookup(rdbg, &map, symbol_name.str, symbol_name.size); + RADDBGI_ParsedNameMap map = {0}; + raddbgi_name_map_parse(rdbg, mapptr, &map); + RADDBGI_NameMapNode *node = raddbgi_name_map_lookup(rdbg, &map, symbol_name.str, symbol_name.size); if(node != 0) { U32 id_count = 0; - U32 *ids = raddbg_matches_from_map_node(rdbg, node, &id_count); + U32 *ids = raddbgi_matches_from_map_node(rdbg, node, &id_count); for(U32 match_i = 0; match_i < id_count; match_i += 1) { - U64 proc_voff = raddbg_first_voff_from_proc(rdbg, ids[match_i]); + U64 proc_voff = raddbgi_first_voff_from_proc(rdbg, ids[match_i]); U64 proc_vaddr = proc_voff + base_vaddr; DEMON_Trap trap = {process, proc_vaddr + voff, (U64)bp}; demon_trap_chunk_list_push(arena, traps_out, 256, &trap); @@ -1638,21 +1638,21 @@ ctrl_thread__next_demon_event(Arena *arena, CTRL_Msg *msg, DEMON_RunCtrls *run_c CTRL_Handle module = ctrl_handle_from_demon(modules.handles[0]); String8 module_path = demon_full_path_from_module(scratch.arena, ctrl_demon_handle_from_ctrl(module)); DBGI_Parse *dbgi = dbgi_parse_from_exe_path(scope, module_path, max_U64); - RADDBG_Parsed *rdbg = &dbgi->rdbg; - RADDBG_NameMap *unparsed_map = raddbg_name_map_from_kind(rdbg, RADDBG_NameMapKind_GlobalVariables); + RADDBGI_Parsed *rdbg = &dbgi->rdbg; + RADDBGI_NameMap *unparsed_map = raddbgi_name_map_from_kind(rdbg, RADDBGI_NameMapKind_GlobalVariables); if(rdbg->global_variables != 0 && unparsed_map != 0) { - RADDBG_ParsedNameMap map = {0}; - raddbg_name_map_parse(rdbg, unparsed_map, &map); + RADDBGI_ParsedNameMap map = {0}; + raddbgi_name_map_parse(rdbg, unparsed_map, &map); String8 name = str8_lit("__asan_shadow_memory_dynamic_address"); - RADDBG_NameMapNode *node = raddbg_name_map_lookup(rdbg, &map, name.str, name.size); + RADDBGI_NameMapNode *node = raddbgi_name_map_lookup(rdbg, &map, name.str, name.size); if(node != 0) { U32 id_count = 0; - U32 *ids = raddbg_matches_from_map_node(rdbg, node, &id_count); + U32 *ids = raddbgi_matches_from_map_node(rdbg, node, &id_count); if(id_count > 0) { - RADDBG_GlobalVariable *global_var = raddbg_element_from_idx(rdbg, global_variables, ids[0]); + RADDBGI_GlobalVariable *global_var = raddbgi_element_from_idx(rdbg, global_variables, ids[0]); U64 global_var_voff = global_var->voff; U64 global_var_vaddr = global_var->voff + demon_base_vaddr_from_module(ctrl_demon_handle_from_ctrl(module)); Architecture arch = demon_arch_from_object(ev->thread); @@ -2143,10 +2143,10 @@ ctrl_thread__launch_and_init(CTRL_Msg *msg) U64 module_base_vaddr = demon_base_vaddr_from_module(module); String8 exe_path = demon_full_path_from_module(scratch.arena, module); DBGI_Parse *dbgi = dbgi_parse_from_exe_path(scope, exe_path, max_U64); - RADDBG_Parsed *rdbg = &dbgi->rdbg; - RADDBG_NameMap *unparsed_map = raddbg_name_map_from_kind(rdbg, RADDBG_NameMapKind_Procedures); - RADDBG_ParsedNameMap map = {0}; - raddbg_name_map_parse(rdbg, unparsed_map, &map); + RADDBGI_Parsed *rdbg = &dbgi->rdbg; + RADDBGI_NameMap *unparsed_map = raddbgi_name_map_from_kind(rdbg, RADDBGI_NameMapKind_Procedures); + RADDBGI_ParsedNameMap map = {0}; + raddbgi_name_map_parse(rdbg, unparsed_map, &map); //- rjf: add trap for user-specified entry point, if specified B32 entries_found = 0; @@ -2157,15 +2157,15 @@ ctrl_thread__launch_and_init(CTRL_Msg *msg) U32 procedure_id = 0; { String8 name = n->string; - RADDBG_NameMapNode *node = raddbg_name_map_lookup(rdbg, &map, name.str, name.size); + RADDBGI_NameMapNode *node = raddbgi_name_map_lookup(rdbg, &map, name.str, name.size); U32 id_count = 0; - U32 *ids = raddbg_matches_from_map_node(rdbg, node, &id_count); + U32 *ids = raddbgi_matches_from_map_node(rdbg, node, &id_count); if(id_count > 0) { procedure_id = ids[0]; } } - U64 voff = raddbg_first_voff_from_proc(rdbg, procedure_id); + U64 voff = raddbgi_first_voff_from_proc(rdbg, procedure_id); if(voff != 0) { entries_found = 1; @@ -2183,15 +2183,15 @@ ctrl_thread__launch_and_init(CTRL_Msg *msg) U32 procedure_id = 0; { String8 name = n->string; - RADDBG_NameMapNode *node = raddbg_name_map_lookup(rdbg, &map, name.str, name.size); + RADDBGI_NameMapNode *node = raddbgi_name_map_lookup(rdbg, &map, name.str, name.size); U32 id_count = 0; - U32 *ids = raddbg_matches_from_map_node(rdbg, node, &id_count); + U32 *ids = raddbgi_matches_from_map_node(rdbg, node, &id_count); if(id_count > 0) { procedure_id = ids[0]; } } - U64 voff = raddbg_first_voff_from_proc(rdbg, procedure_id); + U64 voff = raddbgi_first_voff_from_proc(rdbg, procedure_id); if(voff != 0) { DEMON_Trap trap = {run_ctrls.run_entities[process_idx], module_base_vaddr + voff}; @@ -2216,15 +2216,15 @@ ctrl_thread__launch_and_init(CTRL_Msg *msg) U32 procedure_id = 0; { String8 name = hi_entry_points[idx]; - RADDBG_NameMapNode *node = raddbg_name_map_lookup(rdbg, &map, name.str, name.size); + RADDBGI_NameMapNode *node = raddbgi_name_map_lookup(rdbg, &map, name.str, name.size); U32 id_count = 0; - U32 *ids = raddbg_matches_from_map_node(rdbg, node, &id_count); + U32 *ids = raddbgi_matches_from_map_node(rdbg, node, &id_count); if(id_count > 0) { procedure_id = ids[0]; } } - U64 voff = raddbg_first_voff_from_proc(rdbg, procedure_id); + U64 voff = raddbgi_first_voff_from_proc(rdbg, procedure_id); if(voff != 0) { entries_found = 1; @@ -2260,15 +2260,15 @@ ctrl_thread__launch_and_init(CTRL_Msg *msg) U32 procedure_id = 0; { String8 name = lo_entry_points[idx]; - RADDBG_NameMapNode *node = raddbg_name_map_lookup(rdbg, &map, name.str, name.size); + RADDBGI_NameMapNode *node = raddbgi_name_map_lookup(rdbg, &map, name.str, name.size); U32 id_count = 0; - U32 *ids = raddbg_matches_from_map_node(rdbg, node, &id_count); + U32 *ids = raddbgi_matches_from_map_node(rdbg, node, &id_count); if(id_count > 0) { procedure_id = ids[0]; } } - U64 voff = raddbg_first_voff_from_proc(rdbg, procedure_id); + U64 voff = raddbgi_first_voff_from_proc(rdbg, procedure_id); if(voff != 0) { entries_found = 1; @@ -2866,7 +2866,7 @@ ctrl_thread__run(CTRL_Msg *msg) { String8 exe_path = demon_full_path_from_module(temp.arena, module); DBGI_Parse *dbgi = dbgi_parse_from_exe_path(scope, exe_path, max_U64); - RADDBG_Parsed *rdbg = &dbgi->rdbg; + RADDBGI_Parsed *rdbg = &dbgi->rdbg; for(String8Node *condition_n = conditions.first; condition_n != 0; condition_n = condition_n->next) { String8 string = condition_n->string; @@ -2878,8 +2878,8 @@ ctrl_thread__run(CTRL_Msg *msg) parse_ctx.type_graph = tg_graph_begin(bit_size_from_arch(arch)/8, 256); parse_ctx.regs_map = ctrl_string2reg_from_arch(arch); parse_ctx.reg_alias_map = ctrl_string2alias_from_arch(arch); - parse_ctx.locals_map = eval_push_locals_map_from_raddbg_voff(temp.arena, rdbg, thread_rip_voff); - parse_ctx.member_map = eval_push_member_map_from_raddbg_voff(temp.arena, rdbg, thread_rip_voff); + parse_ctx.locals_map = eval_push_locals_map_from_raddbgi_voff(temp.arena, rdbg, thread_rip_voff); + parse_ctx.member_map = eval_push_member_map_from_raddbgi_voff(temp.arena, rdbg, thread_rip_voff); } EVAL_TokenArray tokens = eval_token_array_from_text(temp.arena, string); EVAL_ParseResult parse = eval_parse_expr_from_text_tokens(temp.arena, &parse_ctx, string, &tokens); diff --git a/src/dbgi/dbgi.c b/src/dbgi/dbgi.c index 0198fe16..fc03ea0f 100644 --- a/src/dbgi/dbgi.c +++ b/src/dbgi/dbgi.c @@ -111,7 +111,7 @@ dbgi_fuzzy_item_num_from_array_element_idx__linear_search(DBGI_FuzzySearchItemAr } internal String8 -dbgi_fuzzy_item_string_from_rdbg_target_element_idx(RADDBG_Parsed *rdbg, DBGI_FuzzySearchTarget target, U64 element_idx) +dbgi_fuzzy_item_string_from_rdbg_target_element_idx(RADDBGI_Parsed *rdbg, DBGI_FuzzySearchTarget target, U64 element_idx) { String8 result = {0}; switch(target) @@ -119,31 +119,31 @@ dbgi_fuzzy_item_string_from_rdbg_target_element_idx(RADDBG_Parsed *rdbg, DBGI_Fu // NOTE(rjf): no default - warn if we miss a case case DBGI_FuzzySearchTarget_Procedures: { - RADDBG_Procedure *proc = raddbg_element_from_idx(rdbg, procedures, element_idx); + RADDBGI_Procedure *proc = raddbgi_element_from_idx(rdbg, procedures, element_idx); U64 name_size = 0; - U8 *name_base = raddbg_string_from_idx(rdbg, proc->name_string_idx, &name_size); + U8 *name_base = raddbgi_string_from_idx(rdbg, proc->name_string_idx, &name_size); result = str8(name_base, name_size); }break; case DBGI_FuzzySearchTarget_GlobalVariables: { - RADDBG_GlobalVariable *gvar = raddbg_element_from_idx(rdbg, global_variables, element_idx); + RADDBGI_GlobalVariable *gvar = raddbgi_element_from_idx(rdbg, global_variables, element_idx); U64 name_size = 0; - U8 *name_base = raddbg_string_from_idx(rdbg, gvar->name_string_idx, &name_size); + U8 *name_base = raddbgi_string_from_idx(rdbg, gvar->name_string_idx, &name_size); result = str8(name_base, name_size); }break; case DBGI_FuzzySearchTarget_ThreadVariables: { - RADDBG_ThreadVariable *tvar = raddbg_element_from_idx(rdbg, thread_variables, element_idx); + RADDBGI_ThreadVariable *tvar = raddbgi_element_from_idx(rdbg, thread_variables, element_idx); U64 name_size = 0; - U8 *name_base = raddbg_string_from_idx(rdbg, tvar->name_string_idx, &name_size); + U8 *name_base = raddbgi_string_from_idx(rdbg, tvar->name_string_idx, &name_size); result = str8(name_base, name_size); }break; case DBGI_FuzzySearchTarget_UDTs: { - RADDBG_UDT *udt = raddbg_element_from_idx(rdbg, udts, element_idx); - RADDBG_TypeNode *type_node = raddbg_element_from_idx(rdbg, type_nodes, udt->self_type_idx); + RADDBGI_UDT *udt = raddbgi_element_from_idx(rdbg, udts, element_idx); + RADDBGI_TypeNode *type_node = raddbgi_element_from_idx(rdbg, type_nodes, udt->self_type_idx); U64 name_size = 0; - U8 *name_base = raddbg_string_from_idx(rdbg, type_node->user_defined.name_string_idx, &name_size); + U8 *name_base = raddbgi_string_from_idx(rdbg, type_node->user_defined.name_string_idx, &name_size); result = str8(name_base, name_size); }break; case DBGI_FuzzySearchTarget_COUNT:{}break; @@ -769,7 +769,7 @@ dbgi_parse_thread_entry_point(void *p) } if(!og_dbg_format_is_known) { - if(data.size >= 8 && *(U64 *)data.str == RADDBG_MAGIC_CONSTANT) + if(data.size >= 8 && *(U64 *)data.str == RADDBGI_MAGIC_CONSTANT) { og_dbg_format_is_known = 1; og_dbg_is_raddbg = 1; @@ -801,54 +801,54 @@ dbgi_parse_thread_entry_point(void *p) } //- rjf: given O.G. path & analysis, determine RADDBG file path - String8 raddbg_path = {0}; + String8 raddbgi_path = {0}; if(do_task) { if(og_dbg_is_raddbg) { - raddbg_path = og_dbg_path; + raddbgi_path = og_dbg_path; } else if(og_dbg_format_is_known && og_dbg_is_pdb) { - raddbg_path = push_str8f(scratch.arena, "%S.raddbg", str8_chop_last_dot(og_dbg_path)); + raddbgi_path = push_str8f(scratch.arena, "%S.raddbgi", str8_chop_last_dot(og_dbg_path)); } } //- rjf: check if raddbg file is up-to-date - B32 raddbg_file_is_up_to_date = 0; + B32 raddbgi_file_is_up_to_date = 0; if(do_task) { - if(raddbg_path.size != 0) + if(raddbgi_path.size != 0) { - FileProperties props = os_properties_from_file_path(raddbg_path); - raddbg_file_is_up_to_date = (props.modified > og_dbg_props.modified); + FileProperties props = os_properties_from_file_path(raddbgi_path); + raddbgi_file_is_up_to_date = (props.modified > og_dbg_props.modified); } } //- rjf: if raddbg file is up to date based on timestamp, check the // encoding generation number, to see if we need to regenerate it // regardless - if(do_task && raddbg_file_is_up_to_date) + if(do_task && raddbgi_file_is_up_to_date) { OS_Handle file = {0}; OS_Handle file_map = {0}; FileProperties file_props = {0}; void *file_base = 0; - file = os_file_open(OS_AccessFlag_Read|OS_AccessFlag_ShareRead, raddbg_path); + file = os_file_open(OS_AccessFlag_Read|OS_AccessFlag_ShareRead, raddbgi_path); file_map = os_file_map_open(OS_AccessFlag_Read, file); file_props = os_properties_from_file(file); file_base = os_file_map_view_open(file_map, OS_AccessFlag_Read, r1u64(0, file_props.size)); - if(sizeof(RADDBG_Header) <= file_props.size) + if(sizeof(RADDBGI_Header) <= file_props.size) { - RADDBG_Header *header = (RADDBG_Header*)file_base; - if(header->encoding_version != RADDBG_ENCODING_VERSION) + RADDBGI_Header *header = (RADDBGI_Header*)file_base; + if(header->encoding_version != RADDBGI_ENCODING_VERSION) { - raddbg_file_is_up_to_date = 0; + raddbgi_file_is_up_to_date = 0; } } else { - raddbg_file_is_up_to_date = 0; + raddbgi_file_is_up_to_date = 0; } os_file_map_view_close(file_map, file_base); os_file_map_close(file_map); @@ -858,14 +858,14 @@ dbgi_parse_thread_entry_point(void *p) //- rjf: raddbg file not up-to-date? we need to generate it if(do_task) { - if(!raddbg_file_is_up_to_date) ProfScope("generate raddbg file") + if(!raddbgi_file_is_up_to_date) ProfScope("generate raddbg file") { if(og_dbg_is_pdb) { // rjf: push conversion task begin event { DBGI_Event event = {DBGI_EventKind_ConversionStarted}; - event.string = raddbg_path; + event.string = raddbgi_path; dbgi_p2u_push_event(&event); } @@ -882,7 +882,7 @@ dbgi_parse_thread_entry_point(void *p) //str8_list_pushf(scratch.arena, &opts.cmd_line, "--capture"); str8_list_pushf(scratch.arena, &opts.cmd_line, "--exe:%S", exe_path); str8_list_pushf(scratch.arena, &opts.cmd_line, "--pdb:%S", og_dbg_path); - str8_list_pushf(scratch.arena, &opts.cmd_line, "--out:%S", raddbg_path); + str8_list_pushf(scratch.arena, &opts.cmd_line, "--out:%S", raddbgi_path); os_launch_process(&opts, &process); } @@ -894,7 +894,7 @@ dbgi_parse_thread_entry_point(void *p) B32 wait_done = os_process_wait(process, os_now_microseconds()+1000); if(wait_done) { - raddbg_file_is_up_to_date = 1; + raddbgi_file_is_up_to_date = 1; break; } if(os_now_microseconds()-start_wait_t > 10000000 && og_dbg_props.size < MB(64)) @@ -907,7 +907,7 @@ dbgi_parse_thread_entry_point(void *p) // rjf: push conversion task end event { DBGI_Event event = {DBGI_EventKind_ConversionEnded}; - event.string = raddbg_path; + event.string = raddbgi_path; dbgi_p2u_push_event(&event); } } @@ -917,7 +917,7 @@ dbgi_parse_thread_entry_point(void *p) // rjf: push conversion task failure event { DBGI_Event event = {DBGI_EventKind_ConversionFailureUnsupportedFormat}; - event.string = raddbg_path; + event.string = raddbgi_path; dbgi_p2u_push_event(&event); } } @@ -925,16 +925,16 @@ dbgi_parse_thread_entry_point(void *p) } //- rjf: open raddbg file & gather info - OS_Handle raddbg_file = {0}; - OS_Handle raddbg_file_map = {0}; - FileProperties raddbg_file_props = {0}; - void *raddbg_file_base = 0; - if(do_task && raddbg_file_is_up_to_date) + OS_Handle raddbgi_file = {0}; + OS_Handle raddbgi_file_map = {0}; + FileProperties raddbgi_file_props = {0}; + void *raddbgi_file_base = 0; + if(do_task && raddbgi_file_is_up_to_date) { - raddbg_file = os_file_open(OS_AccessFlag_Read|OS_AccessFlag_ShareRead, raddbg_path); - raddbg_file_map = os_file_map_open(OS_AccessFlag_Read, raddbg_file); - raddbg_file_props = os_properties_from_file(raddbg_file); - raddbg_file_base = os_file_map_view_open(raddbg_file_map, OS_AccessFlag_Read, r1u64(0, raddbg_file_props.size)); + raddbgi_file = os_file_open(OS_AccessFlag_Read|OS_AccessFlag_ShareRead, raddbgi_path); + raddbgi_file_map = os_file_map_open(OS_AccessFlag_Read, raddbgi_file); + raddbgi_file_props = os_properties_from_file(raddbgi_file); + raddbgi_file_base = os_file_map_view_open(raddbgi_file_map, OS_AccessFlag_Read, r1u64(0, raddbgi_file_props.size)); } //- rjf: cache write, step 0: busy-loop-wait for all scope touches to be done @@ -958,7 +958,7 @@ dbgi_parse_thread_entry_point(void *p) // either EXE or raddbg file is new. if so, clear all old results & // store new top-level info B32 binary_refcount_is_zero = 0; - B32 raddbg_or_exe_file_is_updated = 0; + B32 raddbgi_or_exe_file_is_updated = 0; if(do_task) ProfScope("cache write, step 1: check if raddbg is new & clear") { OS_MutexScopeW(stripe->rw_mutex) for(DBGI_Binary *bin = slot->first; bin != 0; bin = bin->next) @@ -970,10 +970,10 @@ dbgi_parse_thread_entry_point(void *p) binary_refcount_is_zero = 1; break; } - if(bin->parse.dbg_props.modified != raddbg_file_props.modified || + if(bin->parse.dbg_props.modified != raddbgi_file_props.modified || bin->parse.exe_props.modified != exe_file_props.modified) { - raddbg_or_exe_file_is_updated = 1; + raddbgi_or_exe_file_is_updated = 1; // rjf: clean up old stuff if(bin->parse.arena != 0) { arena_release(bin->parse.arena); } @@ -991,10 +991,10 @@ dbgi_parse_thread_entry_point(void *p) bin->exe_file_map = exe_file_map; bin->parse.exe_base = exe_file_base; bin->parse.exe_props = exe_file_props; - bin->dbg_file = raddbg_file; - bin->dbg_file_map = raddbg_file_map; - bin->parse.dbg_base = raddbg_file_base; - bin->parse.dbg_props = raddbg_file_props; + bin->dbg_file = raddbgi_file; + bin->dbg_file_map = raddbgi_file_map; + bin->parse.dbg_base = raddbgi_file_base; + bin->parse.dbg_props = raddbgi_file_props; bin->gen += 1; } break; @@ -1004,11 +1004,11 @@ dbgi_parse_thread_entry_point(void *p) //- rjf: raddbg file or exe is not new? cache can stay unmodified, close // handles & skip to end. - if(do_task) if((!raddbg_or_exe_file_is_updated && raddbg_file_is_up_to_date) || binary_refcount_is_zero) + if(do_task) if((!raddbgi_or_exe_file_is_updated && raddbgi_file_is_up_to_date) || binary_refcount_is_zero) { - os_file_map_view_close(raddbg_file_map, raddbg_file_base); - os_file_map_close(raddbg_file_map); - os_file_close(raddbg_file); + os_file_map_view_close(raddbgi_file_map, raddbgi_file_base); + os_file_map_close(raddbgi_file_map); + os_file_close(raddbgi_file); os_file_map_view_close(exe_file_map, exe_file_base); os_file_map_close(exe_file_map); os_file_close(exe_file); @@ -1017,14 +1017,14 @@ dbgi_parse_thread_entry_point(void *p) } //- rjf: parse raddbg info - RADDBG_Parsed raddbg_parsed = dbgi_parse_nil.rdbg; + RADDBGI_Parsed raddbgi_parsed = dbgi_parse_nil.rdbg; U64 arch_addr_size = 8; if(do_task) { - RADDBG_ParseStatus parse_status = raddbg_parse((U8 *)raddbg_file_base, raddbg_file_props.size, &raddbg_parsed); - if(raddbg_parsed.top_level_info != 0) + RADDBGI_ParseStatus parse_status = raddbgi_parse((U8 *)raddbgi_file_base, raddbgi_file_props.size, &raddbgi_parsed); + if(raddbgi_parsed.top_level_info != 0) { - arch_addr_size = raddbg_addr_size_from_arch(raddbg_parsed.top_level_info->architecture); + arch_addr_size = raddbgi_addr_size_from_arch(raddbgi_parsed.top_level_info->architecture); } } @@ -1053,7 +1053,7 @@ dbgi_parse_thread_entry_point(void *p) bin->parse.arena = parse_arena; bin->parse.dbg_path = push_str8_copy(parse_arena, dbg_path); MemoryCopyStruct(&bin->parse.pe, &exe_pe_info); - MemoryCopyStruct(&bin->parse.rdbg, &raddbg_parsed); + MemoryCopyStruct(&bin->parse.rdbg, &raddbgi_parsed); bin->parse.gen = bin->gen; break; } @@ -1197,7 +1197,7 @@ dbgi_fuzzy_thread__entry_point(void *p) //- rjf: exe_path -> dbgi_parse, raddbg DBGI_Parse *dbgi = dbgi_parse_from_exe_path(scope, exe_path, max_U64); - RADDBG_Parsed *rdbg = &dbgi->rdbg; + RADDBGI_Parsed *rdbg = &dbgi->rdbg; //- rjf: rdbg * query -> item list U64 table_ptr_off = 0; @@ -1210,30 +1210,30 @@ dbgi_fuzzy_thread__entry_point(void *p) case DBGI_FuzzySearchTarget_COUNT:{}break; case DBGI_FuzzySearchTarget_Procedures: { - table_ptr_off = OffsetOf(RADDBG_Parsed, procedures); - element_name_idx_off = OffsetOf(RADDBG_Procedure, name_string_idx); + table_ptr_off = OffsetOf(RADDBGI_Parsed, procedures); + element_name_idx_off = OffsetOf(RADDBGI_Procedure, name_string_idx); element_count = rdbg->procedures_count; - element_size = sizeof(RADDBG_Procedure); + element_size = sizeof(RADDBGI_Procedure); }break; case DBGI_FuzzySearchTarget_GlobalVariables: { - table_ptr_off = OffsetOf(RADDBG_Parsed, global_variables); - element_name_idx_off = OffsetOf(RADDBG_GlobalVariable, name_string_idx); + table_ptr_off = OffsetOf(RADDBGI_Parsed, global_variables); + element_name_idx_off = OffsetOf(RADDBGI_GlobalVariable, name_string_idx); element_count = rdbg->global_variables_count; - element_size = sizeof(RADDBG_GlobalVariable); + element_size = sizeof(RADDBGI_GlobalVariable); }break; case DBGI_FuzzySearchTarget_ThreadVariables: { - table_ptr_off = OffsetOf(RADDBG_Parsed, thread_variables); - element_name_idx_off = OffsetOf(RADDBG_ThreadVariable, name_string_idx); + table_ptr_off = OffsetOf(RADDBGI_Parsed, thread_variables); + element_name_idx_off = OffsetOf(RADDBGI_ThreadVariable, name_string_idx); element_count = rdbg->thread_variables_count; - element_size = sizeof(RADDBG_ThreadVariable); + element_size = sizeof(RADDBGI_ThreadVariable); }break; case DBGI_FuzzySearchTarget_UDTs: { - table_ptr_off = OffsetOf(RADDBG_Parsed, udts); + table_ptr_off = OffsetOf(RADDBGI_Parsed, udts); element_count = rdbg->udts_count; - element_size = sizeof(RADDBG_UDT); + element_size = sizeof(RADDBGI_UDT); }break; } DBGI_FuzzySearchItemChunkList items_list = {0}; @@ -1246,13 +1246,13 @@ dbgi_fuzzy_thread__entry_point(void *p) U32 *name_idx_ptr = (U32 *)((U8 *)element + element_name_idx_off); if(target == DBGI_FuzzySearchTarget_UDTs) { - RADDBG_UDT *udt = (RADDBG_UDT *)element; - RADDBG_TypeNode *type_node = raddbg_element_from_idx(rdbg, type_nodes, udt->self_type_idx); + RADDBGI_UDT *udt = (RADDBGI_UDT *)element; + RADDBGI_TypeNode *type_node = raddbgi_element_from_idx(rdbg, type_nodes, udt->self_type_idx); name_idx_ptr = &type_node->user_defined.name_string_idx; } U32 name_idx = *name_idx_ptr; U64 name_size = 0; - U8 *name_base = raddbg_string_from_idx(rdbg, name_idx, &name_size); + U8 *name_base = raddbgi_string_from_idx(rdbg, name_idx, &name_size); String8 name = str8(name_base, name_size); if(name.size == 0) { continue; } FuzzyMatchRangeList matches = fuzzy_match_find(task_arena, query, name); diff --git a/src/dbgi/dbgi.h b/src/dbgi/dbgi.h index 50511f79..94906ce2 100644 --- a/src/dbgi/dbgi.h +++ b/src/dbgi/dbgi.h @@ -18,7 +18,7 @@ struct DBGI_Parse void *dbg_base; FileProperties dbg_props; PE_BinInfo pe; - RADDBG_Parsed rdbg; + RADDBGI_Parsed rdbg; }; //////////////////////////////// @@ -341,24 +341,24 @@ global DBGI_Parse dbgi_parse_nil = 0, 0, 0, - &raddbg_binary_section_nil, 1, - &raddbg_file_path_node_nil, 1, - &raddbg_source_file_nil, 1, - &raddbg_unit_nil, 1, - &raddbg_vmap_entry_nil, 1, - &raddbg_type_node_nil, 1, - &raddbg_udt_nil, 1, - &raddbg_member_nil, 1, - &raddbg_enum_member_nil, 1, - &raddbg_global_variable_nil, 1, - &raddbg_vmap_entry_nil, 1, - &raddbg_thread_variable_nil, 1, - &raddbg_procedure_nil, 1, - &raddbg_scope_nil, 1, - &raddbg_voff_nil, 1, - &raddbg_vmap_entry_nil, 1, - &raddbg_local_nil, 1, - &raddbg_location_block_nil, 1, + &raddbgi_binary_section_nil, 1, + &raddbgi_file_path_node_nil, 1, + &raddbgi_source_file_nil, 1, + &raddbgi_unit_nil, 1, + &raddbgi_vmap_entry_nil, 1, + &raddbgi_type_node_nil, 1, + &raddbgi_udt_nil, 1, + &raddbgi_member_nil, 1, + &raddbgi_enum_member_nil, 1, + &raddbgi_global_variable_nil, 1, + &raddbgi_vmap_entry_nil, 1, + &raddbgi_thread_variable_nil, 1, + &raddbgi_procedure_nil, 1, + &raddbgi_scope_nil, 1, + &raddbgi_voff_nil, 1, + &raddbgi_vmap_entry_nil, 1, + &raddbgi_local_nil, 1, + &raddbgi_location_block_nil, 1, 0, 0, 0, 0, }, @@ -379,7 +379,7 @@ internal void dbgi_ensure_tctx_inited(void); internal U64 dbgi_hash_from_string(String8 string); internal U64 dbgi_fuzzy_item_num_from_array_element_idx__linear_search(DBGI_FuzzySearchItemArray *array, U64 element_idx); -internal String8 dbgi_fuzzy_item_string_from_rdbg_target_element_idx(RADDBG_Parsed *rdbg, DBGI_FuzzySearchTarget target, U64 element_idx); +internal String8 dbgi_fuzzy_item_string_from_rdbg_target_element_idx(RADDBGI_Parsed *rdbg, DBGI_FuzzySearchTarget target, U64 element_idx); //////////////////////////////// //~ rjf: Forced Override Cache Functions diff --git a/src/df/core/df_core.c b/src/df/core/df_core.c index c9b2970b..c296d905 100644 --- a/src/df/core/df_core.c +++ b/src/df/core/df_core.c @@ -1085,7 +1085,7 @@ df_cmd_params_apply_spec_query(Arena *arena, DF_CtrlCtx *ctrl_ctx, DF_CmdParams DF_Eval eval = df_eval_from_string(scratch.arena, scope, ctrl_ctx, &parse_ctx, &eval_string2expr_map_nil, query); if(eval.errors.count == 0) { - TG_Kind eval_type_kind = tg_kind_from_key(tg_unwrapped_from_graph_raddbg_key(parse_ctx.type_graph, parse_ctx.rdbg, eval.type_key)); + TG_Kind eval_type_kind = tg_kind_from_key(tg_unwrapped_from_graph_raddbgi_key(parse_ctx.type_graph, parse_ctx.rdbg, eval.type_key)); if(eval_type_kind == TG_Kind_Ptr || eval_type_kind == TG_Kind_LRef || eval_type_kind == TG_Kind_RRef) { eval = df_value_mode_eval_from_eval(parse_ctx.type_graph, parse_ctx.rdbg, ctrl_ctx, eval); @@ -3196,23 +3196,23 @@ df_symbol_name_from_binary_voff(Arena *arena, DF_Entity *binary, U64 voff) DBGI_Scope *scope = dbgi_scope_open(); String8 path = df_full_path_from_entity(scratch.arena, binary); DBGI_Parse *dbgi = dbgi_parse_from_exe_path(scope, path, 0); - RADDBG_Parsed *rdbg = &dbgi->rdbg; + RADDBGI_Parsed *rdbg = &dbgi->rdbg; if(result.size == 0 && rdbg->scope_vmap != 0) { - U64 scope_idx = raddbg_vmap_idx_from_voff(rdbg->scope_vmap, rdbg->scope_vmap_count, voff); - RADDBG_Scope *scope = &rdbg->scopes[scope_idx]; + U64 scope_idx = raddbgi_vmap_idx_from_voff(rdbg->scope_vmap, rdbg->scope_vmap_count, voff); + RADDBGI_Scope *scope = &rdbg->scopes[scope_idx]; U64 proc_idx = scope->proc_idx; - RADDBG_Procedure *procedure = &rdbg->procedures[proc_idx]; + RADDBGI_Procedure *procedure = &rdbg->procedures[proc_idx]; U64 name_size = 0; - U8 *name_ptr = raddbg_string_from_idx(rdbg, procedure->name_string_idx, &name_size); + U8 *name_ptr = raddbgi_string_from_idx(rdbg, procedure->name_string_idx, &name_size); result = push_str8_copy(arena, str8(name_ptr, name_size)); } if(result.size == 0 && rdbg->global_vmap != 0) { - U64 global_idx = raddbg_vmap_idx_from_voff(rdbg->global_vmap, rdbg->global_vmap_count, voff); - RADDBG_GlobalVariable *global_var = &rdbg->global_variables[global_idx]; + U64 global_idx = raddbgi_vmap_idx_from_voff(rdbg->global_vmap, rdbg->global_vmap_count, voff); + RADDBGI_GlobalVariable *global_var = &rdbg->global_variables[global_idx]; U64 name_size = 0; - U8 *name_ptr = raddbg_string_from_idx(rdbg, global_var->name_string_idx, &name_size); + U8 *name_ptr = raddbgi_string_from_idx(rdbg, global_var->name_string_idx, &name_size); result = push_str8_copy(arena, str8(name_ptr, name_size)); } dbgi_scope_close(scope); @@ -3263,23 +3263,23 @@ df_text_line_src2dasm_info_list_array_from_src_line_range(Arena *arena, DF_Entit DF_Entity *binary = binary_n->entity; String8 binary_path = df_full_path_from_entity(scratch.arena, binary); DBGI_Parse *dbgi = dbgi_parse_from_exe_path(scope, binary_path, 0); - RADDBG_Parsed *rdbg = &dbgi->rdbg; + RADDBGI_Parsed *rdbg = &dbgi->rdbg; // rjf: file_path_normalized * rdbg -> src_id B32 good_src_id = 0; U32 src_id = 0; if(dbgi != &dbgi_parse_nil) { - RADDBG_NameMap *mapptr = raddbg_name_map_from_kind(rdbg, RADDBG_NameMapKind_NormalSourcePaths); + RADDBGI_NameMap *mapptr = raddbgi_name_map_from_kind(rdbg, RADDBGI_NameMapKind_NormalSourcePaths); if(mapptr != 0) { - RADDBG_ParsedNameMap map = {0}; - raddbg_name_map_parse(rdbg, mapptr, &map); - RADDBG_NameMapNode *node = raddbg_name_map_lookup(rdbg, &map, file_path_normalized.str, file_path_normalized.size); + RADDBGI_ParsedNameMap map = {0}; + raddbgi_name_map_parse(rdbg, mapptr, &map); + RADDBGI_NameMapNode *node = raddbgi_name_map_lookup(rdbg, &map, file_path_normalized.str, file_path_normalized.size); if(node != 0) { U32 id_count = 0; - U32 *ids = raddbg_matches_from_map_node(rdbg, node, &id_count); + U32 *ids = raddbgi_matches_from_map_node(rdbg, node, &id_count); if(id_count > 0) { good_src_id = 1; @@ -3292,9 +3292,9 @@ df_text_line_src2dasm_info_list_array_from_src_line_range(Arena *arena, DF_Entit // rjf: good src-id -> look up line info for visible range if(good_src_id) { - RADDBG_SourceFile *src = rdbg->source_files+src_id; - RADDBG_ParsedLineMap line_map = {0}; - raddbg_line_map_from_source_file(rdbg, src, &line_map); + RADDBGI_SourceFile *src = rdbg->source_files+src_id; + RADDBGI_ParsedLineMap line_map = {0}; + raddbgi_line_map_from_source_file(rdbg, src, &line_map); U64 line_idx = 0; for(S64 line_num = line_num_range.min; line_num <= line_num_range.max; @@ -3302,15 +3302,15 @@ df_text_line_src2dasm_info_list_array_from_src_line_range(Arena *arena, DF_Entit { DF_TextLineSrc2DasmInfoList *src2dasm_list = &src2dasm_array.v[line_idx]; U32 voff_count = 0; - U64 *voffs = raddbg_line_voffs_from_num(&line_map, u32_from_u64_saturate((U64)line_num), &voff_count); + U64 *voffs = raddbgi_line_voffs_from_num(&line_map, u32_from_u64_saturate((U64)line_num), &voff_count); for(U64 idx = 0; idx < voff_count; idx += 1) { U64 base_voff = voffs[idx]; - U64 unit_idx = raddbg_vmap_idx_from_voff(rdbg->unit_vmap, rdbg->unit_vmap_count, base_voff); - RADDBG_Unit *unit = &rdbg->units[unit_idx]; - RADDBG_ParsedLineInfo unit_line_info = {0}; - raddbg_line_info_from_unit(rdbg, unit, &unit_line_info); - U64 line_info_idx = raddbg_line_info_idx_from_voff(&unit_line_info, base_voff); + U64 unit_idx = raddbgi_vmap_idx_from_voff(rdbg->unit_vmap, rdbg->unit_vmap_count, base_voff); + RADDBGI_Unit *unit = &rdbg->units[unit_idx]; + RADDBGI_ParsedLineInfo unit_line_info = {0}; + raddbgi_line_info_from_unit(rdbg, unit, &unit_line_info); + U64 line_info_idx = raddbgi_line_info_idx_from_voff(&unit_line_info, base_voff); if(unit_line_info.voffs != 0) { Rng1U64 range = r1u64(base_voff, unit_line_info.voffs[line_info_idx+1]); @@ -3347,23 +3347,23 @@ df_text_line_dasm2src_info_from_binary_voff(DF_Entity *binary, U64 voff) DBGI_Scope *scope = dbgi_scope_open(); String8 path = df_full_path_from_entity(scratch.arena, binary); DBGI_Parse *dbgi = dbgi_parse_from_exe_path(scope, path, 0); - RADDBG_Parsed *rdbg = &dbgi->rdbg; + RADDBGI_Parsed *rdbg = &dbgi->rdbg; DF_TextLineDasm2SrcInfo result = {0}; result.file = result.binary = &df_g_nil_entity; if(rdbg->unit_vmap != 0 && rdbg->units != 0 && rdbg->source_files != 0) { - U64 unit_idx = raddbg_vmap_idx_from_voff(rdbg->unit_vmap, rdbg->unit_vmap_count, voff); - RADDBG_Unit *unit = &rdbg->units[unit_idx]; - RADDBG_ParsedLineInfo unit_line_info = {0}; - raddbg_line_info_from_unit(rdbg, unit, &unit_line_info); - U64 line_info_idx = raddbg_line_info_idx_from_voff(&unit_line_info, voff); + U64 unit_idx = raddbgi_vmap_idx_from_voff(rdbg->unit_vmap, rdbg->unit_vmap_count, voff); + RADDBGI_Unit *unit = &rdbg->units[unit_idx]; + RADDBGI_ParsedLineInfo unit_line_info = {0}; + raddbgi_line_info_from_unit(rdbg, unit, &unit_line_info); + U64 line_info_idx = raddbgi_line_info_idx_from_voff(&unit_line_info, voff); if(line_info_idx < unit_line_info.count) { - RADDBG_Line *line = &unit_line_info.lines[line_info_idx]; - RADDBG_Column *column = (line_info_idx < unit_line_info.col_count) ? &unit_line_info.cols[line_info_idx] : 0; - RADDBG_SourceFile *file = &rdbg->source_files[line->file_idx]; + RADDBGI_Line *line = &unit_line_info.lines[line_info_idx]; + RADDBGI_Column *column = (line_info_idx < unit_line_info.col_count) ? &unit_line_info.cols[line_info_idx] : 0; + RADDBGI_SourceFile *file = &rdbg->source_files[line->file_idx]; String8 file_normalized_full_path = {0}; - file_normalized_full_path.str = raddbg_string_from_idx(rdbg, file->normal_full_path_string_idx, &file_normalized_full_path.size); + file_normalized_full_path.str = raddbgi_string_from_idx(rdbg, file->normal_full_path_string_idx, &file_normalized_full_path.size); result.binary = binary; if(line->file_idx != 0 && file_normalized_full_path.size != 0) { @@ -3412,11 +3412,11 @@ df_voff_from_binary_symbol_name(DF_Entity *binary, String8 symbol_name) { String8 binary_path = df_full_path_from_entity(scratch.arena, binary); DBGI_Parse *dbgi = dbgi_parse_from_exe_path(scope, binary_path, 0); - RADDBG_Parsed *rdbg = &dbgi->rdbg; - RADDBG_NameMapKind name_map_kinds[] = + RADDBGI_Parsed *rdbg = &dbgi->rdbg; + RADDBGI_NameMapKind name_map_kinds[] = { - RADDBG_NameMapKind_GlobalVariables, - RADDBG_NameMapKind_Procedures, + RADDBGI_NameMapKind_GlobalVariables, + RADDBGI_NameMapKind_Procedures, }; if(dbgi != &dbgi_parse_nil) { @@ -3424,11 +3424,11 @@ df_voff_from_binary_symbol_name(DF_Entity *binary, String8 symbol_name) name_map_kind_idx < ArrayCount(name_map_kinds); name_map_kind_idx += 1) { - RADDBG_NameMapKind name_map_kind = name_map_kinds[name_map_kind_idx]; - RADDBG_NameMap *name_map = raddbg_name_map_from_kind(rdbg, name_map_kind); - RADDBG_ParsedNameMap parsed_name_map = {0}; - raddbg_name_map_parse(rdbg, name_map, &parsed_name_map); - RADDBG_NameMapNode *node = raddbg_name_map_lookup(rdbg, &parsed_name_map, symbol_name.str, symbol_name.size); + RADDBGI_NameMapKind name_map_kind = name_map_kinds[name_map_kind_idx]; + RADDBGI_NameMap *name_map = raddbgi_name_map_from_kind(rdbg, name_map_kind); + RADDBGI_ParsedNameMap parsed_name_map = {0}; + raddbgi_name_map_parse(rdbg, name_map, &parsed_name_map); + RADDBGI_NameMapNode *node = raddbgi_name_map_lookup(rdbg, &parsed_name_map, symbol_name.str, symbol_name.size); // rjf: node -> num U64 entity_num = 0; @@ -3443,7 +3443,7 @@ df_voff_from_binary_symbol_name(DF_Entity *binary, String8 symbol_name) default: { U32 num = 0; - U32 *run = raddbg_matches_from_map_node(rdbg, node, &num); + U32 *run = raddbgi_matches_from_map_node(rdbg, node, &num); if(num != 0) { entity_num = run[0]+1; @@ -3457,15 +3457,15 @@ df_voff_from_binary_symbol_name(DF_Entity *binary, String8 symbol_name) if(entity_num != 0) switch(name_map_kind) { default:{}break; - case RADDBG_NameMapKind_GlobalVariables: + case RADDBGI_NameMapKind_GlobalVariables: { - RADDBG_GlobalVariable *global_var = raddbg_element_from_idx(rdbg, global_variables, entity_num-1); + RADDBGI_GlobalVariable *global_var = raddbgi_element_from_idx(rdbg, global_variables, entity_num-1); voff = global_var->voff; }break; - case RADDBG_NameMapKind_Procedures: + case RADDBGI_NameMapKind_Procedures: { - RADDBG_Procedure *procedure = raddbg_element_from_idx(rdbg, procedures, entity_num-1); - RADDBG_Scope *scope = raddbg_element_from_idx(rdbg, scopes, procedure->root_scope_idx); + RADDBGI_Procedure *procedure = raddbgi_element_from_idx(rdbg, procedures, entity_num-1); + RADDBGI_Scope *scope = raddbgi_element_from_idx(rdbg, scopes, procedure->root_scope_idx); voff = rdbg->scope_voffs[scope->voff_range_first]; }break; } @@ -3495,11 +3495,11 @@ df_type_num_from_binary_name(DF_Entity *binary, String8 name) { String8 binary_path = df_full_path_from_entity(scratch.arena, binary); DBGI_Parse *dbgi = dbgi_parse_from_exe_path(scope, binary_path, 0); - RADDBG_Parsed *rdbg = &dbgi->rdbg; - RADDBG_NameMap *name_map = raddbg_name_map_from_kind(rdbg, RADDBG_NameMapKind_Types); - RADDBG_ParsedNameMap parsed_name_map = {0}; - raddbg_name_map_parse(rdbg, name_map, &parsed_name_map); - RADDBG_NameMapNode *node = raddbg_name_map_lookup(rdbg, &parsed_name_map, name.str, name.size); + RADDBGI_Parsed *rdbg = &dbgi->rdbg; + RADDBGI_NameMap *name_map = raddbgi_name_map_from_kind(rdbg, RADDBGI_NameMapKind_Types); + RADDBGI_ParsedNameMap parsed_name_map = {0}; + raddbgi_name_map_parse(rdbg, name_map, &parsed_name_map); + RADDBGI_NameMapNode *node = raddbgi_name_map_lookup(rdbg, &parsed_name_map, name.str, name.size); U64 entity_num = 0; if(node != 0) { @@ -3512,7 +3512,7 @@ df_type_num_from_binary_name(DF_Entity *binary, String8 name) default: { U32 num = 0; - U32 *run = raddbg_matches_from_map_node(rdbg, node, &num); + U32 *run = raddbgi_matches_from_map_node(rdbg, node, &num); if(num != 0) { entity_num = run[0]+1; @@ -3697,8 +3697,8 @@ df_push_locals_map_from_binary_voff(Arena *arena, DBGI_Scope *scope, DF_Entity * Temp scratch = scratch_begin(&arena, 1); String8 binary_path = df_full_path_from_entity(scratch.arena, binary); DBGI_Parse *dbgi = dbgi_parse_from_exe_path(scope, binary_path, 0); - RADDBG_Parsed *rdbg = &dbgi->rdbg; - EVAL_String2NumMap *result = eval_push_locals_map_from_raddbg_voff(arena, rdbg, voff); + RADDBGI_Parsed *rdbg = &dbgi->rdbg; + EVAL_String2NumMap *result = eval_push_locals_map_from_raddbgi_voff(arena, rdbg, voff); scratch_end(scratch); return result; } @@ -3709,8 +3709,8 @@ df_push_member_map_from_binary_voff(Arena *arena, DBGI_Scope *scope, DF_Entity * Temp scratch = scratch_begin(&arena, 1); String8 binary_path = df_full_path_from_entity(scratch.arena, binary); DBGI_Parse *dbgi = dbgi_parse_from_exe_path(scope, binary_path, 0); - RADDBG_Parsed *rdbg = &dbgi->rdbg; - EVAL_String2NumMap *result = eval_push_member_map_from_raddbg_voff(arena, rdbg, voff); + RADDBGI_Parsed *rdbg = &dbgi->rdbg; + EVAL_String2NumMap *result = eval_push_member_map_from_raddbgi_voff(arena, rdbg, voff); scratch_end(scratch); return result; } @@ -3987,7 +3987,7 @@ df_eval_parse_ctx_from_process_vaddr(DBGI_Scope *scope, DF_Entity *process, U64 DF_Entity *binary = df_binary_file_from_module(module); String8 binary_path = df_full_path_from_entity(scratch.arena, binary); DBGI_Parse *dbgi = dbgi_parse_from_exe_path(scope, binary_path, 0); - RADDBG_Parsed *rdbg = &dbgi->rdbg; + RADDBGI_Parsed *rdbg = &dbgi->rdbg; Architecture arch = df_architecture_from_entity(process); EVAL_String2NumMap *reg_map = ctrl_string2reg_from_arch(arch); EVAL_String2NumMap *reg_alias_map = ctrl_string2alias_from_arch(arch); @@ -4035,22 +4035,22 @@ df_eval_parse_ctx_from_src_loc(DBGI_Scope *scope, DF_Entity *file, TxtPt pt) DF_Entity *binary = binary_n->entity; String8 binary_path = df_full_path_from_entity(scratch.arena, binary); DBGI_Parse *dbgi = dbgi_parse_from_exe_path(scope, binary_path, 0); - RADDBG_Parsed *rdbg = &dbgi->rdbg; + RADDBGI_Parsed *rdbg = &dbgi->rdbg; // rjf: file_path_normalized * rdbg -> src_id B32 good_src_id = 0; U32 src_id = 0; { - RADDBG_NameMap *mapptr = raddbg_name_map_from_kind(rdbg, RADDBG_NameMapKind_NormalSourcePaths); + RADDBGI_NameMap *mapptr = raddbgi_name_map_from_kind(rdbg, RADDBGI_NameMapKind_NormalSourcePaths); if(mapptr != 0) { - RADDBG_ParsedNameMap map = {0}; - raddbg_name_map_parse(rdbg, mapptr, &map); - RADDBG_NameMapNode *node = raddbg_name_map_lookup(rdbg, &map, file_path_normalized.str, file_path_normalized.size); + RADDBGI_ParsedNameMap map = {0}; + raddbgi_name_map_parse(rdbg, mapptr, &map); + RADDBGI_NameMapNode *node = raddbgi_name_map_lookup(rdbg, &map, file_path_normalized.str, file_path_normalized.size); if(node != 0) { U32 id_count = 0; - U32 *ids = raddbg_matches_from_map_node(rdbg, node, &id_count); + U32 *ids = raddbgi_matches_from_map_node(rdbg, node, &id_count); if(id_count > 0) { good_src_id = 1; @@ -4063,19 +4063,19 @@ df_eval_parse_ctx_from_src_loc(DBGI_Scope *scope, DF_Entity *file, TxtPt pt) // rjf: good src-id -> look up line info for visible range if(good_src_id) { - RADDBG_SourceFile *src = rdbg->source_files+src_id; - RADDBG_ParsedLineMap line_map = {0}; - raddbg_line_map_from_source_file(rdbg, src, &line_map); + RADDBGI_SourceFile *src = rdbg->source_files+src_id; + RADDBGI_ParsedLineMap line_map = {0}; + raddbgi_line_map_from_source_file(rdbg, src, &line_map); U32 voff_count = 0; - U64 *voffs = raddbg_line_voffs_from_num(&line_map, (U32)pt.line, &voff_count); + U64 *voffs = raddbgi_line_voffs_from_num(&line_map, (U32)pt.line, &voff_count); for(U64 idx = 0; idx < voff_count; idx += 1) { U64 base_voff = voffs[idx]; - U64 unit_idx = raddbg_vmap_idx_from_voff(rdbg->unit_vmap, rdbg->unit_vmap_count, base_voff); - RADDBG_Unit *unit = &rdbg->units[unit_idx]; - RADDBG_ParsedLineInfo unit_line_info = {0}; - raddbg_line_info_from_unit(rdbg, unit, &unit_line_info); - U64 line_info_idx = raddbg_line_info_idx_from_voff(&unit_line_info, base_voff); + U64 unit_idx = raddbgi_vmap_idx_from_voff(rdbg->unit_vmap, rdbg->unit_vmap_count, base_voff); + RADDBGI_Unit *unit = &rdbg->units[unit_idx]; + RADDBGI_ParsedLineInfo unit_line_info = {0}; + raddbgi_line_info_from_unit(rdbg, unit, &unit_line_info); + U64 line_info_idx = raddbgi_line_info_idx_from_voff(&unit_line_info, base_voff); Rng1U64 range = r1u64(base_voff, unit_line_info.voffs[line_info_idx+1]); S64 actual_line = (S64)unit_line_info.lines[line_info_idx].line_num; DF_TextLineSrc2DasmInfoNode *src2dasm_n = push_array(scratch.arena, DF_TextLineSrc2DasmInfoNode, 1); @@ -4246,7 +4246,7 @@ df_eval_from_string(Arena *arena, DBGI_Scope *scope, DF_CtrlCtx *ctrl_ctx, EVAL_ } internal DF_Eval -df_value_mode_eval_from_eval(TG_Graph *graph, RADDBG_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, DF_Eval eval) +df_value_mode_eval_from_eval(TG_Graph *graph, RADDBGI_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, DF_Eval eval) { ProfBeginFunction(); DF_Entity *thread = df_entity_from_handle(ctrl_ctx->thread); @@ -4262,7 +4262,7 @@ df_value_mode_eval_from_eval(TG_Graph *graph, RADDBG_Parsed *rdbg, DF_CtrlCtx *c { TG_Key type_key = eval.type_key; TG_Kind type_kind = tg_kind_from_key(type_key); - U64 type_byte_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, type_key); + U64 type_byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, type_key); if(!tg_key_match(type_key, tg_key_zero()) && type_byte_size <= 8) { Temp scratch = scratch_begin(0, 0); @@ -4292,7 +4292,7 @@ df_value_mode_eval_from_eval(TG_Graph *graph, RADDBG_Parsed *rdbg, DF_CtrlCtx *c case EVAL_EvalMode_Reg: { TG_Key type_key = eval.type_key; - U64 type_byte_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, type_key); + U64 type_byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, type_key); U64 reg_off = eval.offset; CTRL_Unwind unwind = df_query_cached_unwind_from_thread(thread); if(unwind.first != 0) @@ -4316,7 +4316,7 @@ df_value_mode_eval_from_eval(TG_Graph *graph, RADDBG_Parsed *rdbg, DF_CtrlCtx *c } internal DF_Eval -df_dynamically_typed_eval_from_eval(TG_Graph *graph, RADDBG_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, DF_Eval eval) +df_dynamically_typed_eval_from_eval(TG_Graph *graph, RADDBGI_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, DF_Eval eval) { ProfBeginFunction(); Temp scratch = scratch_begin(0, 0); @@ -4330,11 +4330,11 @@ df_dynamically_typed_eval_from_eval(TG_Graph *graph, RADDBG_Parsed *rdbg, DF_Ctr TG_Kind type_kind = tg_kind_from_key(type_key); if(type_kind == TG_Kind_Ptr) { - TG_Key ptee_type_key = tg_unwrapped_direct_from_graph_raddbg_key(graph, rdbg, type_key); + TG_Key ptee_type_key = tg_unwrapped_direct_from_graph_raddbgi_key(graph, rdbg, type_key); TG_Kind ptee_type_kind = tg_kind_from_key(ptee_type_key); if(ptee_type_kind == TG_Kind_Struct || ptee_type_kind == TG_Kind_Class) { - TG_Type *ptee_type = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, ptee_type_key); + TG_Type *ptee_type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, ptee_type_key); B32 has_vtable = 0; for(U64 idx = 0; idx < ptee_type->count; idx += 1) { @@ -4363,13 +4363,13 @@ df_dynamically_typed_eval_from_eval(TG_Graph *graph, RADDBG_Parsed *rdbg, DF_Ctr U64 vtable_vaddr = 0; MemoryCopy(&vtable_vaddr, vtable_base_ptr_memory.str, addr_size); U64 vtable_voff = df_voff_from_vaddr(module, vtable_vaddr); - U64 global_idx = raddbg_vmap_idx_from_voff(rdbg->global_vmap, rdbg->global_vmap_count, vtable_voff); - RADDBG_GlobalVariable *global_var = raddbg_element_from_idx(rdbg, global_variables, global_idx); - if(global_var->link_flags & RADDBG_LinkFlag_TypeScoped) + U64 global_idx = raddbgi_vmap_idx_from_voff(rdbg->global_vmap, rdbg->global_vmap_count, vtable_voff); + RADDBGI_GlobalVariable *global_var = raddbgi_element_from_idx(rdbg, global_variables, global_idx); + if(global_var->link_flags & RADDBGI_LinkFlag_TypeScoped) { - RADDBG_UDT *udt = raddbg_element_from_idx(rdbg, udts, global_var->container_idx); - RADDBG_TypeNode *type = raddbg_element_from_idx(rdbg, type_nodes, udt->self_type_idx); - TG_Key derived_type_key = tg_key_ext(tg_kind_from_raddbg_type_kind(type->kind), (U64)udt->self_type_idx); + RADDBGI_UDT *udt = raddbgi_element_from_idx(rdbg, udts, global_var->container_idx); + RADDBGI_TypeNode *type = raddbgi_element_from_idx(rdbg, type_nodes, udt->self_type_idx); + TG_Key derived_type_key = tg_key_ext(tg_kind_from_raddbgi_type_kind(type->kind), (U64)udt->self_type_idx); TG_Key ptr_to_derived_type_key = tg_cons_type_make(graph, TG_Kind_Ptr, derived_type_key, 0); eval.type_key = ptr_to_derived_type_key; } @@ -4579,13 +4579,13 @@ df_string_from_ascii_value(Arena *arena, U8 val) } internal String8 -df_string_from_simple_typed_eval(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, DF_EvalVizStringFlags flags, U32 radix, DF_Eval eval) +df_string_from_simple_typed_eval(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, DF_EvalVizStringFlags flags, U32 radix, DF_Eval eval) { ProfBeginFunction(); String8 result = {0}; - TG_Key type_key = tg_unwrapped_from_graph_raddbg_key(graph, rdbg, eval.type_key); + TG_Key type_key = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, eval.type_key); TG_Kind type_kind = tg_kind_from_key(type_key); - U64 type_byte_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, type_key); + U64 type_byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, type_key); U8 digit_group_separator = 0; if(!(flags & DF_EvalVizStringFlag_ReadOnlyDisplayRules)) { @@ -4653,7 +4653,7 @@ df_string_from_simple_typed_eval(Arena *arena, TG_Graph *graph, RADDBG_Parsed *r case TG_Kind_Enum: { Temp scratch = scratch_begin(&arena, 1); - TG_Type *type = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, type_key); + TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, type_key); String8 constant_name = {0}; for(U64 val_idx = 0; val_idx < type->count; val_idx += 1) { @@ -4693,7 +4693,7 @@ df_string_from_simple_typed_eval(Arena *arena, TG_Graph *graph, RADDBG_Parsed *r //- rjf: writing values back to child processes internal B32 -df_commit_eval_value(TG_Graph *graph, RADDBG_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, DF_Eval dst_eval, DF_Eval src_eval) +df_commit_eval_value(TG_Graph *graph, RADDBGI_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, DF_Eval dst_eval, DF_Eval src_eval) { B32 result = 0; Temp scratch = scratch_begin(0, 0); @@ -4705,8 +4705,8 @@ df_commit_eval_value(TG_Graph *graph, RADDBG_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, TG_Key src_type_key = src_eval.type_key; TG_Kind dst_type_kind = tg_kind_from_key(dst_type_key); TG_Kind src_type_kind = tg_kind_from_key(src_type_key); - U64 dst_type_byte_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, dst_type_key); - U64 src_type_byte_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, src_type_key); + U64 dst_type_byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, dst_type_key); + U64 src_type_byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, src_type_key); //- rjf: get commit data based on destination type String8 commit_data = {0}; @@ -4914,7 +4914,7 @@ df_filtered_data_members_from_members_cfg_table(Arena *arena, TG_MemberArray mem } internal DF_EvalLinkBaseChunkList -df_eval_link_base_chunk_list_from_eval(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key link_member_type_key, U64 link_member_off, DF_CtrlCtx *ctrl_ctx, DF_Eval eval, U64 cap) +df_eval_link_base_chunk_list_from_eval(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key link_member_type_key, U64 link_member_off, DF_CtrlCtx *ctrl_ctx, DF_Eval eval, U64 cap) { DF_EvalLinkBaseChunkList list = {0}; for(DF_Eval base_eval = eval, last_eval = zero_struct; list.count < cap;) @@ -5053,7 +5053,7 @@ df_append_viz_blocks_for_parent__rec(Arena *arena, DBGI_Scope *scope, DF_EvalVie ////////////////////////////// //- rjf: unpack eval // - TG_Key eval_type_key = tg_unwrapped_from_graph_raddbg_key(parse_ctx->type_graph, parse_ctx->rdbg, eval.type_key); + TG_Key eval_type_key = tg_unwrapped_from_graph_raddbgi_key(parse_ctx->type_graph, parse_ctx->rdbg, eval.type_key); TG_Kind eval_type_kind = tg_kind_from_key(eval_type_key); ////////////////////////////// @@ -5084,7 +5084,7 @@ df_append_viz_blocks_for_parent__rec(Arena *arena, DBGI_Scope *scope, DF_EvalVie TG_Kind ptr_type_kind = TG_Kind_Null; if(eval_type_kind == TG_Kind_Ptr || eval_type_kind == TG_Kind_LRef || eval_type_kind == TG_Kind_RRef) { - TG_Key direct_type_key = tg_ptee_from_graph_raddbg_key(parse_ctx->type_graph, parse_ctx->rdbg, eval_type_key); + TG_Key direct_type_key = tg_ptee_from_graph_raddbgi_key(parse_ctx->type_graph, parse_ctx->rdbg, eval_type_key); TG_Kind direct_type_kind = tg_kind_from_key(direct_type_key); DF_Eval ptr_val_eval = df_value_mode_eval_from_eval(parse_ctx->type_graph, parse_ctx->rdbg, ctrl_ctx, eval); @@ -5199,7 +5199,7 @@ df_append_viz_blocks_for_parent__rec(Arena *arena, DBGI_Scope *scope, DF_EvalVie ProfScope("build viz blocks for UDT members") { //- rjf: type -> filtered data members - TG_MemberArray data_members = tg_data_members_from_graph_raddbg_key(scratch.arena, parse_ctx->type_graph, parse_ctx->rdbg, udt_eval.type_key); + TG_MemberArray data_members = tg_data_members_from_graph_raddbgi_key(scratch.arena, parse_ctx->type_graph, parse_ctx->rdbg, udt_eval.type_key); TG_MemberArray filtered_data_members = df_filtered_data_members_from_members_cfg_table(scratch.arena, data_members, cfg_table); //- rjf: build blocks for all members, split by sub-expansions @@ -5255,7 +5255,7 @@ df_append_viz_blocks_for_parent__rec(Arena *arena, DBGI_Scope *scope, DF_EvalVie ProfScope("build viz blocks for UDT type-eval enums") { //- rjf: type -> full type info - TG_Type *type = tg_type_from_graph_raddbg_key(scratch.arena, parse_ctx->type_graph, parse_ctx->rdbg, udt_eval.type_key); + TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, parse_ctx->type_graph, parse_ctx->rdbg, udt_eval.type_key); //- rjf: build block for all members (cannot be expanded) DF_EvalVizBlock *last_vb = df_eval_viz_block_begin(arena, DF_EvalVizBlockKind_EnumMembers, key, df_expand_key_make(df_hash_from_expand_key(key), 0), depth+1); @@ -5277,7 +5277,7 @@ df_append_viz_blocks_for_parent__rec(Arena *arena, DBGI_Scope *scope, DF_EvalVie ProfScope("(structs, unions, classes) descend to members & make block(s), with linked list view") { //- rjf: type -> data members - TG_MemberArray data_members = tg_data_members_from_graph_raddbg_key(scratch.arena, parse_ctx->type_graph, parse_ctx->rdbg, udt_eval.type_key); + TG_MemberArray data_members = tg_data_members_from_graph_raddbgi_key(scratch.arena, parse_ctx->type_graph, parse_ctx->rdbg, udt_eval.type_key); //- rjf: find link member TG_Member *link_member = 0; @@ -5290,7 +5290,7 @@ df_append_viz_blocks_for_parent__rec(Arena *arena, DBGI_Scope *scope, DF_EvalVie { link_member = mem; link_member_type_kind = tg_kind_from_key(link_member->type_key); - link_member_ptee_type_key = tg_ptee_from_graph_raddbg_key(parse_ctx->type_graph, parse_ctx->rdbg, link_member->type_key); + link_member_ptee_type_key = tg_ptee_from_graph_raddbgi_key(parse_ctx->type_graph, parse_ctx->rdbg, link_member->type_key); break; } } @@ -5371,10 +5371,10 @@ df_append_viz_blocks_for_parent__rec(Arena *arena, DBGI_Scope *scope, DF_EvalVie ProfScope("(arrays) descend to elements & make block(s)") { //- rjf: unpack array type info - TG_Type *array_type = tg_type_from_graph_raddbg_key(scratch.arena, parse_ctx->type_graph, parse_ctx->rdbg, arr_eval.type_key); + TG_Type *array_type = tg_type_from_graph_raddbgi_key(scratch.arena, parse_ctx->type_graph, parse_ctx->rdbg, arr_eval.type_key); U64 array_count = array_type->count; TG_Key element_type_key = array_type->direct_type_key; - U64 element_type_byte_size = tg_byte_size_from_graph_raddbg_key(parse_ctx->type_graph, parse_ctx->rdbg, element_type_key); + U64 element_type_byte_size = tg_byte_size_from_graph_raddbgi_key(parse_ctx->type_graph, parse_ctx->rdbg, element_type_key); //- rjf: build blocks for all elements, split by sub-expansions DF_EvalVizBlock *last_vb = df_eval_viz_block_begin(arena, DF_EvalVizBlockKind_Elements, key, df_expand_key_make(df_hash_from_expand_key(key), 0), depth+1); @@ -5612,7 +5612,7 @@ df_eval_viz_row_list_push_new(Arena *arena, EVAL_ParseCtx *parse_ctx, DF_EvalViz // rjf: determine exandability, editability if(tg_kind_from_key(eval.type_key) != TG_Kind_Null) { - for(TG_Key t = eval.type_key;; t = tg_unwrapped_direct_from_graph_raddbg_key(parse_ctx->type_graph, parse_ctx->rdbg, t)) + for(TG_Key t = eval.type_key;; t = tg_unwrapped_direct_from_graph_raddbgi_key(parse_ctx->type_graph, parse_ctx->rdbg, t)) { TG_Kind kind = tg_kind_from_key(t); if(kind == TG_Kind_Null) diff --git a/src/df/core/df_core.h b/src/df/core/df_core.h index aa66357a..85d27da0 100644 --- a/src/df/core/df_core.h +++ b/src/df/core/df_core.h @@ -1579,8 +1579,8 @@ internal B32 df_eval_memory_read(void *u, void *out, U64 addr, U64 size); internal EVAL_ParseCtx df_eval_parse_ctx_from_process_vaddr(DBGI_Scope *scope, DF_Entity *process, U64 vaddr); internal EVAL_ParseCtx df_eval_parse_ctx_from_src_loc(DBGI_Scope *scope, DF_Entity *file, TxtPt pt); internal DF_Eval df_eval_from_string(Arena *arena, DBGI_Scope *scope, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, EVAL_String2ExprMap *macro_map, String8 string); -internal DF_Eval df_value_mode_eval_from_eval(TG_Graph *graph, RADDBG_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, DF_Eval eval); -internal DF_Eval df_dynamically_typed_eval_from_eval(TG_Graph *graph, RADDBG_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, DF_Eval eval); +internal DF_Eval df_value_mode_eval_from_eval(TG_Graph *graph, RADDBGI_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, DF_Eval eval); +internal DF_Eval df_dynamically_typed_eval_from_eval(TG_Graph *graph, RADDBGI_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, DF_Eval eval); internal DF_Eval df_eval_from_eval_cfg_table(Arena *arena, DBGI_Scope *scope, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, EVAL_String2ExprMap *macro_map, DF_Eval eval, DF_CfgTable *cfg); //////////////////////////////// @@ -1604,14 +1604,14 @@ 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_simple_typed_eval(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, DF_EvalVizStringFlags flags, U32 radix, DF_Eval eval); +internal String8 df_string_from_simple_typed_eval(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, DF_EvalVizStringFlags flags, U32 radix, DF_Eval eval); //- rjf: writing values back to child processes -internal B32 df_commit_eval_value(TG_Graph *graph, RADDBG_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, DF_Eval dst_eval, DF_Eval src_eval); +internal B32 df_commit_eval_value(TG_Graph *graph, RADDBGI_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, DF_Eval dst_eval, DF_Eval src_eval); //- rjf: type helpers internal TG_MemberArray df_filtered_data_members_from_members_cfg_table(Arena *arena, TG_MemberArray members, DF_CfgTable *cfg); -internal DF_EvalLinkBaseChunkList df_eval_link_base_chunk_list_from_eval(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key link_member_type_key, U64 link_member_off, DF_CtrlCtx *ctrl_ctx, DF_Eval eval, U64 cap); +internal DF_EvalLinkBaseChunkList df_eval_link_base_chunk_list_from_eval(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key link_member_type_key, U64 link_member_off, DF_CtrlCtx *ctrl_ctx, DF_Eval eval, U64 cap); internal DF_EvalLinkBase df_eval_link_base_from_chunk_list_index(DF_EvalLinkBaseChunkList *list, U64 idx); internal DF_EvalLinkBaseArray df_eval_link_base_array_from_chunk_list(Arena *arena, DF_EvalLinkBaseChunkList *chunks); diff --git a/src/df/gfx/df_gfx.c b/src/df/gfx/df_gfx.c index f6cad045..b59ddc60 100644 --- a/src/df/gfx/df_gfx.c +++ b/src/df/gfx/df_gfx.c @@ -4410,15 +4410,15 @@ df_window_update_and_render(Arena *arena, OS_EventList *events, DF_Window *ws, D DF_Entity *task = n->entity; if(task->alloc_time_us + 500000 < os_now_microseconds()) { - String8 raddbg_path = task->name; - String8 raddbg_name = str8_skip_last_slash(raddbg_path); - String8 task_text = push_str8f(scratch.arena, "Creating %S...", raddbg_name); + String8 raddbgi_path = task->name; + String8 raddbgi_name = str8_skip_last_slash(raddbgi_path); + String8 task_text = push_str8f(scratch.arena, "Creating %S...", raddbgi_name); UI_Key key = ui_key_from_stringf(ui_key_zero(), "task_%p", task); UI_Box *box = ui_build_box_from_key(UI_BoxFlag_DrawHotEffects|UI_BoxFlag_DrawText|UI_BoxFlag_DrawBorder|UI_BoxFlag_DrawBackground|UI_BoxFlag_Clickable, key); UI_Signal sig = ui_signal_from_box(box); if(ui_hovering(sig)) UI_Tooltip { - ui_label(raddbg_path); + ui_label(raddbgi_path); } ui_box_equip_display_string(box, task_text); } @@ -5232,7 +5232,7 @@ df_window_update_and_render(Arena *arena, OS_EventList *events, DF_Window *ws, D default:{}break; case EVAL_EvalMode_Addr: { - U64 size = tg_byte_size_from_graph_raddbg_key(parse_ctx.type_graph, parse_ctx.rdbg, row->eval.type_key); + U64 size = tg_byte_size_from_graph_raddbgi_key(parse_ctx.type_graph, parse_ctx.rdbg, row->eval.type_key); size = Min(size, 64); Rng1U64 vaddr_rng = r1u64(row->eval.offset, row->eval.offset+size); CTRL_ProcessMemorySlice slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, process->ctrl_machine_id, process->ctrl_handle, vaddr_rng, 0); @@ -6858,7 +6858,7 @@ df_eval_escaped_from_raw_string(Arena *arena, String8 raw) } internal String8List -df_single_line_eval_value_strings_from_eval(Arena *arena, DF_EvalVizStringFlags flags, TG_Graph *graph, RADDBG_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, U32 default_radix, F_Tag font, F32 font_size, F32 max_size, S32 depth, DF_Eval eval, TG_Member *opt_member, DF_CfgTable *cfg_table) +df_single_line_eval_value_strings_from_eval(Arena *arena, DF_EvalVizStringFlags flags, TG_Graph *graph, RADDBGI_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, U32 default_radix, F_Tag font, F32 font_size, F32 max_size, S32 depth, DF_Eval eval, TG_Member *opt_member, DF_CfgTable *cfg_table) { ProfBeginFunction(); String8List list = {0}; @@ -6869,13 +6869,13 @@ df_single_line_eval_value_strings_from_eval(Arena *arena, DF_EvalVizStringFlags { if(opt_member != 0) { - U64 member_byte_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, opt_member->type_key); + U64 member_byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, opt_member->type_key); str8_list_pushf(arena, &list, "member (%I64u offset, %I64u byte%s)", opt_member->off, member_byte_size, member_byte_size > 1 ? "s" : ""); } else { String8 basic_type_kind_string = tg_kind_basic_string_table[tg_kind_from_key(eval.type_key)]; - U64 byte_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, eval.type_key); + U64 byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, eval.type_key); str8_list_pushf(arena, &list, "%S (%I64u byte%s)", basic_type_kind_string, byte_size, byte_size > 1 ? "s" : ""); } } @@ -6883,7 +6883,7 @@ df_single_line_eval_value_strings_from_eval(Arena *arena, DF_EvalVizStringFlags //- rjf: non-type path: descend recursively & produce single-line value strings else if(max_size > 0) { - TG_Kind eval_type_kind = tg_kind_from_key(tg_unwrapped_from_graph_raddbg_key(graph, rdbg, eval.type_key)); + TG_Kind eval_type_kind = tg_kind_from_key(tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, eval.type_key)); U32 radix = default_radix; DF_CfgVal *dec_cfg = df_cfg_val_from_string(cfg_table, str8_lit("dec")); DF_CfgVal *hex_cfg = df_cfg_val_from_string(cfg_table, str8_lit("hex")); @@ -6924,7 +6924,7 @@ df_single_line_eval_value_strings_from_eval(Arena *arena, DF_EvalVizStringFlags // rjf: get pointed-at info TG_Kind type_kind = tg_kind_from_key(eval.type_key); - TG_Key direct_type_key = tg_ptee_from_graph_raddbg_key(graph, rdbg, eval.type_key); + TG_Key direct_type_key = tg_ptee_from_graph_raddbgi_key(graph, rdbg, eval.type_key); TG_Kind direct_type_kind = tg_kind_from_key(direct_type_key); B32 direct_type_has_content = (direct_type_kind != TG_Kind_Null && direct_type_kind != TG_Kind_Void && value_eval.imm_u64 != 0); B32 direct_type_is_string = (direct_type_kind != TG_Kind_Null && value_eval.imm_u64 != 0 && @@ -7011,7 +7011,7 @@ df_single_line_eval_value_strings_from_eval(Arena *arena, DF_EvalVizStringFlags case TG_Kind_Array: { Temp scratch = scratch_begin(&arena, 1); - TG_Type *eval_type = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, eval.type_key); + TG_Type *eval_type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, eval.type_key); TG_Key direct_type_key = eval_type->direct_type_key; TG_Kind direct_type_kind = tg_kind_from_key(direct_type_key); U64 array_count = eval_type->count; @@ -7055,7 +7055,7 @@ df_single_line_eval_value_strings_from_eval(Arena *arena, DF_EvalVizStringFlags { if(depth < 3) { - U64 direct_type_byte_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, direct_type_key); + U64 direct_type_byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, direct_type_key); for(U64 idx = 0; idx < array_count && max_size > space_taken; idx += 1) { DF_Eval element_eval = zero_struct; @@ -7111,7 +7111,7 @@ df_single_line_eval_value_strings_from_eval(Arena *arena, DF_EvalVizStringFlags if(depth < 4) { Temp scratch = scratch_begin(&arena, 1); - TG_MemberArray data_members = tg_data_members_from_graph_raddbg_key(scratch.arena, graph, rdbg, eval.type_key); + TG_MemberArray data_members = tg_data_members_from_graph_raddbgi_key(scratch.arena, graph, rdbg, eval.type_key); TG_MemberArray filtered_data_members = df_filtered_data_members_from_members_cfg_table(scratch.arena, data_members, cfg_table); for(U64 member_idx = 0; member_idx < filtered_data_members.count && max_size > space_taken; member_idx += 1) { @@ -7312,7 +7312,7 @@ df_eval_viz_windowed_row_list_from_viz_block_list(Arena *arena, DBGI_Scope *scop case DF_EvalVizBlockKind_Members: if(block_type_kind != TG_Kind_Null) { - TG_MemberArray data_members = tg_data_members_from_graph_raddbg_key(scratch.arena, parse_ctx->type_graph, parse_ctx->rdbg, block->eval.type_key); + TG_MemberArray data_members = tg_data_members_from_graph_raddbgi_key(scratch.arena, parse_ctx->type_graph, parse_ctx->rdbg, block->eval.type_key); TG_MemberArray filtered_data_members = df_filtered_data_members_from_members_cfg_table(scratch.arena, data_members, &block->cfg_table); for(U64 idx = visible_idx_range.min; idx < visible_idx_range.max && idx < filtered_data_members.count; idx += 1) { @@ -7370,7 +7370,7 @@ df_eval_viz_windowed_row_list_from_viz_block_list(Arena *arena, DBGI_Scope *scop case DF_EvalVizBlockKind_EnumMembers: if(block_type_kind == TG_Kind_Enum) { - TG_Type *type = tg_type_from_graph_raddbg_key(scratch.arena, parse_ctx->type_graph, parse_ctx->rdbg, block->eval.type_key); + TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, parse_ctx->type_graph, parse_ctx->rdbg, block->eval.type_key); for(U64 idx = visible_idx_range.min; idx < visible_idx_range.max && idx < type->count; idx += 1) { TG_EnumVal *enum_val = &type->enum_vals[idx]; @@ -7414,9 +7414,9 @@ df_eval_viz_windowed_row_list_from_viz_block_list(Arena *arena, DBGI_Scope *scop // case DF_EvalVizBlockKind_Elements: { - TG_Key direct_type_key = tg_unwrapped_direct_from_graph_raddbg_key(parse_ctx->type_graph, parse_ctx->rdbg, block->eval.type_key); + TG_Key direct_type_key = tg_unwrapped_direct_from_graph_raddbgi_key(parse_ctx->type_graph, parse_ctx->rdbg, block->eval.type_key); TG_Kind direct_type_kind = tg_kind_from_key(direct_type_key); - U64 direct_type_key_byte_size = tg_byte_size_from_graph_raddbg_key(parse_ctx->type_graph, parse_ctx->rdbg, direct_type_key); + U64 direct_type_key_byte_size = tg_byte_size_from_graph_raddbgi_key(parse_ctx->type_graph, parse_ctx->rdbg, direct_type_key); for(U64 idx = visible_idx_range.min; idx < visible_idx_range.max; idx += 1) { // rjf: get keys for this row diff --git a/src/df/gfx/df_gfx.h b/src/df/gfx/df_gfx.h index c55cf7d2..36d5b226 100644 --- a/src/df/gfx/df_gfx.h +++ b/src/df/gfx/df_gfx.h @@ -961,7 +961,7 @@ internal void df_window_update_and_render(Arena *arena, OS_EventList *events, DF //~ rjf: Eval Viz internal String8 df_eval_escaped_from_raw_string(Arena *arena, String8 raw); -internal String8List df_single_line_eval_value_strings_from_eval(Arena *arena, DF_EvalVizStringFlags flags, TG_Graph *graph, RADDBG_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, U32 default_radix, F_Tag font, F32 font_size, F32 max_size, S32 depth, DF_Eval eval, TG_Member *opt_member, DF_CfgTable *cfg_table); +internal String8List df_single_line_eval_value_strings_from_eval(Arena *arena, DF_EvalVizStringFlags flags, TG_Graph *graph, RADDBGI_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, U32 default_radix, F_Tag font, F32 font_size, F32 max_size, S32 depth, DF_Eval eval, TG_Member *opt_member, DF_CfgTable *cfg_table); internal DF_EvalVizWindowedRowList df_eval_viz_windowed_row_list_from_viz_block_list(Arena *arena, DBGI_Scope *scope, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, EVAL_String2ExprMap *macro_map, DF_EvalView *eval_view, U32 default_radix, F_Tag font, F32 font_size, Rng1S64 visible_range, DF_EvalVizBlockList *blocks); //////////////////////////////// diff --git a/src/df/gfx/df_view_rule_hooks.c b/src/df/gfx/df_view_rule_hooks.c index 87826f35..0a6ddbf4 100644 --- a/src/df/gfx/df_view_rule_hooks.c +++ b/src/df/gfx/df_view_rule_hooks.c @@ -5,7 +5,7 @@ //~ rjf: Helpers internal Vec4F32 -df_view_rule_hooks__rgba_from_eval(DF_Eval eval, TG_Graph *graph, RADDBG_Parsed *raddbg, DF_Entity *process) +df_view_rule_hooks__rgba_from_eval(DF_Eval eval, TG_Graph *graph, RADDBGI_Parsed *raddbg, DF_Entity *process) { Vec4F32 rgba = {0}; Temp scratch = scratch_begin(0, 0); @@ -27,14 +27,14 @@ df_view_rule_hooks__rgba_from_eval(DF_Eval eval, TG_Graph *graph, RADDBG_Parsed case TG_Kind_Array: if(eval.mode == EVAL_EvalMode_Addr) { - U64 array_total_size = tg_byte_size_from_graph_raddbg_key(graph, raddbg, type_key); + U64 array_total_size = tg_byte_size_from_graph_raddbgi_key(graph, raddbg, type_key); U64 array_total_size_capped = ClampTop(array_total_size, 64); Rng1U64 array_memory_vaddr_rng = r1u64(eval.offset, eval.offset + array_total_size_capped); CTRL_ProcessMemorySlice array_slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, process->ctrl_machine_id, process->ctrl_handle, array_memory_vaddr_rng, 0); String8 array_memory = array_slice.data; - TG_Key element_type_key = tg_unwrapped_direct_from_graph_raddbg_key(graph, raddbg, type_key); + TG_Key element_type_key = tg_unwrapped_direct_from_graph_raddbgi_key(graph, raddbg, type_key); TG_Kind element_type_kind = tg_kind_from_key(element_type_key); - U64 element_type_size = tg_byte_size_from_graph_raddbg_key(graph, raddbg, element_type_key); + U64 element_type_size = tg_byte_size_from_graph_raddbgi_key(graph, raddbg, element_type_key); for(U64 element_idx = 0; element_idx < 4; element_idx += 1) { U64 offset = element_idx*element_type_size; @@ -64,12 +64,12 @@ df_view_rule_hooks__rgba_from_eval(DF_Eval eval, TG_Graph *graph, RADDBG_Parsed case TG_Kind_Union: if(eval.mode == EVAL_EvalMode_Addr) { - U64 struct_total_size = tg_byte_size_from_graph_raddbg_key(graph, raddbg, type_key); + U64 struct_total_size = tg_byte_size_from_graph_raddbgi_key(graph, raddbg, type_key); U64 struct_total_size_capped = ClampTop(struct_total_size, 64); Rng1U64 struct_memory_vaddr_rng = r1u64(eval.offset, eval.offset + struct_total_size_capped); CTRL_ProcessMemorySlice struct_slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, process->ctrl_machine_id, process->ctrl_handle, struct_memory_vaddr_rng, 0); String8 struct_memory = struct_slice.data; - TG_Type *type = tg_type_from_graph_raddbg_key(scratch.arena, graph, raddbg, type_key); + TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, raddbg, type_key); for(U64 element_idx = 0, member_idx = 0; element_idx < 4 && member_idx < type->count; member_idx += 1) @@ -102,7 +102,7 @@ df_view_rule_hooks__rgba_from_eval(DF_Eval eval, TG_Graph *graph, RADDBG_Parsed } internal void -df_view_rule_hooks__eval_commit_rgba(DF_Eval eval, TG_Graph *graph, RADDBG_Parsed *raddbg, DF_CtrlCtx *ctrl_ctx, Vec4F32 rgba) +df_view_rule_hooks__eval_commit_rgba(DF_Eval eval, TG_Graph *graph, RADDBGI_Parsed *raddbg, DF_CtrlCtx *ctrl_ctx, Vec4F32 rgba) { TG_Key type_key = eval.type_key; TG_Kind type_kind = tg_kind_from_key(type_key); @@ -126,13 +126,13 @@ df_view_rule_hooks__eval_commit_rgba(DF_Eval eval, TG_Graph *graph, RADDBG_Parse case TG_Kind_Array: if(eval.mode == EVAL_EvalMode_Addr) { - U64 array_total_size = tg_byte_size_from_graph_raddbg_key(graph, raddbg, type_key); + U64 array_total_size = tg_byte_size_from_graph_raddbgi_key(graph, raddbg, type_key); U64 array_total_size_capped = ClampTop(array_total_size, 64); Rng1U64 array_memory_vaddr_rng = r1u64(eval.offset, eval.offset + array_total_size_capped); String8 array_memory = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, process->ctrl_machine_id, process->ctrl_handle, array_memory_vaddr_rng); - TG_Key element_type_key = tg_unwrapped_direct_from_graph_raddbg_key(graph, raddbg, type_key); + TG_Key element_type_key = tg_unwrapped_direct_from_graph_raddbgi_key(graph, raddbg, type_key); TG_Kind element_type_kind = tg_kind_from_key(element_type_key); - U64 element_type_size = tg_byte_size_from_graph_raddbg_key(graph, raddbg, element_type_key); + U64 element_type_size = tg_byte_size_from_graph_raddbgi_key(graph, raddbg, element_type_key); for(U64 element_idx = 0; element_idx < 4; element_idx += 1) { U64 offset = element_idx*element_type_size; @@ -162,11 +162,11 @@ df_view_rule_hooks__eval_commit_rgba(DF_Eval eval, TG_Graph *graph, RADDBG_Parse case TG_Kind_Union: if(eval.mode == EVAL_EvalMode_Addr) { - U64 struct_total_size = tg_byte_size_from_graph_raddbg_key(graph, raddbg, type_key); + U64 struct_total_size = tg_byte_size_from_graph_raddbgi_key(graph, raddbg, type_key); U64 struct_total_size_capped = ClampTop(struct_total_size, 64); Rng1U64 struct_memory_vaddr_rng = r1u64(eval.offset, eval.offset + struct_total_size_capped); String8 struct_memory = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, process->ctrl_machine_id, process->ctrl_handle, struct_memory_vaddr_rng); - TG_Type *type = tg_type_from_graph_raddbg_key(scratch.arena, graph, raddbg, type_key); + TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, raddbg, type_key); for(U64 element_idx = 0, member_idx = 0; element_idx < 4 && member_idx < type->count; member_idx += 1) @@ -343,7 +343,7 @@ DF_CORE_VIEW_RULE_EVAL_RESOLUTION_FUNCTION_DEF(array) } // rjf: apply array size to type - TG_Key pointee = tg_ptee_from_graph_raddbg_key(parse_ctx->type_graph, parse_ctx->rdbg, type_key); + TG_Key pointee = tg_ptee_from_graph_raddbgi_key(parse_ctx->type_graph, parse_ctx->rdbg, type_key); TG_Key array_type = tg_cons_type_make(parse_ctx->type_graph, TG_Kind_Array, pointee, array_size); eval.type_key = tg_cons_type_make(parse_ctx->type_graph, TG_Kind_Ptr, array_type, 0); } @@ -373,7 +373,7 @@ DF_CORE_VIEW_RULE_EVAL_RESOLUTION_FUNCTION_DEF(bswap) Temp scratch = scratch_begin(&arena, 1); TG_Key type_key = eval.type_key; TG_Kind type_kind = tg_kind_from_key(type_key); - U64 type_size_bytes = tg_byte_size_from_graph_raddbg_key(parse_ctx->type_graph, parse_ctx->rdbg, type_key); + U64 type_size_bytes = tg_byte_size_from_graph_raddbgi_key(parse_ctx->type_graph, parse_ctx->rdbg, type_key); if(TG_Kind_Char8 <= type_kind && type_kind <= TG_Kind_S256 && (type_size_bytes == 2 || type_size_bytes == 4 || diff --git a/src/df/gfx/df_view_rule_hooks.h b/src/df/gfx/df_view_rule_hooks.h index 2d7ea22d..9b2f578b 100644 --- a/src/df/gfx/df_view_rule_hooks.h +++ b/src/df/gfx/df_view_rule_hooks.h @@ -32,8 +32,8 @@ struct DF_TxtTopologyInfo //////////////////////////////// //~ rjf: Helpers -internal Vec4F32 df_view_rule_hooks__rgba_from_eval(DF_Eval eval, TG_Graph *graph, RADDBG_Parsed *raddbg, DF_Entity *process); -internal void df_view_rule_hooks__eval_commit_rgba(DF_Eval eval, TG_Graph *graph, RADDBG_Parsed *raddbg, DF_CtrlCtx *ctrl_ctx, Vec4F32 rgba); +internal Vec4F32 df_view_rule_hooks__rgba_from_eval(DF_Eval eval, TG_Graph *graph, RADDBGI_Parsed *raddbg, DF_Entity *process); +internal void df_view_rule_hooks__eval_commit_rgba(DF_Eval eval, TG_Graph *graph, RADDBGI_Parsed *raddbg, DF_CtrlCtx *ctrl_ctx, Vec4F32 rgba); internal DF_BitmapTopologyInfo df_view_rule_hooks__bitmap_topology_info_from_cfg(DBGI_Scope *scope, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, EVAL_String2ExprMap *macro_map, DF_CfgNode *cfg); internal DF_GeoTopologyInfo df_view_rule_hooks__geo_topology_info_from_cfg(DBGI_Scope *scope, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, EVAL_String2ExprMap *macro_map, DF_CfgNode *cfg); internal DF_TxtTopologyInfo df_view_rule_hooks__txt_topology_info_from_cfg(DBGI_Scope *scope, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, EVAL_String2ExprMap *macro_map, DF_CfgNode *cfg); diff --git a/src/df/gfx/df_views.c b/src/df/gfx/df_views.c index 12778ccd..c32fe086 100644 --- a/src/df/gfx/df_views.c +++ b/src/df/gfx/df_views.c @@ -751,7 +751,7 @@ df_eval_viz_block_list_from_watch_view_state(Arena *arena, DBGI_Scope *scope, DF DF_Entity *binary = df_binary_file_from_module(module); String8 exe_path = df_full_path_from_entity(scratch.arena, binary); DBGI_Parse *dbgi = dbgi_parse_from_exe_path(scope, exe_path, os_now_microseconds()+100); - RADDBG_Parsed *rdbg = &dbgi->rdbg; + RADDBGI_Parsed *rdbg = &dbgi->rdbg; //- rjf: calculate top-level keys, expand root-level, grab root expansion node DF_ExpandKey parent_key = df_expand_key_make(5381, 0); @@ -1180,7 +1180,7 @@ df_eval_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_EvalW default:{}break; case EVAL_EvalMode_Addr: { - U64 size = tg_byte_size_from_graph_raddbg_key(parse_ctx.type_graph, parse_ctx.rdbg, row->eval.type_key); + U64 size = tg_byte_size_from_graph_raddbgi_key(parse_ctx.type_graph, parse_ctx.rdbg, row->eval.type_key); size = Min(size, 64); Rng1U64 vaddr_rng = r1u64(row->eval.offset, row->eval.offset+size); CTRL_ProcessMemorySlice slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, process->ctrl_machine_id, process->ctrl_handle, vaddr_rng, 0); @@ -1270,7 +1270,7 @@ df_eval_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_EvalW row->depth > 0 && !row_expanded) { - U64 next_off = (row->eval.offset + tg_byte_size_from_graph_raddbg_key(parse_ctx.type_graph, parse_ctx.rdbg, row->eval.type_key)); + U64 next_off = (row->eval.offset + tg_byte_size_from_graph_raddbgi_key(parse_ctx.type_graph, parse_ctx.rdbg, row->eval.type_key)); if(next_off%64 != 0 && row->eval.offset/64 < next_off/64) { ui_set_next_fixed_x(0); @@ -2918,7 +2918,7 @@ DF_VIEW_UI_FUNCTION_DEF(SymbolLister) //- rjf: query -> raddbg, filtered items U128 fuzzy_search_key = {(U64)view, df_hash_from_string(str8_struct(&view))}; DBGI_Parse *dbgi = dbgi_parse_from_exe_path(scope, exe_path, os_now_microseconds()+100); - RADDBG_Parsed *rdbg = &dbgi->rdbg; + RADDBGI_Parsed *rdbg = &dbgi->rdbg; B32 items_stale = 0; DBGI_FuzzySearchItemArray items = dbgi_fuzzy_search_items_from_key_exe_query(scope, fuzzy_search_key, exe_path, query, DBGI_FuzzySearchTarget_Procedures, os_now_microseconds()+100, &items_stale); if(items_stale) @@ -2929,9 +2929,9 @@ DF_VIEW_UI_FUNCTION_DEF(SymbolLister) //- rjf: submit best match when hitting enter w/ no selection if(slv->cursor.y == 0 && items.count != 0 && os_key_press(ui_events(), ui_window(), 0, OS_Key_Return)) { - RADDBG_Procedure *procedure = raddbg_element_from_idx(rdbg, procedures, items.v[0].idx); + RADDBGI_Procedure *procedure = raddbgi_element_from_idx(rdbg, procedures, items.v[0].idx); U64 name_size = 0; - U8 *name_base = raddbg_string_from_idx(rdbg, procedure->name_string_idx, &name_size); + U8 *name_base = raddbgi_string_from_idx(rdbg, procedure->name_string_idx, &name_size); String8 name = str8(name_base, name_size); if(name.size != 0) { @@ -2967,12 +2967,12 @@ DF_VIEW_UI_FUNCTION_DEF(SymbolLister) UI_Focus((slv->cursor.y == idx+1) ? UI_FocusKind_On : UI_FocusKind_Off) { DBGI_FuzzySearchItem *item = &items.v[idx]; - RADDBG_Procedure *procedure = raddbg_element_from_idx(rdbg, procedures, item->idx); + RADDBGI_Procedure *procedure = raddbgi_element_from_idx(rdbg, procedures, item->idx); U64 name_size = 0; - U8 *name_base = raddbg_string_from_idx(rdbg, procedure->name_string_idx, &name_size); + U8 *name_base = raddbgi_string_from_idx(rdbg, procedure->name_string_idx, &name_size); String8 name = str8(name_base, name_size); - RADDBG_TypeNode *type_node = raddbg_element_from_idx(rdbg, type_nodes, procedure->type_idx); - TG_Key type_key = tg_key_ext(tg_kind_from_raddbg_type_kind(type_node->kind), procedure->type_idx); + RADDBGI_TypeNode *type_node = raddbgi_element_from_idx(rdbg, type_nodes, procedure->type_idx); + TG_Key type_key = tg_key_ext(tg_kind_from_raddbgi_type_kind(type_node->kind), procedure->type_idx); ui_set_next_hover_cursor(OS_Cursor_HandPoint); UI_Box *box = ui_build_box_from_stringf(UI_BoxFlag_Clickable| UI_BoxFlag_DrawBackground| @@ -7902,7 +7902,7 @@ DF_VIEW_UI_FUNCTION_DEF(Memory) DBGI_Scope *scope = dbgi_scope_open(); U64 thread_rip_vaddr = df_query_cached_rip_from_thread_unwind(thread, ctrl_ctx.unwind_count); EVAL_ParseCtx parse_ctx = df_eval_parse_ctx_from_process_vaddr(scope, process, thread_rip_vaddr); - RADDBG_Parsed *rdbg = parse_ctx.rdbg; + RADDBGI_Parsed *rdbg = parse_ctx.rdbg; for(EVAL_String2NumMapNode *n = parse_ctx.locals_map->first; n != 0; n = n->order_next) { String8 local_name = n->string; @@ -7910,7 +7910,7 @@ DF_VIEW_UI_FUNCTION_DEF(Memory) if(local_eval.mode == EVAL_EvalMode_Addr) { TG_Kind local_eval_type_kind = tg_kind_from_key(local_eval.type_key); - U64 local_eval_type_size = tg_byte_size_from_graph_raddbg_key(parse_ctx.type_graph, rdbg, local_eval.type_key); + U64 local_eval_type_size = tg_byte_size_from_graph_raddbgi_key(parse_ctx.type_graph, rdbg, local_eval.type_key); Rng1U64 vaddr_rng = r1u64(local_eval.offset, local_eval.offset+local_eval_type_size); Rng1U64 vaddr_rng_in_visible = intersect_1u64(viz_range_bytes, vaddr_rng); if(vaddr_rng_in_visible.max != vaddr_rng_in_visible.min) diff --git a/src/eval/eval_compiler.c b/src/eval/eval_compiler.c index e303f29d..b1fd0409 100644 --- a/src/eval/eval_compiler.c +++ b/src/eval/eval_compiler.c @@ -23,8 +23,8 @@ eval_bytecode_from_oplist(Arena *arena, EVAL_OpList *list){ default: { // compute bytecode advance - U8 ctrlbits = raddbg_eval_opcode_ctrlbits[opcode]; - U64 extra_byte_count = RADDBG_DECODEN_FROM_CTRLBITS(ctrlbits); + U8 ctrlbits = raddbgi_eval_opcode_ctrlbits[opcode]; + U64 extra_byte_count = RADDBGI_DECODEN_FROM_CTRLBITS(ctrlbits); U8 *next_ptr = ptr + 1 + extra_byte_count; Assert(next_ptr <= opl); @@ -62,9 +62,9 @@ eval_bytecode_from_oplist(Arena *arena, EVAL_OpList *list){ } internal void -eval_oplist_push_op(Arena *arena, EVAL_OpList *list, RADDBG_EvalOp opcode, U64 p){ - U8 ctrlbits = raddbg_eval_opcode_ctrlbits[opcode]; - U32 p_size = RADDBG_DECODEN_FROM_CTRLBITS(ctrlbits); +eval_oplist_push_op(Arena *arena, EVAL_OpList *list, RADDBGI_EvalOp opcode, U64 p){ + U8 ctrlbits = raddbgi_eval_opcode_ctrlbits[opcode]; + U32 p_size = RADDBGI_DECODEN_FROM_CTRLBITS(ctrlbits); EVAL_Op *node = push_array_no_zero(arena, EVAL_Op, 1); node->opcode = opcode; @@ -78,35 +78,35 @@ eval_oplist_push_op(Arena *arena, EVAL_OpList *list, RADDBG_EvalOp opcode, U64 p internal void eval_oplist_push_uconst(Arena *arena, EVAL_OpList *list, U64 x){ if (x <= 0xFF){ - eval_oplist_push_op(arena, list, RADDBG_EvalOp_ConstU8, x); + eval_oplist_push_op(arena, list, RADDBGI_EvalOp_ConstU8, x); } else if (x <= 0xFFFF){ - eval_oplist_push_op(arena, list, RADDBG_EvalOp_ConstU16, x); + eval_oplist_push_op(arena, list, RADDBGI_EvalOp_ConstU16, x); } else if (x <= 0xFFFFFFFF){ - eval_oplist_push_op(arena, list, RADDBG_EvalOp_ConstU32, x); + eval_oplist_push_op(arena, list, RADDBGI_EvalOp_ConstU32, x); } else{ - eval_oplist_push_op(arena, list, RADDBG_EvalOp_ConstU64, x); + eval_oplist_push_op(arena, list, RADDBGI_EvalOp_ConstU64, x); } } internal void eval_oplist_push_sconst(Arena *arena, EVAL_OpList *list, S64 x){ if (-0x80 <= x && x <= 0x7F){ - eval_oplist_push_op(arena, list, RADDBG_EvalOp_ConstU8, (U64)x); - eval_oplist_push_op(arena, list, RADDBG_EvalOp_TruncSigned, 8); + eval_oplist_push_op(arena, list, RADDBGI_EvalOp_ConstU8, (U64)x); + eval_oplist_push_op(arena, list, RADDBGI_EvalOp_TruncSigned, 8); } else if (-0x8000 <= x && x <= 0x7FFF){ - eval_oplist_push_op(arena, list, RADDBG_EvalOp_ConstU16, (U64)x); - eval_oplist_push_op(arena, list, RADDBG_EvalOp_TruncSigned, 16); + eval_oplist_push_op(arena, list, RADDBGI_EvalOp_ConstU16, (U64)x); + eval_oplist_push_op(arena, list, RADDBGI_EvalOp_TruncSigned, 16); } else if (-0x80000000ll <= x && x <= 0x7FFFFFFFll){ - eval_oplist_push_op(arena, list, RADDBG_EvalOp_ConstU32, (U64)x); - eval_oplist_push_op(arena, list, RADDBG_EvalOp_TruncSigned, 32); + eval_oplist_push_op(arena, list, RADDBGI_EvalOp_ConstU32, (U64)x); + eval_oplist_push_op(arena, list, RADDBGI_EvalOp_TruncSigned, 32); } else{ - eval_oplist_push_op(arena, list, RADDBG_EvalOp_ConstU64, (U64)x); + eval_oplist_push_op(arena, list, RADDBGI_EvalOp_ConstU64, (U64)x); } } @@ -138,31 +138,31 @@ eval_oplist_concat_in_place(EVAL_OpList *left_dst, EVAL_OpList *right_destroyed) //////////////////////////////// //~ allen: EVAL Expression Info Functions -internal RADDBG_EvalOp +internal RADDBGI_EvalOp eval_opcode_from_expr_kind(EVAL_ExprKind kind){ - RADDBG_EvalOp result = RADDBG_EvalOp_Stop; + RADDBGI_EvalOp result = RADDBGI_EvalOp_Stop; switch (kind){ - case EVAL_ExprKind_Neg: result = RADDBG_EvalOp_Neg; break; - case EVAL_ExprKind_LogNot: result = RADDBG_EvalOp_LogNot; break; - case EVAL_ExprKind_BitNot: result = RADDBG_EvalOp_BitNot; break; - case EVAL_ExprKind_Mul: result = RADDBG_EvalOp_Mul; break; - case EVAL_ExprKind_Div: result = RADDBG_EvalOp_Div; break; - case EVAL_ExprKind_Mod: result = RADDBG_EvalOp_Mod; break; - case EVAL_ExprKind_Add: result = RADDBG_EvalOp_Add; break; - case EVAL_ExprKind_Sub: result = RADDBG_EvalOp_Sub; break; - case EVAL_ExprKind_LShift: result = RADDBG_EvalOp_LShift; break; - case EVAL_ExprKind_RShift: result = RADDBG_EvalOp_RShift; break; - case EVAL_ExprKind_Less: result = RADDBG_EvalOp_Less; break; - case EVAL_ExprKind_LsEq: result = RADDBG_EvalOp_LsEq; break; - case EVAL_ExprKind_Grtr: result = RADDBG_EvalOp_Grtr; break; - case EVAL_ExprKind_GrEq: result = RADDBG_EvalOp_GrEq; break; - case EVAL_ExprKind_EqEq: result = RADDBG_EvalOp_EqEq; break; - case EVAL_ExprKind_NtEq: result = RADDBG_EvalOp_NtEq; break; - case EVAL_ExprKind_BitAnd: result = RADDBG_EvalOp_BitAnd; break; - case EVAL_ExprKind_BitXor: result = RADDBG_EvalOp_BitXor; break; - case EVAL_ExprKind_BitOr: result = RADDBG_EvalOp_BitOr; break; - case EVAL_ExprKind_LogAnd: result = RADDBG_EvalOp_LogAnd; break; - case EVAL_ExprKind_LogOr: result = RADDBG_EvalOp_LogOr; break; + case EVAL_ExprKind_Neg: result = RADDBGI_EvalOp_Neg; break; + case EVAL_ExprKind_LogNot: result = RADDBGI_EvalOp_LogNot; break; + case EVAL_ExprKind_BitNot: result = RADDBGI_EvalOp_BitNot; break; + case EVAL_ExprKind_Mul: result = RADDBGI_EvalOp_Mul; break; + case EVAL_ExprKind_Div: result = RADDBGI_EvalOp_Div; break; + case EVAL_ExprKind_Mod: result = RADDBGI_EvalOp_Mod; break; + case EVAL_ExprKind_Add: result = RADDBGI_EvalOp_Add; break; + case EVAL_ExprKind_Sub: result = RADDBGI_EvalOp_Sub; break; + case EVAL_ExprKind_LShift: result = RADDBGI_EvalOp_LShift; break; + case EVAL_ExprKind_RShift: result = RADDBGI_EvalOp_RShift; break; + case EVAL_ExprKind_Less: result = RADDBGI_EvalOp_Less; break; + case EVAL_ExprKind_LsEq: result = RADDBGI_EvalOp_LsEq; break; + case EVAL_ExprKind_Grtr: result = RADDBGI_EvalOp_Grtr; break; + case EVAL_ExprKind_GrEq: result = RADDBGI_EvalOp_GrEq; break; + case EVAL_ExprKind_EqEq: result = RADDBGI_EvalOp_EqEq; break; + case EVAL_ExprKind_NtEq: result = RADDBGI_EvalOp_NtEq; break; + case EVAL_ExprKind_BitAnd: result = RADDBGI_EvalOp_BitAnd; break; + case EVAL_ExprKind_BitXor: result = RADDBGI_EvalOp_BitXor; break; + case EVAL_ExprKind_BitOr: result = RADDBGI_EvalOp_BitOr; break; + case EVAL_ExprKind_LogAnd: result = RADDBGI_EvalOp_LogAnd; break; + case EVAL_ExprKind_LogOr: result = RADDBGI_EvalOp_LogOr; break; } return(result); } @@ -286,9 +286,9 @@ eval_expr_leaf_type(Arena *arena, void *location, TG_Key type_key){ //////////////////////////////// //~ allen: EVAL Type Information Transformers -internal RADDBG_EvalTypeGroup +internal RADDBGI_EvalTypeGroup eval_type_group_from_kind(TG_Kind kind){ - RADDBG_EvalTypeGroup result = 0; + RADDBGI_EvalTypeGroup result = 0; switch (kind){ default:{}break; @@ -303,7 +303,7 @@ eval_type_group_from_kind(TG_Kind kind){ case TG_Kind_IncompleteStruct: case TG_Kind_IncompleteClass: case TG_Kind_IncompleteUnion: case TG_Kind_IncompleteEnum: case TG_Kind_Bitfield: case TG_Kind_Variadic: - result = RADDBG_EvalTypeGroup_Other; break; + result = RADDBGI_EvalTypeGroup_Other; break; case TG_Kind_Handle: case TG_Kind_UChar8: case TG_Kind_UChar16: case TG_Kind_UChar32: @@ -312,26 +312,26 @@ eval_type_group_from_kind(TG_Kind kind){ case TG_Kind_U512: case TG_Kind_Ptr: case TG_Kind_LRef: case TG_Kind_RRef: case TG_Kind_Function: case TG_Kind_Method: case TG_Kind_MemberPtr: - result = RADDBG_EvalTypeGroup_U; break; + result = RADDBGI_EvalTypeGroup_U; break; case TG_Kind_Char8: case TG_Kind_Char16: case TG_Kind_Char32: case TG_Kind_S8: case TG_Kind_S16: case TG_Kind_S32: case TG_Kind_S64: case TG_Kind_S128: case TG_Kind_S256: case TG_Kind_S512: case TG_Kind_Bool: - result = RADDBG_EvalTypeGroup_S; break; + result = RADDBGI_EvalTypeGroup_S; break; case TG_Kind_F32: - result = RADDBG_EvalTypeGroup_F32; break; + result = RADDBGI_EvalTypeGroup_F32; break; case TG_Kind_F64: - result = RADDBG_EvalTypeGroup_F64; break; + result = RADDBGI_EvalTypeGroup_F64; break; } return(result); } internal TG_Key -eval_type_unwrap_enum(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key) +eval_type_unwrap_enum(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key) { TG_Key result = key; for(B32 good = 1; good;) @@ -339,7 +339,7 @@ eval_type_unwrap_enum(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key) TG_Kind kind = tg_kind_from_key(key); if(kind == TG_Kind_Enum) { - result = tg_direct_from_graph_raddbg_key(graph, rdbg, result); + result = tg_direct_from_graph_raddbgi_key(graph, rdbg, result); } else { @@ -350,7 +350,7 @@ eval_type_unwrap_enum(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key) } internal TG_Key -eval_type_promote(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key){ +eval_type_promote(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key){ TG_Key result = key; TG_Kind kind = tg_kind_from_key(key); if(kind == TG_Kind_Bool || @@ -365,7 +365,7 @@ eval_type_promote(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key){ } internal TG_Key -eval_type_coerce(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key l, TG_Key r){ +eval_type_coerce(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key l, TG_Key r){ Assert(eval_kind_is_basic_or_enum(tg_kind_from_key(l)) && eval_kind_is_basic_or_enum(tg_kind_from_key(r))); @@ -384,12 +384,12 @@ eval_type_coerce(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key l, TG_Key r){ } internal B32 -eval_type_match(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key l, TG_Key r){ +eval_type_match(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key l, TG_Key r){ B32 result = 0; // unwrap - TG_Key lu = tg_unwrapped_from_graph_raddbg_key(graph, rdbg, l); - TG_Key ru = tg_unwrapped_from_graph_raddbg_key(graph, rdbg, r); + TG_Key lu = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, l); + TG_Key ru = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, r); if (tg_key_match(lu, ru)){ result = 1; @@ -408,8 +408,8 @@ eval_type_match(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key l, TG_Key r){ case TG_Kind_LRef: case TG_Kind_RRef: { - TG_Key lud = tg_direct_from_graph_raddbg_key(graph, rdbg, lu); - TG_Key rud = tg_direct_from_graph_raddbg_key(graph, rdbg, ru); + TG_Key lud = tg_direct_from_graph_raddbgi_key(graph, rdbg, lu); + TG_Key rud = tg_direct_from_graph_raddbgi_key(graph, rdbg, ru); if (eval_type_match(graph, rdbg, lud, rud)){ result = 1; } @@ -417,10 +417,10 @@ eval_type_match(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key l, TG_Key r){ case TG_Kind_MemberPtr: { - TG_Key lud = tg_direct_from_graph_raddbg_key(graph, rdbg, lu); - TG_Key rud = tg_direct_from_graph_raddbg_key(graph, rdbg, ru); - TG_Key luo = tg_owner_from_graph_raddbg_key(graph, rdbg, lu); - TG_Key ruo = tg_owner_from_graph_raddbg_key(graph, rdbg, ru); + TG_Key lud = tg_direct_from_graph_raddbgi_key(graph, rdbg, lu); + TG_Key rud = tg_direct_from_graph_raddbgi_key(graph, rdbg, ru); + TG_Key luo = tg_owner_from_graph_raddbgi_key(graph, rdbg, lu); + TG_Key ruo = tg_owner_from_graph_raddbgi_key(graph, rdbg, ru); if (eval_type_match(graph, rdbg, lud, rud) && eval_type_match(graph, rdbg, luo, ruo)){ result = 1; @@ -430,8 +430,8 @@ eval_type_match(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key l, TG_Key r){ case TG_Kind_Array: { Temp scratch = scratch_begin(0, 0); - TG_Type *lt = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, l); - TG_Type *rt = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, r); + TG_Type *lt = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, l); + TG_Type *rt = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, r); if(lt->count == rt->count && eval_type_match(graph, rdbg, lt->direct_type_key, rt->direct_type_key)) { result = 1; @@ -442,8 +442,8 @@ eval_type_match(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key l, TG_Key r){ case TG_Kind_Function: { Temp scratch = scratch_begin(0, 0); - TG_Type *lt = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, l); - TG_Type *rt = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, r); + TG_Type *lt = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, l); + TG_Type *rt = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, r); if (lt->count == rt->count && eval_type_match(graph, rdbg, lt->direct_type_key, rt->direct_type_key)) { B32 params_match = 1; @@ -466,8 +466,8 @@ eval_type_match(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key l, TG_Key r){ case TG_Kind_Method: { Temp scratch = scratch_begin(0, 0); - TG_Type *lt = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, l); - TG_Type *rt = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, r); + TG_Type *lt = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, l); + TG_Type *rt = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, r); if (lt->count == rt->count && eval_type_match(graph, rdbg, lt->direct_type_key, rt->direct_type_key) && eval_type_match(graph, rdbg, lt->owner_type_key, rt->owner_type_key)) @@ -522,15 +522,15 @@ eval_kind_is_basic_or_enum(TG_Kind kind){ internal EVAL_IRTree* eval_irtree_const_u(Arena *arena, U64 v){ // choose encoding op - RADDBG_EvalOp op = RADDBG_EvalOp_ConstU64; + RADDBGI_EvalOp op = RADDBGI_EvalOp_ConstU64; if (v < 0x100){ - op = RADDBG_EvalOp_ConstU8; + op = RADDBGI_EvalOp_ConstU8; } else if (v < 0x10000){ - op = RADDBG_EvalOp_ConstU16; + op = RADDBGI_EvalOp_ConstU16; } else if (v < 0x100000000){ - op = RADDBG_EvalOp_ConstU32; + op = RADDBGI_EvalOp_ConstU32; } // make the tree node @@ -541,8 +541,8 @@ eval_irtree_const_u(Arena *arena, U64 v){ } internal EVAL_IRTree* -eval_irtree_unary_op(Arena *arena, RADDBG_EvalOp op, - RADDBG_EvalTypeGroup group, EVAL_IRTree *c){ +eval_irtree_unary_op(Arena *arena, RADDBGI_EvalOp op, + RADDBGI_EvalTypeGroup group, EVAL_IRTree *c){ EVAL_IRTree *result = push_array(arena, EVAL_IRTree, 1); result->op = op; result->p = group; @@ -551,7 +551,7 @@ eval_irtree_unary_op(Arena *arena, RADDBG_EvalOp op, } internal EVAL_IRTree* -eval_irtree_binary_op(Arena *arena, RADDBG_EvalOp op, RADDBG_EvalTypeGroup group, +eval_irtree_binary_op(Arena *arena, RADDBGI_EvalOp op, RADDBGI_EvalTypeGroup group, EVAL_IRTree *l, EVAL_IRTree *r){ EVAL_IRTree *result = push_array(arena, EVAL_IRTree, 1); result->op = op; @@ -562,15 +562,15 @@ eval_irtree_binary_op(Arena *arena, RADDBG_EvalOp op, RADDBG_EvalTypeGroup group } internal EVAL_IRTree* -eval_irtree_binary_op_u(Arena *arena, RADDBG_EvalOp op, EVAL_IRTree *l, EVAL_IRTree *r){ - EVAL_IRTree *result = eval_irtree_binary_op(arena, op, RADDBG_EvalTypeGroup_U, l, r); +eval_irtree_binary_op_u(Arena *arena, RADDBGI_EvalOp op, EVAL_IRTree *l, EVAL_IRTree *r){ + EVAL_IRTree *result = eval_irtree_binary_op(arena, op, RADDBGI_EvalTypeGroup_U, l, r); return(result); } internal EVAL_IRTree* eval_irtree_conditional(Arena *arena, EVAL_IRTree *c, EVAL_IRTree *l, EVAL_IRTree *r){ EVAL_IRTree *result = push_array(arena, EVAL_IRTree, 1); - result->op = RADDBG_EvalOp_Cond; + result->op = RADDBGI_EvalOp_Cond; result->children[0] = c; result->children[1] = l; result->children[2] = r; @@ -589,13 +589,13 @@ eval_irtree_bytecode_no_copy(Arena *arena, String8 bytecode){ //~ allen: EVAL IR-Tree High Level Helpers internal EVAL_IRTree* -eval_irtree_mem_read_type(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, EVAL_IRTree *c, TG_Key type_key){ - U64 byte_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, type_key); +eval_irtree_mem_read_type(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, EVAL_IRTree *c, TG_Key type_key){ + U64 byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, type_key); EVAL_IRTree *result = &eval_irtree_nil; if (0 < byte_size && byte_size <= 8){ // build the read node EVAL_IRTree *read_node = push_array(arena, EVAL_IRTree, 1); - read_node->op = RADDBG_EvalOp_MemRead; + read_node->op = RADDBGI_EvalOp_MemRead; read_node->p = byte_size; read_node->children[0] = c; @@ -605,7 +605,7 @@ eval_irtree_mem_read_type(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, EV TG_Kind kind = tg_kind_from_key(type_key); if (bit_size < 64 && eval_kind_is_signed(kind)){ with_trunc = push_array(arena, EVAL_IRTree, 1); - with_trunc->op = RADDBG_EvalOp_TruncSigned; + with_trunc->op = RADDBGI_EvalOp_TruncSigned; with_trunc->p = bit_size; with_trunc->children[0] = read_node; } @@ -620,23 +620,23 @@ eval_irtree_mem_read_type(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, EV } internal EVAL_IRTree* -eval_irtree_convert_lo(Arena *arena, EVAL_IRTree *c, RADDBG_EvalTypeGroup out, RADDBG_EvalTypeGroup in){ +eval_irtree_convert_lo(Arena *arena, EVAL_IRTree *c, RADDBGI_EvalTypeGroup out, RADDBGI_EvalTypeGroup in){ EVAL_IRTree *result = push_array(arena, EVAL_IRTree, 1); - result->op = RADDBG_EvalOp_Convert; + result->op = RADDBGI_EvalOp_Convert; result->p = in | (out << 8); result->children[0] = c; return(result); } internal EVAL_IRTree* -eval_irtree_trunc(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, EVAL_IRTree *c, TG_Key type_key){ +eval_irtree_trunc(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, EVAL_IRTree *c, TG_Key type_key){ EVAL_IRTree *result = c; - U64 byte_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, type_key); + U64 byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, type_key); if (byte_size < 64){ - RADDBG_EvalOp op = RADDBG_EvalOp_Trunc; + RADDBGI_EvalOp op = RADDBGI_EvalOp_Trunc; TG_Kind kind = tg_kind_from_key(type_key); if (eval_kind_is_signed(kind)){ - op = RADDBG_EvalOp_TruncSigned; + op = RADDBGI_EvalOp_TruncSigned; } U64 bit_size = byte_size << 3; result = push_array(arena, EVAL_IRTree, 1); @@ -648,19 +648,19 @@ eval_irtree_trunc(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, EVAL_IRTre } internal EVAL_IRTree* -eval_irtree_convert_hi(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, EVAL_IRTree *c, TG_Key out, TG_Key in){ +eval_irtree_convert_hi(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, EVAL_IRTree *c, TG_Key out, TG_Key in){ EVAL_IRTree *result = c; TG_Kind in_kind = tg_kind_from_key(in); TG_Kind out_kind = tg_kind_from_key(out); U8 in_group = eval_type_group_from_kind(in_kind); U8 out_group = eval_type_group_from_kind(out_kind); - U32 conversion_rule = raddbg_eval_conversion_rule(in_group, out_group); - if(conversion_rule == RADDBG_EvalConversionKind_Legal) + U32 conversion_rule = raddbgi_eval_conversion_rule(in_group, out_group); + if(conversion_rule == RADDBGI_EvalConversionKind_Legal) { result = eval_irtree_convert_lo(arena, result, out_group, in_group); } - U64 in_byte_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, in); - U64 out_byte_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, out); + U64 in_byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, in); + U64 out_byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, out); if(out_byte_size < in_byte_size && eval_kind_is_integer(out_kind)) { result = eval_irtree_trunc(arena, graph, rdbg, result, out); @@ -669,7 +669,7 @@ eval_irtree_convert_hi(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, EVAL_ } internal EVAL_IRTree* -eval_irtree_resolve_to_value(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, EVAL_EvalMode from_mode, +eval_irtree_resolve_to_value(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, EVAL_EvalMode from_mode, EVAL_IRTree *tree, TG_Key type_key){ EVAL_IRTree *result = tree; switch (from_mode){ @@ -680,7 +680,7 @@ eval_irtree_resolve_to_value(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, }break; case EVAL_EvalMode_Reg: { - result = eval_irtree_unary_op(arena, RADDBG_EvalOp_RegReadDyn, RADDBG_EvalTypeGroup_U, tree); + result = eval_irtree_unary_op(arena, RADDBGI_EvalOp_RegReadDyn, RADDBGI_EvalTypeGroup_U, tree); }break; } return(result); @@ -715,7 +715,7 @@ eval_push_leaf_ident_exprs_from_expr__in_place(Arena *arena, EVAL_String2ExprMap } internal TG_Key -eval_type_from_type_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, EVAL_Expr *expr, EVAL_ErrorList *eout){ +eval_type_from_type_expr(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, EVAL_Expr *expr, EVAL_ErrorList *eout){ TG_Key result = zero_struct; EVAL_ExprKind kind = expr->kind; @@ -758,7 +758,7 @@ eval_type_from_type_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, EVA } internal EVAL_IRTreeAndType -eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, EVAL_String2ExprMap *leaf_ident_expr_map, EVAL_Expr *expr, EVAL_ErrorList *eout) +eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, EVAL_String2ExprMap *leaf_ident_expr_map, EVAL_Expr *expr, EVAL_ErrorList *eout) { ProfBeginFunction(); EVAL_IRTreeAndType result = {0}; @@ -781,8 +781,8 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb EVAL_IRTreeAndType r = eval_irtree_and_type_from_expr(arena, graph, rdbg, leaf_ident_expr_map, exprr, eout); if (l.tree->op != 0 && r.tree->op != 0){ - TG_Key l_restype = tg_unwrapped_from_graph_raddbg_key(graph, rdbg, l.type_key); - TG_Key r_restype = tg_unwrapped_from_graph_raddbg_key(graph, rdbg, r.type_key); + TG_Key l_restype = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, l.type_key); + TG_Key r_restype = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, r.type_key); TG_Kind l_restype_kind = tg_kind_from_key(l_restype); TG_Kind r_restype_kind = tg_kind_from_key(r_restype); @@ -795,8 +795,8 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb eval_errorf(arena, eout, EVAL_ErrorKind_MalformedInput, exprr->location, "Cannot index with this type."); } else{ - direct_type = tg_unwrapped_direct_from_graph_raddbg_key(graph, rdbg, l_restype); - direct_type_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, direct_type); + direct_type = tg_unwrapped_direct_from_graph_raddbgi_key(graph, rdbg, l_restype); + direct_type_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, direct_type); if (l_restype_kind == TG_Kind_Ptr){ if (direct_type_size == 0){ eval_errorf(arena, eout, EVAL_ErrorKind_MalformedInput, exprr->location, "Cannot index into pointers of zero-sized types."); @@ -832,7 +832,7 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb EVAL_IRTree *index_tree = eval_irtree_resolve_to_value(arena, graph, rdbg, r.mode, r.tree, r_restype); if (direct_type_size > 1){ EVAL_IRTree *const_tree = eval_irtree_const_u(arena, direct_type_size); - index_tree = eval_irtree_binary_op_u(arena, RADDBG_EvalOp_Mul, index_tree, const_tree); + index_tree = eval_irtree_binary_op_u(arena, RADDBGI_EvalOp_Mul, index_tree, const_tree); } // how to compute the base address @@ -842,7 +842,7 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb } // how to compute the final address - EVAL_IRTree *new_tree = eval_irtree_binary_op_u(arena, RADDBG_EvalOp_Add, index_tree, base_tree); + EVAL_IRTree *new_tree = eval_irtree_binary_op_u(arena, RADDBGI_EvalOp_Add, index_tree, base_tree); // fill result result.tree = new_tree; @@ -860,14 +860,14 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb EVAL_IRTreeAndType l = eval_irtree_and_type_from_expr(arena, graph, rdbg, leaf_ident_expr_map, exprl, eout); if (l.tree->op != 0 && !tg_key_match(tg_key_zero(), l.type_key)){ - TG_Key l_restype = tg_unwrapped_from_graph_raddbg_key(graph, rdbg, l.type_key); + TG_Key l_restype = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, l.type_key); TG_Kind l_restype_kind = tg_kind_from_key(l_restype); // determine which type to use TG_Key check_type_key = l_restype; TG_Kind check_type_kind = l_restype_kind; if (l_restype_kind == TG_Kind_Ptr || l_restype_kind == TG_Kind_LRef || l_restype_kind == TG_Kind_RRef){ - check_type_key = tg_unwrapped_direct_from_graph_raddbg_key(graph, rdbg, l_restype); + check_type_key = tg_unwrapped_direct_from_graph_raddbgi_key(graph, rdbg, l_restype); check_type_kind = tg_kind_from_key(check_type_key); } @@ -921,7 +921,7 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb if (l_good && r_good){ Temp scratch = scratch_begin(&arena, 1); - TG_MemberArray check_type_members = tg_data_members_from_graph_raddbg_key(scratch.arena, graph, rdbg, check_type_key); + TG_MemberArray check_type_members = tg_data_members_from_graph_raddbgi_key(scratch.arena, graph, rdbg, check_type_key); // lookup member String8 member_name = exprr->name; @@ -957,7 +957,7 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb } if (r_off != 0){ EVAL_IRTree *const_tree = eval_irtree_const_u(arena, r_off); - new_tree = eval_irtree_binary_op_u(arena, RADDBG_EvalOp_Add, new_tree, const_tree); + new_tree = eval_irtree_binary_op_u(arena, RADDBGI_EvalOp_Add, new_tree, const_tree); } // fill result @@ -978,10 +978,10 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb EVAL_IRTreeAndType c = eval_irtree_and_type_from_expr(arena, graph, rdbg, leaf_ident_expr_map, exprc, eout); if (c.tree->op != 0){ - TG_Key c_restype = tg_unwrapped_from_graph_raddbg_key(graph, rdbg, c.type_key); + TG_Key c_restype = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, c.type_key); TG_Kind c_restype_kind = tg_kind_from_key(c_restype); - TG_Key c_restype_direct = tg_unwrapped_direct_from_graph_raddbg_key(graph, rdbg, c_restype); - U64 c_restype_direct_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, c_restype_direct); + TG_Key c_restype_direct = tg_unwrapped_direct_from_graph_raddbgi_key(graph, rdbg, c_restype); + U64 c_restype_direct_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, c_restype_direct); // analyze situation B32 can_generate = 0; @@ -1035,7 +1035,7 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb EVAL_IRTreeAndType c = eval_irtree_and_type_from_expr(arena, graph, rdbg, leaf_ident_expr_map, exprc, eout); if(c.tree->op != 0 && !tg_key_match(c.type_key, tg_key_zero())) { - TG_Key c_restype = tg_unwrapped_from_graph_raddbg_key(graph, rdbg, c.type_key); + TG_Key c_restype = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, c.type_key); TG_Kind c_restype_kind = tg_kind_from_key(c_restype); // analyze situation @@ -1070,26 +1070,26 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb if(cast_type_kind != TG_Kind_Null && c.tree->op != 0) { - TG_Key c_restype = tg_unwrapped_from_graph_raddbg_key(graph, rdbg, c.type_key); + TG_Key c_restype = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, c.type_key); TG_Kind c_restype_kind = tg_kind_from_key(c_restype); - U64 c_restype_byte_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, c_restype); - U64 cast_type_byte_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, cast_type_key); + U64 c_restype_byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, c_restype); + U64 cast_type_byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, cast_type_key); // analyze situation U8 in_group = eval_type_group_from_kind(c_restype_kind); U8 out_group = eval_type_group_from_kind(cast_type_kind); - RADDBG_EvalConversionKind conversion_rule = raddbg_eval_conversion_rule(in_group, out_group); + RADDBGI_EvalConversionKind conversion_rule = raddbgi_eval_conversion_rule(in_group, out_group); // generate tree switch(conversion_rule) { - case RADDBG_EvalConversionKind_Noop: - case RADDBG_EvalConversionKind_Legal: + case RADDBGI_EvalConversionKind_Noop: + case RADDBGI_EvalConversionKind_Legal: { EVAL_IRTree *in_tree = eval_irtree_resolve_to_value(arena, graph, rdbg, c.mode, c.tree, c_restype); EVAL_IRTree *new_tree = in_tree; - if (conversion_rule == RADDBG_EvalConversionKind_Legal){ + if (conversion_rule == RADDBGI_EvalConversionKind_Legal){ new_tree = eval_irtree_convert_lo(arena, in_tree, out_group, in_group); } if (cast_type_byte_size < c_restype_byte_size && eval_kind_is_integer(cast_type_kind)){ @@ -1104,8 +1104,8 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb default: { String8 text = str8_lit("(internal) unknown conversion rule"); - if (conversion_rule < RADDBG_EvalConversionKind_COUNT){ - text.str = raddbg_eval_conversion_message(conversion_rule, &text.size); + if (conversion_rule < RADDBGI_EvalConversionKind_COUNT){ + text.str = raddbgi_eval_conversion_message(conversion_rule, &text.size); } eval_error(arena, eout, EVAL_ErrorKind_MalformedInput, expr->location, text); }break; @@ -1141,7 +1141,7 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb TG_Kind type_kind = tg_kind_from_key(type_key); if (type_kind != TG_Kind_Null){ can_generate = 1; - size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, type_key); + size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, type_key); } // generate ir tree @@ -1162,15 +1162,15 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb EVAL_IRTreeAndType c = eval_irtree_and_type_from_expr(arena, graph, rdbg, leaf_ident_expr_map, exprc, eout); if (c.tree->op != 0){ - TG_Key c_restype = tg_unwrapped_from_graph_raddbg_key(graph, rdbg, c.type_key); + TG_Key c_restype = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, c.type_key); TG_Key p_type = eval_type_promote(graph, rdbg, c_restype); TG_Kind c_restype_kind = tg_kind_from_key(c_restype); // analyze situation B32 can_generate = 0; - RADDBG_EvalOp op = eval_opcode_from_expr_kind(kind); + RADDBGI_EvalOp op = eval_opcode_from_expr_kind(kind); U8 c_group = eval_type_group_from_kind(c_restype_kind); - if (!raddbg_eval_opcode_type_compatible(op, c_group)){ + if (!raddbgi_eval_opcode_type_compatible(op, c_group)){ eval_errorf(arena, eout, EVAL_ErrorKind_MalformedInput, expr->location, "Cannot use this operator on this type."); } else{ @@ -1218,8 +1218,8 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb EVAL_IRTreeAndType r = eval_irtree_and_type_from_expr(arena, graph, rdbg, leaf_ident_expr_map, exprr, eout); if (l.tree->op != 0 && r.tree->op != 0){ - TG_Key l_restype = tg_unwrapped_from_graph_raddbg_key(graph, rdbg, l.type_key); - TG_Key r_restype = tg_unwrapped_from_graph_raddbg_key(graph, rdbg, r.type_key); + TG_Key l_restype = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, l.type_key); + TG_Key r_restype = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, r.type_key); TG_Kind l_restype_kind = tg_kind_from_key(l_restype); TG_Kind r_restype_kind = tg_kind_from_key(r_restype); @@ -1235,7 +1235,7 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb r_restype_kind = tg_kind_from_key(r_restype); } - RADDBG_EvalOp op = eval_opcode_from_expr_kind(kind); + RADDBGI_EvalOp op = eval_opcode_from_expr_kind(kind); //- pointer decay B32 l_is_pointer = (l_restype_kind == TG_Kind_Ptr); @@ -1267,10 +1267,10 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb arith_path = EVAL_ArithPath_PtrAdd; } if (l_is_pointer_like && r_is_pointer_like){ - TG_Key l_restype_direct = tg_unwrapped_direct_from_graph_raddbg_key(graph, rdbg, l_restype); - TG_Key r_restype_direct = tg_unwrapped_direct_from_graph_raddbg_key(graph, rdbg, r_restype); - U64 l_restype_direct_byte_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, l_restype_direct); - U64 r_restype_direct_byte_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, r_restype_direct); + TG_Key l_restype_direct = tg_unwrapped_direct_from_graph_raddbgi_key(graph, rdbg, l_restype); + TG_Key r_restype_direct = tg_unwrapped_direct_from_graph_raddbgi_key(graph, rdbg, r_restype); + U64 l_restype_direct_byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, l_restype_direct); + U64 r_restype_direct_byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, r_restype_direct); if (l_restype_direct_byte_size == r_restype_direct_byte_size){ arith_path = EVAL_ArithPath_PtrSub; } @@ -1299,7 +1299,7 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb U8 cv_group = eval_type_group_from_kind(cv_type_kind); B32 can_generate = 0; - if (raddbg_eval_opcode_type_compatible(op, cv_group)){ + if (raddbgi_eval_opcode_type_compatible(op, cv_group)){ can_generate = 1; } else{ @@ -1339,8 +1339,8 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb ptr_is_decay = r_is_decay; } - TG_Key direct = tg_unwrapped_direct_from_graph_raddbg_key(graph, rdbg, ptr->type_key); - U64 direct_type_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, direct); + TG_Key direct = tg_unwrapped_direct_from_graph_raddbgi_key(graph, rdbg, ptr->type_key); + U64 direct_type_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, direct); // generate ir tree EVAL_IRTree *ptr_tree = ptr->tree; @@ -1351,7 +1351,7 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb EVAL_IRTree *integer_tree = eval_irtree_resolve_to_value(arena, graph, rdbg, integer->mode, integer->tree, integer->type_key); if (direct_type_size > 1){ EVAL_IRTree *const_tree = eval_irtree_const_u(arena, direct_type_size); - integer_tree = eval_irtree_binary_op_u(arena, RADDBG_EvalOp_Mul, integer_tree, const_tree); + integer_tree = eval_irtree_binary_op_u(arena, RADDBGI_EvalOp_Mul, integer_tree, const_tree); } TG_Key ptr_type = ptr->type_key; @@ -1359,7 +1359,7 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb ptr_type = tg_cons_type_make(graph, TG_Kind_Ptr, direct, 0); } - EVAL_IRTree *new_tree = eval_irtree_binary_op(arena, op, RADDBG_EvalTypeGroup_U, ptr_tree, integer_tree); + EVAL_IRTree *new_tree = eval_irtree_binary_op(arena, op, RADDBGI_EvalTypeGroup_U, ptr_tree, integer_tree); result.tree = new_tree; result.type_key = ptr_type; @@ -1368,8 +1368,8 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb case EVAL_ArithPath_PtrSub: { - TG_Key direct = tg_unwrapped_direct_from_graph_raddbg_key(graph, rdbg, l_restype); - U64 direct_type_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, direct); + TG_Key direct = tg_unwrapped_direct_from_graph_raddbgi_key(graph, rdbg, l_restype); + U64 direct_type_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, direct); // generate ir tree EVAL_IRTree *l_tree = l.tree; @@ -1382,12 +1382,12 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb r_tree = eval_irtree_resolve_to_value(arena, graph, rdbg, r.mode, r.tree, r_restype); } - EVAL_IRTree *op_tree = eval_irtree_binary_op(arena, op, RADDBG_EvalTypeGroup_U, l_tree, r_tree); + EVAL_IRTree *op_tree = eval_irtree_binary_op(arena, op, RADDBGI_EvalTypeGroup_U, l_tree, r_tree); EVAL_IRTree *new_tree = op_tree; if (direct_type_size > 1){ EVAL_IRTree *const_tree = eval_irtree_const_u(arena, direct_type_size); - new_tree = eval_irtree_binary_op(arena, RADDBG_EvalOp_Div, RADDBG_EvalTypeGroup_U, new_tree, const_tree); + new_tree = eval_irtree_binary_op(arena, RADDBGI_EvalOp_Div, RADDBGI_EvalTypeGroup_U, new_tree, const_tree); } result.tree = new_tree; @@ -1410,9 +1410,9 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdb if (l.tree->op != 0 && r.tree->op != 0 && c.tree->op != 0){ - TG_Key c_restype = tg_unwrapped_from_graph_raddbg_key(graph, rdbg, c.type_key); - TG_Key l_restype = tg_unwrapped_from_graph_raddbg_key(graph, rdbg, l.type_key); - TG_Key r_restype = tg_unwrapped_from_graph_raddbg_key(graph, rdbg, r.type_key); + TG_Key c_restype = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, c.type_key); + TG_Key l_restype = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, l.type_key); + TG_Key r_restype = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, r.type_key); TG_Kind c_restype_kind = tg_kind_from_key(c_restype); TG_Kind l_restype_kind = tg_kind_from_key(l_restype); TG_Kind r_restype_kind = tg_kind_from_key(r_restype); @@ -1568,8 +1568,8 @@ eval_oplist_from_irtree(Arena *arena, EVAL_IRTree *tree, EVAL_OpList *out){ ProfBeginFunction(); U32 op = tree->op; switch (op){ - case RADDBG_EvalOp_Stop: - case RADDBG_EvalOp_Skip: + case RADDBGI_EvalOp_Stop: + case RADDBGI_EvalOp_Skip: { // TODO: error - invalid ir-tree op }break; @@ -1579,7 +1579,7 @@ eval_oplist_from_irtree(Arena *arena, EVAL_IRTree *tree, EVAL_OpList *out){ eval_oplist_push_bytecode(arena, out, tree->bytecode); }break; - case RADDBG_EvalOp_Cond: + case RADDBGI_EvalOp_Cond: { // split out each of the children EVAL_OpList prt_cond = {0}; @@ -1598,11 +1598,11 @@ eval_oplist_from_irtree(Arena *arena, EVAL_IRTree *tree, EVAL_OpList *out){ // 4. // modify prt_right in place to create step 2 - eval_oplist_push_op(arena, &prt_right, RADDBG_EvalOp_Skip, prt_left.encoded_size); + eval_oplist_push_op(arena, &prt_right, RADDBGI_EvalOp_Skip, prt_left.encoded_size); // merge 1 into out eval_oplist_concat_in_place(out, &prt_cond); - eval_oplist_push_op(arena, out, RADDBG_EvalOp_Cond, prt_right.encoded_size); + eval_oplist_push_op(arena, out, RADDBGI_EvalOp_Cond, prt_right.encoded_size); // merge 2 into out eval_oplist_concat_in_place(out, &prt_right); @@ -1613,20 +1613,20 @@ eval_oplist_from_irtree(Arena *arena, EVAL_IRTree *tree, EVAL_OpList *out){ default: { - if (op >= RADDBG_EvalOp_COUNT){ + if (op >= RADDBGI_EvalOp_COUNT){ // TODO: error - invalid ir-tree op } else{ // handle all children - U8 ctrlbits = raddbg_eval_opcode_ctrlbits[op]; - U64 child_count = RADDBG_POPN_FROM_CTRLBITS(ctrlbits); + U8 ctrlbits = raddbgi_eval_opcode_ctrlbits[op]; + U64 child_count = RADDBGI_POPN_FROM_CTRLBITS(ctrlbits); EVAL_IRTree**child = tree->children; for (U64 i = 0; i < child_count; i += 1, child += 1){ eval_oplist_from_irtree(arena, *child, out); } // emit op to compute this node - eval_oplist_push_op(arena, out, (RADDBG_EvalOp)tree->op, tree->p); + eval_oplist_push_op(arena, out, (RADDBGI_EvalOp)tree->op, tree->p); } }break; } diff --git a/src/eval/eval_compiler.h b/src/eval/eval_compiler.h index ab2ec297..57066ce9 100644 --- a/src/eval/eval_compiler.h +++ b/src/eval/eval_compiler.h @@ -9,7 +9,7 @@ internal String8 eval_bytecode_from_oplist(Arena *arena, EVAL_OpList *list); -internal void eval_oplist_push_op(Arena *arena, EVAL_OpList *list, RADDBG_EvalOp op, U64 p); +internal void eval_oplist_push_op(Arena *arena, EVAL_OpList *list, RADDBGI_EvalOp op, U64 p); internal void eval_oplist_push_uconst(Arena *arena, EVAL_OpList *list, U64 x); internal void eval_oplist_push_sconst(Arena *arena, EVAL_OpList *list, S64 x); @@ -20,8 +20,8 @@ internal void eval_oplist_concat_in_place(EVAL_OpList *left_dst, EVAL_OpList *ri //////////////////////////////// //~ allen: EVAL Expression Info Functions -internal RADDBG_EvalOp eval_opcode_from_expr_kind(EVAL_ExprKind kind); -internal B32 eval_expr_kind_is_comparison(EVAL_ExprKind kind); +internal RADDBGI_EvalOp eval_opcode_from_expr_kind(EVAL_ExprKind kind); +internal B32 eval_expr_kind_is_comparison(EVAL_ExprKind kind); //////////////////////////////// //~ allen: EVAL Expression Constructors @@ -40,13 +40,13 @@ internal EVAL_Expr* eval_expr_leaf_type(Arena *arena, void *location, TG_Key typ //////////////////////////////// //~ allen: EVAL Type Information Transformers -internal RADDBG_EvalTypeGroup eval_type_group_from_kind(TG_Kind kind); +internal RADDBGI_EvalTypeGroup eval_type_group_from_kind(TG_Kind kind); -internal TG_Key eval_type_unwrap_enum(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key); -internal TG_Key eval_type_promote(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key); -internal TG_Key eval_type_coerce(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key l, TG_Key r); +internal TG_Key eval_type_unwrap_enum(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key); +internal TG_Key eval_type_promote(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key); +internal TG_Key eval_type_coerce(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key l, TG_Key r); -internal B32 eval_type_match(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key l, TG_Key r); +internal B32 eval_type_match(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key l, TG_Key r); internal B32 eval_kind_is_integer(TG_Kind kind); internal B32 eval_kind_is_signed(TG_Kind kind); @@ -56,27 +56,27 @@ internal B32 eval_kind_is_basic_or_enum(TG_Kind kind); //~ allen: EVAL IR-Tree Constructors internal EVAL_IRTree* eval_irtree_const_u(Arena *arena, U64 v); -internal EVAL_IRTree* eval_irtree_unary_op(Arena *arena, RADDBG_EvalOp op, RADDBG_EvalTypeGroup group, EVAL_IRTree *c); -internal EVAL_IRTree* eval_irtree_binary_op(Arena *arena, RADDBG_EvalOp op, RADDBG_EvalTypeGroup group, EVAL_IRTree *l, EVAL_IRTree *r); -internal EVAL_IRTree* eval_irtree_binary_op_u(Arena *arena, RADDBG_EvalOp op, EVAL_IRTree *l, EVAL_IRTree *r); +internal EVAL_IRTree* eval_irtree_unary_op(Arena *arena, RADDBGI_EvalOp op, RADDBGI_EvalTypeGroup group, EVAL_IRTree *c); +internal EVAL_IRTree* eval_irtree_binary_op(Arena *arena, RADDBGI_EvalOp op, RADDBGI_EvalTypeGroup group, EVAL_IRTree *l, EVAL_IRTree *r); +internal EVAL_IRTree* eval_irtree_binary_op_u(Arena *arena, RADDBGI_EvalOp op, EVAL_IRTree *l, EVAL_IRTree *r); internal EVAL_IRTree* eval_irtree_conditional(Arena *arena, EVAL_IRTree *c, EVAL_IRTree *l, EVAL_IRTree *r); internal EVAL_IRTree* eval_irtree_bytecode_no_copy(Arena *arena, String8 bytecode); //////////////////////////////// //~ allen: EVAL IR-Tree High Level Helpers -internal EVAL_IRTree* eval_irtree_mem_read_type(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, EVAL_IRTree *c, TG_Key type_key); -internal EVAL_IRTree* eval_irtree_convert_lo(Arena *arena, EVAL_IRTree *c, RADDBG_EvalTypeGroup out, RADDBG_EvalTypeGroup in); -internal EVAL_IRTree* eval_irtree_trunc(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, EVAL_IRTree *c, TG_Key type_key); -internal EVAL_IRTree* eval_irtree_convert_hi(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, EVAL_IRTree *c, TG_Key out, TG_Key in); -internal EVAL_IRTree* eval_irtree_resolve_to_value(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, EVAL_EvalMode from_mode, EVAL_IRTree *tree, TG_Key type_key); +internal EVAL_IRTree* eval_irtree_mem_read_type(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, EVAL_IRTree *c, TG_Key type_key); +internal EVAL_IRTree* eval_irtree_convert_lo(Arena *arena, EVAL_IRTree *c, RADDBGI_EvalTypeGroup out, RADDBGI_EvalTypeGroup in); +internal EVAL_IRTree* eval_irtree_trunc(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, EVAL_IRTree *c, TG_Key type_key); +internal EVAL_IRTree* eval_irtree_convert_hi(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, EVAL_IRTree *c, TG_Key out, TG_Key in); +internal EVAL_IRTree* eval_irtree_resolve_to_value(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, EVAL_EvalMode from_mode, EVAL_IRTree *tree, TG_Key type_key); //////////////////////////////// //~ allen: EVAL Compiler Phases internal void eval_push_leaf_ident_exprs_from_expr__in_place(Arena *arena, EVAL_String2ExprMap *map, EVAL_Expr *expr, EVAL_ErrorList *eout); -internal TG_Key eval_type_from_type_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, EVAL_Expr *expr, EVAL_ErrorList *eout); -internal EVAL_IRTreeAndType eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, EVAL_String2ExprMap *leaf_ident_expr_map, EVAL_Expr *expr, EVAL_ErrorList *eout); +internal TG_Key eval_type_from_type_expr(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, EVAL_Expr *expr, EVAL_ErrorList *eout); +internal EVAL_IRTreeAndType eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, EVAL_String2ExprMap *leaf_ident_expr_map, EVAL_Expr *expr, EVAL_ErrorList *eout); internal void eval_oplist_from_irtree(Arena *arena, EVAL_IRTree *tree, EVAL_OpList *out); #endif //EVAL_COMPILER_H diff --git a/src/eval/eval_core.h b/src/eval/eval_core.h index b2031631..26d54c4a 100644 --- a/src/eval/eval_core.h +++ b/src/eval/eval_core.h @@ -41,7 +41,7 @@ struct EVAL_ErrorList enum { - EVAL_IRExtKind_Bytecode = RADDBG_EvalOp_COUNT, + EVAL_IRExtKind_Bytecode = RADDBGI_EvalOp_COUNT, EVAL_IRExtKind_COUNT }; @@ -49,7 +49,7 @@ typedef struct EVAL_Op EVAL_Op; struct EVAL_Op { EVAL_Op *next; - RADDBG_EvalOp opcode; + RADDBGI_EvalOp opcode; union { U64 p; @@ -115,7 +115,7 @@ struct EVAL_Expr typedef struct EVAL_IRTree EVAL_IRTree; struct EVAL_IRTree{ - RADDBG_EvalOp op; + RADDBGI_EvalOp op; EVAL_IRTree *children[3]; union{ U64 p; diff --git a/src/eval/eval_machine.c b/src/eval/eval_machine.c index 9e1dae77..1649b54d 100644 --- a/src/eval/eval_machine.c +++ b/src/eval/eval_machine.c @@ -22,18 +22,18 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) for (;ptr < opl;){ // consume opcode - RADDBG_EvalOp op = (RADDBG_EvalOp)*ptr; - if (op >= RADDBG_EvalOp_COUNT){ + RADDBGI_EvalOp op = (RADDBGI_EvalOp)*ptr; + if (op >= RADDBGI_EvalOp_COUNT){ result.code = EVAL_ResultCode_BadOp; goto done; } - U8 ctrlbits = raddbg_eval_opcode_ctrlbits[op]; + U8 ctrlbits = raddbgi_eval_opcode_ctrlbits[op]; ptr += 1; // decode U64 imm = 0; { - U32 decode_size = RADDBG_DECODEN_FROM_CTRLBITS(ctrlbits); + U32 decode_size = RADDBGI_DECODEN_FROM_CTRLBITS(ctrlbits); U8 *next_ptr = ptr + decode_size; if (next_ptr > opl){ result.code = EVAL_ResultCode_BadOp; @@ -54,7 +54,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) // pop EVAL_Slot *svals = 0; { - U32 pop_count = RADDBG_POPN_FROM_CTRLBITS(ctrlbits); + U32 pop_count = RADDBGI_POPN_FROM_CTRLBITS(ctrlbits); if (pop_count > stack_count){ result.code = EVAL_ResultCode_BadOp; goto done; @@ -68,29 +68,29 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) // interpret EVAL_Slot nval = {0}; switch (op){ - case RADDBG_EvalOp_Stop: + case RADDBGI_EvalOp_Stop: { goto done; }break; - case RADDBG_EvalOp_Noop: + case RADDBGI_EvalOp_Noop: { // do nothing }break; - case RADDBG_EvalOp_Cond: + case RADDBGI_EvalOp_Cond: { if (svals[0].u64){ ptr += imm; } }break; - case RADDBG_EvalOp_Skip: + case RADDBGI_EvalOp_Skip: { ptr += imm; }break; - case RADDBG_EvalOp_MemRead: + case RADDBGI_EvalOp_MemRead: { U64 addr = svals[0].u64; U64 size = imm; @@ -105,12 +105,12 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_RegRead: + case RADDBGI_EvalOp_RegRead: { - U8 raddbg_reg_code = (imm&0x0000FF)>>0; - U8 byte_size = (imm&0x00FF00)>>8; - U8 byte_off = (imm&0xFF0000)>>16; - REGS_RegCode base_reg_code = regs_reg_code_from_arch_raddbg_code(machine->arch, raddbg_reg_code); + U8 raddbgi_reg_code = (imm&0x0000FF)>>0; + U8 byte_size = (imm&0x00FF00)>>8; + U8 byte_off = (imm&0xFF0000)>>16; + REGS_RegCode base_reg_code = regs_reg_code_from_arch_raddbgi_code(machine->arch, raddbgi_reg_code); REGS_Rng rng = regs_reg_code_rng_table_from_architecture(machine->arch)[base_reg_code]; U64 off = (U64)rng.byte_off + byte_off; U64 size = (U64)byte_size; @@ -123,7 +123,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_RegReadDyn: + case RADDBGI_EvalOp_RegReadDyn: { U64 off = svals[0].u64; U64 size = bit_size_from_arch(machine->arch)/8; @@ -136,7 +136,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_FrameOff: + case RADDBGI_EvalOp_FrameOff: { if (machine->frame_base != 0){ nval.u64 = *machine->frame_base + imm; @@ -147,7 +147,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_ModuleOff: + case RADDBGI_EvalOp_ModuleOff: { if (machine->module_base != 0){ nval.u64 = *machine->module_base + imm; @@ -158,7 +158,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_TLSOff: + case RADDBGI_EvalOp_TLSOff: { if (machine->tls_base != 0){ nval.u64 = *machine->tls_base + imm; @@ -169,23 +169,23 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_ConstU8: - case RADDBG_EvalOp_ConstU16: - case RADDBG_EvalOp_ConstU32: - case RADDBG_EvalOp_ConstU64: + case RADDBGI_EvalOp_ConstU8: + case RADDBGI_EvalOp_ConstU16: + case RADDBGI_EvalOp_ConstU32: + case RADDBGI_EvalOp_ConstU64: { nval.u64 = imm; }break; - case RADDBG_EvalOp_Abs: + case RADDBGI_EvalOp_Abs: { - if (imm == RADDBG_EvalTypeGroup_F32){ + if (imm == RADDBGI_EvalTypeGroup_F32){ nval.f32 = svals[0].f32; if (svals[0].f32 < 0){ nval.f32 = -svals[0].f32; } } - else if (imm == RADDBG_EvalTypeGroup_F64){ + else if (imm == RADDBGI_EvalTypeGroup_F64){ nval.f64 = svals[0].f64; if (svals[0].f64 < 0){ nval.f64 = -svals[0].f64; @@ -199,12 +199,12 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_Neg: + case RADDBGI_EvalOp_Neg: { - if (imm == RADDBG_EvalTypeGroup_F32){ + if (imm == RADDBGI_EvalTypeGroup_F32){ nval.f32 = -svals[0].f32; } - else if (imm == RADDBG_EvalTypeGroup_F64){ + else if (imm == RADDBGI_EvalTypeGroup_F64){ nval.f64 = -svals[0].f64; } else{ @@ -212,12 +212,12 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_Add: + case RADDBGI_EvalOp_Add: { - if (imm == RADDBG_EvalTypeGroup_F32){ + if (imm == RADDBGI_EvalTypeGroup_F32){ nval.f32 = svals[0].f32 + svals[1].f32; } - else if (imm == RADDBG_EvalTypeGroup_F64){ + else if (imm == RADDBGI_EvalTypeGroup_F64){ nval.f64 = svals[0].f64 + svals[1].f64; } else{ @@ -225,12 +225,12 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_Sub: + case RADDBGI_EvalOp_Sub: { - if (imm == RADDBG_EvalTypeGroup_F32){ + if (imm == RADDBGI_EvalTypeGroup_F32){ nval.f32 = svals[0].f32 - svals[1].f32; } - else if (imm == RADDBG_EvalTypeGroup_F64){ + else if (imm == RADDBGI_EvalTypeGroup_F64){ nval.f64 = svals[0].f64 - svals[1].f64; } else{ @@ -238,12 +238,12 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_Mul: + case RADDBGI_EvalOp_Mul: { - if (imm == RADDBG_EvalTypeGroup_F32){ + if (imm == RADDBGI_EvalTypeGroup_F32){ nval.f32 = svals[0].f32*svals[1].f32; } - else if (imm == RADDBG_EvalTypeGroup_F64){ + else if (imm == RADDBGI_EvalTypeGroup_F64){ nval.f64 = svals[0].f64*svals[1].f64; } else{ @@ -251,9 +251,9 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_Div: + case RADDBGI_EvalOp_Div: { - if (imm == RADDBG_EvalTypeGroup_F32){ + if (imm == RADDBGI_EvalTypeGroup_F32){ if (svals[1].f32 != 0.f){ nval.f32 = svals[0].f32/svals[1].f32; } @@ -263,7 +263,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) goto done; } } - else if (imm == RADDBG_EvalTypeGroup_F64){ + else if (imm == RADDBGI_EvalTypeGroup_F64){ if (svals[1].f64 != 0.){ nval.f64 = svals[0].f64/svals[1].f64; } @@ -273,8 +273,8 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) goto done; } } - else if (imm == RADDBG_EvalTypeGroup_U || - imm == RADDBG_EvalTypeGroup_S){ + else if (imm == RADDBGI_EvalTypeGroup_U || + imm == RADDBGI_EvalTypeGroup_S){ if (svals[1].u64 != 0){ nval.u64 = svals[0].u64/svals[1].u64; } @@ -290,10 +290,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_Mod: + case RADDBGI_EvalOp_Mod: { - if (imm == RADDBG_EvalTypeGroup_U || - imm == RADDBG_EvalTypeGroup_S){ + if (imm == RADDBGI_EvalTypeGroup_U || + imm == RADDBGI_EvalTypeGroup_S){ if (svals[1].u64 != 0){ nval.u64 = svals[0].u64%svals[1].u64; } @@ -304,10 +304,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_LShift: + case RADDBGI_EvalOp_LShift: { - if (imm == RADDBG_EvalTypeGroup_U || - imm == RADDBG_EvalTypeGroup_S){ + if (imm == RADDBGI_EvalTypeGroup_U || + imm == RADDBGI_EvalTypeGroup_S){ nval.u64 = svals[0].u64 << svals[1].u64; } else{ @@ -316,12 +316,12 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_RShift: + case RADDBGI_EvalOp_RShift: { - if (imm == RADDBG_EvalTypeGroup_U){ + if (imm == RADDBGI_EvalTypeGroup_U){ nval.u64 = svals[0].u64 >> svals[1].u64; } - else if (imm == RADDBG_EvalTypeGroup_S){ + else if (imm == RADDBGI_EvalTypeGroup_S){ nval.u64 = svals[0].s64 >> svals[1].u64; } else{ @@ -330,10 +330,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_BitAnd: + case RADDBGI_EvalOp_BitAnd: { - if (imm == RADDBG_EvalTypeGroup_U || - imm == RADDBG_EvalTypeGroup_S){ + if (imm == RADDBGI_EvalTypeGroup_U || + imm == RADDBGI_EvalTypeGroup_S){ nval.u64 = svals[0].u64&svals[1].u64; } else{ @@ -342,10 +342,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_BitOr: + case RADDBGI_EvalOp_BitOr: { - if (imm == RADDBG_EvalTypeGroup_U || - imm == RADDBG_EvalTypeGroup_S){ + if (imm == RADDBGI_EvalTypeGroup_U || + imm == RADDBGI_EvalTypeGroup_S){ nval.u64 = svals[0].u64|svals[1].u64; } else{ @@ -354,10 +354,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_BitXor: + case RADDBGI_EvalOp_BitXor: { - if (imm == RADDBG_EvalTypeGroup_U || - imm == RADDBG_EvalTypeGroup_S){ + if (imm == RADDBGI_EvalTypeGroup_U || + imm == RADDBGI_EvalTypeGroup_S){ nval.u64 = svals[0].u64^svals[1].u64; } else{ @@ -366,10 +366,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_BitNot: + case RADDBGI_EvalOp_BitNot: { - if (imm == RADDBG_EvalTypeGroup_U || - imm == RADDBG_EvalTypeGroup_S){ + if (imm == RADDBGI_EvalTypeGroup_U || + imm == RADDBGI_EvalTypeGroup_S){ nval.u64 = ~svals[0].u64; } else{ @@ -378,10 +378,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_LogAnd: + case RADDBGI_EvalOp_LogAnd: { - if (imm == RADDBG_EvalTypeGroup_U || - imm == RADDBG_EvalTypeGroup_S){ + if (imm == RADDBGI_EvalTypeGroup_U || + imm == RADDBGI_EvalTypeGroup_S){ nval.u64 = (svals[0].u64 && svals[1].u64); } else{ @@ -390,10 +390,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_LogOr: + case RADDBGI_EvalOp_LogOr: { - if (imm == RADDBG_EvalTypeGroup_U || - imm == RADDBG_EvalTypeGroup_S){ + if (imm == RADDBGI_EvalTypeGroup_U || + imm == RADDBGI_EvalTypeGroup_S){ nval.u64 = (svals[0].u64 || svals[1].u64); } else{ @@ -402,10 +402,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_LogNot: + case RADDBGI_EvalOp_LogNot: { - if (imm == RADDBG_EvalTypeGroup_U || - imm == RADDBG_EvalTypeGroup_S){ + if (imm == RADDBGI_EvalTypeGroup_U || + imm == RADDBGI_EvalTypeGroup_S){ nval.u64 = (!svals[0].u64); } else{ @@ -414,28 +414,28 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_EqEq: + case RADDBGI_EvalOp_EqEq: { nval.u64 = (svals[0].u64 == svals[1].u64); }break; - case RADDBG_EvalOp_NtEq: + case RADDBGI_EvalOp_NtEq: { nval.u64 = (svals[0].u64 != svals[1].u64); }break; - case RADDBG_EvalOp_LsEq: + case RADDBGI_EvalOp_LsEq: { - if (imm == RADDBG_EvalTypeGroup_F32){ + if (imm == RADDBGI_EvalTypeGroup_F32){ nval.u64 = (svals[0].f32 <= svals[1].f32); } - else if (imm == RADDBG_EvalTypeGroup_F64){ + else if (imm == RADDBGI_EvalTypeGroup_F64){ nval.u64 = (svals[0].f64 <= svals[1].f64); } - else if (imm == RADDBG_EvalTypeGroup_U){ + else if (imm == RADDBGI_EvalTypeGroup_U){ nval.u64 = (svals[0].u64 <= svals[1].u64); } - else if (imm == RADDBG_EvalTypeGroup_S){ + else if (imm == RADDBGI_EvalTypeGroup_S){ nval.u64 = (svals[0].s64 <= svals[1].s64); } else{ @@ -444,18 +444,18 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_GrEq: + case RADDBGI_EvalOp_GrEq: { - if (imm == RADDBG_EvalTypeGroup_F32){ + if (imm == RADDBGI_EvalTypeGroup_F32){ nval.u64 = (svals[0].f32 >= svals[1].f32); } - else if (imm == RADDBG_EvalTypeGroup_F64){ + else if (imm == RADDBGI_EvalTypeGroup_F64){ nval.u64 = (svals[0].f64 >= svals[1].f64); } - else if (imm == RADDBG_EvalTypeGroup_U){ + else if (imm == RADDBGI_EvalTypeGroup_U){ nval.u64 = (svals[0].u64 >= svals[1].u64); } - else if (imm == RADDBG_EvalTypeGroup_S){ + else if (imm == RADDBGI_EvalTypeGroup_S){ nval.u64 = (svals[0].s64 >= svals[1].s64); } else{ @@ -464,18 +464,18 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_Less: + case RADDBGI_EvalOp_Less: { - if (imm == RADDBG_EvalTypeGroup_F32){ + if (imm == RADDBGI_EvalTypeGroup_F32){ nval.u64 = (svals[0].f32 < svals[1].f32); } - else if (imm == RADDBG_EvalTypeGroup_F64){ + else if (imm == RADDBGI_EvalTypeGroup_F64){ nval.u64 = (svals[0].f64 < svals[1].f64); } - else if (imm == RADDBG_EvalTypeGroup_U){ + else if (imm == RADDBGI_EvalTypeGroup_U){ nval.u64 = (svals[0].u64 < svals[1].u64); } - else if (imm == RADDBG_EvalTypeGroup_S){ + else if (imm == RADDBGI_EvalTypeGroup_S){ nval.u64 = (svals[0].s64 < svals[1].s64); } else{ @@ -484,18 +484,18 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_Grtr: + case RADDBGI_EvalOp_Grtr: { - if (imm == RADDBG_EvalTypeGroup_F32){ + if (imm == RADDBGI_EvalTypeGroup_F32){ nval.u64 = (svals[0].f32 > svals[1].f32); } - else if (imm == RADDBG_EvalTypeGroup_F64){ + else if (imm == RADDBGI_EvalTypeGroup_F64){ nval.u64 = (svals[0].f64 > svals[1].f64); } - else if (imm == RADDBG_EvalTypeGroup_U){ + else if (imm == RADDBGI_EvalTypeGroup_U){ nval.u64 = (svals[0].u64 > svals[1].u64); } - else if (imm == RADDBG_EvalTypeGroup_S){ + else if (imm == RADDBGI_EvalTypeGroup_S){ nval.u64 = (svals[0].s64 > svals[1].s64); } else{ @@ -504,7 +504,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_Trunc: + case RADDBGI_EvalOp_Trunc: { if (0 < imm){ U64 mask = 0; @@ -515,7 +515,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_TruncSigned: + case RADDBGI_EvalOp_TruncSigned: { if (0 < imm){ U64 mask = 0; @@ -530,52 +530,52 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_Convert: + case RADDBGI_EvalOp_Convert: { U32 in = imm&0xFF; U32 out = (imm >> 8)&0xFF; if (in != out){ - switch (in + out*RADDBG_EvalTypeGroup_COUNT){ - case RADDBG_EvalTypeGroup_F32 + RADDBG_EvalTypeGroup_U*RADDBG_EvalTypeGroup_COUNT: + switch (in + out*RADDBGI_EvalTypeGroup_COUNT){ + case RADDBGI_EvalTypeGroup_F32 + RADDBGI_EvalTypeGroup_U*RADDBGI_EvalTypeGroup_COUNT: { nval.u64 = (U64)svals[0].f32; }break; - case RADDBG_EvalTypeGroup_F64 + RADDBG_EvalTypeGroup_U*RADDBG_EvalTypeGroup_COUNT: + case RADDBGI_EvalTypeGroup_F64 + RADDBGI_EvalTypeGroup_U*RADDBGI_EvalTypeGroup_COUNT: { nval.u64 = (U64)svals[0].f64; }break; - case RADDBG_EvalTypeGroup_F32 + RADDBG_EvalTypeGroup_S*RADDBG_EvalTypeGroup_COUNT: + case RADDBGI_EvalTypeGroup_F32 + RADDBGI_EvalTypeGroup_S*RADDBGI_EvalTypeGroup_COUNT: { nval.s64 = (S64)svals[0].f32; }break; - case RADDBG_EvalTypeGroup_F64 + RADDBG_EvalTypeGroup_S*RADDBG_EvalTypeGroup_COUNT: + case RADDBGI_EvalTypeGroup_F64 + RADDBGI_EvalTypeGroup_S*RADDBGI_EvalTypeGroup_COUNT: { nval.s64 = (S64)svals[0].f64; }break; - case RADDBG_EvalTypeGroup_U + RADDBG_EvalTypeGroup_F32*RADDBG_EvalTypeGroup_COUNT: + case RADDBGI_EvalTypeGroup_U + RADDBGI_EvalTypeGroup_F32*RADDBGI_EvalTypeGroup_COUNT: { nval.f32 = (F32)svals[0].u64; }break; - case RADDBG_EvalTypeGroup_S + RADDBG_EvalTypeGroup_F32*RADDBG_EvalTypeGroup_COUNT: + case RADDBGI_EvalTypeGroup_S + RADDBGI_EvalTypeGroup_F32*RADDBGI_EvalTypeGroup_COUNT: { nval.f32 = (F32)svals[0].s64; }break; - case RADDBG_EvalTypeGroup_F64 + RADDBG_EvalTypeGroup_F32*RADDBG_EvalTypeGroup_COUNT: + case RADDBGI_EvalTypeGroup_F64 + RADDBGI_EvalTypeGroup_F32*RADDBGI_EvalTypeGroup_COUNT: { nval.f32 = (F32)svals[0].f64; }break; - case RADDBG_EvalTypeGroup_U + RADDBG_EvalTypeGroup_F64*RADDBG_EvalTypeGroup_COUNT: + case RADDBGI_EvalTypeGroup_U + RADDBGI_EvalTypeGroup_F64*RADDBGI_EvalTypeGroup_COUNT: { nval.f64 = (F64)svals[0].u64; }break; - case RADDBG_EvalTypeGroup_S + RADDBG_EvalTypeGroup_F64*RADDBG_EvalTypeGroup_COUNT: + case RADDBGI_EvalTypeGroup_S + RADDBGI_EvalTypeGroup_F64*RADDBGI_EvalTypeGroup_COUNT: { nval.f64 = (F64)svals[0].s64; }break; - case RADDBG_EvalTypeGroup_F32 + RADDBG_EvalTypeGroup_F64*RADDBG_EvalTypeGroup_COUNT: + case RADDBGI_EvalTypeGroup_F32 + RADDBGI_EvalTypeGroup_F64*RADDBGI_EvalTypeGroup_COUNT: { nval.f64 = (F64)svals[0].f32; }break; @@ -583,7 +583,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_Pick: + case RADDBGI_EvalOp_Pick: { if (stack_count > imm){ nval = stack[stack_count - imm - 1]; @@ -594,12 +594,12 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBG_EvalOp_Pop: + case RADDBGI_EvalOp_Pop: { // do nothing - the pop is handled by the control bits }break; - case RADDBG_EvalOp_Insert: + case RADDBGI_EvalOp_Insert: { if (stack_count > imm){ if (imm > 0){ @@ -619,7 +619,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) // push { - U64 push_count = RADDBG_PUSHN_FROM_CTRLBITS(ctrlbits); + U64 push_count = RADDBGI_PUSHN_FROM_CTRLBITS(ctrlbits); if (push_count == 1){ if (stack_count < stack_cap){ stack[stack_count] = nval; diff --git a/src/eval/eval_parser.c b/src/eval/eval_parser.c index 1d134bb7..dbbd3a6b 100644 --- a/src/eval/eval_parser.c +++ b/src/eval/eval_parser.c @@ -57,7 +57,7 @@ global read_only S64 eval_g_max_precedence = 15; //~ rjf: Map Building Fast Paths internal EVAL_String2NumMap * -eval_push_locals_map_from_raddbg_voff(Arena *arena, RADDBG_Parsed *rdbg, U64 voff) +eval_push_locals_map_from_raddbgi_voff(Arena *arena, RADDBGI_Parsed *rdbg, U64 voff) { Temp scratch = scratch_begin(&arena, 1); @@ -66,17 +66,17 @@ eval_push_locals_map_from_raddbg_voff(Arena *arena, RADDBG_Parsed *rdbg, U64 vof struct Task { Task *next; - RADDBG_Scope *scope; + RADDBGI_Scope *scope; }; Task *first_task = 0; Task *last_task = 0; //- rjf: voff -> tightest scope - RADDBG_Scope *tightest_scope = 0; + RADDBGI_Scope *tightest_scope = 0; if(rdbg->scope_vmap != 0 && rdbg->scopes != 0) { - U64 scope_idx = raddbg_vmap_idx_from_voff(rdbg->scope_vmap, rdbg->scope_vmap_count, voff); - RADDBG_Scope *scope = &rdbg->scopes[scope_idx]; + U64 scope_idx = raddbgi_vmap_idx_from_voff(rdbg->scope_vmap, rdbg->scope_vmap_count, voff); + RADDBGI_Scope *scope = &rdbg->scopes[scope_idx]; Task *task = push_array(scratch.arena, Task, 1); task->scope = scope; SLLQueuePush(first_task, last_task, task); @@ -86,8 +86,8 @@ eval_push_locals_map_from_raddbg_voff(Arena *arena, RADDBG_Parsed *rdbg, U64 vof //- rjf: voff-1 -> scope if(voff > 0 && rdbg->scope_vmap != 0 && rdbg->scopes != 0) { - U64 scope_idx = raddbg_vmap_idx_from_voff(rdbg->scope_vmap, rdbg->scope_vmap_count, voff-1); - RADDBG_Scope *scope = &rdbg->scopes[scope_idx]; + U64 scope_idx = raddbgi_vmap_idx_from_voff(rdbg->scope_vmap, rdbg->scope_vmap_count, voff-1); + RADDBGI_Scope *scope = &rdbg->scopes[scope_idx]; if(scope != tightest_scope) { Task *task = push_array(scratch.arena, Task, 1); @@ -99,7 +99,7 @@ eval_push_locals_map_from_raddbg_voff(Arena *arena, RADDBG_Parsed *rdbg, U64 vof //- rjf: tightest scope -> walk up the tree & build tasks for each parent scope if(tightest_scope != 0) { - for(RADDBG_Scope *scope = &rdbg->scopes[tightest_scope->parent_scope_idx]; + for(RADDBGI_Scope *scope = &rdbg->scopes[tightest_scope->parent_scope_idx]; scope != 0 && scope != &rdbg->scopes[0]; scope = &rdbg->scopes[scope->parent_scope_idx]) { @@ -116,15 +116,15 @@ eval_push_locals_map_from_raddbg_voff(Arena *arena, RADDBG_Parsed *rdbg, U64 vof //- rjf: accumulate locals for all tasks for(Task *task = first_task; task != 0; task = task->next) { - RADDBG_Scope *scope = task->scope; + RADDBGI_Scope *scope = task->scope; if(scope != 0) { U32 local_opl_idx = scope->local_first + scope->local_count; for(U32 local_idx = scope->local_first; local_idx < local_opl_idx; local_idx += 1) { - RADDBG_Local *local_var = &rdbg->locals[local_idx]; + RADDBGI_Local *local_var = &rdbg->locals[local_idx]; U64 local_name_size = 0; - U8 *local_name_str = raddbg_string_from_idx(rdbg, local_var->name_string_idx, &local_name_size); + U8 *local_name_str = raddbgi_string_from_idx(rdbg, local_var->name_string_idx, &local_name_size); String8 name = push_str8_copy(arena, str8(local_name_str, local_name_size)); eval_string2num_map_insert(arena, map, name, (U64)local_idx+1); } @@ -136,18 +136,18 @@ eval_push_locals_map_from_raddbg_voff(Arena *arena, RADDBG_Parsed *rdbg, U64 vof } internal EVAL_String2NumMap * -eval_push_member_map_from_raddbg_voff(Arena *arena, RADDBG_Parsed *rdbg, U64 voff) +eval_push_member_map_from_raddbgi_voff(Arena *arena, RADDBGI_Parsed *rdbg, U64 voff) { //- rjf: voff -> tightest scope - RADDBG_Scope *tightest_scope = 0; + RADDBGI_Scope *tightest_scope = 0; if(rdbg->scope_vmap != 0 && rdbg->scopes != 0) { - U64 scope_idx = raddbg_vmap_idx_from_voff(rdbg->scope_vmap, rdbg->scope_vmap_count, voff); + U64 scope_idx = raddbgi_vmap_idx_from_voff(rdbg->scope_vmap, rdbg->scope_vmap_count, voff); tightest_scope = &rdbg->scopes[scope_idx]; } //- rjf: tightest scope -> procedure - RADDBG_Procedure *procedure = 0; + RADDBGI_Procedure *procedure = 0; if(tightest_scope != 0 && rdbg->procedures != 0) { U32 proc_idx = tightest_scope->proc_idx; @@ -158,8 +158,8 @@ eval_push_member_map_from_raddbg_voff(Arena *arena, RADDBG_Parsed *rdbg, U64 vof } //- rjf: procedure -> udt - RADDBG_UDT *udt = 0; - if(procedure != 0 && rdbg->udts != 0 && procedure->link_flags & RADDBG_LinkFlag_TypeScoped) + RADDBGI_UDT *udt = 0; + if(procedure != 0 && rdbg->udts != 0 && procedure->link_flags & RADDBGI_LinkFlag_TypeScoped) { U32 udt_idx = procedure->container_idx; if(0 < udt_idx && udt_idx < rdbg->udts_count) @@ -173,7 +173,7 @@ eval_push_member_map_from_raddbg_voff(Arena *arena, RADDBG_Parsed *rdbg, U64 vof *map = eval_string2num_map_make(arena, 64); //- rjf: udt -> fill member map - if(udt != 0 && !(udt->flags & RADDBG_UserDefinedTypeFlag_EnumMembers) && rdbg->members != 0) + if(udt != 0 && !(udt->flags & RADDBGI_UserDefinedTypeFlag_EnumMembers) && rdbg->members != 0) { U64 data_member_num = 1; for(U32 member_idx = udt->member_first; @@ -184,11 +184,11 @@ eval_push_member_map_from_raddbg_voff(Arena *arena, RADDBG_Parsed *rdbg, U64 vof { break; } - RADDBG_Member *m = &rdbg->members[member_idx]; - if(m->kind == RADDBG_MemberKind_DataField) + RADDBGI_Member *m = &rdbg->members[member_idx]; + if(m->kind == RADDBGI_MemberKind_DataField) { String8 name = {0}; - name.str = raddbg_string_from_idx(rdbg, m->name_string_idx, &name.size); + name.str = raddbgi_string_from_idx(rdbg, m->name_string_idx, &name.size); eval_string2num_map_insert(arena, map, name, data_member_num); data_member_num += 1; } @@ -464,25 +464,25 @@ eval_token_array_make_first_opl(EVAL_Token *first, EVAL_Token *opl) //~ rjf: Parser Functions internal TG_Key -eval_leaf_type_from_name(RADDBG_Parsed *rdbg, String8 name) +eval_leaf_type_from_name(RADDBGI_Parsed *rdbg, String8 name) { TG_Key key = zero_struct; B32 found = 0; if(rdbg->type_nodes != 0) { - RADDBG_NameMap *name_map = raddbg_name_map_from_kind(rdbg, RADDBG_NameMapKind_Types); - RADDBG_ParsedNameMap parsed_name_map = {0}; - raddbg_name_map_parse(rdbg, name_map, &parsed_name_map); - RADDBG_NameMapNode *node = raddbg_name_map_lookup(rdbg, &parsed_name_map, name.str, name.size); + RADDBGI_NameMap *name_map = raddbgi_name_map_from_kind(rdbg, RADDBGI_NameMapKind_Types); + RADDBGI_ParsedNameMap parsed_name_map = {0}; + raddbgi_name_map_parse(rdbg, name_map, &parsed_name_map); + RADDBGI_NameMapNode *node = raddbgi_name_map_lookup(rdbg, &parsed_name_map, name.str, name.size); if(node != 0) { U32 match_count = 0; - U32 *matches = raddbg_matches_from_map_node(rdbg, node, &match_count); + U32 *matches = raddbgi_matches_from_map_node(rdbg, node, &match_count); if(match_count != 0) { - RADDBG_TypeNode *type_node = raddbg_element_from_idx(rdbg, type_nodes, matches[0]); - found = type_node->kind != RADDBG_TypeKind_NULL; - key = tg_key_ext(tg_kind_from_raddbg_type_kind(type_node->kind), (U64)matches[0]); + RADDBGI_TypeNode *type_node = raddbgi_element_from_idx(rdbg, type_nodes, matches[0]); + found = type_node->kind != RADDBGI_TypeKind_NULL; + key = tg_key_ext(tg_kind_from_raddbgi_type_kind(type_node->kind), (U64)matches[0]); } } } @@ -787,9 +787,9 @@ eval_parse_expr_from_text_tokens__prec(Arena *arena, EVAL_ParseCtx *ctx, String8 B32 mapped_identifier = 0; B32 identifier_type_is_possibly_dynamically_overridden = 0; B32 identifier_looks_like_type_expr = 0; - RADDBG_LocationKind loc_kind = RADDBG_LocationKind_NULL; - RADDBG_LocationRegister loc_reg = {0}; - RADDBG_LocationRegisterPlusU16 loc_reg_u16 = {0}; + RADDBGI_LocationKind loc_kind = RADDBGI_LocationKind_NULL; + RADDBGI_LocationRegister loc_reg = {0}; + RADDBGI_LocationRegisterPlusU16 loc_reg_u16 = {0}; String8 loc_bytecode = {0}; REGS_RegCode reg_code = 0; REGS_AliasCode alias_code = 0; @@ -800,12 +800,12 @@ eval_parse_expr_from_text_tokens__prec(Arena *arena, EVAL_ParseCtx *ctx, String8 String8List namespaceified_token_strings = {0}; if(ctx->rdbg->procedures != 0 && ctx->rdbg->scopes != 0 && ctx->rdbg->scope_vmap != 0) { - U64 scope_idx = raddbg_vmap_idx_from_voff(ctx->rdbg->scope_vmap, ctx->rdbg->scope_vmap_count, ctx->ip_voff); - RADDBG_Scope *scope = &ctx->rdbg->scopes[scope_idx]; + U64 scope_idx = raddbgi_vmap_idx_from_voff(ctx->rdbg->scope_vmap, ctx->rdbg->scope_vmap_count, ctx->ip_voff); + RADDBGI_Scope *scope = &ctx->rdbg->scopes[scope_idx]; U64 proc_idx = scope->proc_idx; - RADDBG_Procedure *procedure = &ctx->rdbg->procedures[proc_idx]; + RADDBGI_Procedure *procedure = &ctx->rdbg->procedures[proc_idx]; U64 name_size = 0; - U8 *name_ptr = raddbg_string_from_idx(ctx->rdbg, procedure->name_string_idx, &name_size); + U8 *name_ptr = raddbgi_string_from_idx(ctx->rdbg, procedure->name_string_idx, &name_size); String8 containing_procedure_name = str8(name_ptr, name_size); U64 last_past_scope_resolution_pos = 0; for(;;) @@ -843,26 +843,26 @@ eval_parse_expr_from_text_tokens__prec(Arena *arena, EVAL_ParseCtx *ctx, String8 { mapped_identifier = 1; identifier_type_is_possibly_dynamically_overridden = 1; - RADDBG_Local *local_var = raddbg_element_from_idx(ctx->rdbg, locals, local_num-1); - RADDBG_TypeNode *type_node = raddbg_element_from_idx(ctx->rdbg, type_nodes, local_var->type_idx); - type_key = tg_key_ext(tg_kind_from_raddbg_type_kind(type_node->kind), (U64)local_var->type_idx); + RADDBGI_Local *local_var = raddbgi_element_from_idx(ctx->rdbg, locals, local_num-1); + RADDBGI_TypeNode *type_node = raddbgi_element_from_idx(ctx->rdbg, type_nodes, local_var->type_idx); + type_key = tg_key_ext(tg_kind_from_raddbgi_type_kind(type_node->kind), (U64)local_var->type_idx); // rjf: grab location info for(U32 loc_block_idx = local_var->location_first; loc_block_idx < local_var->location_opl; loc_block_idx += 1) { - RADDBG_LocationBlock *block = &ctx->rdbg->location_blocks[loc_block_idx]; + RADDBGI_LocationBlock *block = &ctx->rdbg->location_blocks[loc_block_idx]; if(block->scope_off_first <= ctx->ip_voff && ctx->ip_voff < block->scope_off_opl) { - loc_kind = *((RADDBG_LocationKind *)(ctx->rdbg->location_data + block->location_data_off)); + loc_kind = *((RADDBGI_LocationKind *)(ctx->rdbg->location_data + block->location_data_off)); switch(loc_kind) { default:{mapped_identifier = 0;}break; - case RADDBG_LocationKind_AddrBytecodeStream: - case RADDBG_LocationKind_ValBytecodeStream: + case RADDBGI_LocationKind_AddrBytecodeStream: + case RADDBGI_LocationKind_ValBytecodeStream: { - U8 *bytecode_base = ctx->rdbg->location_data + block->location_data_off + sizeof(RADDBG_LocationKind); + U8 *bytecode_base = ctx->rdbg->location_data + block->location_data_off + sizeof(RADDBGI_LocationKind); U64 bytecode_size = 0; for(U64 idx = 0; idx < ctx->rdbg->location_data_size; idx += 1) { @@ -871,18 +871,18 @@ eval_parse_expr_from_text_tokens__prec(Arena *arena, EVAL_ParseCtx *ctx, String8 { break; } - U8 ctrlbits = raddbg_eval_opcode_ctrlbits[op]; - U32 p_size = RADDBG_DECODEN_FROM_CTRLBITS(ctrlbits); + U8 ctrlbits = raddbgi_eval_opcode_ctrlbits[op]; + U32 p_size = RADDBGI_DECODEN_FROM_CTRLBITS(ctrlbits); bytecode_size += 1+p_size; } loc_bytecode = str8(bytecode_base, bytecode_size); }break; - case RADDBG_LocationKind_AddrRegisterPlusU16: - case RADDBG_LocationKind_AddrAddrRegisterPlusU16: + case RADDBGI_LocationKind_AddrRegisterPlusU16: + case RADDBGI_LocationKind_AddrAddrRegisterPlusU16: { MemoryCopy(&loc_reg_u16, (ctx->rdbg->location_data + block->location_data_off), sizeof(loc_reg_u16)); }break; - case RADDBG_LocationKind_ValRegister: + case RADDBGI_LocationKind_ValRegister: { MemoryCopy(&loc_reg, (ctx->rdbg->location_data + block->location_data_off), sizeof(loc_reg)); }break; @@ -919,21 +919,21 @@ eval_parse_expr_from_text_tokens__prec(Arena *arena, EVAL_ParseCtx *ctx, String8 //- rjf: try global variables if(mapped_identifier == 0) { - RADDBG_NameMap *name_map = raddbg_name_map_from_kind(ctx->rdbg, RADDBG_NameMapKind_GlobalVariables); + RADDBGI_NameMap *name_map = raddbgi_name_map_from_kind(ctx->rdbg, RADDBGI_NameMapKind_GlobalVariables); if(name_map != 0 && ctx->rdbg->global_variables != 0) { - RADDBG_ParsedNameMap parsed_name_map = {0}; - raddbg_name_map_parse(ctx->rdbg, name_map, &parsed_name_map); - RADDBG_NameMapNode *node = raddbg_name_map_lookup(ctx->rdbg, &parsed_name_map, token_string.str, token_string.size); + RADDBGI_ParsedNameMap parsed_name_map = {0}; + raddbgi_name_map_parse(ctx->rdbg, name_map, &parsed_name_map); + RADDBGI_NameMapNode *node = raddbgi_name_map_lookup(ctx->rdbg, &parsed_name_map, token_string.str, token_string.size); U32 matches_count = 0; - U32 *matches = raddbg_matches_from_map_node(ctx->rdbg, node, &matches_count); + U32 *matches = raddbgi_matches_from_map_node(ctx->rdbg, node, &matches_count); for(String8Node *n = namespaceified_token_strings.first; n != 0 && matches_count == 0; n = n->next) { - node = raddbg_name_map_lookup(ctx->rdbg, &parsed_name_map, n->string.str, n->string.size); + node = raddbgi_name_map_lookup(ctx->rdbg, &parsed_name_map, n->string.str, n->string.size); matches_count = 0; - matches = raddbg_matches_from_map_node(ctx->rdbg, node, &matches_count); + matches = raddbgi_matches_from_map_node(ctx->rdbg, node, &matches_count); } if(matches_count != 0) { @@ -942,16 +942,16 @@ eval_parse_expr_from_text_tokens__prec(Arena *arena, EVAL_ParseCtx *ctx, String8 // don't know of a magic hash table fixup path in PDBs, so // in this case, I'm going to prefer the latest-added global. U32 match_idx = matches[matches_count-1]; - RADDBG_GlobalVariable *global_var = &ctx->rdbg->global_variables[match_idx]; + RADDBGI_GlobalVariable *global_var = &ctx->rdbg->global_variables[match_idx]; EVAL_OpList oplist = {0}; - eval_oplist_push_op(arena, &oplist, RADDBG_EvalOp_ModuleOff, global_var->voff); - loc_kind = RADDBG_LocationKind_AddrBytecodeStream; + eval_oplist_push_op(arena, &oplist, RADDBGI_EvalOp_ModuleOff, global_var->voff); + loc_kind = RADDBGI_LocationKind_AddrBytecodeStream; loc_bytecode = eval_bytecode_from_oplist(arena, &oplist); U32 type_idx = global_var->type_idx; if(type_idx < ctx->rdbg->type_nodes_count) { - RADDBG_TypeNode *type_node = &ctx->rdbg->type_nodes[type_idx]; - type_key = tg_key_ext(tg_kind_from_raddbg_type_kind(type_node->kind), (U64)type_idx); + RADDBGI_TypeNode *type_node = &ctx->rdbg->type_nodes[type_idx]; + type_key = tg_key_ext(tg_kind_from_raddbgi_type_kind(type_node->kind), (U64)type_idx); } mapped_identifier = 1; } @@ -961,35 +961,35 @@ eval_parse_expr_from_text_tokens__prec(Arena *arena, EVAL_ParseCtx *ctx, String8 //- rjf: try thread variables if(mapped_identifier == 0) { - RADDBG_NameMap *name_map = raddbg_name_map_from_kind(ctx->rdbg, RADDBG_NameMapKind_ThreadVariables); + RADDBGI_NameMap *name_map = raddbgi_name_map_from_kind(ctx->rdbg, RADDBGI_NameMapKind_ThreadVariables); if(name_map != 0 && ctx->rdbg->global_variables != 0) { - RADDBG_ParsedNameMap parsed_name_map = {0}; - raddbg_name_map_parse(ctx->rdbg, name_map, &parsed_name_map); - RADDBG_NameMapNode *node = raddbg_name_map_lookup(ctx->rdbg, &parsed_name_map, token_string.str, token_string.size); + RADDBGI_ParsedNameMap parsed_name_map = {0}; + raddbgi_name_map_parse(ctx->rdbg, name_map, &parsed_name_map); + RADDBGI_NameMapNode *node = raddbgi_name_map_lookup(ctx->rdbg, &parsed_name_map, token_string.str, token_string.size); U32 matches_count = 0; - U32 *matches = raddbg_matches_from_map_node(ctx->rdbg, node, &matches_count); + U32 *matches = raddbgi_matches_from_map_node(ctx->rdbg, node, &matches_count); for(String8Node *n = namespaceified_token_strings.first; n != 0 && matches_count == 0; n = n->next) { - node = raddbg_name_map_lookup(ctx->rdbg, &parsed_name_map, n->string.str, n->string.size); + node = raddbgi_name_map_lookup(ctx->rdbg, &parsed_name_map, n->string.str, n->string.size); matches_count = 0; - matches = raddbg_matches_from_map_node(ctx->rdbg, node, &matches_count); + matches = raddbgi_matches_from_map_node(ctx->rdbg, node, &matches_count); } if(matches_count != 0) { U32 match_idx = matches[0]; - RADDBG_ThreadVariable *thread_var = &ctx->rdbg->thread_variables[match_idx]; + RADDBGI_ThreadVariable *thread_var = &ctx->rdbg->thread_variables[match_idx]; EVAL_OpList oplist = {0}; - eval_oplist_push_op(arena, &oplist, RADDBG_EvalOp_TLSOff, thread_var->tls_off); - loc_kind = RADDBG_LocationKind_AddrBytecodeStream; + eval_oplist_push_op(arena, &oplist, RADDBGI_EvalOp_TLSOff, thread_var->tls_off); + loc_kind = RADDBGI_LocationKind_AddrBytecodeStream; loc_bytecode = eval_bytecode_from_oplist(arena, &oplist); U32 type_idx = thread_var->type_idx; if(type_idx < ctx->rdbg->type_nodes_count) { - RADDBG_TypeNode *type_node = &ctx->rdbg->type_nodes[type_idx]; - type_key = tg_key_ext(tg_kind_from_raddbg_type_kind(type_node->kind), (U64)type_idx); + RADDBGI_TypeNode *type_node = &ctx->rdbg->type_nodes[type_idx]; + type_key = tg_key_ext(tg_kind_from_raddbgi_type_kind(type_node->kind), (U64)type_idx); } mapped_identifier = 1; } @@ -999,37 +999,37 @@ eval_parse_expr_from_text_tokens__prec(Arena *arena, EVAL_ParseCtx *ctx, String8 //- rjf: try procedures if(mapped_identifier == 0) { - RADDBG_NameMap *name_map = raddbg_name_map_from_kind(ctx->rdbg, RADDBG_NameMapKind_Procedures); + RADDBGI_NameMap *name_map = raddbgi_name_map_from_kind(ctx->rdbg, RADDBGI_NameMapKind_Procedures); if(name_map != 0 && ctx->rdbg->procedures != 0 && ctx->rdbg->scopes != 0 && ctx->rdbg->scope_voffs) { - RADDBG_ParsedNameMap parsed_name_map = {0}; - raddbg_name_map_parse(ctx->rdbg, name_map, &parsed_name_map); - RADDBG_NameMapNode *node = raddbg_name_map_lookup(ctx->rdbg, &parsed_name_map, token_string.str, token_string.size); + RADDBGI_ParsedNameMap parsed_name_map = {0}; + raddbgi_name_map_parse(ctx->rdbg, name_map, &parsed_name_map); + RADDBGI_NameMapNode *node = raddbgi_name_map_lookup(ctx->rdbg, &parsed_name_map, token_string.str, token_string.size); U32 matches_count = 0; - U32 *matches = raddbg_matches_from_map_node(ctx->rdbg, node, &matches_count); + U32 *matches = raddbgi_matches_from_map_node(ctx->rdbg, node, &matches_count); for(String8Node *n = namespaceified_token_strings.first; n != 0 && matches_count == 0; n = n->next) { - node = raddbg_name_map_lookup(ctx->rdbg, &parsed_name_map, n->string.str, n->string.size); + node = raddbgi_name_map_lookup(ctx->rdbg, &parsed_name_map, n->string.str, n->string.size); matches_count = 0; - matches = raddbg_matches_from_map_node(ctx->rdbg, node, &matches_count); + matches = raddbgi_matches_from_map_node(ctx->rdbg, node, &matches_count); } if(matches_count != 0) { U32 match_idx = matches[0]; - RADDBG_Procedure *procedure = &ctx->rdbg->procedures[match_idx]; - RADDBG_Scope *scope = &ctx->rdbg->scopes[procedure->root_scope_idx]; + RADDBGI_Procedure *procedure = &ctx->rdbg->procedures[match_idx]; + RADDBGI_Scope *scope = &ctx->rdbg->scopes[procedure->root_scope_idx]; U64 voff = ctx->rdbg->scope_voffs[scope->voff_range_first]; EVAL_OpList oplist = {0}; - eval_oplist_push_op(arena, &oplist, RADDBG_EvalOp_ModuleOff, voff); - loc_kind = RADDBG_LocationKind_ValBytecodeStream; + eval_oplist_push_op(arena, &oplist, RADDBGI_EvalOp_ModuleOff, voff); + loc_kind = RADDBGI_LocationKind_ValBytecodeStream; loc_bytecode = eval_bytecode_from_oplist(arena, &oplist); U32 type_idx = procedure->type_idx; if(type_idx < ctx->rdbg->type_nodes_count) { - RADDBG_TypeNode *type_node = &ctx->rdbg->type_nodes[type_idx]; - type_key = tg_key_ext(tg_kind_from_raddbg_type_kind(type_node->kind), (U64)type_idx); + RADDBGI_TypeNode *type_node = &ctx->rdbg->type_nodes[type_idx]; + type_key = tg_key_ext(tg_kind_from_raddbgi_type_kind(type_node->kind), (U64)type_idx); } mapped_identifier = 1; } @@ -1086,44 +1086,44 @@ eval_parse_expr_from_text_tokens__prec(Arena *arena, EVAL_ParseCtx *ctx, String8 eval_errorf(arena, &result.errors, EVAL_ErrorKind_MissingInfo, token_string.str, "Missing location information for \"%S\".", token_string); } }break; - case RADDBG_LocationKind_AddrBytecodeStream: + case RADDBGI_LocationKind_AddrBytecodeStream: { atom = eval_expr_leaf_bytecode(arena, token_string.str, type_key, loc_bytecode, EVAL_EvalMode_Addr); }break; - case RADDBG_LocationKind_ValBytecodeStream: + case RADDBGI_LocationKind_ValBytecodeStream: { atom = eval_expr_leaf_bytecode(arena, token_string.str, type_key, loc_bytecode, EVAL_EvalMode_Value); }break; - case RADDBG_LocationKind_AddrRegisterPlusU16: + case RADDBGI_LocationKind_AddrRegisterPlusU16: { EVAL_OpList oplist = {0}; U64 byte_size = bit_size_from_arch(ctx->arch)/8; - U64 regread_param = RADDBG_EncodeRegReadParam(loc_reg_u16.register_code, byte_size, 0); - eval_oplist_push_op(arena, &oplist, RADDBG_EvalOp_RegRead, regread_param); - eval_oplist_push_op(arena, &oplist, RADDBG_EvalOp_ConstU16, loc_reg_u16.offset); - eval_oplist_push_op(arena, &oplist, RADDBG_EvalOp_Add, 0); + U64 regread_param = RADDBGI_EncodeRegReadParam(loc_reg_u16.register_code, byte_size, 0); + eval_oplist_push_op(arena, &oplist, RADDBGI_EvalOp_RegRead, regread_param); + eval_oplist_push_op(arena, &oplist, RADDBGI_EvalOp_ConstU16, loc_reg_u16.offset); + eval_oplist_push_op(arena, &oplist, RADDBGI_EvalOp_Add, 0); atom = eval_expr_leaf_op_list(arena, token_string.str, type_key, &oplist, EVAL_EvalMode_Addr); }break; - case RADDBG_LocationKind_AddrAddrRegisterPlusU16: + case RADDBGI_LocationKind_AddrAddrRegisterPlusU16: { EVAL_OpList oplist = {0}; U64 byte_size = bit_size_from_arch(ctx->arch)/8; - U64 regread_param = RADDBG_EncodeRegReadParam(loc_reg_u16.register_code, byte_size, 0); - eval_oplist_push_op(arena, &oplist, RADDBG_EvalOp_RegRead, regread_param); - eval_oplist_push_op(arena, &oplist, RADDBG_EvalOp_ConstU16, loc_reg_u16.offset); - eval_oplist_push_op(arena, &oplist, RADDBG_EvalOp_Add, 0); - eval_oplist_push_op(arena, &oplist, RADDBG_EvalOp_MemRead, bit_size_from_arch(ctx->arch)/8); + U64 regread_param = RADDBGI_EncodeRegReadParam(loc_reg_u16.register_code, byte_size, 0); + eval_oplist_push_op(arena, &oplist, RADDBGI_EvalOp_RegRead, regread_param); + eval_oplist_push_op(arena, &oplist, RADDBGI_EvalOp_ConstU16, loc_reg_u16.offset); + eval_oplist_push_op(arena, &oplist, RADDBGI_EvalOp_Add, 0); + eval_oplist_push_op(arena, &oplist, RADDBGI_EvalOp_MemRead, bit_size_from_arch(ctx->arch)/8); atom = eval_expr_leaf_op_list(arena, token_string.str, type_key, &oplist, EVAL_EvalMode_Addr); }break; - case RADDBG_LocationKind_ValRegister: + case RADDBGI_LocationKind_ValRegister: { - REGS_RegCode regs_reg_code = regs_reg_code_from_arch_raddbg_code(ctx->arch, loc_reg.register_code); + REGS_RegCode regs_reg_code = regs_reg_code_from_arch_raddbgi_code(ctx->arch, loc_reg.register_code); REGS_Rng reg_rng = regs_reg_code_rng_table_from_architecture(ctx->arch)[regs_reg_code]; EVAL_OpList oplist = {0}; U64 byte_size = (U64)reg_rng.byte_size; U64 byte_pos = 0; - U64 regread_param = RADDBG_EncodeRegReadParam(loc_reg.register_code, byte_size, byte_pos); - eval_oplist_push_op(arena, &oplist, RADDBG_EvalOp_RegRead, regread_param); + U64 regread_param = RADDBGI_EncodeRegReadParam(loc_reg.register_code, byte_size, byte_pos); + eval_oplist_push_op(arena, &oplist, RADDBGI_EvalOp_RegRead, regread_param); atom = eval_expr_leaf_op_list(arena, token_string.str, type_key, &oplist, EVAL_EvalMode_Value); }break; } diff --git a/src/eval/eval_parser.h b/src/eval/eval_parser.h index b711da0b..2b1c6fe8 100644 --- a/src/eval/eval_parser.h +++ b/src/eval/eval_parser.h @@ -67,7 +67,7 @@ struct EVAL_ParseCtx { Architecture arch; U64 ip_voff; - RADDBG_Parsed *rdbg; + RADDBGI_Parsed *rdbg; TG_Graph *type_graph; EVAL_String2NumMap *regs_map; EVAL_String2NumMap *reg_alias_map; @@ -85,8 +85,8 @@ global read_only EVAL_ParseResult eval_parse_result_nil = {0, &eval_expr_nil}; //////////////////////////////// //~ rjf: Debug-Info-Driven Map Building Fast Paths -internal EVAL_String2NumMap *eval_push_locals_map_from_raddbg_voff(Arena *arena, RADDBG_Parsed *rdbg, U64 voff); -internal EVAL_String2NumMap *eval_push_member_map_from_raddbg_voff(Arena *arena, RADDBG_Parsed *rdbg, U64 voff); +internal EVAL_String2NumMap *eval_push_locals_map_from_raddbgi_voff(Arena *arena, RADDBGI_Parsed *rdbg, U64 voff); +internal EVAL_String2NumMap *eval_push_member_map_from_raddbgi_voff(Arena *arena, RADDBGI_Parsed *rdbg, U64 voff); //////////////////////////////// //~ rjf: Tokenization Functions @@ -101,7 +101,7 @@ internal EVAL_TokenArray eval_token_array_make_first_opl(EVAL_Token *first, EVAL //////////////////////////////// //~ rjf: Parser Functions -internal TG_Key eval_leaf_type_from_name(RADDBG_Parsed *rdbg, String8 name); +internal TG_Key eval_leaf_type_from_name(RADDBGI_Parsed *rdbg, String8 name); internal EVAL_ParseResult eval_parse_type_from_text_tokens(Arena *arena, EVAL_ParseCtx *ctx, String8 text, EVAL_TokenArray *tokens); internal EVAL_ParseResult eval_parse_expr_from_text_tokens__prec(Arena *arena, EVAL_ParseCtx *ctx, String8 text, EVAL_TokenArray *tokens, S64 max_precedence); internal EVAL_ParseResult eval_parse_expr_from_text_tokens(Arena *arena, EVAL_ParseCtx *ctx, String8 text, EVAL_TokenArray *tokens); diff --git a/src/raddbg_markup/raddbg_markup.h b/src/raddbg_markup/raddbg_markup.h index 66b0fa31..696143b2 100644 --- a/src/raddbg_markup/raddbg_markup.h +++ b/src/raddbg_markup/raddbg_markup.h @@ -1,8 +1,8 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef RADDBG_MARKUP_H -#define RADDBG_MARKUP_H +#ifndef RADDBGI_MARKUP_H +#define RADDBGI_MARKUP_H //////////////////////////////// //~ Usage Macros @@ -75,4 +75,4 @@ raddbg_log__impl(char *fmt, ...) #endif // defined(_WIN32) -#endif // RADDBG_MARKUP_H +#endif // RADDBGI_MARKUP_H diff --git a/src/raddbgi_cons/raddbgi_cons.c b/src/raddbgi_cons/raddbgi_cons.c index 90266a26..a6fa9e37 100644 --- a/src/raddbgi_cons/raddbgi_cons.c +++ b/src/raddbgi_cons/raddbgi_cons.c @@ -4,8 +4,8 @@ //////////////////////////////// //~ rjf: API Implementation Helper Macros -#define cons_require(root, b32, else_code, error_msg) do { if(!(b32)) {cons_error((root), (error_msg));} else { else_code; } }while(0) -#define cons_requiref(root, b32, else_code, fmt, ...) do { if(!(b32)) {cons_errorf((root), (fmt), __VA_ARGS__);} else { else_code; } }while(0) +#define cons_require(root, b32, else_code, error_msg) do { if(!(b32)) {cons_error((root), (error_msg)); else_code;} }while(0) +#define cons_requiref(root, b32, else_code, fmt, ...) do { if(!(b32)) {cons_errorf((root), (fmt), __VA_ARGS__); else_code;} }while(0) //////////////////////////////// //~ rjf: Basic Type Helpers @@ -24,10 +24,10 @@ cons_type_list_push(Arena *arena, CONS_TypeList *list, CONS_Type *type) //- rjf: bytecode lists static void -cons_bytecode_push_op(Arena *arena, CONS_EvalBytecode *bytecode, RADDBG_EvalOp op, U64 p) +cons_bytecode_push_op(Arena *arena, CONS_EvalBytecode *bytecode, RADDBGI_EvalOp op, U64 p) { - U8 ctrlbits = raddbg_eval_opcode_ctrlbits[op]; - U32 p_size = RADDBG_DECODEN_FROM_CTRLBITS(ctrlbits); + U8 ctrlbits = raddbgi_eval_opcode_ctrlbits[op]; + U32 p_size = RADDBGI_DECODEN_FROM_CTRLBITS(ctrlbits); CONS_EvalBytecodeOp *node = push_array(arena, CONS_EvalBytecodeOp, 1); node->op = op; @@ -44,19 +44,19 @@ cons_bytecode_push_uconst(Arena *arena, CONS_EvalBytecode *bytecode, U64 x) { if(x <= 0xFF) { - cons_bytecode_push_op(arena, bytecode, RADDBG_EvalOp_ConstU8, x); + cons_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_ConstU8, x); } else if(x <= 0xFFFF) { - cons_bytecode_push_op(arena, bytecode, RADDBG_EvalOp_ConstU16, x); + cons_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_ConstU16, x); } else if(x <= 0xFFFFFFFF) { - cons_bytecode_push_op(arena, bytecode, RADDBG_EvalOp_ConstU32, x); + cons_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_ConstU32, x); } else { - cons_bytecode_push_op(arena, bytecode, RADDBG_EvalOp_ConstU64, x); + cons_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_ConstU64, x); } } @@ -65,22 +65,22 @@ cons_bytecode_push_sconst(Arena *arena, CONS_EvalBytecode *bytecode, S64 x) { if(-0x80 <= x && x <= 0x7F) { - cons_bytecode_push_op(arena, bytecode, RADDBG_EvalOp_ConstU8, (U64)x); - cons_bytecode_push_op(arena, bytecode, RADDBG_EvalOp_TruncSigned, 8); + cons_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_ConstU8, (U64)x); + cons_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_TruncSigned, 8); } else if(-0x8000 <= x && x <= 0x7FFF) { - cons_bytecode_push_op(arena, bytecode, RADDBG_EvalOp_ConstU16, (U64)x); - cons_bytecode_push_op(arena, bytecode, RADDBG_EvalOp_TruncSigned, 16); + cons_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_ConstU16, (U64)x); + cons_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_TruncSigned, 16); } else if(-0x80000000ll <= x && x <= 0x7FFFFFFFll) { - cons_bytecode_push_op(arena, bytecode, RADDBG_EvalOp_ConstU32, (U64)x); - cons_bytecode_push_op(arena, bytecode, RADDBG_EvalOp_TruncSigned, 32); + cons_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_ConstU32, (U64)x); + cons_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_TruncSigned, 32); } else { - cons_bytecode_push_op(arena, bytecode, RADDBG_EvalOp_ConstU64, (U64)x); + cons_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_ConstU64, (U64)x); } } @@ -387,7 +387,7 @@ cons_root_new(CONS_RootParams *params) { result->nil_type = cons__type_new(result); result->variadic_type = cons__type_new(result); - result->variadic_type->kind = RADDBG_TypeKind_Variadic; + result->variadic_type->kind = RADDBGI_TypeKind_Variadic; // references to "handled nil type" should be emitted as // references to nil - but should not generate error @@ -470,7 +470,7 @@ cons_set_top_level_info(CONS_Root *root, CONS_TopLevelInfo *tli) //- rjf: binary section building static void -cons_add_binary_section(CONS_Root *root, String8 name, RADDBG_BinarySectionFlags flags, U64 voff_first, U64 voff_opl, U64 foff_first, U64 foff_opl) +cons_add_binary_section(CONS_Root *root, String8 name, RADDBGI_BinarySectionFlags flags, U64 voff_first, U64 voff_opl, U64 foff_first, U64 foff_opl) { CONS_BinarySection *sec = push_array(root->arena, CONS_BinarySection, 1); SLLQueuePush(root->binary_section_first, root->binary_section_last, sec); @@ -595,7 +595,7 @@ cons_type_fill_id(CONS_Root *root, CONS_Reservation *res, CONS_Type *type) static B32 cons_type_is_unhandled_nil(CONS_Root *root, CONS_Type *type) { - B32 result = (type->kind == RADDBG_TypeKind_NULL && type != &root->handled_nil_type); + B32 result = (type->kind == RADDBGI_TypeKind_NULL && type != &root->handled_nil_type); return result; } @@ -648,9 +648,9 @@ cons__type_udt_from_any_type(CONS_Root *root, CONS_Type *type) static CONS_TypeUDT* cons__type_udt_from_record_type(CONS_Root *root, CONS_Type *type) { - cons_requiref(root, (type->kind == RADDBG_TypeKind_Struct || - type->kind == RADDBG_TypeKind_Class || - type->kind == RADDBG_TypeKind_Union), + cons_requiref(root, (type->kind == RADDBGI_TypeKind_Struct || + type->kind == RADDBGI_TypeKind_Class || + type->kind == RADDBGI_TypeKind_Union), return 0, "Tried to use non-user-defined-type-kind to create user-defined-type."); CONS_TypeUDT *result = 0; @@ -661,9 +661,9 @@ cons__type_udt_from_record_type(CONS_Root *root, CONS_Type *type) //- rjf: basic/operator type construction helpers static CONS_Type* -cons_type_basic(CONS_Root *root, RADDBG_TypeKind type_kind, String8 name) +cons_type_basic(CONS_Root *root, RADDBGI_TypeKind type_kind, String8 name) { - cons_requiref(root, (RADDBG_TypeKind_FirstBuiltIn <= type_kind && type_kind <= RADDBG_TypeKind_LastBuiltIn), return root->nil_type, "Non-basic type kind passed to construct basic type."); + cons_requiref(root, (RADDBGI_TypeKind_FirstBuiltIn <= type_kind && type_kind <= RADDBGI_TypeKind_LastBuiltIn), return root->nil_type, "Non-basic type kind passed to construct basic type."); CONS_Type *result = root->nil_type; Temp scratch = scratch_begin(0, 0); @@ -685,13 +685,13 @@ cons_type_basic(CONS_Root *root, RADDBG_TypeKind type_kind, String8 name) // check for duplicate construct String8 blob = str8(buf, buf_size); - U64 blob_hash = raddbg_hash(buf, buf_size); + U64 blob_hash = raddbgi_hash(buf, buf_size); void *lookup_ptr = cons__str8toptr_lookup(&root->construct_map, blob, blob_hash); result = (CONS_Type*)lookup_ptr; if(result == 0) { // calculate size - U32 byte_size = raddbg_size_from_basic_type_kind(type_kind); + U32 byte_size = raddbgi_size_from_basic_type_kind(type_kind); if(byte_size == 0xFFFFFFFF) { byte_size = root->addr_size; @@ -708,7 +708,7 @@ cons_type_basic(CONS_Root *root, RADDBG_TypeKind type_kind, String8 name) // save in name map { - CONS__NameMap *map = cons__name_map_for_kind(root, RADDBG_NameMapKind_Types); + CONS__NameMap *map = cons__name_map_for_kind(root, RADDBGI_NameMapKind_Types); cons__name_map_add_pair(root, map, result->name, result->idx); } } @@ -719,7 +719,7 @@ cons_type_basic(CONS_Root *root, RADDBG_TypeKind type_kind, String8 name) } static CONS_Type* -cons_type_modifier(CONS_Root *root, CONS_Type *direct_type, RADDBG_TypeModifierFlags flags) +cons_type_modifier(CONS_Root *root, CONS_Type *direct_type, RADDBGI_TypeModifierFlags flags) { CONS_Type *result = root->nil_type; Temp scratch = scratch_begin(0, 0); @@ -742,14 +742,14 @@ cons_type_modifier(CONS_Root *root, CONS_Type *direct_type, RADDBG_TypeModifierF // check for duplicate construct String8 blob = str8(buf, buf_size); - U64 blob_hash = raddbg_hash(buf, buf_size); + U64 blob_hash = raddbgi_hash(buf, buf_size); void *lookup_ptr = cons__str8toptr_lookup(&root->construct_map, blob, blob_hash); result = (CONS_Type*)lookup_ptr; if(result == 0){ // setup new node result = cons__type_new(root); - result->kind = RADDBG_TypeKind_Modifier; + result->kind = RADDBGI_TypeKind_Modifier; result->flags = flags; result->byte_size = direct_type->byte_size; result->direct_type = direct_type; @@ -790,14 +790,14 @@ cons_type_bitfield(CONS_Root *root, CONS_Type *direct_type, U32 bit_off, U32 bit // check for duplicate construct String8 blob = str8(buf, buf_size); - U64 blob_hash = raddbg_hash(buf, buf_size); + U64 blob_hash = raddbgi_hash(buf, buf_size); void *lookup_ptr = cons__str8toptr_lookup(&root->construct_map, blob, blob_hash); result = (CONS_Type*)lookup_ptr; if(result == 0) { // setup new node result = cons__type_new(root); - result->kind = RADDBG_TypeKind_Bitfield; + result->kind = RADDBGI_TypeKind_Bitfield; result->byte_size = direct_type->byte_size; result->off = bit_off; result->count = bit_count; @@ -813,11 +813,11 @@ cons_type_bitfield(CONS_Root *root, CONS_Type *direct_type, U32 bit_off, U32 bit } static CONS_Type* -cons_type_pointer(CONS_Root *root, CONS_Type *direct_type, RADDBG_TypeKind ptr_type_kind) +cons_type_pointer(CONS_Root *root, CONS_Type *direct_type, RADDBGI_TypeKind ptr_type_kind) { - cons_requiref(root, (ptr_type_kind == RADDBG_TypeKind_Ptr || - ptr_type_kind == RADDBG_TypeKind_LRef || - ptr_type_kind == RADDBG_TypeKind_RRef), + cons_requiref(root, (ptr_type_kind == RADDBGI_TypeKind_Ptr || + ptr_type_kind == RADDBGI_TypeKind_LRef || + ptr_type_kind == RADDBGI_TypeKind_RRef), return root->nil_type, "Non-pointer type kind used to construct pointer type."); CONS_Type *result = root->nil_type; @@ -841,7 +841,7 @@ cons_type_pointer(CONS_Root *root, CONS_Type *direct_type, RADDBG_TypeKind ptr_t // check for duplicate construct String8 blob = str8(buf, buf_size); - U64 blob_hash = raddbg_hash(buf, buf_size); + U64 blob_hash = raddbgi_hash(buf, buf_size); void *lookup_ptr = cons__str8toptr_lookup(&root->construct_map, blob, blob_hash); result = (CONS_Type*)lookup_ptr; if(result == 0) @@ -886,14 +886,14 @@ cons_type_array(CONS_Root *root, CONS_Type *direct_type, U64 count) // check for duplicate construct String8 blob = str8(buf, buf_size); - U64 blob_hash = raddbg_hash(buf, buf_size); + U64 blob_hash = raddbgi_hash(buf, buf_size); void *lookup_ptr = cons__str8toptr_lookup(&root->construct_map, blob, blob_hash); result = (CONS_Type*)lookup_ptr; if(result == 0) { // setup new node result = cons__type_new(root); - result->kind = RADDBG_TypeKind_Array; + result->kind = RADDBGI_TypeKind_Array; result->count = count; result->direct_type = direct_type; result->byte_size = direct_type->byte_size*count; @@ -936,7 +936,7 @@ cons_type_proc(CONS_Root *root, CONS_Type *return_type, struct CONS_TypeList *pa // check for duplicate construct String8 blob = str8(buf, buf_size); - U64 blob_hash = raddbg_hash(buf, buf_size); + U64 blob_hash = raddbgi_hash(buf, buf_size); void *lookup_ptr = cons__str8toptr_lookup(&root->construct_map, blob, blob_hash); result = (CONS_Type*)lookup_ptr; if(result == 0) @@ -956,7 +956,7 @@ cons_type_proc(CONS_Root *root, CONS_Type *return_type, struct CONS_TypeList *pa // setup new node result = cons__type_new(root); - result->kind = RADDBG_TypeKind_Function; + result->kind = RADDBGI_TypeKind_Function; result->byte_size = root->addr_size; result->count = params->count; result->direct_type = return_type; @@ -1004,7 +1004,7 @@ cons_type_method(CONS_Root *root, CONS_Type *this_type, CONS_Type *return_type, // check for duplicate construct String8 blob = str8(buf, buf_size); - U64 blob_hash = raddbg_hash(buf, buf_size); + U64 blob_hash = raddbgi_hash(buf, buf_size); void *lookup_ptr = cons__str8toptr_lookup(&root->construct_map, blob, blob_hash); result = (CONS_Type*)lookup_ptr; if(result == 0) @@ -1028,7 +1028,7 @@ cons_type_method(CONS_Root *root, CONS_Type *this_type, CONS_Type *return_type, // setup new node result = cons__type_new(root); - result->kind = RADDBG_TypeKind_Method; + result->kind = RADDBGI_TypeKind_Method; result->byte_size = root->addr_size; result->count = params->count; result->direct_type = return_type; @@ -1046,11 +1046,11 @@ cons_type_method(CONS_Root *root, CONS_Type *this_type, CONS_Type *return_type, //- rjf: udt type constructors static CONS_Type* -cons_type_udt(CONS_Root *root, RADDBG_TypeKind record_type_kind, String8 name, U64 size) +cons_type_udt(CONS_Root *root, RADDBGI_TypeKind record_type_kind, String8 name, U64 size) { - cons_requiref(root, (record_type_kind == RADDBG_TypeKind_Struct || - record_type_kind == RADDBG_TypeKind_Class || - record_type_kind == RADDBG_TypeKind_Union), + cons_requiref(root, (record_type_kind == RADDBGI_TypeKind_Struct || + record_type_kind == RADDBGI_TypeKind_Class || + record_type_kind == RADDBGI_TypeKind_Union), return root->nil_type, "Non-user-defined-type-kind used to create user-defined type."); @@ -1062,7 +1062,7 @@ cons_type_udt(CONS_Root *root, RADDBG_TypeKind record_type_kind, String8 name, U // rjf: save in name map { - CONS__NameMap *map = cons__name_map_for_kind(root, RADDBG_NameMapKind_Types); + CONS__NameMap *map = cons__name_map_for_kind(root, RADDBGI_NameMapKind_Types); cons__name_map_add_pair(root, map, result->name, result->idx); } @@ -1074,14 +1074,14 @@ cons_type_enum(CONS_Root *root, CONS_Type *direct_type, String8 name) { // rjf: make type CONS_Type *result = cons__type_new(root); - result->kind = RADDBG_TypeKind_Enum; + result->kind = RADDBGI_TypeKind_Enum; result->byte_size = direct_type->byte_size; result->name = push_str8_copy(root->arena, name); result->direct_type = direct_type; // rjf: save in name map { - CONS__NameMap *map = cons__name_map_for_kind(root, RADDBG_NameMapKind_Types); + CONS__NameMap *map = cons__name_map_for_kind(root, RADDBGI_NameMapKind_Types); cons__name_map_add_pair(root, map, result->name, result->idx); } @@ -1093,14 +1093,14 @@ cons_type_alias(CONS_Root *root, CONS_Type *direct_type, String8 name) { // rjf: make type CONS_Type *result = cons__type_new(root); - result->kind = RADDBG_TypeKind_Alias; + result->kind = RADDBGI_TypeKind_Alias; result->byte_size = direct_type->byte_size; result->name = push_str8_copy(root->arena, name); result->direct_type = direct_type; // rjf: save in name map { - CONS__NameMap *map = cons__name_map_for_kind(root, RADDBG_NameMapKind_Types); + CONS__NameMap *map = cons__name_map_for_kind(root, RADDBGI_NameMapKind_Types); cons__name_map_add_pair(root, map, result->name, result->idx); } @@ -1108,12 +1108,12 @@ cons_type_alias(CONS_Root *root, CONS_Type *direct_type, String8 name) } static CONS_Type* -cons_type_incomplete(CONS_Root *root, RADDBG_TypeKind type_kind, String8 name) +cons_type_incomplete(CONS_Root *root, RADDBGI_TypeKind type_kind, String8 name) { - cons_requiref(root, (type_kind == RADDBG_TypeKind_IncompleteStruct || - type_kind == RADDBG_TypeKind_IncompleteClass || - type_kind == RADDBG_TypeKind_IncompleteUnion || - type_kind == RADDBG_TypeKind_IncompleteEnum), + cons_requiref(root, (type_kind == RADDBGI_TypeKind_IncompleteStruct || + type_kind == RADDBGI_TypeKind_IncompleteClass || + type_kind == RADDBGI_TypeKind_IncompleteUnion || + type_kind == RADDBGI_TypeKind_IncompleteEnum), return root->nil_type, "Non-incomplete-type-kind used to create incomplete type."); @@ -1124,7 +1124,7 @@ cons_type_incomplete(CONS_Root *root, RADDBG_TypeKind type_kind, String8 name) // save in name map { - CONS__NameMap *map = cons__name_map_for_kind(root, RADDBG_NameMapKind_Types); + CONS__NameMap *map = cons__name_map_for_kind(root, RADDBGI_NameMapKind_Types); cons__name_map_add_pair(root, map, result->name, result->idx); } @@ -1143,7 +1143,7 @@ cons_type_add_member_data_field(CONS_Root *root, CONS_Type *record_type, String8 SLLQueuePush(udt->first_member, udt->last_member, member); udt->member_count += 1; root->total_member_count += 1; - member->kind = RADDBG_MemberKind_DataField; + member->kind = RADDBGI_MemberKind_DataField; member->name = push_str8_copy(root->arena, name); member->type = mem_type; member->off = off; @@ -1160,7 +1160,7 @@ cons_type_add_member_static_data(CONS_Root *root, CONS_Type *record_type, String SLLQueuePush(udt->first_member, udt->last_member, member); udt->member_count += 1; root->total_member_count += 1; - member->kind = RADDBG_MemberKind_StaticData; + member->kind = RADDBGI_MemberKind_StaticData; member->name = push_str8_copy(root->arena, name); member->type = mem_type; } @@ -1176,7 +1176,7 @@ cons_type_add_member_method(CONS_Root *root, CONS_Type *record_type, String8 nam SLLQueuePush(udt->first_member, udt->last_member, member); udt->member_count += 1; root->total_member_count += 1; - member->kind = RADDBG_MemberKind_Method; + member->kind = RADDBGI_MemberKind_Method; member->name = push_str8_copy(root->arena, name); member->type = mem_type; } @@ -1194,7 +1194,7 @@ cons_type_add_member_static_method(CONS_Root *root, CONS_Type *record_type, Stri root->total_member_count += 1; - member->kind = RADDBG_MemberKind_StaticMethod; + member->kind = RADDBGI_MemberKind_StaticMethod; member->name = push_str8_copy(root->arena, name); member->type = mem_type; } @@ -1210,7 +1210,7 @@ cons_type_add_member_virtual_method(CONS_Root *root, CONS_Type *record_type, Str SLLQueuePush(udt->first_member, udt->last_member, member); udt->member_count += 1; root->total_member_count += 1; - member->kind = RADDBG_MemberKind_VirtualMethod; + member->kind = RADDBGI_MemberKind_VirtualMethod; member->name = push_str8_copy(root->arena, name); member->type = mem_type; } @@ -1226,7 +1226,7 @@ cons_type_add_member_base(CONS_Root *root, CONS_Type *record_type, CONS_Type *ba SLLQueuePush(udt->first_member, udt->last_member, member); udt->member_count += 1; root->total_member_count += 1; - member->kind = RADDBG_MemberKind_Base; + member->kind = RADDBGI_MemberKind_Base; member->type = base_type; member->off = off; } @@ -1242,7 +1242,7 @@ cons_type_add_member_virtual_base(CONS_Root *root, CONS_Type *record_type, CONS_ SLLQueuePush(udt->first_member, udt->last_member, member); udt->member_count += 1; root->total_member_count += 1; - member->kind = RADDBG_MemberKind_VirtualBase; + member->kind = RADDBGI_MemberKind_VirtualBase; member->type = base_type; // TODO(allen): what to do with the two offsets in this case? } @@ -1258,7 +1258,7 @@ cons_type_add_member_nested_type(CONS_Root *root, CONS_Type *record_type, CONS_T SLLQueuePush(udt->first_member, udt->last_member, member); udt->member_count += 1; root->total_member_count += 1; - member->kind = RADDBG_MemberKind_NestedType; + member->kind = RADDBGI_MemberKind_NestedType; member->type = nested_type; } } @@ -1266,7 +1266,7 @@ cons_type_add_member_nested_type(CONS_Root *root, CONS_Type *record_type, CONS_T static void cons_type_add_enum_val(CONS_Root *root, CONS_Type *enum_type, String8 name, U64 val) { - cons_requiref(root, (enum_type->kind == RADDBG_TypeKind_Enum), return, "Tried to add enum value to non-enum type."); + cons_requiref(root, (enum_type->kind == RADDBGI_TypeKind_Enum), return, "Tried to add enum value to non-enum type."); CONS_TypeUDT *udt = cons__type_udt_from_any_type(root, enum_type); if(udt != 0) { @@ -1283,7 +1283,7 @@ cons_type_add_enum_val(CONS_Root *root, CONS_Type *enum_type, String8 name, U64 static void cons_type_set_source_coordinates(CONS_Root *root, CONS_Type *defined_type, String8 source_path, U32 line, U32 col) { - cons_requiref(root, (RADDBG_TypeKind_FirstUserDefined <= defined_type->kind && defined_type->kind <= RADDBG_TypeKind_LastUserDefined), + cons_requiref(root, (RADDBGI_TypeKind_FirstUserDefined <= defined_type->kind && defined_type->kind <= RADDBGI_TypeKind_LastUserDefined), return, "Tried to add source coordinates to non-user-defined type."); CONS_TypeUDT *udt = cons__type_udt_from_any_type(root, defined_type); if(udt != 0) @@ -1367,15 +1367,15 @@ cons_symbol_set_info(CONS_Root *root, CONS_Symbol *symbol, CONS_SymbolInfo *info default:{}break; case CONS_SymbolKind_GlobalVariable: { - map = cons__name_map_for_kind(root, RADDBG_NameMapKind_GlobalVariables); + map = cons__name_map_for_kind(root, RADDBGI_NameMapKind_GlobalVariables); }break; case CONS_SymbolKind_ThreadVariable: { - map = cons__name_map_for_kind(root, RADDBG_NameMapKind_ThreadVariables); + map = cons__name_map_for_kind(root, RADDBGI_NameMapKind_ThreadVariables); }break; case CONS_SymbolKind_Procedure: { - map = cons__name_map_for_kind(root, RADDBG_NameMapKind_Procedures); + map = cons__name_map_for_kind(root, RADDBGI_NameMapKind_Procedures); }break; } if(map != 0) @@ -1387,7 +1387,7 @@ cons_symbol_set_info(CONS_Root *root, CONS_Symbol *symbol, CONS_SymbolInfo *info // save link name map if(kind == CONS_SymbolKind_Procedure && symbol->link_name.size > 0) { - CONS__NameMap *map = cons__name_map_for_kind(root, RADDBG_NameMapKind_LinkNameProcedures); + CONS__NameMap *map = cons__name_map_for_kind(root, RADDBGI_NameMapKind_LinkNameProcedures); cons__name_map_add_pair(root, map, symbol->link_name, symbol->idx); } } @@ -1472,9 +1472,9 @@ cons_local_handle_from_user_id(CONS_Root *root, U64 local_user_id, U64 local_use static void cons_local_set_basic_info(CONS_Root *root, CONS_Local *local, CONS_LocalInfo *info) { - cons_requiref(root, local->kind == RADDBG_LocalKind_NULL, return, "Local information set multiple times."); + cons_requiref(root, local->kind == RADDBGI_LocalKind_NULL, return, "Local information set multiple times."); cons_requiref(root, info->scope != 0, return, "Tried to set invalid scope as local's containing scope."); - cons_requiref(root, RADDBG_LocalKind_NULL < info->kind && info->kind < RADDBG_LocalKind_COUNT, return, "Invalid local kind."); + cons_requiref(root, RADDBGI_LocalKind_NULL < info->kind && info->kind < RADDBGI_LocalKind_COUNT, return, "Invalid local kind."); cons_requiref(root, info->type != 0, return, "Tried to set invalid type as local's type."); CONS_Scope *scope = info->scope; SLLQueuePush(scope->first_local, scope->last_local, local); @@ -1515,7 +1515,7 @@ static CONS_Location* cons_location_addr_bytecode_stream(CONS_Root *root, struct CONS_EvalBytecode *bytecode) { CONS_Location *result = push_array(root->arena, CONS_Location, 1); - result->kind = RADDBG_LocationKind_AddrBytecodeStream; + result->kind = RADDBGI_LocationKind_AddrBytecodeStream; result->bytecode = *bytecode; return result; } @@ -1524,7 +1524,7 @@ static CONS_Location* cons_location_val_bytecode_stream(CONS_Root *root, struct CONS_EvalBytecode *bytecode) { CONS_Location *result = push_array(root->arena, CONS_Location, 1); - result->kind = RADDBG_LocationKind_ValBytecodeStream; + result->kind = RADDBGI_LocationKind_ValBytecodeStream; result->bytecode = *bytecode; return result; } @@ -1533,7 +1533,7 @@ static CONS_Location* cons_location_addr_reg_plus_u16(CONS_Root *root, U8 reg_code, U16 offset) { CONS_Location *result = push_array(root->arena, CONS_Location, 1); - result->kind = RADDBG_LocationKind_AddrRegisterPlusU16; + result->kind = RADDBGI_LocationKind_AddrRegisterPlusU16; result->register_code = reg_code; result->offset = offset; return result; @@ -1543,7 +1543,7 @@ static CONS_Location* cons_location_addr_addr_reg_plus_u16(CONS_Root *root, U8 reg_code, U16 offset) { CONS_Location *result = push_array(root->arena, CONS_Location, 1); - result->kind = RADDBG_LocationKind_AddrAddrRegisterPlusU16; + result->kind = RADDBGI_LocationKind_AddrAddrRegisterPlusU16; result->register_code = reg_code; result->offset = offset; return result; @@ -1553,7 +1553,7 @@ static CONS_Location* cons_location_val_reg(CONS_Root *root, U8 reg_code) { CONS_Location *result = push_array(root->arena, CONS_Location, 1); - result->kind = RADDBG_LocationKind_ValRegister; + result->kind = RADDBGI_LocationKind_ValRegister; result->register_code = reg_code; return result; } @@ -1561,10 +1561,10 @@ cons_location_val_reg(CONS_Root *root, U8 reg_code) //- rjf: name map building static CONS__NameMap* -cons__name_map_for_kind(CONS_Root *root, RADDBG_NameMapKind kind) +cons__name_map_for_kind(CONS_Root *root, RADDBGI_NameMapKind kind) { CONS__NameMap *result = 0; - if(kind < RADDBG_NameMapKind_COUNT) + if(kind < RADDBGI_NameMapKind_COUNT) { if(root->name_maps[kind] == 0) { @@ -1581,7 +1581,7 @@ static void cons__name_map_add_pair(CONS_Root *root, CONS__NameMap *map, String8 string, U32 idx) { // hash - U64 hash = raddbg_hash(string.str, string.size); + U64 hash = raddbgi_hash(string.str, string.size); U64 bucket_idx = hash%map->buckets_count; // find existing name node @@ -1691,7 +1691,7 @@ cons__string(CONS__BakeCtx *bctx, String8 str) { Arena *arena = bctx->arena; CONS__Strings *strs = &bctx->strs; - U64 hash = raddbg_hash(str.str, str.size); + U64 hash = raddbgi_hash(str.str, str.size); U64 bucket_idx = hash%strs->buckets_count; // look for a match @@ -1807,7 +1807,7 @@ cons__idx_run(CONS__BakeCtx *bctx, U32 *idx_run, U32 count) //- rjf: data section baking static U32 -cons__dsection(Arena *arena, CONS__DSections *dss, void *data, U64 size, RADDBG_DataSectionTag tag) +cons__dsection(Arena *arena, CONS__DSections *dss, void *data, U64 size, RADDBGI_DataSectionTag tag) { U32 result = dss->count; CONS__DSectionNode *node = push_array(arena, CONS__DSectionNode, 1); @@ -2034,7 +2034,7 @@ cons__unit_combine_lines(Arena *arena, CONS__BakeCtx *bctx, CONS_LineSequenceNod // arrange output U64 *arranged_voffs = push_array_no_zero(arena, U64, key_count + 1); - RADDBG_Line *arranged_lines = push_array_no_zero(arena, RADDBG_Line, key_count); + RADDBGI_Line *arranged_lines = push_array_no_zero(arena, RADDBGI_Line, key_count); for(U64 i = 0; i < key_count; i += 1){ arranged_voffs[i] = sorted_line_keys[i].key; @@ -2200,11 +2200,11 @@ cons__vmap_from_markers(Arena *arena, CONS__VMapMarker *markers, CONS__SortKey * // fill output vmap entries U32 vmap_count_raw = marker_count - 1 + extra_vmap_entry; - RADDBG_VMapEntry *vmap = push_array_no_zero(arena, RADDBG_VMapEntry, vmap_count_raw + 1); + RADDBGI_VMapEntry *vmap = push_array_no_zero(arena, RADDBGI_VMapEntry, vmap_count_raw + 1); U32 vmap_entry_count_pass_1 = 0; { - RADDBG_VMapEntry *vmap_ptr = vmap; + RADDBGI_VMapEntry *vmap_ptr = vmap; if(extra_vmap_entry){ vmap_ptr->voff = 0; @@ -2289,7 +2289,7 @@ cons__vmap_from_markers(Arena *arena, CONS__VMapMarker *markers, CONS__SortKey * // (the last entry is not replaced because it acts as a terminator) U32 last = vmap_entry_count_pass_1 - 1; - RADDBG_VMapEntry *vmap_ptr = vmap; + RADDBGI_VMapEntry *vmap_ptr = vmap; U64 real_idx = 0; for(U32 i = 0; i < last; i += 1, vmap_ptr += 1){ @@ -2308,12 +2308,12 @@ cons__vmap_from_markers(Arena *arena, CONS__VMapMarker *markers, CONS__SortKey * // combine duplicate neighbors U32 vmap_entry_count = 0; { - RADDBG_VMapEntry *vmap_ptr = vmap; - RADDBG_VMapEntry *vmap_opl = vmap + vmap_entry_count_pass_1; - RADDBG_VMapEntry *vmap_out = vmap; + RADDBGI_VMapEntry *vmap_ptr = vmap; + RADDBGI_VMapEntry *vmap_opl = vmap + vmap_entry_count_pass_1; + RADDBGI_VMapEntry *vmap_out = vmap; for(;vmap_ptr < vmap_opl;){ - RADDBG_VMapEntry *vmap_range_first = vmap_ptr; + RADDBGI_VMapEntry *vmap_range_first = vmap_ptr; U64 idx = vmap_ptr->idx; vmap_ptr += 1; for(;vmap_ptr < vmap_opl && vmap_ptr->idx == idx;) vmap_ptr += 1; @@ -2398,16 +2398,16 @@ cons__type_data_combine(Arena *arena, CONS_Root *root, CONS__BakeCtx *bctx) // fill type nodes U32 type_count = root->type_count; - RADDBG_TypeNode *type_nodes = push_array_no_zero(arena, RADDBG_TypeNode, type_count); + RADDBGI_TypeNode *type_nodes = push_array_no_zero(arena, RADDBGI_TypeNode, type_count); { - RADDBG_TypeNode *ptr = type_nodes; - RADDBG_TypeNode *opl = ptr + type_count; + RADDBGI_TypeNode *ptr = type_nodes; + RADDBGI_TypeNode *opl = ptr + type_count; CONS_Type *loose_type = root->first_type; for(;loose_type != 0 && ptr < opl; loose_type = loose_type->next_order, ptr += 1){ - RADDBG_TypeKind kind = loose_type->kind; + RADDBGI_TypeKind kind = loose_type->kind; // shared ptr->kind = kind; @@ -2415,21 +2415,21 @@ cons__type_data_combine(Arena *arena, CONS_Root *root, CONS__BakeCtx *bctx) ptr->byte_size = loose_type->byte_size; // built-in - if(RADDBG_TypeKind_FirstBuiltIn <= kind && kind <= RADDBG_TypeKind_LastBuiltIn){ + if(RADDBGI_TypeKind_FirstBuiltIn <= kind && kind <= RADDBGI_TypeKind_LastBuiltIn){ ptr->built_in.name_string_idx = cons__string(bctx, loose_type->name); } // constructed - else if(RADDBG_TypeKind_FirstConstructed <= kind && kind <= RADDBG_TypeKind_LastConstructed){ + else if(RADDBGI_TypeKind_FirstConstructed <= kind && kind <= RADDBGI_TypeKind_LastConstructed){ ptr->constructed.direct_type_idx = loose_type->direct_type->idx; switch (kind){ - case RADDBG_TypeKind_Array: + case RADDBGI_TypeKind_Array: { ptr->constructed.count = loose_type->count; }break; - case RADDBG_TypeKind_Function: + case RADDBGI_TypeKind_Function: { // parameters U32 count = loose_type->count; @@ -2438,7 +2438,7 @@ cons__type_data_combine(Arena *arena, CONS_Root *root, CONS__BakeCtx *bctx) ptr->constructed.count = count; }break; - case RADDBG_TypeKind_Method: + case RADDBGI_TypeKind_Method: { // parameters U32 count = loose_type->count; @@ -2450,7 +2450,7 @@ cons__type_data_combine(Arena *arena, CONS_Root *root, CONS__BakeCtx *bctx) } // user-defined - else if(RADDBG_TypeKind_FirstUserDefined <= kind && kind <= RADDBG_TypeKind_LastUserDefined){ + else if(RADDBGI_TypeKind_FirstUserDefined <= kind && kind <= RADDBGI_TypeKind_LastUserDefined){ ptr->user_defined.name_string_idx = cons__string(bctx, loose_type->name); if(loose_type->udt != 0){ ptr->user_defined.udt_idx = loose_type->udt->idx; @@ -2461,7 +2461,7 @@ cons__type_data_combine(Arena *arena, CONS_Root *root, CONS__BakeCtx *bctx) } // bitfield - else if(kind == RADDBG_TypeKind_Bitfield){ + else if(kind == RADDBGI_TypeKind_Bitfield){ ptr->bitfield.off = loose_type->off; ptr->bitfield.size = loose_type->count; } @@ -2477,23 +2477,23 @@ cons__type_data_combine(Arena *arena, CONS_Root *root, CONS__BakeCtx *bctx) // fill udts U32 udt_count = root->type_udt_count; - RADDBG_UDT *udts = push_array_no_zero(arena, RADDBG_UDT, udt_count); + RADDBGI_UDT *udts = push_array_no_zero(arena, RADDBGI_UDT, udt_count); U32 member_count = root->total_member_count; - RADDBG_Member *members = push_array_no_zero(arena, RADDBG_Member, member_count); + RADDBGI_Member *members = push_array_no_zero(arena, RADDBGI_Member, member_count); U32 enum_member_count = root->total_enum_val_count; - RADDBG_EnumMember *enum_members = push_array_no_zero(arena, RADDBG_EnumMember, enum_member_count); + RADDBGI_EnumMember *enum_members = push_array_no_zero(arena, RADDBGI_EnumMember, enum_member_count); { - RADDBG_UDT *ptr = udts; - RADDBG_UDT *opl = ptr + udt_count; + RADDBGI_UDT *ptr = udts; + RADDBGI_UDT *opl = ptr + udt_count; - RADDBG_Member *member_ptr = members; - RADDBG_Member *member_opl = members + member_count; + RADDBGI_Member *member_ptr = members; + RADDBGI_Member *member_opl = members + member_count; - RADDBG_EnumMember *enum_member_ptr = enum_members; - RADDBG_EnumMember *enum_member_opl = enum_members + enum_member_count; + RADDBGI_EnumMember *enum_member_ptr = enum_members; + RADDBGI_EnumMember *enum_member_opl = enum_members + enum_member_count; CONS_TypeUDT *loose_udt = root->first_udt; for(;loose_udt != 0 && ptr < opl; @@ -2505,7 +2505,7 @@ cons__type_data_combine(Arena *arena, CONS_Root *root, CONS__BakeCtx *bctx) // enum members if(loose_udt->enum_val_count != 0){ - ptr->flags |= RADDBG_UserDefinedTypeFlag_EnumMembers; + ptr->flags |= RADDBGI_UserDefinedTypeFlag_EnumMembers; ptr->member_first = (U32)(enum_member_ptr - enum_members); ptr->member_count = loose_udt->enum_val_count; @@ -2537,7 +2537,7 @@ cons__type_data_combine(Arena *arena, CONS_Root *root, CONS__BakeCtx *bctx) member_ptr->type_idx = loose_member->type->idx; // TODO(allen): - if(loose_member->kind == RADDBG_MemberKind_Method){ + if(loose_member->kind == RADDBGI_MemberKind_Method){ //loose_member_ptr->unit_idx = ; //loose_member_ptr->proc_symbol_idx = ; } @@ -2595,19 +2595,19 @@ cons__symbol_data_combine(Arena *arena, CONS_Root *root, CONS__BakeCtx *bctx) U32 procedure_count = 1 + root->symbol_kind_counts[CONS_SymbolKind_Procedure]; // allocate symbol arrays - RADDBG_GlobalVariable *global_variables = - push_array(arena, RADDBG_GlobalVariable, globalvar_count); + RADDBGI_GlobalVariable *global_variables = + push_array(arena, RADDBGI_GlobalVariable, globalvar_count); - RADDBG_ThreadVariable *thread_variables = - push_array(arena, RADDBG_ThreadVariable, threadvar_count); + RADDBGI_ThreadVariable *thread_variables = + push_array(arena, RADDBGI_ThreadVariable, threadvar_count); - RADDBG_Procedure *procedures = push_array(arena, RADDBG_Procedure, procedure_count); + RADDBGI_Procedure *procedures = push_array(arena, RADDBGI_Procedure, procedure_count); // fill symbol arrays { - RADDBG_GlobalVariable *global_ptr = global_variables; - RADDBG_ThreadVariable *thread_local_ptr = thread_variables; - RADDBG_Procedure *procedure_ptr = procedures; + RADDBGI_GlobalVariable *global_ptr = global_variables; + RADDBGI_ThreadVariable *thread_local_ptr = thread_variables; + RADDBGI_Procedure *procedure_ptr = procedures; // nils global_ptr += 1; @@ -2622,19 +2622,19 @@ cons__symbol_data_combine(Arena *arena, CONS_Root *root, CONS__BakeCtx *bctx) U32 link_name_string_idx = cons__string(bctx, node->link_name); U32 type_idx = node->type->idx; - RADDBG_LinkFlags link_flags = 0; + RADDBGI_LinkFlags link_flags = 0; U32 container_idx = 0; { if(node->is_extern){ - link_flags |= RADDBG_LinkFlag_External; + link_flags |= RADDBGI_LinkFlag_External; } if(node->container_symbol != 0){ container_idx = node->container_symbol->idx; - link_flags |= RADDBG_LinkFlag_ProcScoped; + link_flags |= RADDBGI_LinkFlag_ProcScoped; } else if(node->container_type != 0 && node->container_type->udt != 0){ container_idx = node->container_type->udt->idx; - link_flags |= RADDBG_LinkFlag_TypeScoped; + link_flags |= RADDBGI_LinkFlag_TypeScoped; } } @@ -2758,27 +2758,27 @@ cons__symbol_data_combine(Arena *arena, CONS_Root *root, CONS__BakeCtx *bctx) root->first_scope->range_count == 0); U32 scope_count = root->scope_count; - RADDBG_Scope *scopes = push_array(arena, RADDBG_Scope, scope_count); + RADDBGI_Scope *scopes = push_array(arena, RADDBGI_Scope, scope_count); U32 scope_voff_count = root->scope_voff_count; U64 *scope_voffs = push_array(arena, U64, scope_voff_count); U32 local_count = root->local_count; - RADDBG_Local *locals = push_array(arena, RADDBG_Local, local_count); + RADDBGI_Local *locals = push_array(arena, RADDBGI_Local, local_count); U32 location_block_count = root->location_count; - RADDBG_LocationBlock *location_blocks = - push_array(arena, RADDBG_LocationBlock, location_block_count); + RADDBGI_LocationBlock *location_blocks = + push_array(arena, RADDBGI_LocationBlock, location_block_count); String8List location_data = {0}; // iterate scopes, locals, and locations // fill scope voffs, locals, and location information { - RADDBG_Scope *scope_ptr = scopes; + RADDBGI_Scope *scope_ptr = scopes; U64 *scope_voff_ptr = scope_voffs; - RADDBG_Local *local_ptr = locals; - RADDBG_LocationBlock *location_block_ptr = location_blocks; + RADDBGI_Local *local_ptr = locals; + RADDBGI_LocationBlock *location_block_ptr = location_blocks; for(CONS_Scope *node = root->first_scope; node != 0; @@ -2836,8 +2836,8 @@ cons__symbol_data_combine(Arena *arena, CONS_Root *root, CONS__BakeCtx *bctx) str8_serial_push_data(scratch.arena, &location_data, &data, 1); }break; - case RADDBG_LocationKind_AddrBytecodeStream: - case RADDBG_LocationKind_ValBytecodeStream: + case RADDBGI_LocationKind_AddrBytecodeStream: + case RADDBGI_LocationKind_ValBytecodeStream: { str8_list_push(scratch.arena, &location_data, push_str8_copy(scratch.arena, str8_struct(&location->kind))); for(CONS_EvalBytecodeOp *op_node = location->bytecode.first_op; @@ -2856,19 +2856,19 @@ cons__symbol_data_combine(Arena *arena, CONS_Root *root, CONS__BakeCtx *bctx) } }break; - case RADDBG_LocationKind_AddrRegisterPlusU16: - case RADDBG_LocationKind_AddrAddrRegisterPlusU16: + case RADDBGI_LocationKind_AddrRegisterPlusU16: + case RADDBGI_LocationKind_AddrAddrRegisterPlusU16: { - RADDBG_LocationRegisterPlusU16 loc = {0}; + RADDBGI_LocationRegisterPlusU16 loc = {0}; loc.kind = location->kind; loc.register_code = location->register_code; loc.offset = location->offset; str8_list_push(scratch.arena, &location_data, push_str8_copy(scratch.arena, str8_struct(&loc))); }break; - case RADDBG_LocationKind_ValRegister: + case RADDBGI_LocationKind_ValRegister: { - RADDBG_LocationRegister loc = {0}; + RADDBGI_LocationRegister loc = {0}; loc.kind = location->kind; loc.register_code = location->register_code; str8_list_push(scratch.arena, &location_data, push_str8_copy(scratch.arena, str8_struct(&loc))); @@ -2987,7 +2987,7 @@ cons__name_map_bake(Arena *arena, CONS_Root *root, CONS__BakeCtx *bctx, CONS__Na for(CONS__NameMapNode *node = map->first; node != 0; node = node->order_next){ - U64 hash = raddbg_hash(node->string.str, node->string.size); + U64 hash = raddbgi_hash(node->string.str, node->string.size); U64 bi = hash%bucket_count; CONS__NameMapSemiNode *snode = push_array(scratch.arena, CONS__NameMapSemiNode, 1); SLLQueuePush(sbuckets[bi].first, sbuckets[bi].last, snode); @@ -2996,13 +2996,13 @@ cons__name_map_bake(Arena *arena, CONS_Root *root, CONS__BakeCtx *bctx, CONS__Na } // allocate tables - RADDBG_NameMapBucket *buckets = push_array(arena, RADDBG_NameMapBucket, bucket_count); - RADDBG_NameMapNode *nodes = push_array_no_zero(arena, RADDBG_NameMapNode, node_count); + RADDBGI_NameMapBucket *buckets = push_array(arena, RADDBGI_NameMapBucket, bucket_count); + RADDBGI_NameMapNode *nodes = push_array_no_zero(arena, RADDBGI_NameMapNode, node_count); // convert to serialized buckets & nodes { - RADDBG_NameMapBucket *bucket_ptr = buckets; - RADDBG_NameMapNode *node_ptr = nodes; + RADDBGI_NameMapBucket *bucket_ptr = buckets; + RADDBGI_NameMapNode *node_ptr = nodes; for(U32 i = 0; i < bucket_count; i += 1, bucket_ptr += 1){ bucket_ptr->first_node = (U32)(node_ptr - nodes); bucket_ptr->node_count = sbuckets[i].count; @@ -3070,7 +3070,7 @@ cons_bake_file(Arena *arena, CONS_Root *root, String8List *out) // setup cons helpers CONS__DSections dss = {0}; - cons__dsection(arena, &dss, 0, 0, RADDBG_DataSectionTag_NULL); + cons__dsection(arena, &dss, 0, 0, RADDBGI_DataSectionTag_NULL); CONS__BakeParams bctx_params = {0}; { @@ -3083,7 +3083,7 @@ cons_bake_file(Arena *arena, CONS_Root *root, String8List *out) // MAIN PART: allocating and filling out sections of the file // top level info - RADDBG_TopLevelInfo *tli = push_array(arena, RADDBG_TopLevelInfo, 1); + RADDBGI_TopLevelInfo *tli = push_array(arena, RADDBGI_TopLevelInfo, 1); { CONS_TopLevelInfo *cons_tli = &root->top_level_info; tli->architecture = cons_tli->architecture; @@ -3091,13 +3091,13 @@ cons_bake_file(Arena *arena, CONS_Root *root, String8List *out) tli->exe_hash = cons_tli->exe_hash; tli->voff_max = cons_tli->voff_max; } - cons__dsection(arena, &dss, tli, sizeof(*tli), RADDBG_DataSectionTag_TopLevelInfo); + cons__dsection(arena, &dss, tli, sizeof(*tli), RADDBGI_DataSectionTag_TopLevelInfo); // binary sections array { U32 count = root->binary_section_count; - RADDBG_BinarySection *sections = push_array(arena, RADDBG_BinarySection, count); - RADDBG_BinarySection *dsec = sections; + RADDBGI_BinarySection *sections = push_array(arena, RADDBGI_BinarySection, count); + RADDBGI_BinarySection *dsec = sections; for(CONS_BinarySection *ssec = root->binary_section_first; ssec != 0; ssec = ssec->next, dsec += 1){ @@ -3108,7 +3108,7 @@ cons_bake_file(Arena *arena, CONS_Root *root, String8List *out) dsec->foff_first = ssec->foff_first; dsec->foff_opl = ssec->foff_opl; } - cons__dsection(arena, &dss, sections, sizeof(*sections)*count, RADDBG_DataSectionTag_BinarySections); + cons__dsection(arena, &dss, sections, sizeof(*sections)*count, RADDBGI_DataSectionTag_BinarySections); } // units array @@ -3117,8 +3117,8 @@ cons_bake_file(Arena *arena, CONS_Root *root, String8List *out) // * combining line info for whole unit { U32 count = root->unit_count; - RADDBG_Unit *units = push_array(arena, RADDBG_Unit, count); - RADDBG_Unit *dunit = units; + RADDBGI_Unit *units = push_array(arena, RADDBGI_Unit, count); + RADDBGI_Unit *dunit = units; for(CONS_Unit *sunit = root->unit_first; sunit != 0; sunit = sunit->next_order, dunit += 1){ @@ -3147,20 +3147,20 @@ cons_bake_file(Arena *arena, CONS_Root *root, String8List *out) if(line_count > 0){ dunit->line_info_voffs_data_idx = cons__dsection(arena, &dss, lines->voffs, sizeof(U64)*(line_count + 1), - RADDBG_DataSectionTag_LineInfoVoffs); + RADDBGI_DataSectionTag_LineInfoVoffs); dunit->line_info_data_idx = - cons__dsection(arena, &dss, lines->lines, sizeof(RADDBG_Line)*line_count, - RADDBG_DataSectionTag_LineInfoData); + cons__dsection(arena, &dss, lines->lines, sizeof(RADDBGI_Line)*line_count, + RADDBGI_DataSectionTag_LineInfoData); if(lines->cols != 0){ dunit->line_info_col_data_idx = - cons__dsection(arena, &dss, lines->cols, sizeof(RADDBG_Column)*line_count, - RADDBG_DataSectionTag_LineInfoColumns); + cons__dsection(arena, &dss, lines->cols, sizeof(RADDBGI_Column)*line_count, + RADDBGI_DataSectionTag_LineInfoColumns); } dunit->line_info_count = line_count; } } - cons__dsection(arena, &dss, units, sizeof(*units)*count, RADDBG_DataSectionTag_Units); + cons__dsection(arena, &dss, units, sizeof(*units)*count, RADDBGI_DataSectionTag_Units); } // source file line info baking @@ -3178,21 +3178,21 @@ cons_bake_file(Arena *arena, CONS_Root *root, String8List *out) src_node->line_map_nums_data_idx = cons__dsection(arena, &dss, lines->line_nums, sizeof(*lines->line_nums)*line_count, - RADDBG_DataSectionTag_LineMapNumbers); + RADDBGI_DataSectionTag_LineMapNumbers); src_node->line_map_range_data_idx = cons__dsection(arena, &dss, lines->line_ranges, sizeof(*lines->line_ranges)*(line_count + 1), - RADDBG_DataSectionTag_LineMapRanges); + RADDBGI_DataSectionTag_LineMapRanges); src_node->line_map_voff_data_idx = cons__dsection(arena, &dss, lines->voffs, sizeof(*lines->voffs)*lines->voff_count, - RADDBG_DataSectionTag_LineMapVoffs); + RADDBGI_DataSectionTag_LineMapVoffs); } } // source file name mapping { - CONS__NameMap* map = cons__name_map_for_kind(root, RADDBG_NameMapKind_NormalSourcePaths); + CONS__NameMap* map = cons__name_map_for_kind(root, RADDBGI_NameMapKind_NormalSourcePaths); for(CONS__SrcNode *src_node = bctx->tree->src_first; src_node != 0; src_node = src_node->next){ @@ -3209,7 +3209,7 @@ cons_bake_file(Arena *arena, CONS_Root *root, String8List *out) root->unit_vmap_range_count); U64 vmap_size = sizeof(*vmap->vmap)*(vmap->count + 1); - cons__dsection(arena, &dss, vmap->vmap, vmap_size, RADDBG_DataSectionTag_UnitVmap); + cons__dsection(arena, &dss, vmap->vmap, vmap_size, RADDBGI_DataSectionTag_UnitVmap); } // type info baking @@ -3217,16 +3217,16 @@ cons_bake_file(Arena *arena, CONS_Root *root, String8List *out) CONS__TypeData *types = cons__type_data_combine(arena, root, bctx); U64 type_nodes_size = sizeof(*types->type_nodes)*types->type_node_count; - cons__dsection(arena, &dss, types->type_nodes, type_nodes_size, RADDBG_DataSectionTag_TypeNodes); + cons__dsection(arena, &dss, types->type_nodes, type_nodes_size, RADDBGI_DataSectionTag_TypeNodes); U64 udt_size = sizeof(*types->udts)*types->udt_count; - cons__dsection(arena, &dss, types->udts, udt_size, RADDBG_DataSectionTag_UDTs); + cons__dsection(arena, &dss, types->udts, udt_size, RADDBGI_DataSectionTag_UDTs); U64 member_size = sizeof(*types->members)*types->member_count; - cons__dsection(arena, &dss, types->members, member_size, RADDBG_DataSectionTag_Members); + cons__dsection(arena, &dss, types->members, member_size, RADDBGI_DataSectionTag_Members); U64 enum_member_size = sizeof(*types->enum_members)*types->enum_member_count; - cons__dsection(arena, &dss, types->enum_members, enum_member_size, RADDBG_DataSectionTag_EnumMembers); + cons__dsection(arena, &dss, types->enum_members, enum_member_size, RADDBGI_DataSectionTag_EnumMembers); } // symbol info baking @@ -3236,59 +3236,59 @@ cons_bake_file(Arena *arena, CONS_Root *root, String8List *out) U64 global_variables_size = sizeof(*symbol_data->global_variables)*symbol_data->global_variable_count; cons__dsection(arena, &dss, symbol_data->global_variables, global_variables_size, - RADDBG_DataSectionTag_GlobalVariables); + RADDBGI_DataSectionTag_GlobalVariables); CONS__VMap *global_vmap = symbol_data->global_vmap; U64 global_vmap_size = sizeof(*global_vmap->vmap)*(global_vmap->count + 1); cons__dsection(arena, &dss, global_vmap->vmap, global_vmap_size, - RADDBG_DataSectionTag_GlobalVmap); + RADDBGI_DataSectionTag_GlobalVmap); U64 thread_variables_size = sizeof(*symbol_data->thread_variables)*symbol_data->thread_variable_count; cons__dsection(arena, &dss, symbol_data->thread_variables, thread_variables_size, - RADDBG_DataSectionTag_ThreadVariables); + RADDBGI_DataSectionTag_ThreadVariables); U64 procedures_size = sizeof(*symbol_data->procedures)*symbol_data->procedure_count; cons__dsection(arena, &dss, symbol_data->procedures, procedures_size, - RADDBG_DataSectionTag_Procedures); + RADDBGI_DataSectionTag_Procedures); U64 scopes_size = sizeof(*symbol_data->scopes)*symbol_data->scope_count; - cons__dsection(arena, &dss, symbol_data->scopes, scopes_size, RADDBG_DataSectionTag_Scopes); + cons__dsection(arena, &dss, symbol_data->scopes, scopes_size, RADDBGI_DataSectionTag_Scopes); U64 scope_voffs_size = sizeof(*symbol_data->scope_voffs)*symbol_data->scope_voff_count; cons__dsection(arena, &dss, symbol_data->scope_voffs, scope_voffs_size, - RADDBG_DataSectionTag_ScopeVoffData); + RADDBGI_DataSectionTag_ScopeVoffData); CONS__VMap *scope_vmap = symbol_data->scope_vmap; U64 scope_vmap_size = sizeof(*scope_vmap->vmap)*(scope_vmap->count + 1); - cons__dsection(arena, &dss, scope_vmap->vmap, scope_vmap_size, RADDBG_DataSectionTag_ScopeVmap); + cons__dsection(arena, &dss, scope_vmap->vmap, scope_vmap_size, RADDBGI_DataSectionTag_ScopeVmap); U64 local_size = sizeof(*symbol_data->locals)*symbol_data->local_count; - cons__dsection(arena, &dss, symbol_data->locals, local_size, RADDBG_DataSectionTag_Locals); + cons__dsection(arena, &dss, symbol_data->locals, local_size, RADDBGI_DataSectionTag_Locals); U64 location_blocks_size = sizeof(*symbol_data->location_blocks)*symbol_data->location_block_count; cons__dsection(arena, &dss, symbol_data->location_blocks, location_blocks_size, - RADDBG_DataSectionTag_LocationBlocks); + RADDBGI_DataSectionTag_LocationBlocks); U64 location_data_size = symbol_data->location_data_size; cons__dsection(arena, &dss, symbol_data->location_data, location_data_size, - RADDBG_DataSectionTag_LocationData); + RADDBGI_DataSectionTag_LocationData); } // name map baking { U32 name_map_count = 0; - for(U32 i = 0; i < RADDBG_NameMapKind_COUNT; i += 1){ + for(U32 i = 0; i < RADDBGI_NameMapKind_COUNT; i += 1){ if(root->name_maps[i] != 0){ name_map_count += 1; } } - RADDBG_NameMap *name_maps = push_array(arena, RADDBG_NameMap, name_map_count); + RADDBGI_NameMap *name_maps = push_array(arena, RADDBGI_NameMap, name_map_count); - RADDBG_NameMap *name_map_ptr = name_maps; - for(U32 i = 0; i < RADDBG_NameMapKind_COUNT; i += 1){ + RADDBGI_NameMap *name_map_ptr = name_maps; + for(U32 i = 0; i < RADDBGI_NameMapKind_COUNT; i += 1){ CONS__NameMap *map = root->name_maps[i]; if(map != 0){ CONS__NameMapBaked *baked = cons__name_map_bake(arena, root, bctx, map); @@ -3296,16 +3296,16 @@ cons_bake_file(Arena *arena, CONS_Root *root, String8List *out) name_map_ptr->kind = i; name_map_ptr->bucket_data_idx = cons__dsection(arena, &dss, baked->buckets, sizeof(*baked->buckets)*baked->bucket_count, - RADDBG_DataSectionTag_NameMapBuckets); + RADDBGI_DataSectionTag_NameMapBuckets); name_map_ptr->node_data_idx = cons__dsection(arena, &dss, baked->nodes, sizeof(*baked->nodes)*baked->node_count, - RADDBG_DataSectionTag_NameMapNodes); + RADDBGI_DataSectionTag_NameMapNodes); name_map_ptr += 1; } } cons__dsection(arena, &dss, name_maps, sizeof(*name_maps)*name_map_count, - RADDBG_DataSectionTag_NameMaps); + RADDBGI_DataSectionTag_NameMaps); } //////////////////////////////// @@ -3314,9 +3314,9 @@ cons_bake_file(Arena *arena, CONS_Root *root, String8List *out) // generate data sections for file paths { U32 count = bctx->tree->count; - RADDBG_FilePathNode *nodes = push_array(arena, RADDBG_FilePathNode, count); + RADDBGI_FilePathNode *nodes = push_array(arena, RADDBGI_FilePathNode, count); - RADDBG_FilePathNode *out_node = nodes; + RADDBGI_FilePathNode *out_node = nodes; for(CONS__PathNode *node = bctx->tree->first; node != 0; node = node->next_order, out_node += 1){ @@ -3335,15 +3335,15 @@ cons_bake_file(Arena *arena, CONS_Root *root, String8List *out) } } - cons__dsection(arena, &dss, nodes, sizeof(*nodes)*count, RADDBG_DataSectionTag_FilePathNodes); + cons__dsection(arena, &dss, nodes, sizeof(*nodes)*count, RADDBGI_DataSectionTag_FilePathNodes); } // generate data sections for files { U32 count = bctx->tree->src_count; - RADDBG_SourceFile *src_files = push_array(arena, RADDBG_SourceFile, count); + RADDBGI_SourceFile *src_files = push_array(arena, RADDBGI_SourceFile, count); - RADDBG_SourceFile *out_src_file = src_files; + RADDBGI_SourceFile *out_src_file = src_files; for(CONS__SrcNode *node = bctx->tree->src_first; node != 0; node = node->next, out_src_file += 1){ @@ -3355,7 +3355,7 @@ cons_bake_file(Arena *arena, CONS_Root *root, String8List *out) out_src_file->line_map_voff_data_idx = node->line_map_voff_data_idx; } - cons__dsection(arena, &dss, src_files, sizeof(*src_files)*count, RADDBG_DataSectionTag_SourceFiles); + cons__dsection(arena, &dss, src_files, sizeof(*src_files)*count, RADDBGI_DataSectionTag_SourceFiles); } // generate data sections for strings @@ -3388,8 +3388,8 @@ cons_bake_file(Arena *arena, CONS_Root *root, String8List *out) } cons__dsection(arena, &dss, str_offs, sizeof(*str_offs)*(bctx->strs.count + 1), - RADDBG_DataSectionTag_StringTable); - cons__dsection(arena, &dss, buf, off_cursor, RADDBG_DataSectionTag_StringData); + RADDBGI_DataSectionTag_StringTable); + cons__dsection(arena, &dss, buf, off_cursor, RADDBGI_DataSectionTag_StringData); } // generate data sections for index runs @@ -3409,14 +3409,14 @@ cons_bake_file(Arena *arena, CONS_Root *root, String8List *out) } cons__dsection(arena, &dss, idx_data, sizeof(*idx_data)*bctx->idxs.idx_count, - RADDBG_DataSectionTag_IndexRuns); + RADDBGI_DataSectionTag_IndexRuns); } // layout // * the header and data section table have to be initialized "out of order" // * so that the rest of the system can avoid this tricky order-layout interdependence stuff - RADDBG_Header *header = push_array(arena, RADDBG_Header, 1); - RADDBG_DataSection *dstable = push_array(arena, RADDBG_DataSection, dss.count); + RADDBGI_Header *header = push_array(arena, RADDBGI_Header, 1); + RADDBGI_DataSection *dstable = push_array(arena, RADDBGI_DataSection, dss.count); str8_serial_push_align(arena, out, 8); U64 header_off = out->total_size; str8_list_push(arena, out, str8_struct(header)); @@ -3424,8 +3424,8 @@ cons_bake_file(Arena *arena, CONS_Root *root, String8List *out) U64 data_section_off = out->total_size; str8_list_push(arena, out, str8((U8 *)dstable, sizeof(*dstable)*dss.count)); { - header->magic = RADDBG_MAGIC_CONSTANT; - header->encoding_version = RADDBG_ENCODING_VERSION; + header->magic = RADDBGI_MAGIC_CONSTANT; + header->encoding_version = RADDBGI_ENCODING_VERSION; header->data_section_off = data_section_off; header->data_section_count = dss.count; } @@ -3438,7 +3438,7 @@ cons_bake_file(Arena *arena, CONS_Root *root, String8List *out) } Assert(test_dss_count == dss.count); - RADDBG_DataSection *ptr = dstable; + RADDBGI_DataSection *ptr = dstable; for(CONS__DSectionNode *node = dss.first; node != 0; node = node->next, ptr += 1){ @@ -3450,7 +3450,7 @@ cons_bake_file(Arena *arena, CONS_Root *root, String8List *out) str8_list_push(arena, out, str8((U8 *)node->data, node->size)); } ptr->tag = node->tag; - ptr->encoding = RADDBG_DataSectionEncoding_Unpacked; + ptr->encoding = RADDBGI_DataSectionEncoding_Unpacked; ptr->off = data_section_offset; ptr->encoded_size = node->size; ptr->unpacked_size = node->size; diff --git a/src/raddbgi_cons/raddbgi_cons.h b/src/raddbgi_cons/raddbgi_cons.h index 0d024bf4..f1c7e573 100644 --- a/src/raddbgi_cons/raddbgi_cons.h +++ b/src/raddbgi_cons/raddbgi_cons.h @@ -98,7 +98,7 @@ struct CONS_BinarySection { CONS_BinarySection *next; String8 name; - RADDBG_BinarySectionFlags flags; + RADDBGI_BinarySectionFlags flags; U64 voff_first; U64 voff_opl; U64 foff_first; @@ -134,7 +134,7 @@ struct CONS_UnitInfo String8 object_file; String8 archive_file; String8 build_path; - RADDBG_Language language; + RADDBGI_Language language; }; typedef struct CONS_Unit CONS_Unit; @@ -149,7 +149,7 @@ struct CONS_Unit String8 object_file; String8 archive_file; String8 build_path; - RADDBG_Language language; + RADDBGI_Language language; CONS_LineSequenceNode *line_seq_first; CONS_LineSequenceNode *line_seq_last; U64 line_seq_count; @@ -185,7 +185,7 @@ typedef struct CONS_TypeMember CONS_TypeMember; struct CONS_TypeMember { CONS_TypeMember *next; - RADDBG_MemberKind kind; + RADDBGI_MemberKind kind; String8 name; struct CONS_Type *type; U32 off; @@ -203,7 +203,7 @@ typedef struct CONS_Type CONS_Type; struct CONS_Type { CONS_Type *next_order; - RADDBG_TypeKind kind; + RADDBGI_TypeKind kind; U32 idx; U32 byte_size; U32 flags; @@ -298,7 +298,7 @@ struct CONS_Symbol typedef struct CONS_LocalInfo CONS_LocalInfo; struct CONS_LocalInfo { - RADDBG_LocalKind kind; + RADDBGI_LocalKind kind; struct CONS_Scope *scope; String8 name; CONS_Type *type; @@ -308,7 +308,7 @@ typedef struct CONS_Local CONS_Local; struct CONS_Local { CONS_Local *next; - RADDBG_LocalKind kind; + RADDBGI_LocalKind kind; String8 name; CONS_Type *type; struct CONS_LocationSet *locset; @@ -348,7 +348,7 @@ typedef struct CONS_EvalBytecodeOp CONS_EvalBytecodeOp; struct CONS_EvalBytecodeOp { CONS_EvalBytecodeOp *next; - RADDBG_EvalOp op; + RADDBGI_EvalOp op; U32 p_size; U64 p; }; @@ -365,7 +365,7 @@ struct CONS_EvalBytecode typedef struct CONS_Location CONS_Location; struct CONS_Location { - RADDBG_LocationKind kind; + RADDBGI_LocationKind kind; U8 register_code; U16 offset; CONS_EvalBytecode bytecode; @@ -426,7 +426,7 @@ struct CONS__NameMap typedef struct CONS_TopLevelInfo CONS_TopLevelInfo; struct CONS_TopLevelInfo { - RADDBG_Arch architecture; + RADDBGI_Arch architecture; String8 exe_name; U64 exe_hash; U64 voff_max; @@ -513,7 +513,7 @@ struct CONS_Root U64 location_count; // name maps - CONS__NameMap *name_maps[RADDBG_NameMapKind_COUNT]; + CONS__NameMap *name_maps[RADDBGI_NameMapKind_COUNT]; //////// Handle Relationship Maps @@ -536,7 +536,7 @@ struct CONS__DSectionNode CONS__DSectionNode *next; void *data; U64 size; - RADDBG_DataSectionTag tag; + RADDBGI_DataSectionTag tag; }; typedef struct CONS__DSections CONS__DSections; @@ -664,7 +664,7 @@ typedef struct CONS__UnitLinesCombined CONS__UnitLinesCombined; struct CONS__UnitLinesCombined { U64 *voffs; - RADDBG_Line *lines; + RADDBGI_Line *lines; U16 *cols; U32 line_count; }; @@ -702,7 +702,7 @@ struct CONS__SrcLineMapBucket typedef struct CONS__VMap CONS__VMap; struct CONS__VMap { - RADDBG_VMapEntry *vmap; // [count + 1] + RADDBGI_VMapEntry *vmap; // [count + 1] U32 count; }; @@ -725,16 +725,16 @@ struct CONS__VMapRangeTracker typedef struct CONS__TypeData CONS__TypeData; struct CONS__TypeData { - RADDBG_TypeNode *type_nodes; + RADDBGI_TypeNode *type_nodes; U32 type_node_count; - RADDBG_UDT *udts; + RADDBGI_UDT *udts; U32 udt_count; - RADDBG_Member *members; + RADDBGI_Member *members; U32 member_count; - RADDBG_EnumMember *enum_members; + RADDBGI_EnumMember *enum_members; U32 enum_member_count; }; @@ -743,18 +743,18 @@ struct CONS__TypeData typedef struct CONS__SymbolData CONS__SymbolData; struct CONS__SymbolData { - RADDBG_GlobalVariable *global_variables; + RADDBGI_GlobalVariable *global_variables; U32 global_variable_count; CONS__VMap *global_vmap; - RADDBG_ThreadVariable *thread_variables; + RADDBGI_ThreadVariable *thread_variables; U32 thread_variable_count; - RADDBG_Procedure *procedures; + RADDBGI_Procedure *procedures; U32 procedure_count; - RADDBG_Scope *scopes; + RADDBGI_Scope *scopes; U32 scope_count; U64 *scope_voffs; @@ -762,10 +762,10 @@ struct CONS__SymbolData CONS__VMap *scope_vmap; - RADDBG_Local *locals; + RADDBGI_Local *locals; U32 local_count; - RADDBG_LocationBlock *location_blocks; + RADDBGI_LocationBlock *location_blocks; U32 location_block_count; void *location_data; @@ -792,8 +792,8 @@ struct CONS__NameMapSemiBucket typedef struct CONS__NameMapBaked CONS__NameMapBaked; struct CONS__NameMapBaked { - RADDBG_NameMapBucket *buckets; - RADDBG_NameMapNode *nodes; + RADDBGI_NameMapBucket *buckets; + RADDBGI_NameMapNode *nodes; U32 bucket_count; U32 node_count; }; @@ -823,7 +823,7 @@ struct CONS__BakeCtx static void cons_type_list_push(Arena *arena, CONS_TypeList *list, CONS_Type *type); //- rjf: bytecode lists -static void cons_bytecode_push_op(Arena *arena, CONS_EvalBytecode *bytecode, RADDBG_EvalOp op, U64 p); +static void cons_bytecode_push_op(Arena *arena, CONS_EvalBytecode *bytecode, RADDBGI_EvalOp op, U64 p); static void cons_bytecode_push_uconst(Arena *arena, CONS_EvalBytecode *bytecode, U64 x); static void cons_bytecode_push_sconst(Arena *arena, CONS_EvalBytecode *bytecode, S64 x); static void cons_bytecode_concat_in_place(CONS_EvalBytecode *left_dst, CONS_EvalBytecode *right_destroyed); @@ -861,7 +861,7 @@ static void cons_set_top_level_info(CONS_Root *root, CONS_TopLevelInfo *tli); //- rjf: binary section building static void cons_add_binary_section(CONS_Root *root, - String8 name, RADDBG_BinarySectionFlags flags, + String8 name, RADDBGI_BinarySectionFlags flags, U64 voff_first, U64 voff_opl, U64 foff_first, U64 foff_opl); @@ -889,19 +889,19 @@ static CONS_TypeUDT* cons__type_udt_from_any_type(CONS_Root *root, CONS_Type *ty static CONS_TypeUDT* cons__type_udt_from_record_type(CONS_Root *root, CONS_Type *type); //- rjf: basic/operator type construction helpers -static CONS_Type* cons_type_basic(CONS_Root *root, RADDBG_TypeKind type_kind, String8 name); -static CONS_Type* cons_type_modifier(CONS_Root *root, CONS_Type *direct_type, RADDBG_TypeModifierFlags flags); +static CONS_Type* cons_type_basic(CONS_Root *root, RADDBGI_TypeKind type_kind, String8 name); +static CONS_Type* cons_type_modifier(CONS_Root *root, CONS_Type *direct_type, RADDBGI_TypeModifierFlags flags); static CONS_Type* cons_type_bitfield(CONS_Root *root, CONS_Type *direct_type, U32 bit_off, U32 bit_count); -static CONS_Type* cons_type_pointer(CONS_Root *root, CONS_Type *direct_type, RADDBG_TypeKind ptr_type_kind); +static CONS_Type* cons_type_pointer(CONS_Root *root, CONS_Type *direct_type, RADDBGI_TypeKind ptr_type_kind); static CONS_Type* cons_type_array(CONS_Root *root, CONS_Type *direct_type, U64 count); static CONS_Type* cons_type_proc(CONS_Root *root, CONS_Type *return_type, struct CONS_TypeList *params); static CONS_Type* cons_type_method(CONS_Root *root, CONS_Type *this_type, CONS_Type *return_type, struct CONS_TypeList *params); //- rjf: udt type constructors -static CONS_Type* cons_type_udt(CONS_Root *root, RADDBG_TypeKind record_type_kind, String8 name, U64 size); +static CONS_Type* cons_type_udt(CONS_Root *root, RADDBGI_TypeKind record_type_kind, String8 name, U64 size); static CONS_Type* cons_type_enum(CONS_Root *root, CONS_Type *direct_type, String8 name); static CONS_Type* cons_type_alias(CONS_Root *root, CONS_Type *direct_type, String8 name); -static CONS_Type* cons_type_incomplete(CONS_Root *root, RADDBG_TypeKind type_kind, String8 name); +static CONS_Type* cons_type_incomplete(CONS_Root *root, RADDBGI_TypeKind type_kind, String8 name); //- rjf: type member building static void cons_type_add_member_data_field(CONS_Root *root, CONS_Type *record_type, String8 name, CONS_Type *mem_type, U32 off); @@ -941,7 +941,7 @@ static CONS_Location* cons_location_addr_addr_reg_plus_u16(CONS_Root *root, U8 r static CONS_Location* cons_location_val_reg(CONS_Root *root, U8 reg_code); //- rjf: name map building -static CONS__NameMap* cons__name_map_for_kind(CONS_Root *root, RADDBG_NameMapKind kind); +static CONS__NameMap* cons__name_map_for_kind(CONS_Root *root, RADDBGI_NameMapKind kind); static void cons__name_map_add_pair(CONS_Root *root, CONS__NameMap *map, String8 name, U32 idx); //////////////////////////////// @@ -959,7 +959,7 @@ static U64 cons__idx_run_hash(U32 *idx_run, U32 count); static U32 cons__idx_run(CONS__BakeCtx *bctx, U32 *idx_run, U32 count); //- rjf: data section baking -static U32 cons__dsection(Arena *arena, CONS__DSections *dss, void *data, U64 size, RADDBG_DataSectionTag tag); +static U32 cons__dsection(Arena *arena, CONS__DSections *dss, void *data, U64 size, RADDBGI_DataSectionTag tag); //- rjf: paths baking static String8 cons__normal_string_from_path_node(Arena *arena, CONS__PathNode *node); diff --git a/src/raddbgi_convert/dwarf/raddbgi_dwarf.h b/src/raddbgi_convert/dwarf/raddbgi_dwarf.h index f9927685..ca868988 100644 --- a/src/raddbgi_convert/dwarf/raddbgi_dwarf.h +++ b/src/raddbgi_convert/dwarf/raddbgi_dwarf.h @@ -1,8 +1,8 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef RADDBG_DWARF_H -#define RADDBG_DWARF_H +#ifndef RADDBGI_DWARF_H +#define RADDBGI_DWARF_H // https://dwarfstd.org/doc/DWARF4.pdf // https://dwarfstd.org/doc/DWARF5.pdf @@ -1328,5 +1328,5 @@ static String8 dwarf_string_from_line_ext_op(DWARF_LineExtOp op); static String8 dwarf_string_from_line_entry_format(DWARF_LineEntryFormat format); static String8 dwarf_string_from_section_code(DWARF_SectionCode sec_code); -#endif //RADDBG_DWARF_H +#endif //RADDBGI_DWARF_H diff --git a/src/raddbgi_convert/dwarf/raddbgi_dwarf_stringize.h b/src/raddbgi_convert/dwarf/raddbgi_dwarf_stringize.h index dc322ad1..d8cd9e87 100644 --- a/src/raddbgi_convert/dwarf/raddbgi_dwarf_stringize.h +++ b/src/raddbgi_convert/dwarf/raddbgi_dwarf_stringize.h @@ -1,8 +1,8 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef RADDBG_DWARF_STRINGIZE_H -#define RADDBG_DWARF_STRINGIZE_H +#ifndef RADDBGI_DWARF_STRINGIZE_H +#define RADDBGI_DWARF_STRINGIZE_H //////////////////////////////// //~ DWARF Stringize Functions @@ -25,4 +25,4 @@ dwarf_stringize_addr(Arena *arena, String8List *out, DWARF_AddrUnit *unit, U32 i -#endif //RADDBG_DWARF_STRINGIZE_H +#endif //RADDBGI_DWARF_STRINGIZE_H diff --git a/src/raddbgi_convert/dwarf/raddbgi_elf.h b/src/raddbgi_convert/dwarf/raddbgi_elf.h index 5b04c11e..99882ec4 100644 --- a/src/raddbgi_convert/dwarf/raddbgi_elf.h +++ b/src/raddbgi_convert/dwarf/raddbgi_elf.h @@ -1,8 +1,8 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef RADDBG_ELF_H -#define RADDBG_ELF_H +#ifndef RADDBGI_ELF_H +#define RADDBGI_ELF_H // https://refspecs.linuxfoundation.org/elf/elf.pdf @@ -514,4 +514,4 @@ static String8 elf_string_from_symbol_binding(ELF_SymbolBinding binding); static String8 elf_string_from_symbol_type(ELF_SymbolType type); static String8 elf_string_from_symbol_visibility(ELF_SymbolVisibility visibility); -#endif //RADDBG_ELF_H +#endif //RADDBGI_ELF_H diff --git a/src/raddbgi_convert/dwarf/raddbgi_from_dwarf.c b/src/raddbgi_convert/dwarf/raddbgi_from_dwarf.c index 2e4aa10f..04f55c7b 100644 --- a/src/raddbgi_convert/dwarf/raddbgi_from_dwarf.c +++ b/src/raddbgi_convert/dwarf/raddbgi_from_dwarf.c @@ -416,7 +416,7 @@ main(int argc, char **argv){ String8List args = os_string_list_from_argcv(arena, argc, argv); CmdLine cmdline = cmd_line_from_string_list(arena, args); - ProfBeginCapture("raddbg_from_dwarf"); + ProfBeginCapture("raddbgi_from_dwarf"); // parse arguments DWARFCONV_Params *params = dwarf_convert_params_from_cmd_line(arena, &cmdline); diff --git a/src/raddbgi_convert/dwarf/raddbgi_from_dwarf.h b/src/raddbgi_convert/dwarf/raddbgi_from_dwarf.h index 46ed6616..82052c44 100644 --- a/src/raddbgi_convert/dwarf/raddbgi_from_dwarf.h +++ b/src/raddbgi_convert/dwarf/raddbgi_from_dwarf.h @@ -1,8 +1,8 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef RADDBG_FROM_DWARF_H -#define RADDBG_FROM_DWARF_H +#ifndef RADDBGI_FROM_DWARF_H +#define RADDBGI_FROM_DWARF_H //////////////////////////////// //~ Program Parameters Type @@ -47,4 +47,4 @@ static DWARFCONV_Params *dwarf_convert_params_from_cmd_line(Arena *arena, CmdLin -#endif //RADDBG_FROM_DWARF_H +#endif //RADDBGI_FROM_DWARF_H diff --git a/src/raddbgi_convert/pdb/raddbgi_codeview.h b/src/raddbgi_convert/pdb/raddbgi_codeview.h index 3f1c5d4a..35f989f9 100644 --- a/src/raddbgi_convert/pdb/raddbgi_codeview.h +++ b/src/raddbgi_convert/pdb/raddbgi_codeview.h @@ -1,8 +1,8 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef RADDBG_CODEVIEW_H -#define RADDBG_CODEVIEW_H +#ifndef RADDBGI_CODEVIEW_H +#define RADDBGI_CODEVIEW_H #pragma pack(push, 1) @@ -155,7 +155,7 @@ typedef enum{ } CV_AllRegEnum; -// X(NAME, CODE, (RADDBG_RegsiterCode_X86) NAME, BYTE_POS, BYTE_SIZE) +// X(NAME, CODE, (RADDBGI_RegsiterCode_X86) NAME, BYTE_POS, BYTE_SIZE) #define CV_Reg_X86_XList(X) \ X(NONE, 0, nil, 0, 0)\ X(AL, 1, eax, 0, 1)\ @@ -408,7 +408,7 @@ typedef enum{ #undef X } CV_Regx86Enum; -// X(NAME, CODE, (RADDBG_RegsiterCode_X64) NAME, BYTE_POS, BYTE_SIZE) +// X(NAME, CODE, (RADDBGI_RegsiterCode_X64) NAME, BYTE_POS, BYTE_SIZE) #define CV_Reg_X64_XList(X) \ X(NONE, 0, nil, 0, 0)\ X(AL, 1, rax, 0, 1)\ @@ -3057,4 +3057,4 @@ typedef struct PDB_CoffSectionArray PDB_CoffSectionArray; static CV_C13Parsed* cv_c13_from_data(Arena *arena, String8 c13_data, struct PDB_Strtbl *strtbl, struct PDB_CoffSectionArray *sections); -#endif //RADDBG_CODEVIEW_H +#endif //RADDBGI_CODEVIEW_H diff --git a/src/raddbgi_convert/pdb/raddbgi_codeview_conversion.c b/src/raddbgi_convert/pdb/raddbgi_codeview_conversion.c index 9930b4ed..ef1fe216 100644 --- a/src/raddbgi_convert/pdb/raddbgi_codeview_conversion.c +++ b/src/raddbgi_convert/pdb/raddbgi_codeview_conversion.c @@ -4,12 +4,12 @@ //////////////////////////////// //~ CodeView Conversion Functions -static RADDBG_Arch -raddbg_arch_from_cv_arch(CV_Arch cv_arch){ - RADDBG_Arch result = 0; +static RADDBGI_Arch +raddbgi_arch_from_cv_arch(CV_Arch cv_arch){ + RADDBGI_Arch result = 0; switch (cv_arch){ - case CV_Arch_8086: result = RADDBG_Arch_X86; break; - case CV_Arch_X64: result = RADDBG_Arch_X64; break; + case CV_Arch_8086: result = RADDBGI_Arch_X86; break; + case CV_Arch_X64: result = RADDBGI_Arch_X64; break; //case CV_Arch_8080: break; //case CV_Arch_80286: break; @@ -73,23 +73,23 @@ raddbg_arch_from_cv_arch(CV_Arch cv_arch){ return(result); } -static RADDBG_RegisterCode -raddbg_reg_code_from_cv_reg_code(RADDBG_Arch arch, CV_Reg reg_code){ - RADDBG_RegisterCode result = 0; +static RADDBGI_RegisterCode +raddbgi_reg_code_from_cv_reg_code(RADDBGI_Arch arch, CV_Reg reg_code){ + RADDBGI_RegisterCode result = 0; switch (arch){ - case RADDBG_Arch_X86: + case RADDBGI_Arch_X86: { switch (reg_code){ -#define X(CVN,C,RDN,BP,BZ) case C: result = RADDBG_RegisterCode_X86_##RDN; break; +#define X(CVN,C,RDN,BP,BZ) case C: result = RADDBGI_RegisterCode_X86_##RDN; break; CV_Reg_X86_XList(X) #undef X } }break; - case RADDBG_Arch_X64: + case RADDBGI_Arch_X64: { switch (reg_code){ -#define X(CVN,C,RDN,BP,BZ) case C: result = RADDBG_RegisterCode_X64_##RDN; break; +#define X(CVN,C,RDN,BP,BZ) case C: result = RADDBGI_RegisterCode_X64_##RDN; break; CV_Reg_X64_XList(X) #undef X } @@ -98,12 +98,12 @@ raddbg_reg_code_from_cv_reg_code(RADDBG_Arch arch, CV_Reg reg_code){ return(result); } -static RADDBG_Language -raddbg_language_from_cv_language(CV_Language cv_language){ - RADDBG_Language result = 0; +static RADDBGI_Language +raddbgi_language_from_cv_language(CV_Language cv_language){ + RADDBGI_Language result = 0; switch (cv_language){ - case CV_Language_C: result = RADDBG_Language_C; break; - case CV_Language_CXX: result = RADDBG_Language_CPlusPlus; break; + case CV_Language_C: result = RADDBGI_Language_C; break; + case CV_Language_CXX: result = RADDBGI_Language_CPlusPlus; break; //case CV_Language_FORTRAN: result = ; break; //case CV_Language_MASM: result = ; break; //case CV_Language_PASCAL: result = ; break; diff --git a/src/raddbgi_convert/pdb/raddbgi_codeview_conversion.h b/src/raddbgi_convert/pdb/raddbgi_codeview_conversion.h index 369e0949..92e4cb07 100644 --- a/src/raddbgi_convert/pdb/raddbgi_codeview_conversion.h +++ b/src/raddbgi_convert/pdb/raddbgi_codeview_conversion.h @@ -1,14 +1,14 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef RADDBG_CODEVIEW_CONVERSION_H -#define RADDBG_CODEVIEW_CONVERSION_H +#ifndef RADDBGI_CODEVIEW_CONVERSION_H +#define RADDBGI_CODEVIEW_CONVERSION_H //////////////////////////////// //~ CodeView Conversion Functions -static RADDBG_Arch raddbg_arch_from_cv_arch(CV_Arch arch); -static RADDBG_RegisterCode raddbg_reg_code_from_cv_reg_code(RADDBG_Arch arch, CV_Reg reg_code); -static RADDBG_Language raddbg_language_from_cv_language(CV_Language language); +static RADDBGI_Arch raddbgi_arch_from_cv_arch(CV_Arch arch); +static RADDBGI_RegisterCode raddbgi_reg_code_from_cv_reg_code(RADDBGI_Arch arch, CV_Reg reg_code); +static RADDBGI_Language raddbgi_language_from_cv_language(CV_Language language); -#endif //RADDBG_CODEVIEW_CONVERSION_H +#endif //RADDBGI_CODEVIEW_CONVERSION_H diff --git a/src/raddbgi_convert/pdb/raddbgi_codeview_stringize.h b/src/raddbgi_convert/pdb/raddbgi_codeview_stringize.h index 6b59ec1f..c7d04840 100644 --- a/src/raddbgi_convert/pdb/raddbgi_codeview_stringize.h +++ b/src/raddbgi_convert/pdb/raddbgi_codeview_stringize.h @@ -1,8 +1,8 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef RADDBG_CODEVIEW_STRINGIZE_H -#define RADDBG_CODEVIEW_STRINGIZE_H +#ifndef RADDBGI_CODEVIEW_STRINGIZE_H +#define RADDBGI_CODEVIEW_STRINGIZE_H //////////////////////////////// //~ CodeView Stringize Helper Types @@ -83,4 +83,4 @@ static void cv_stringize_leaf_array(Arena *arena, String8List *out, static void cv_stringize_c13_parsed(Arena *arena, String8List *out, CV_C13Parsed *c13); -#endif //RADDBG_CODEVIEW_STRINGIZE_H +#endif //RADDBGI_CODEVIEW_STRINGIZE_H diff --git a/src/raddbgi_convert/pdb/raddbgi_coff.h b/src/raddbgi_convert/pdb/raddbgi_coff.h index 6078654e..ae04b185 100644 --- a/src/raddbgi_convert/pdb/raddbgi_coff.h +++ b/src/raddbgi_convert/pdb/raddbgi_coff.h @@ -1,8 +1,8 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef RADDBG_COFF_H -#define RADDBG_COFF_H +#ifndef RADDBGI_COFF_H +#define RADDBGI_COFF_H //////////////////////////////// //~ COFF Format Types diff --git a/src/raddbgi_convert/pdb/raddbgi_coff_conversion.c b/src/raddbgi_convert/pdb/raddbgi_coff_conversion.c index f5c25c8b..a07f4597 100644 --- a/src/raddbgi_convert/pdb/raddbgi_coff_conversion.c +++ b/src/raddbgi_convert/pdb/raddbgi_coff_conversion.c @@ -4,18 +4,18 @@ //////////////////////////////// //~ COFF Conversion Functions -static RADDBG_BinarySectionFlags -raddbg_binary_section_flags_from_coff_section_flags(COFF_SectionFlags flags){ - RADDBG_BinarySectionFlags result = 0; +static RADDBGI_BinarySectionFlags +raddbgi_binary_section_flags_from_coff_section_flags(COFF_SectionFlags flags){ + RADDBGI_BinarySectionFlags result = 0; if (flags & COFF_SectionFlag_MEM_READ){ - result |= RADDBG_BinarySectionFlag_Read; + result |= RADDBGI_BinarySectionFlag_Read; } if (flags & COFF_SectionFlag_MEM_WRITE){ - result |= RADDBG_BinarySectionFlag_Write; + result |= RADDBGI_BinarySectionFlag_Write; } if (flags & COFF_SectionFlag_MEM_EXECUTE){ - result |= RADDBG_BinarySectionFlag_Execute; + result |= RADDBGI_BinarySectionFlag_Execute; } return(result); diff --git a/src/raddbgi_convert/pdb/raddbgi_coff_conversion.h b/src/raddbgi_convert/pdb/raddbgi_coff_conversion.h index 3036768c..2cd7aad9 100644 --- a/src/raddbgi_convert/pdb/raddbgi_coff_conversion.h +++ b/src/raddbgi_convert/pdb/raddbgi_coff_conversion.h @@ -1,13 +1,13 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef RADDBG_COFF_CONVERSION_H -#define RADDBG_COFF_CONVERSION_H +#ifndef RADDBGI_COFF_CONVERSION_H +#define RADDBGI_COFF_CONVERSION_H //////////////////////////////// //~ COFF Conversion Functions -static RADDBG_BinarySectionFlags -raddbg_binary_section_flags_from_coff_section_flags(COFF_SectionFlags flags); +static RADDBGI_BinarySectionFlags +raddbgi_binary_section_flags_from_coff_section_flags(COFF_SectionFlags flags); -#endif //RADDBG_COFF_CONVERSION_H +#endif //RADDBGI_COFF_CONVERSION_H diff --git a/src/raddbgi_convert/pdb/raddbgi_from_pdb.c b/src/raddbgi_convert/pdb/raddbgi_from_pdb.c index 18c4be2e..84347d2a 100644 --- a/src/raddbgi_convert/pdb/raddbgi_from_pdb.c +++ b/src/raddbgi_convert/pdb/raddbgi_from_pdb.c @@ -145,7 +145,7 @@ pdbconv_ctx_alloc(PDBCONV_CtxParams *params, CONS_Root *out_root) PDBCONV_Ctx *pdb_ctx = push_array(arena, PDBCONV_Ctx, 1); pdb_ctx->arena = arena; pdb_ctx->arch = params->arch; - pdb_ctx->addr_size = raddbg_addr_size_from_arch(pdb_ctx->arch); + pdb_ctx->addr_size = raddbgi_addr_size_from_arch(pdb_ctx->arch); pdb_ctx->hash = params->tpi_hash; pdb_ctx->leaf = params->tpi_leaf; pdb_ctx->sections = params->sections->sections; @@ -980,165 +980,165 @@ pdbconv_type_cons_basic(PDBCONV_Ctx *ctx, CV_TypeId itype){ switch (basic_type_code){ case CV_BasicType_VOID: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_Void, str8_lit("void")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_Void, str8_lit("void")); }break; case CV_BasicType_HRESULT: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_Handle, str8_lit("HRESULT")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_Handle, str8_lit("HRESULT")); }break; case CV_BasicType_RCHAR: case CV_BasicType_CHAR: case CV_BasicType_CHAR8: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_Char8, str8_lit("char")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_Char8, str8_lit("char")); }break; case CV_BasicType_UCHAR: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_UChar8, str8_lit("UCHAR")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_UChar8, str8_lit("UCHAR")); }break; case CV_BasicType_WCHAR: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_UChar16, str8_lit("WCHAR")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_UChar16, str8_lit("WCHAR")); }break; case CV_BasicType_CHAR16: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_Char16, str8_lit("CHAR16")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_Char16, str8_lit("CHAR16")); }break; case CV_BasicType_CHAR32: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_Char32, str8_lit("CHAR32")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_Char32, str8_lit("CHAR32")); }break; case CV_BasicType_BOOL8: case CV_BasicType_INT8: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_S8, str8_lit("S8")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_S8, str8_lit("S8")); }break; case CV_BasicType_BOOL16: case CV_BasicType_INT16: case CV_BasicType_SHORT: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_S16, str8_lit("S16")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_S16, str8_lit("S16")); }break; case CV_BasicType_BOOL32: case CV_BasicType_INT32: case CV_BasicType_LONG: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_S32, str8_lit("S32")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_S32, str8_lit("S32")); }break; case CV_BasicType_BOOL64: case CV_BasicType_INT64: case CV_BasicType_QUAD: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_S64, str8_lit("S64")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_S64, str8_lit("S64")); }break; case CV_BasicType_INT128: case CV_BasicType_OCT: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_S128, str8_lit("S128")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_S128, str8_lit("S128")); }break; case CV_BasicType_UINT8: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_U8, str8_lit("U8")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_U8, str8_lit("U8")); }break; case CV_BasicType_UINT16: case CV_BasicType_USHORT: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_U16, str8_lit("U16")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_U16, str8_lit("U16")); }break; case CV_BasicType_UINT32: case CV_BasicType_ULONG: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_U32, str8_lit("U32")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_U32, str8_lit("U32")); }break; case CV_BasicType_UINT64: case CV_BasicType_UQUAD: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_U64, str8_lit("U64")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_U64, str8_lit("U64")); }break; case CV_BasicType_UINT128: case CV_BasicType_UOCT: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_U128, str8_lit("U128")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_U128, str8_lit("U128")); }break; case CV_BasicType_FLOAT16: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_F16, str8_lit("F16")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_F16, str8_lit("F16")); }break; case CV_BasicType_FLOAT32: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_F32, str8_lit("F32")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_F32, str8_lit("F32")); }break; case CV_BasicType_FLOAT32PP: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_F32PP, str8_lit("F32PP")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_F32PP, str8_lit("F32PP")); }break; case CV_BasicType_FLOAT48: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_F48, str8_lit("F48")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_F48, str8_lit("F48")); }break; case CV_BasicType_FLOAT64: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_F64, str8_lit("F64")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_F64, str8_lit("F64")); }break; case CV_BasicType_FLOAT80: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_F80, str8_lit("F80")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_F80, str8_lit("F80")); }break; case CV_BasicType_FLOAT128: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_F128, str8_lit("F128")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_F128, str8_lit("F128")); }break; case CV_BasicType_COMPLEX32: { basic_type = - cons_type_basic(ctx->root, RADDBG_TypeKind_ComplexF32, str8_lit("ComplexF32")); + cons_type_basic(ctx->root, RADDBGI_TypeKind_ComplexF32, str8_lit("ComplexF32")); }break; case CV_BasicType_COMPLEX64: { basic_type = - cons_type_basic(ctx->root, RADDBG_TypeKind_ComplexF64, str8_lit("ComplexF64")); + cons_type_basic(ctx->root, RADDBGI_TypeKind_ComplexF64, str8_lit("ComplexF64")); }break; case CV_BasicType_COMPLEX80: { basic_type = - cons_type_basic(ctx->root, RADDBG_TypeKind_ComplexF80, str8_lit("ComplexF80")); + cons_type_basic(ctx->root, RADDBGI_TypeKind_ComplexF80, str8_lit("ComplexF80")); }break; case CV_BasicType_COMPLEX128: { basic_type = - cons_type_basic(ctx->root, RADDBG_TypeKind_ComplexF128, str8_lit("ComplexF128")); + cons_type_basic(ctx->root, RADDBGI_TypeKind_ComplexF128, str8_lit("ComplexF128")); }break; case CV_BasicType_PTR: { - basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_Handle, str8_lit("PTR")); + basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_Handle, str8_lit("PTR")); }break; } @@ -1158,7 +1158,7 @@ pdbconv_type_cons_basic(PDBCONV_Ctx *ctx, CV_TypeId itype){ case CV_BasicPointerKind_16_32BIT: case CV_BasicPointerKind_64BIT: { - constructed_type = cons_type_pointer(ctx->root, basic_type, RADDBG_TypeKind_Ptr); + constructed_type = cons_type_pointer(ctx->root, basic_type, RADDBGI_TypeKind_Ptr); }break; } @@ -1196,12 +1196,12 @@ pdbconv_type_cons_leaf_record(PDBCONV_Ctx *ctx, CV_TypeId itype){ if (sizeof(CV_LeafModifier) <= cap){ CV_LeafModifier *modifier = (CV_LeafModifier*)first; - RADDBG_TypeModifierFlags flags = 0; + RADDBGI_TypeModifierFlags flags = 0; if (modifier->flags & CV_ModifierFlag_Const){ - flags |= RADDBG_TypeModifierFlag_Const; + flags |= RADDBGI_TypeModifierFlag_Const; } if (modifier->flags & CV_ModifierFlag_Volatile){ - flags |= RADDBG_TypeModifierFlag_Volatile; + flags |= RADDBGI_TypeModifierFlag_Volatile; } CONS_Type *direct_type = pdbconv_type_resolve_and_check(ctx, modifier->itype); @@ -1227,27 +1227,27 @@ pdbconv_type_cons_leaf_record(PDBCONV_Ctx *ctx, CV_TypeId itype){ // TODO(allen): if ptr_mode in {PtrMem, PtrMethod} then output a member pointer instead // extract modifier flags - RADDBG_TypeModifierFlags modifier_flags = 0; + RADDBGI_TypeModifierFlags modifier_flags = 0; if (pointer->attribs & CV_PointerAttrib_Const){ - modifier_flags |= RADDBG_TypeModifierFlag_Const; + modifier_flags |= RADDBGI_TypeModifierFlag_Const; } if (pointer->attribs & CV_PointerAttrib_Volatile){ - modifier_flags |= RADDBG_TypeModifierFlag_Volatile; + modifier_flags |= RADDBGI_TypeModifierFlag_Volatile; } // determine type kind - RADDBG_TypeKind type_kind = RADDBG_TypeKind_Ptr; + RADDBGI_TypeKind type_kind = RADDBGI_TypeKind_Ptr; if (pointer->attribs & CV_PointerAttrib_LRef){ - type_kind = RADDBG_TypeKind_LRef; + type_kind = RADDBGI_TypeKind_LRef; } else if (pointer->attribs & CV_PointerAttrib_RRef){ - type_kind = RADDBG_TypeKind_RRef; + type_kind = RADDBGI_TypeKind_RRef; } if (ptr_mode == CV_PointerMode_LRef){ - type_kind = RADDBG_TypeKind_LRef; + type_kind = RADDBGI_TypeKind_LRef; } else if (ptr_mode == CV_PointerMode_RRef){ - type_kind = RADDBG_TypeKind_RRef; + type_kind = RADDBGI_TypeKind_RRef; } CONS_Type *direct_type = pdbconv_type_resolve_and_check(ctx, pointer->itype); @@ -1363,18 +1363,18 @@ pdbconv_type_cons_leaf_record(PDBCONV_Ctx *ctx, CV_TypeId itype){ // incomplete type if (lf_struct->props & CV_TypeProp_FwdRef){ - RADDBG_TypeKind type_kind = RADDBG_TypeKind_IncompleteStruct; + RADDBGI_TypeKind type_kind = RADDBGI_TypeKind_IncompleteStruct; if (range->hdr.kind == CV_LeafKind_CLASS){ - type_kind = RADDBG_TypeKind_IncompleteClass; + type_kind = RADDBGI_TypeKind_IncompleteClass; } result = cons_type_incomplete(ctx->root, type_kind, name); } // complete type else{ - RADDBG_TypeKind type_kind = RADDBG_TypeKind_Struct; + RADDBGI_TypeKind type_kind = RADDBGI_TypeKind_Struct; if (range->hdr.kind == CV_LeafKind_CLASS){ - type_kind = RADDBG_TypeKind_Class; + type_kind = RADDBGI_TypeKind_Class; } result = cons_type_udt(ctx->root, type_kind, name, size_u64); @@ -1409,18 +1409,18 @@ pdbconv_type_cons_leaf_record(PDBCONV_Ctx *ctx, CV_TypeId itype){ // incomplete type if (lf_struct->props & CV_TypeProp_FwdRef){ - RADDBG_TypeKind type_kind = RADDBG_TypeKind_IncompleteStruct; + RADDBGI_TypeKind type_kind = RADDBGI_TypeKind_IncompleteStruct; if (range->hdr.kind == CV_LeafKind_CLASS2){ - type_kind = RADDBG_TypeKind_IncompleteClass; + type_kind = RADDBGI_TypeKind_IncompleteClass; } result = cons_type_incomplete(ctx->root, type_kind, name); } // complete type else{ - RADDBG_TypeKind type_kind = RADDBG_TypeKind_Struct; + RADDBGI_TypeKind type_kind = RADDBGI_TypeKind_Struct; if (range->hdr.kind == CV_LeafKind_CLASS2){ - type_kind = RADDBG_TypeKind_Class; + type_kind = RADDBGI_TypeKind_Class; } result = cons_type_udt(ctx->root, type_kind, name, size_u64); @@ -1455,12 +1455,12 @@ pdbconv_type_cons_leaf_record(PDBCONV_Ctx *ctx, CV_TypeId itype){ // incomplete type if (lf_union->props & CV_TypeProp_FwdRef){ result = - cons_type_incomplete(ctx->root, RADDBG_TypeKind_IncompleteUnion, name); + cons_type_incomplete(ctx->root, RADDBGI_TypeKind_IncompleteUnion, name); } // complete type else{ - result = cons_type_udt(ctx->root, RADDBG_TypeKind_Union, name, size_u64); + result = cons_type_udt(ctx->root, RADDBGI_TypeKind_Union, name, size_u64); // remember to revisit this for members { @@ -1487,7 +1487,7 @@ pdbconv_type_cons_leaf_record(PDBCONV_Ctx *ctx, CV_TypeId itype){ // incomplete type if (lf_enum->props & CV_TypeProp_FwdRef){ - result = cons_type_incomplete(ctx->root, RADDBG_TypeKind_IncompleteEnum, name); + result = cons_type_incomplete(ctx->root, RADDBGI_TypeKind_IncompleteEnum, name); } // complete type @@ -1667,7 +1667,8 @@ pdbconv_type_cons_leaf_record(PDBCONV_Ctx *ctx, CV_TypeId itype){ static CONS_Type* pdbconv_type_resolve_and_check(PDBCONV_Ctx *ctx, CV_TypeId itype){ CONS_Type *result = pdbconv_type_resolve_itype(ctx, itype); - if (cons_type_is_unhandled_nil(ctx->root, result)){ + if(cons_type_is_unhandled_nil(ctx->root, result)) + { cons_errorf(ctx->root, "pdbconv: could not resolve itype (itype = %u)", itype); } return(result); @@ -1798,7 +1799,7 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){ // extract important values from parameters String8 data = sym->data; U64 user_id_base = (((U64)sym_unique_id) << 32); - U64 sym_unique_id_hash = raddbg_hash((U8*)&sym_unique_id, sizeof(sym_unique_id)); + U64 sym_unique_id_hash = raddbgi_hash((U8*)&sym_unique_id, sizeof(sym_unique_id)); // PASS 1: map out data associations ProfScope("map out data associations") @@ -2109,16 +2110,16 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){ U32 var_off = regrel32->reg_off; // need arch for analyzing register stuff - RADDBG_Arch arch = ctx->arch; + RADDBGI_Arch arch = ctx->arch; U64 addr_size = ctx->addr_size; // determine if this is a parameter - RADDBG_LocalKind local_kind = RADDBG_LocalKind_Variable; + RADDBGI_LocalKind local_kind = RADDBGI_LocalKind_Variable; { B32 is_stack_reg = 0; switch (arch){ - case RADDBG_Arch_X86: is_stack_reg = (cv_reg == CV_Regx86_ESP); break; - case RADDBG_Arch_X64: is_stack_reg = (cv_reg == CV_Regx64_RSP); break; + case RADDBGI_Arch_X86: is_stack_reg = (cv_reg == CV_Regx86_ESP); break; + case RADDBGI_Arch_X64: is_stack_reg = (cv_reg == CV_Regx64_RSP); break; } if (is_stack_reg){ U32 frame_size = 0xFFFFFFFF; @@ -2128,7 +2129,7 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){ frame_size = frameproc->frame_size; } if (var_off > frame_size){ - local_kind = RADDBG_LocalKind_Parameter; + local_kind = RADDBGI_LocalKind_Parameter; } } } @@ -2151,17 +2152,17 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){ // will there be an extra indirection to the value B32 extra_indirection_to_value = 0; switch (arch){ - case RADDBG_Arch_X86: + case RADDBGI_Arch_X86: { - if (local_kind == RADDBG_LocalKind_Parameter && + if (local_kind == RADDBGI_LocalKind_Parameter && (type->byte_size > 4 || !IsPow2OrZero(type->byte_size))){ extra_indirection_to_value = 1; } }break; - case RADDBG_Arch_X64: + case RADDBGI_Arch_X64: { - if (local_kind == RADDBG_LocalKind_Parameter && + if (local_kind == RADDBGI_LocalKind_Parameter && (type->byte_size > 8 || !IsPow2OrZero(type->byte_size))){ extra_indirection_to_value = 1; } @@ -2169,7 +2170,7 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){ } // get raddbg register code - RADDBG_RegisterCode register_code = raddbg_reg_code_from_cv_reg_code(arch, cv_reg); + RADDBGI_RegisterCode register_code = raddbgi_reg_code_from_cv_reg_code(arch, cv_reg); // TODO(allen): real byte_size & byte_pos from cv_reg goes here U32 byte_size = 8; U32 byte_pos = 0; @@ -2271,9 +2272,9 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){ // emit a local variable else{ // local kind - RADDBG_LocalKind local_kind = RADDBG_LocalKind_Variable; + RADDBGI_LocalKind local_kind = RADDBGI_LocalKind_Variable; if (slocal->flags & CV_LocalFlag_Param){ - local_kind = RADDBG_LocalKind_Parameter; + local_kind = RADDBGI_LocalKind_Parameter; } // emit local @@ -2293,7 +2294,7 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){ cons_local_set_basic_info(ctx->root, local_var, &info); defrange_target = cons_location_set_from_local(ctx->root, local_var); - defrange_target_is_param = (local_kind == RADDBG_LocalKind_Parameter); + defrange_target_is_param = (local_kind == RADDBGI_LocalKind_Parameter); } } }break; @@ -2312,9 +2313,9 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){ CV_SymDefrangeRegister *defrange_register = (CV_SymDefrangeRegister*)first; // TODO(allen): offset & size from cv_reg code - RADDBG_Arch arch = ctx->arch; + RADDBGI_Arch arch = ctx->arch; CV_Reg cv_reg = defrange_register->reg; - RADDBG_RegisterCode register_code = raddbg_reg_code_from_cv_reg_code(arch, cv_reg); + RADDBGI_RegisterCode register_code = raddbgi_reg_code_from_cv_reg_code(arch, cv_reg); // setup location CONS_Location *location = cons_location_val_reg(ctx->root, register_code); @@ -2347,7 +2348,7 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){ // select frame pointer register CV_EncodedFramePtrReg encoded_fp_reg = pdbconv_cv_encoded_fp_reg_from_proc(ctx, current_procedure, defrange_target_is_param); - RADDBG_RegisterCode fp_register_code = + RADDBGI_RegisterCode fp_register_code = pdbconv_reg_code_from_arch_encoded_fp_reg(ctx->arch, encoded_fp_reg); // setup location @@ -2388,9 +2389,9 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){ if (defrange_subfield_register->field_offset == 0){ // TODO(allen): offset & size from cv_reg code - RADDBG_Arch arch = ctx->arch; + RADDBGI_Arch arch = ctx->arch; CV_Reg cv_reg = defrange_subfield_register->reg; - RADDBG_RegisterCode register_code = raddbg_reg_code_from_cv_reg_code(arch, cv_reg); + RADDBGI_RegisterCode register_code = raddbgi_reg_code_from_cv_reg_code(arch, cv_reg); // setup location CONS_Location *location = cons_location_val_reg(ctx->root, register_code); @@ -2425,7 +2426,7 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){ // select frame pointer register CV_EncodedFramePtrReg encoded_fp_reg = pdbconv_cv_encoded_fp_reg_from_proc(ctx, current_procedure, defrange_target_is_param); - RADDBG_RegisterCode fp_register_code = + RADDBGI_RegisterCode fp_register_code = pdbconv_reg_code_from_arch_encoded_fp_reg(ctx->arch, encoded_fp_reg); // setup location @@ -2459,9 +2460,9 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){ else { // TODO(allen): offset & size from cv_reg code - RADDBG_Arch arch = ctx->arch; + RADDBGI_Arch arch = ctx->arch; CV_Reg cv_reg = defrange_register_rel->reg; - RADDBG_RegisterCode register_code = raddbg_reg_code_from_cv_reg_code(arch, cv_reg); + RADDBGI_RegisterCode register_code = raddbgi_reg_code_from_cv_reg_code(arch, cv_reg); U32 byte_size = ctx->addr_size; U32 byte_pos = 0; @@ -2758,7 +2759,7 @@ pdbconv_known_global_insert(Arena *arena, PDBCONV_KnownGlobalSet *set, String8 n static CONS_Location* pdbconv_location_from_addr_reg_off(PDBCONV_Ctx *ctx, - RADDBG_RegisterCode reg_code, + RADDBGI_RegisterCode reg_code, U32 reg_byte_size, U32 reg_byte_pos, S64 offset, @@ -2776,12 +2777,12 @@ pdbconv_location_from_addr_reg_off(PDBCONV_Ctx *ctx, Arena *arena = ctx->arena; CONS_EvalBytecode bytecode = {0}; - U32 regread_param = RADDBG_EncodeRegReadParam(reg_code, reg_byte_size, reg_byte_pos); - cons_bytecode_push_op(arena, &bytecode, RADDBG_EvalOp_RegRead, regread_param); + U32 regread_param = RADDBGI_EncodeRegReadParam(reg_code, reg_byte_size, reg_byte_pos); + cons_bytecode_push_op(arena, &bytecode, RADDBGI_EvalOp_RegRead, regread_param); cons_bytecode_push_sconst(arena, &bytecode, offset); - cons_bytecode_push_op(arena, &bytecode, RADDBG_EvalOp_Add, 0); + cons_bytecode_push_op(arena, &bytecode, RADDBGI_EvalOp_Add, 0); if (extra_indirection){ - cons_bytecode_push_op(arena, &bytecode, RADDBG_EvalOp_MemRead, ctx->addr_size); + cons_bytecode_push_op(arena, &bytecode, RADDBGI_EvalOp_MemRead, ctx->addr_size); } result = cons_location_addr_bytecode_stream(ctx->root, &bytecode); @@ -2806,12 +2807,12 @@ pdbconv_cv_encoded_fp_reg_from_proc(PDBCONV_Ctx *ctx, CONS_Symbol *proc, B32 par return(result); } -static RADDBG_RegisterCode -pdbconv_reg_code_from_arch_encoded_fp_reg(RADDBG_Arch arch, CV_EncodedFramePtrReg encoded_reg){ - RADDBG_RegisterCode result = 0; +static RADDBGI_RegisterCode +pdbconv_reg_code_from_arch_encoded_fp_reg(RADDBGI_Arch arch, CV_EncodedFramePtrReg encoded_reg){ + RADDBGI_RegisterCode result = 0; switch (arch){ - case RADDBG_Arch_X86: + case RADDBGI_Arch_X86: { switch (encoded_reg){ case CV_EncodedFramePtrReg_StackPtr: @@ -2821,29 +2822,29 @@ pdbconv_reg_code_from_arch_encoded_fp_reg(RADDBG_Arch arch, CV_EncodedFramePtrRe }break; case CV_EncodedFramePtrReg_FramePtr: { - result = RADDBG_RegisterCode_X86_ebp; + result = RADDBGI_RegisterCode_X86_ebp; }break; case CV_EncodedFramePtrReg_BasePtr: { - result = RADDBG_RegisterCode_X86_ebx; + result = RADDBGI_RegisterCode_X86_ebx; }break; } }break; - case RADDBG_Arch_X64: + case RADDBGI_Arch_X64: { switch (encoded_reg){ case CV_EncodedFramePtrReg_StackPtr: { - result = RADDBG_RegisterCode_X64_rsp; + result = RADDBGI_RegisterCode_X64_rsp; }break; case CV_EncodedFramePtrReg_FramePtr: { - result = RADDBG_RegisterCode_X64_rbp; + result = RADDBGI_RegisterCode_X64_rbp; }break; case CV_EncodedFramePtrReg_BasePtr: { - result = RADDBG_RegisterCode_X64_r13; + result = RADDBGI_RegisterCode_X64_r13; }break; } }break; @@ -3139,7 +3140,7 @@ str8_list_pushf(arena, &out->errors, fmt, __VA_ARGS__);\ // exe hash U64 exe_hash = 0; if (out->good_parse && params->input_exe_data.size > 0) ProfScope("hash exe"){ - exe_hash = raddbg_hash(params->input_exe_data.str, params->input_exe_data.size); + exe_hash = raddbgi_hash(params->input_exe_data.str, params->input_exe_data.size); } // output generation @@ -3147,7 +3148,7 @@ str8_list_pushf(arena, &out->errors, fmt, __VA_ARGS__);\ if (params->output_name.size > 0){ // determine arch - RADDBG_Arch architecture = RADDBG_Arch_NULL; + RADDBGI_Arch architecture = RADDBGI_Arch_NULL; // TODO(rjf): in some cases, the first compilation unit has a zero // architecture, as it's sometimes used as a "nil" unit. this causes bugs // in later stages of conversion - particularly, this was detected via @@ -3165,14 +3166,14 @@ str8_list_pushf(arena, &out->errors, fmt, __VA_ARGS__);\ { if(sym_for_unit[comp_unit_idx] != 0) { - architecture = raddbg_arch_from_cv_arch(sym_for_unit[comp_unit_idx]->info.arch); + architecture = raddbgi_arch_from_cv_arch(sym_for_unit[comp_unit_idx]->info.arch); if(architecture != 0) { break; } } } - U64 addr_size = raddbg_addr_size_from_arch(architecture); + U64 addr_size = raddbgi_addr_size_from_arch(architecture); // predict symbol counts @@ -3239,8 +3240,8 @@ str8_list_pushf(arena, &out->errors, fmt, __VA_ARGS__);\ char *name_first = (char*)coff_ptr->name; char *name_opl = name_first + sizeof(coff_ptr->name); String8 name = str8_cstring_capped(name_first, name_opl); - RADDBG_BinarySectionFlags flags = - raddbg_binary_section_flags_from_coff_section_flags(coff_ptr->flags); + RADDBGI_BinarySectionFlags flags = + raddbgi_binary_section_flags_from_coff_section_flags(coff_ptr->flags); cons_add_binary_section(root, name, flags, coff_ptr->voff, coff_ptr->voff + coff_ptr->vsize, coff_ptr->foff, coff_ptr->foff + coff_ptr->fsize); @@ -3283,7 +3284,7 @@ str8_list_pushf(arena, &out->errors, fmt, __VA_ARGS__);\ String8 archive_file = unit->group_name; // extract langauge - RADDBG_Language lang = raddbg_language_from_cv_language(sym->info.language); + RADDBGI_Language lang = raddbgi_language_from_cv_language(sym->info.language); // basic per unit info CONS_Unit *unit_handle = cons_unit_handle_from_user_id(root, i, i); diff --git a/src/raddbgi_convert/pdb/raddbgi_from_pdb.h b/src/raddbgi_convert/pdb/raddbgi_from_pdb.h index c2858ddf..ff1c1513 100644 --- a/src/raddbgi_convert/pdb/raddbgi_from_pdb.h +++ b/src/raddbgi_convert/pdb/raddbgi_from_pdb.h @@ -1,8 +1,8 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef RADDBG_FROM_PDB_H -#define RADDBG_FROM_PDB_H +#ifndef RADDBGI_FROM_PDB_H +#define RADDBGI_FROM_PDB_H //////////////////////////////// //~ Program Parameters Type @@ -107,7 +107,7 @@ typedef struct PDBCONV_KnownGlobalSet{ typedef struct PDBCONV_CtxParams PDBCONV_CtxParams; struct PDBCONV_CtxParams { - RADDBG_Arch arch; + RADDBGI_Arch arch; PDB_TpiHashParsed *tpi_hash; CV_LeafParsed *tpi_leaf; PDB_CoffSectionArray *sections; @@ -140,7 +140,7 @@ typedef struct PDBCONV_Ctx{ Arena *arena; // INPUT data - RADDBG_Arch arch; + RADDBGI_Arch arch; U64 addr_size; PDB_TpiHashParsed *hash; CV_LeafParsed *leaf; @@ -247,7 +247,7 @@ static void pdbconv_known_global_insert(Arena *arena, PDBCONV_KnownGlobalSet *se // location info helpers static CONS_Location* pdbconv_location_from_addr_reg_off(PDBCONV_Ctx *ctx, - RADDBG_RegisterCode reg_code, + RADDBGI_RegisterCode reg_code, U32 reg_byte_size, U32 reg_byte_pos, S64 offset, @@ -257,8 +257,8 @@ static CV_EncodedFramePtrReg pdbconv_cv_encoded_fp_reg_from_proc(PDBCONV_Ctx *ct CONS_Symbol *proc, B32 param_base); -static RADDBG_RegisterCode pdbconv_reg_code_from_arch_encoded_fp_reg(RADDBG_Arch arch, - CV_EncodedFramePtrReg encoded_reg); +static RADDBGI_RegisterCode pdbconv_reg_code_from_arch_encoded_fp_reg(RADDBGI_Arch arch, + CV_EncodedFramePtrReg encoded_reg); static void pdbconv_location_over_lvar_addr_range(PDBCONV_Ctx *ctx, CONS_LocationSet *locset, @@ -288,4 +288,4 @@ struct PDBCONV_Out static PDBCONV_Out *pdbconv_convert(Arena *arena, PDBCONV_Params *params); -#endif //RADDBG_FROM_PDB_H +#endif // RADDBGI_FROM_PDB_H diff --git a/src/raddbgi_convert/pdb/raddbgi_from_pdb_main.c b/src/raddbgi_convert/pdb/raddbgi_from_pdb_main.c index be1a992a..44a591a4 100644 --- a/src/raddbgi_convert/pdb/raddbgi_from_pdb_main.c +++ b/src/raddbgi_convert/pdb/raddbgi_from_pdb_main.c @@ -55,7 +55,7 @@ main(int argc, char **argv){ String8List args = os_string_list_from_argcv(arena, argc, argv); CmdLine cmdline = cmd_line_from_string_list(arena, args); - ProfBeginCapture("raddbg_from_pdb"); + ProfBeginCapture("raddbgi_from_pdb"); //- rjf: parse arguments PDBCONV_Params *params = pdb_convert_params_from_cmd_line(arena, &cmdline); diff --git a/src/raddbgi_convert/pdb/raddbgi_msf.h b/src/raddbgi_convert/pdb/raddbgi_msf.h index 62f671fd..4b55f4a6 100644 --- a/src/raddbgi_convert/pdb/raddbgi_msf.h +++ b/src/raddbgi_convert/pdb/raddbgi_msf.h @@ -1,8 +1,8 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef RADDBG_MSF_H -#define RADDBG_MSF_H +#ifndef RADDBGI_MSF_H +#define RADDBGI_MSF_H //////////////////////////////// //~ MSF Format Types @@ -57,4 +57,4 @@ typedef struct MSF_Parsed{ static MSF_Parsed* msf_parsed_from_data(Arena *arena, String8 msf_data); static String8 msf_data_from_stream(MSF_Parsed *msf, MSF_StreamNumber sn); -#endif //RADDBG_MSF_H +#endif //RADDBGI_MSF_H diff --git a/src/raddbgi_convert/pdb/raddbgi_pdb.h b/src/raddbgi_convert/pdb/raddbgi_pdb.h index 1c60789c..0a8e8d16 100644 --- a/src/raddbgi_convert/pdb/raddbgi_pdb.h +++ b/src/raddbgi_convert/pdb/raddbgi_pdb.h @@ -1,8 +1,8 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef RADDBG_PDB_H -#define RADDBG_PDB_H +#ifndef RADDBGI_PDB_H +#define RADDBGI_PDB_H // https://github.com/microsoft/microsoft-pdb/tree/master/PDB @@ -459,4 +459,4 @@ static String8 pdb_strtbl_string_from_off(PDB_Strtbl *strtbl, U32 o static String8 pdb_strtbl_string_from_index(PDB_Strtbl *strtbl, PDB_StringIndex idx); -#endif //RADDBG_PDB_H +#endif //RADDBGI_PDB_H diff --git a/src/raddbgi_convert/pdb/raddbgi_pdb_stringize.h b/src/raddbgi_convert/pdb/raddbgi_pdb_stringize.h index 6b222afa..9225735b 100644 --- a/src/raddbgi_convert/pdb/raddbgi_pdb_stringize.h +++ b/src/raddbgi_convert/pdb/raddbgi_pdb_stringize.h @@ -1,12 +1,12 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef RADDBG_PDB_STRINGIZE_H -#define RADDBG_PDB_STRINGIZE_H +#ifndef RADDBGI_PDB_STRINGIZE_H +#define RADDBGI_PDB_STRINGIZE_H //////////////////////////////// //~ PDB Stringize Functions static void pdb_stringize_tpi_hash(Arena *arena, String8List *out, PDB_TpiHashParsed *hash); -#endif //RADDBG_PDB_STRINGIZE_H +#endif //RADDBGI_PDB_STRINGIZE_H diff --git a/src/raddbgi_dump/raddbgi_dump.c b/src/raddbgi_dump/raddbgi_dump.c index 1bcd7209..d5862b86 100644 --- a/src/raddbgi_dump/raddbgi_dump.c +++ b/src/raddbgi_dump/raddbgi_dump.c @@ -159,12 +159,12 @@ main(int argc, char **argv){ // will we try to parse an input file B32 try_parse_input = (params->errors.node_count == 0); - RADDBG_ParseStatus parse_status = RADDBG_ParseStatus_Good; - RADDBG_Parsed raddbg__ = {0}; - RADDBG_Parsed *raddbg = 0; + RADDBGI_ParseStatus parse_status = RADDBGI_ParseStatus_Good; + RADDBGI_Parsed raddbg__ = {0}; + RADDBGI_Parsed *raddbg = 0; if (try_parse_input){ - parse_status = raddbg_parse(params->input_data.str, params->input_data.size, &raddbg__); - if (parse_status == RADDBG_ParseStatus_Good){ + parse_status = raddbgi_parse(params->input_data.str, params->input_data.size, &raddbg__); + if (parse_status == RADDBGI_ParseStatus_Good){ raddbg = &raddbg__; } } @@ -181,24 +181,24 @@ main(int argc, char **argv){ // DATA SECTIONS if (raddbg->dsecs != 0 && params->dump_data_sections){ str8_list_pushf(arena, &dump, "# DATA SECTIONS:\n"); - raddbg_stringize_data_sections(arena, &dump, raddbg, 1); + raddbgi_stringize_data_sections(arena, &dump, raddbg, 1); str8_list_push(arena, &dump, str8_lit("\n")); } // TOP LEVEL INFO if (raddbg->top_level_info != 0 && params->dump_top_level_info){ str8_list_pushf(arena, &dump, "# TOP LEVEL INFO:\n"); - raddbg_stringize_top_level_info(arena, &dump, raddbg, raddbg->top_level_info, 1); + raddbgi_stringize_top_level_info(arena, &dump, raddbg, raddbg->top_level_info, 1); str8_list_push(arena, &dump, str8_lit("\n")); } // BINARY SECTIONS if (raddbg->binary_sections != 0 && params->dump_binary_sections){ str8_list_pushf(arena, &dump, "# BINARY SECTIONS:\n"); - RADDBG_BinarySection *ptr = raddbg->binary_sections; + RADDBGI_BinarySection *ptr = raddbg->binary_sections; for (U32 i = 0; i < raddbg->binary_sections_count; i += 1, ptr += 1){ str8_list_pushf(arena, &dump, " section[%u]:\n", i); - raddbg_stringize_binary_section(arena, &dump, raddbg, ptr, 2); + raddbgi_stringize_binary_section(arena, &dump, raddbg, ptr, 2); str8_list_push(arena, &dump, str8_lit("\n")); } str8_list_push(arena, &dump, str8_lit("\n")); @@ -206,17 +206,17 @@ main(int argc, char **argv){ // FILE PATHS if (raddbg->file_paths != 0 && params->dump_file_paths){ - RADDBG_FilePathBundle file_path_bundle = {0}; + RADDBGI_FilePathBundle file_path_bundle = {0}; { file_path_bundle.file_paths = raddbg->file_paths; file_path_bundle.file_path_count = raddbg->file_paths_count; } str8_list_pushf(arena, &dump, "# FILE PATHS\n"); - RADDBG_FilePathNode *ptr = raddbg->file_paths; + RADDBGI_FilePathNode *ptr = raddbg->file_paths; for (U32 i = 0; i < raddbg->file_paths_count; i += 1, ptr += 1){ if (ptr->parent_path_node == 0){ - raddbg_stringize_file_path(arena, &dump, raddbg, &file_path_bundle, ptr, 1); + raddbgi_stringize_file_path(arena, &dump, raddbg, &file_path_bundle, ptr, 1); } } str8_list_push(arena, &dump, str8_lit("\n")); @@ -225,10 +225,10 @@ main(int argc, char **argv){ // SOURCE FILES if (raddbg->source_files != 0 && params->dump_source_files){ str8_list_pushf(arena, &dump, "# SOURCE FILES\n"); - RADDBG_SourceFile *ptr = raddbg->source_files; + RADDBGI_SourceFile *ptr = raddbg->source_files; for (U32 i = 0; i < raddbg->source_files_count; i += 1, ptr += 1){ str8_list_pushf(arena, &dump, " source_file[%u]:\n", i); - raddbg_stringize_source_file(arena, &dump, raddbg, ptr, 2); + raddbgi_stringize_source_file(arena, &dump, raddbg, ptr, 2); str8_list_push(arena, &dump, str8_lit("\n")); } str8_list_push(arena, &dump, str8_lit("\n")); @@ -237,10 +237,10 @@ main(int argc, char **argv){ // UNITS if (raddbg->units != 0 && params->dump_units){ str8_list_pushf(arena, &dump, "# UNITS\n"); - RADDBG_Unit *ptr = raddbg->units; + RADDBGI_Unit *ptr = raddbg->units; for (U32 i = 0; i < raddbg->units_count; i += 1, ptr += 1){ str8_list_pushf(arena, &dump, " unit[%u]:\n", i); - raddbg_stringize_unit(arena, &dump, raddbg, ptr, 2); + raddbgi_stringize_unit(arena, &dump, raddbg, ptr, 2); str8_list_push(arena, &dump, str8_lit("\n")); } str8_list_push(arena, &dump, str8_lit("\n")); @@ -249,7 +249,7 @@ main(int argc, char **argv){ // UNIT VMAP if (raddbg->unit_vmap != 0 && params->dump_unit_vmap){ str8_list_pushf(arena, &dump, "# UNIT VMAP\n"); - RADDBG_VMapEntry *ptr = raddbg->unit_vmap; + RADDBGI_VMapEntry *ptr = raddbg->unit_vmap; for (U32 i = 0; i < raddbg->unit_vmap_count; i += 1, ptr += 1){ str8_list_pushf(arena, &dump, " 0x%08x: %llu\n", ptr->voff, ptr->idx); } @@ -259,10 +259,10 @@ main(int argc, char **argv){ // TYPE NODES if (raddbg->type_nodes != 0 && params->dump_type_nodes){ str8_list_pushf(arena, &dump, "# TYPE NODES:\n"); - RADDBG_TypeNode *ptr = raddbg->type_nodes; + RADDBGI_TypeNode *ptr = raddbg->type_nodes; for (U32 i = 0; i < raddbg->type_nodes_count; i += 1, ptr += 1){ str8_list_pushf(arena, &dump, " type[%u]:\n", i); - raddbg_stringize_type_node(arena, &dump, raddbg, ptr, 2); + raddbgi_stringize_type_node(arena, &dump, raddbg, ptr, 2); str8_list_push(arena, &dump, str8_lit("\n")); } str8_list_push(arena, &dump, str8_lit("\n")); @@ -270,7 +270,7 @@ main(int argc, char **argv){ // UDT DATA if (raddbg->udts != 0 && params->dump_udt_data){ - RADDBG_UDTMemberBundle member_bundle = {0}; + RADDBGI_UDTMemberBundle member_bundle = {0}; { member_bundle.members = raddbg->members; member_bundle.enum_members = raddbg->enum_members; @@ -279,10 +279,10 @@ main(int argc, char **argv){ } str8_list_pushf(arena, &dump, "# UDTS:\n"); - RADDBG_UDT *ptr = raddbg->udts; + RADDBGI_UDT *ptr = raddbg->udts; for (U32 i = 0; i < raddbg->udts_count; i += 1, ptr += 1){ str8_list_pushf(arena, &dump, " udt[%u]:\n", i); - raddbg_stringize_udt(arena, &dump, raddbg, &member_bundle, ptr, 2); + raddbgi_stringize_udt(arena, &dump, raddbg, &member_bundle, ptr, 2); str8_list_push(arena, &dump, str8_lit("\n")); } str8_list_push(arena, &dump, str8_lit("\n")); @@ -291,10 +291,10 @@ main(int argc, char **argv){ // GLOBAL VARIABLES if (raddbg->global_variables != 0 && params->dump_global_variables){ str8_list_pushf(arena, &dump, "# GLOBAL VARIABLES:\n"); - RADDBG_GlobalVariable *ptr = raddbg->global_variables; + RADDBGI_GlobalVariable *ptr = raddbg->global_variables; for (U32 i = 0; i < raddbg->global_variables_count; i += 1, ptr += 1){ str8_list_pushf(arena, &dump, " global_variable[%u]:\n", i); - raddbg_stringize_global_variable(arena, &dump, raddbg, ptr, 2); + raddbgi_stringize_global_variable(arena, &dump, raddbg, ptr, 2); str8_list_push(arena, &dump, str8_lit("\n")); } str8_list_push(arena, &dump, str8_lit("\n")); @@ -303,7 +303,7 @@ main(int argc, char **argv){ // GLOBAL VMAP if (raddbg->global_vmap != 0 && params->dump_global_vmap){ str8_list_pushf(arena, &dump, "# GLOBAL VMAP:\n"); - RADDBG_VMapEntry *ptr = raddbg->global_vmap; + RADDBGI_VMapEntry *ptr = raddbg->global_vmap; for (U32 i = 0; i < raddbg->global_vmap_count; i += 1, ptr += 1){ str8_list_pushf(arena, &dump, " 0x%08x: %llu\n", ptr->voff, ptr->idx); } @@ -313,10 +313,10 @@ main(int argc, char **argv){ // THREAD LOCAL VARIABLES if (raddbg->thread_variables != 0 && params->dump_thread_variables){ str8_list_pushf(arena, &dump, "# THREAD VARIABLES:\n"); - RADDBG_ThreadVariable *ptr = raddbg->thread_variables; + RADDBGI_ThreadVariable *ptr = raddbg->thread_variables; for (U32 i = 0; i < raddbg->thread_variables_count; i += 1, ptr += 1){ str8_list_pushf(arena, &dump, " thread_variable[%u]:\n", i); - raddbg_stringize_thread_variable(arena, &dump, raddbg, ptr, 2); + raddbgi_stringize_thread_variable(arena, &dump, raddbg, ptr, 2); str8_list_push(arena, &dump, str8_lit("\n")); } str8_list_push(arena, &dump, str8_lit("\n")); @@ -325,10 +325,10 @@ main(int argc, char **argv){ // PROCEDURES if (raddbg->procedures != 0 && params->dump_procedures){ str8_list_pushf(arena, &dump, "# PROCEDURES:\n"); - RADDBG_Procedure *ptr = raddbg->procedures; + RADDBGI_Procedure *ptr = raddbg->procedures; for (U32 i = 0; i < raddbg->procedures_count; i += 1, ptr += 1){ str8_list_pushf(arena, &dump, " procedure[%u]:\n", i); - raddbg_stringize_procedure(arena, &dump, raddbg, ptr, 2); + raddbgi_stringize_procedure(arena, &dump, raddbg, ptr, 2); str8_list_push(arena, &dump, str8_lit("\n")); } str8_list_push(arena, &dump, str8_lit("\n")); @@ -336,7 +336,7 @@ main(int argc, char **argv){ // SCOPES if (raddbg->scopes != 0 && params->dump_scopes){ - RADDBG_ScopeBundle scope_bundle = {0}; + RADDBGI_ScopeBundle scope_bundle = {0}; { scope_bundle.scopes = raddbg->scopes; scope_bundle.scope_count = raddbg->scopes_count; @@ -351,10 +351,10 @@ main(int argc, char **argv){ } str8_list_pushf(arena, &dump, "# SCOPES:\n"); - RADDBG_Scope *ptr = raddbg->scopes; + RADDBGI_Scope *ptr = raddbg->scopes; for (U32 i = 0; i < raddbg->scopes_count; i += 1, ptr += 1){ if (ptr->parent_scope_idx == 0){ - raddbg_stringize_scope(arena, &dump, raddbg, &scope_bundle, ptr, 1); + raddbgi_stringize_scope(arena, &dump, raddbg, &scope_bundle, ptr, 1); str8_list_push(arena, &dump, str8_lit("\n")); } } @@ -364,7 +364,7 @@ main(int argc, char **argv){ // SCOPE VMAP if (raddbg->scope_vmap != 0 && params->dump_scope_vmap){ str8_list_pushf(arena, &dump, "# SCOPE VMAP:\n"); - RADDBG_VMapEntry *ptr = raddbg->scope_vmap; + RADDBGI_VMapEntry *ptr = raddbg->scope_vmap; for (U32 i = 0; i < raddbg->scope_vmap_count; i += 1, ptr += 1){ str8_list_pushf(arena, &dump, " 0x%08x: %llu\n", ptr->voff, ptr->idx); } @@ -374,33 +374,33 @@ main(int argc, char **argv){ // NAME MAPS if (raddbg->name_maps != 0 && params->dump_name_map){ str8_list_pushf(arena, &dump, "# NAME MAP:\n"); - RADDBG_NameMap *ptr = raddbg->name_maps; + RADDBGI_NameMap *ptr = raddbg->name_maps; for (U32 i = 0; i < raddbg->name_maps_count; i += 1, ptr += 1){ str8_list_pushf(arena, &dump, " name_map[%u]:\n", i); - RADDBG_ParsedNameMap name_map = {0}; - raddbg_name_map_parse(raddbg, ptr, &name_map); + RADDBGI_ParsedNameMap name_map = {0}; + raddbgi_name_map_parse(raddbg, ptr, &name_map); - RADDBG_NameMapBucket *bucket = name_map.buckets; + RADDBGI_NameMapBucket *bucket = name_map.buckets; for (U32 j = 0; j < name_map.bucket_count; j += 1, bucket += 1){ if (bucket->node_count > 0){ str8_list_pushf(arena, &dump, " bucket[%u]:\n", j); - RADDBG_NameMapNode *node = name_map.nodes + bucket->first_node; - RADDBG_NameMapNode *node_opl = node + bucket->node_count; + RADDBGI_NameMapNode *node = name_map.nodes + bucket->first_node; + RADDBGI_NameMapNode *node_opl = node + bucket->node_count; for (; node < node_opl; node += 1){ String8 string = {0}; - string.str = raddbg_string_from_idx(raddbg, node->string_idx, &string.size); + string.str = raddbgi_string_from_idx(raddbg, node->string_idx, &string.size); str8_list_pushf(arena, &dump, " match \"%.*s\": ", str8_varg(string)); if (node->match_count == 1){ str8_list_pushf(arena, &dump, "%u", node->match_idx_or_idx_run_first); } else{ - RADDBG_U32 idx_count = 0; - RADDBG_U32 *idx_run = - raddbg_idx_run_from_first_count(raddbg, node->match_idx_or_idx_run_first, - node->match_count, &idx_count); + RADDBGI_U32 idx_count = 0; + RADDBGI_U32 *idx_run = + raddbgi_idx_run_from_first_count(raddbg, node->match_idx_or_idx_run_first, + node->match_count, &idx_count); if (idx_count > 0){ - RADDBG_U32 last = idx_count - 1; + RADDBGI_U32 last = idx_count - 1; for (U32 k = 0; k < last; k += 1){ str8_list_pushf(arena, &dump, "%u, ", idx_run[k]); } diff --git a/src/raddbgi_dump/raddbgi_dump.h b/src/raddbgi_dump/raddbgi_dump.h index 62ca2ce4..e791ff40 100644 --- a/src/raddbgi_dump/raddbgi_dump.h +++ b/src/raddbgi_dump/raddbgi_dump.h @@ -1,8 +1,8 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef RADDBG_DUMP_H -#define RADDBG_DUMP_H +#ifndef RADDBGI_DUMP_H +#define RADDBGI_DUMP_H //////////////////////////////// //~ Program Parameters Type @@ -42,4 +42,4 @@ typedef struct DUMP_Params{ static DUMP_Params *dump_params_from_cmd_line(Arena *arena, CmdLine *cmdline); -#endif //RADDBG_DUMP_H +#endif //RADDBGI_DUMP_H diff --git a/src/raddbgi_dump/raddbgi_stringize.c b/src/raddbgi_dump/raddbgi_stringize.c index 6bc06597..a2ef8976 100644 --- a/src/raddbgi_dump/raddbgi_stringize.c +++ b/src/raddbgi_dump/raddbgi_stringize.c @@ -5,12 +5,12 @@ //~ RADDBG Common Stringize Functions static String8 -raddbg_string_from_data_section_tag(RADDBG_DataSectionTag tag){ +raddbgi_string_from_data_section_tag(RADDBGI_DataSectionTag tag){ String8 result = {0}; switch (tag){ #define X(N,C) case C: result = str8_lit(#N); break; #define Y(N) - RADDBG_DataSectionTagXList(X,Y) + RADDBGI_DataSectionTagXList(X,Y) #undef X #undef Y } @@ -18,36 +18,36 @@ raddbg_string_from_data_section_tag(RADDBG_DataSectionTag tag){ } static String8 -raddbg_string_from_arch(RADDBG_Arch arch){ +raddbgi_string_from_arch(RADDBGI_Arch arch){ String8 result = {0}; switch (arch){ default: result = str8_lit(""); break; - case RADDBG_Arch_X86: result = str8_lit("x86"); break; - case RADDBG_Arch_X64: result = str8_lit("x64"); break; + case RADDBGI_Arch_X86: result = str8_lit("x86"); break; + case RADDBGI_Arch_X64: result = str8_lit("x64"); break; } return(result); } static String8 -raddbg_string_from_language(RADDBG_Language language){ +raddbgi_string_from_language(RADDBGI_Language language){ String8 result = {0}; switch (language){ #define X(name,code) case code: result = str8_lit(#name); break; - RADDBG_LanguageXList(X) + RADDBGI_LanguageXList(X) #undef X } return(result); } static String8 -raddbg_string_from_type_kind(RADDBG_TypeKind type_kind){ +raddbgi_string_from_type_kind(RADDBGI_TypeKind type_kind){ String8 result = {0}; switch (type_kind){ default: result = str8_lit(""); break; #define X(name,code) case code: result = str8_lit(#name); break; #define XZ(name,code,size) X(name,code) #define Y(a,n) - RADDBG_TypeKindXList(X,XZ,Y) + RADDBGI_TypeKindXList(X,XZ,Y) #undef X #undef XZ #undef Y @@ -56,24 +56,24 @@ raddbg_string_from_type_kind(RADDBG_TypeKind type_kind){ } static String8 -raddbg_string_from_member_kind(RADDBG_MemberKind member_kind){ +raddbgi_string_from_member_kind(RADDBGI_MemberKind member_kind){ String8 result = {0}; switch (member_kind){ default: result = str8_lit(""); break; #define X(N,C) case C: result = str8_lit(#N); break; - RADDBG_MemberKindXList(X) + RADDBGI_MemberKindXList(X) #undef X } return(result); } static String8 -raddbg_string_from_local_kind(RADDBG_LocalKind local_kind){ +raddbgi_string_from_local_kind(RADDBGI_LocalKind local_kind){ String8 result = {0}; switch (local_kind){ default: result = str8_lit(""); break; - case RADDBG_LocalKind_Parameter: result = str8_lit("Parameter"); break; - case RADDBG_LocalKind_Variable: result = str8_lit("Variable"); break; + case RADDBGI_LocalKind_Parameter: result = str8_lit("Parameter"); break; + case RADDBGI_LocalKind_Variable: result = str8_lit("Variable"); break; } return(result); } @@ -83,59 +83,59 @@ raddbg_string_from_local_kind(RADDBG_LocalKind local_kind){ //~ RADDBG Flags Stringize Functions static void -raddbg_stringize_binary_section_flags(Arena *arena, String8List *out, - RADDBG_BinarySectionFlags flags){ +raddbgi_stringize_binary_section_flags(Arena *arena, String8List *out, + RADDBGI_BinarySectionFlags flags){ if (flags == 0){ str8_list_push(arena, out, str8_lit("0")); } - if (flags & RADDBG_BinarySectionFlag_Read){ + if (flags & RADDBGI_BinarySectionFlag_Read){ str8_list_push(arena, out, str8_lit("Read ")); } - if (flags & RADDBG_BinarySectionFlag_Write){ + if (flags & RADDBGI_BinarySectionFlag_Write){ str8_list_push(arena, out, str8_lit("Write ")); } - if (flags & RADDBG_BinarySectionFlag_Execute){ + if (flags & RADDBGI_BinarySectionFlag_Execute){ str8_list_push(arena, out, str8_lit("Execute ")); } } static void -raddbg_stringize_type_modifier_flags(Arena *arena, String8List *out, - RADDBG_TypeModifierFlags flags){ +raddbgi_stringize_type_modifier_flags(Arena *arena, String8List *out, + RADDBGI_TypeModifierFlags flags){ if (flags == 0){ str8_list_push(arena, out, str8_lit("0")); } - if (flags & RADDBG_TypeModifierFlag_Const){ + if (flags & RADDBGI_TypeModifierFlag_Const){ str8_list_push(arena, out, str8_lit("Const ")); } - if (flags & RADDBG_TypeModifierFlag_Volatile){ + if (flags & RADDBGI_TypeModifierFlag_Volatile){ str8_list_push(arena, out, str8_lit("Volatile ")); } } static void -raddbg_stringize_user_defined_type_flags(Arena *arena, String8List *out, - RADDBG_UserDefinedTypeFlags flags){ +raddbgi_stringize_user_defined_type_flags(Arena *arena, String8List *out, + RADDBGI_UserDefinedTypeFlags flags){ if (flags == 0){ str8_list_push(arena, out, str8_lit("0")); } - if (flags & RADDBG_UserDefinedTypeFlag_EnumMembers){ + if (flags & RADDBGI_UserDefinedTypeFlag_EnumMembers){ str8_list_push(arena, out, str8_lit("EnumMembers ")); } } static void -raddbg_stringize_link_flags(Arena *arena, String8List *out, RADDBG_LinkFlags flags){ +raddbgi_stringize_link_flags(Arena *arena, String8List *out, RADDBGI_LinkFlags flags){ if (flags == 0){ str8_list_push(arena, out, str8_lit("0")); } - if (flags & RADDBG_LinkFlag_External){ + if (flags & RADDBGI_LinkFlag_External){ str8_list_push(arena, out, str8_lit("External ")); } - if (flags & RADDBG_LinkFlag_TypeScoped){ + if (flags & RADDBGI_LinkFlag_TypeScoped){ str8_list_push(arena, out, str8_lit("TypeScoped ")); } - if (flags & RADDBG_LinkFlag_ProcScoped){ + if (flags & RADDBGI_LinkFlag_ProcScoped){ str8_list_push(arena, out, str8_lit("ProcScoped ")); } } @@ -144,82 +144,82 @@ raddbg_stringize_link_flags(Arena *arena, String8List *out, RADDBG_LinkFlags fla //////////////////////////////// //~ RADDBG Compound Stringize Functions -static char raddbg_stringize_spaces[] = " "; +static char raddbgi_stringize_spaces[] = " "; static void -raddbg_stringize_data_sections(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - U32 indent_level){ +raddbgi_stringize_data_sections(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + U32 indent_level){ U64 data_section_count = parsed->dsec_count; - RADDBG_DataSection *ptr = parsed->dsecs; + RADDBGI_DataSection *ptr = parsed->dsecs; for (U64 i = 0; i < data_section_count; i += 1, ptr += 1){ - String8 tag_str = raddbg_string_from_data_section_tag(ptr->tag); + String8 tag_str = raddbgi_string_from_data_section_tag(ptr->tag); str8_list_pushf(arena, out, "%.*sdata_section[%5u] = {0x%08llx, %7u, %7u} %.*s\n", - indent_level, raddbg_stringize_spaces, + indent_level, raddbgi_stringize_spaces, i, ptr->off, ptr->encoded_size, ptr->unpacked_size, str8_varg(tag_str)); } } static void -raddbg_stringize_top_level_info(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_TopLevelInfo *tli, U32 indent_level){ - String8 arch_str = raddbg_string_from_arch(tli->architecture); +raddbgi_stringize_top_level_info(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_TopLevelInfo *tli, U32 indent_level){ + String8 arch_str = raddbgi_string_from_arch(tli->architecture); String8 exe_name = {0}; - exe_name.str = raddbg_string_from_idx(parsed, tli->exe_name_string_idx, &exe_name.size); + exe_name.str = raddbgi_string_from_idx(parsed, tli->exe_name_string_idx, &exe_name.size); str8_list_pushf(arena, out, "%.*sarchitecture=%.*s\n", - indent_level, raddbg_stringize_spaces, str8_varg(arch_str)); + indent_level, raddbgi_stringize_spaces, str8_varg(arch_str)); str8_list_pushf(arena, out, "%.*sexe_name='%.*s'\n", - indent_level, raddbg_stringize_spaces, str8_varg(exe_name)); + indent_level, raddbgi_stringize_spaces, str8_varg(exe_name)); str8_list_pushf(arena, out, "%.*svoff_max=0x%08llx\n", - indent_level, raddbg_stringize_spaces, tli->voff_max); + indent_level, raddbgi_stringize_spaces, tli->voff_max); } static void -raddbg_stringize_binary_section(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_BinarySection *bin_section, U32 indent_level){ +raddbgi_stringize_binary_section(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_BinarySection *bin_section, U32 indent_level){ String8 name = {0}; - name.str = raddbg_string_from_idx(parsed, bin_section->name_string_idx, &name.size); + name.str = raddbgi_string_from_idx(parsed, bin_section->name_string_idx, &name.size); str8_list_pushf(arena, out, "%.*sname='%.*s'\n", - indent_level, raddbg_stringize_spaces, str8_varg(name)); + indent_level, raddbgi_stringize_spaces, str8_varg(name)); - str8_list_pushf(arena, out, "%.*sflags=", indent_level, raddbg_stringize_spaces); - raddbg_stringize_binary_section_flags(arena, out, bin_section->flags); + str8_list_pushf(arena, out, "%.*sflags=", indent_level, raddbgi_stringize_spaces); + raddbgi_stringize_binary_section_flags(arena, out, bin_section->flags); str8_list_pushf(arena, out, "\n"); str8_list_pushf(arena, out, "%.*svoff_first=0x%08x\n", - indent_level, raddbg_stringize_spaces, bin_section->voff_first); + indent_level, raddbgi_stringize_spaces, bin_section->voff_first); str8_list_pushf(arena, out, "%.*svoff_opl =0x%08x\n", - indent_level, raddbg_stringize_spaces, bin_section->voff_opl); + indent_level, raddbgi_stringize_spaces, bin_section->voff_opl); str8_list_pushf(arena, out, "%.*sfoff_first=0x%08x\n", - indent_level, raddbg_stringize_spaces, bin_section->foff_first); + indent_level, raddbgi_stringize_spaces, bin_section->foff_first); str8_list_pushf(arena, out, "%.*sfoff_opl =0x%08x\n", - indent_level, raddbg_stringize_spaces, bin_section->foff_opl); + indent_level, raddbgi_stringize_spaces, bin_section->foff_opl); } static void -raddbg_stringize_file_path(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_FilePathBundle *bundle, RADDBG_FilePathNode *file_path, - U32 indent_level){ +raddbgi_stringize_file_path(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_FilePathBundle *bundle, RADDBGI_FilePathNode *file_path, + U32 indent_level){ String8 name = {0}; - name.str = raddbg_string_from_idx(parsed, file_path->name_string_idx, &name.size); + name.str = raddbgi_string_from_idx(parsed, file_path->name_string_idx, &name.size); U32 this_idx = (U32)(file_path - bundle->file_paths); if (file_path->source_file_idx == 0){ str8_list_pushf(arena, out, "%.*s[%u] '%.*s'\n", - indent_level, raddbg_stringize_spaces, + indent_level, raddbgi_stringize_spaces, this_idx, str8_varg(name)); } else{ str8_list_pushf(arena, out, "%.*s[%u] '%.*s'; source_file=%u\n", - indent_level, raddbg_stringize_spaces, + indent_level, raddbgi_stringize_spaces, this_idx, str8_varg(name), file_path->source_file_idx); } for (U32 child = file_path->first_child; child != 0;){ // get node for child - RADDBG_FilePathNode *child_node = 0; + RADDBGI_FilePathNode *child_node = 0; if (child < bundle->file_path_count){ child_node = bundle->file_paths + child; } @@ -228,7 +228,7 @@ raddbg_stringize_file_path(Arena *arena, String8List *out, RADDBG_Parsed *parsed } // stringize child - raddbg_stringize_file_path(arena, out, parsed, bundle, child_node, indent_level + 1); + raddbgi_stringize_file_path(arena, out, parsed, bundle, child_node, indent_level + 1); // increment iterator child = child_node->next_sibling; @@ -236,14 +236,14 @@ raddbg_stringize_file_path(Arena *arena, String8List *out, RADDBG_Parsed *parsed } static void -raddbg_stringize_source_file(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_SourceFile *source_file, U32 indent_level){ +raddbgi_stringize_source_file(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_SourceFile *source_file, U32 indent_level){ // extract line map data - RADDBG_ParsedLineMap line_map = {0}; - raddbg_line_map_from_source_file(parsed, source_file, &line_map); + RADDBGI_ParsedLineMap line_map = {0}; + raddbgi_line_map_from_source_file(parsed, source_file, &line_map); // stringize line map data - str8_list_pushf(arena, out, "%.*slines:\n", indent_level, raddbg_stringize_spaces); + str8_list_pushf(arena, out, "%.*slines:\n", indent_level, raddbgi_stringize_spaces); for (U32 i = 0; i < line_map.count; i += 1){ U32 line_num = line_map.nums[i]; @@ -261,7 +261,7 @@ raddbg_stringize_source_file(Arena *arena, String8List *out, RADDBG_Parsed *pars } str8_list_pushf(arena, out, "%.*s %u: ", - indent_level, raddbg_stringize_spaces, line_num); + indent_level, raddbgi_stringize_spaces, line_num); U32 first = line_map.ranges[i]; U32 opl_raw = line_map.ranges[i + 1]; @@ -272,7 +272,7 @@ raddbg_stringize_source_file(Arena *arena, String8List *out, RADDBG_Parsed *pars } else{ str8_list_pushf(arena, out, "%.*s0x%08x\n", - indent_level + digit_count + 3, raddbg_stringize_spaces, + indent_level + digit_count + 3, raddbgi_stringize_spaces, line_map.voffs[j]); } } @@ -280,57 +280,57 @@ raddbg_stringize_source_file(Arena *arena, String8List *out, RADDBG_Parsed *pars } static void -raddbg_stringize_unit(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_Unit *unit, U32 indent_level){ +raddbgi_stringize_unit(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_Unit *unit, U32 indent_level){ String8 unit_name = {0}; - unit_name.str = raddbg_string_from_idx(parsed, unit->unit_name_string_idx, &unit_name.size); + unit_name.str = raddbgi_string_from_idx(parsed, unit->unit_name_string_idx, &unit_name.size); String8 compiler_name = {0}; - compiler_name.str = raddbg_string_from_idx(parsed, unit->compiler_name_string_idx, - &compiler_name.size); + compiler_name.str = raddbgi_string_from_idx(parsed, unit->compiler_name_string_idx, + &compiler_name.size); str8_list_pushf(arena, out, "%.*sunit_name='%.*s'\n", - indent_level, raddbg_stringize_spaces, str8_varg(unit_name)); + indent_level, raddbgi_stringize_spaces, str8_varg(unit_name)); str8_list_pushf(arena, out, "%.*scompiler_name='%.*s'\n", - indent_level, raddbg_stringize_spaces, str8_varg(compiler_name)); + indent_level, raddbgi_stringize_spaces, str8_varg(compiler_name)); str8_list_pushf(arena, out, "%.*ssource_file_path=%u\n", - indent_level, raddbg_stringize_spaces, unit->source_file_path_node); + indent_level, raddbgi_stringize_spaces, unit->source_file_path_node); str8_list_pushf(arena, out, "%.*sobject_file_path=%u\n", - indent_level, raddbg_stringize_spaces, unit->object_file_path_node); + indent_level, raddbgi_stringize_spaces, unit->object_file_path_node); str8_list_pushf(arena, out, "%.*sarchive_file_path=%u\n", - indent_level, raddbg_stringize_spaces, unit->archive_file_path_node); + indent_level, raddbgi_stringize_spaces, unit->archive_file_path_node); str8_list_pushf(arena, out, "%.*sbuild_path=%u\n", - indent_level, raddbg_stringize_spaces, unit->build_path_node); + indent_level, raddbgi_stringize_spaces, unit->build_path_node); - String8 language_str = raddbg_string_from_language(unit->language); + String8 language_str = raddbgi_string_from_language(unit->language); str8_list_pushf(arena, out, "%.*slanguage=%.*s\n", - indent_level, raddbg_stringize_spaces, str8_varg(language_str)); + indent_level, raddbgi_stringize_spaces, str8_varg(language_str)); // extract line info data - RADDBG_ParsedLineInfo line_info = {0}; - raddbg_line_info_from_unit(parsed, unit, &line_info); + RADDBGI_ParsedLineInfo line_info = {0}; + raddbgi_line_info_from_unit(parsed, unit, &line_info); // stringize line info - str8_list_pushf(arena, out, "%.*slines:\n", indent_level, raddbg_stringize_spaces); + str8_list_pushf(arena, out, "%.*slines:\n", indent_level, raddbgi_stringize_spaces); for (U32 i = 0; i < line_info.count; i += 1){ U64 first = line_info.voffs[i]; U64 opl = line_info.voffs[i + 1]; - RADDBG_Line *line = line_info.lines + i; - RADDBG_Column *col = 0; + RADDBGI_Line *line = line_info.lines + i; + RADDBGI_Column *col = 0; if (i < line_info.col_count){ col = line_info.cols + i; } if (col == 0){ str8_list_pushf(arena, out, "%.*s [0x%08llx,0x%08llx) file=%u; line=%u\n", - indent_level, raddbg_stringize_spaces, + indent_level, raddbgi_stringize_spaces, first, opl, line->file_idx, line->line_num); } else{ str8_list_pushf(arena, out, "%.*s [0x%08llx,0x%08llx) file=%u; line=%u; columns=[%u,%u)\n", - indent_level, raddbg_stringize_spaces, + indent_level, raddbgi_stringize_spaces, first, opl, line->file_idx, line->line_num, col->col_first, col->col_opl); } @@ -338,19 +338,19 @@ raddbg_stringize_unit(Arena *arena, String8List *out, RADDBG_Parsed *parsed, } static void -raddbg_stringize_type_node(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_TypeNode *type, U32 indent_level){ - RADDBG_TypeKind kind = type->kind; - String8 type_kind_str = raddbg_string_from_type_kind(kind); +raddbgi_stringize_type_node(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_TypeNode *type, U32 indent_level){ + RADDBGI_TypeKind kind = type->kind; + String8 type_kind_str = raddbgi_string_from_type_kind(kind); str8_list_pushf(arena, out, "%.*skind=%.*s\n", - indent_level, raddbg_stringize_spaces, str8_varg(type_kind_str)); + indent_level, raddbgi_stringize_spaces, str8_varg(type_kind_str)); switch (type->kind){ - case RADDBG_TypeKind_Modifier: + case RADDBGI_TypeKind_Modifier: { - str8_list_pushf(arena, out, "%.*sflags=", indent_level, raddbg_stringize_spaces); - raddbg_stringize_type_modifier_flags(arena, out, type->flags); + str8_list_pushf(arena, out, "%.*sflags=", indent_level, raddbgi_stringize_spaces); + raddbgi_stringize_type_modifier_flags(arena, out, type->flags); str8_list_push(arena, out, str8_lit("\n")); }break; @@ -358,42 +358,42 @@ raddbg_stringize_type_node(Arena *arena, String8List *out, RADDBG_Parsed *parsed { if (type->flags != 0){ str8_list_pushf(arena, out, "%.*sflags=%x (missing stringizer path)", - indent_level, raddbg_stringize_spaces, type->flags); + indent_level, raddbgi_stringize_spaces, type->flags); } }break; } str8_list_pushf(arena, out, "%.*sbyte_size=%u\n", - indent_level, raddbg_stringize_spaces, type->byte_size); + indent_level, raddbgi_stringize_spaces, type->byte_size); - if (RADDBG_TypeKind_FirstBuiltIn <= kind && - kind <= RADDBG_TypeKind_LastBuiltIn){ + if (RADDBGI_TypeKind_FirstBuiltIn <= kind && + kind <= RADDBGI_TypeKind_LastBuiltIn){ String8 name = {0}; - name.str = raddbg_string_from_idx(parsed, type->built_in.name_string_idx, &name.size); + name.str = raddbgi_string_from_idx(parsed, type->built_in.name_string_idx, &name.size); str8_list_pushf(arena, out, "%.*sbuilt_in.name='%.*s'\n", - indent_level, raddbg_stringize_spaces, str8_varg(name)); + indent_level, raddbgi_stringize_spaces, str8_varg(name)); } - else if (RADDBG_TypeKind_FirstConstructed <= kind && - kind <= RADDBG_TypeKind_LastConstructed){ + else if (RADDBGI_TypeKind_FirstConstructed <= kind && + kind <= RADDBGI_TypeKind_LastConstructed){ str8_list_pushf(arena, out, "%.*sconstructed.direct_type=%u\n", - indent_level, raddbg_stringize_spaces, type->constructed.direct_type_idx); + indent_level, raddbgi_stringize_spaces, type->constructed.direct_type_idx); - if (type->kind == RADDBG_TypeKind_Array){ + if (type->kind == RADDBGI_TypeKind_Array){ str8_list_pushf(arena, out, "%.*sconstructed.array_count=%u\n", - indent_level, raddbg_stringize_spaces, type->constructed.count); + indent_level, raddbgi_stringize_spaces, type->constructed.count); } - if (type->kind == RADDBG_TypeKind_Function || - type->kind == RADDBG_TypeKind_Method){ + if (type->kind == RADDBGI_TypeKind_Function || + type->kind == RADDBGI_TypeKind_Method){ U32 run_first = type->constructed.param_idx_run_first; U32 run_count_raw = type->constructed.count; U32 run_count = 0; - U32 *run = raddbg_idx_run_from_first_count(parsed, run_first, run_count_raw, &run_count); + U32 *run = raddbgi_idx_run_from_first_count(parsed, run_first, run_count_raw, &run_count); U32 this_type_idx = 0; - if (run_count > 0 && type->kind == RADDBG_TypeKind_Method){ + if (run_count > 0 && type->kind == RADDBGI_TypeKind_Method){ this_type_idx = run[0]; run += 1; run_count -= 1; @@ -401,11 +401,11 @@ raddbg_stringize_type_node(Arena *arena, String8List *out, RADDBG_Parsed *parsed if (this_type_idx != 0){ str8_list_pushf(arena, out, "%.*sconstructed.this_type=%u\n", - indent_level, raddbg_stringize_spaces, this_type_idx); + indent_level, raddbgi_stringize_spaces, this_type_idx); } str8_list_pushf(arena, out, "%.*sconstructed.params={", - indent_level, raddbg_stringize_spaces); + indent_level, raddbgi_stringize_spaces); if (run_count > 0){ U32 last = run_count - 1; @@ -419,63 +419,63 @@ raddbg_stringize_type_node(Arena *arena, String8List *out, RADDBG_Parsed *parsed } } - else if (RADDBG_TypeKind_FirstUserDefined <= kind && - kind <= RADDBG_TypeKind_LastUserDefined){ + else if (RADDBGI_TypeKind_FirstUserDefined <= kind && + kind <= RADDBGI_TypeKind_LastUserDefined){ String8 name = {0}; - name.str = raddbg_string_from_idx(parsed, type->user_defined.name_string_idx, &name.size); + name.str = raddbgi_string_from_idx(parsed, type->user_defined.name_string_idx, &name.size); str8_list_pushf(arena, out, "%.*suser_defined.name='%.*s'\n", - indent_level, raddbg_stringize_spaces, str8_varg(name)); + indent_level, raddbgi_stringize_spaces, str8_varg(name)); str8_list_pushf(arena, out, "%.*suser_defined.direct_type=%u\n", - indent_level, raddbg_stringize_spaces, + indent_level, raddbgi_stringize_spaces, type->user_defined.direct_type_idx); str8_list_pushf(arena, out, "%.*suser_defined.udt=%u\n", - indent_level, raddbg_stringize_spaces, + indent_level, raddbgi_stringize_spaces, type->user_defined.udt_idx); } - else if (kind == RADDBG_TypeKind_Bitfield){ + else if (kind == RADDBGI_TypeKind_Bitfield){ str8_list_pushf(arena, out, "%.*sbitfield.off=%u\n", - indent_level, raddbg_stringize_spaces, type->bitfield.off); + indent_level, raddbgi_stringize_spaces, type->bitfield.off); str8_list_pushf(arena, out, "%.*sbitfield.size=%u\n", - indent_level, raddbg_stringize_spaces, type->bitfield.size); + indent_level, raddbgi_stringize_spaces, type->bitfield.size); } } static void -raddbg_stringize_udt(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_UDTMemberBundle *member_bundle, RADDBG_UDT *udt, - U32 indent_level){ +raddbgi_stringize_udt(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_UDTMemberBundle *member_bundle, RADDBGI_UDT *udt, + U32 indent_level){ str8_list_pushf(arena, out, "%.*sself_type=%u\n", - indent_level, raddbg_stringize_spaces, udt->self_type_idx); + indent_level, raddbgi_stringize_spaces, udt->self_type_idx); - str8_list_pushf(arena, out, "%.*sflags=", indent_level, raddbg_stringize_spaces); - raddbg_stringize_user_defined_type_flags(arena, out, udt->flags); + str8_list_pushf(arena, out, "%.*sflags=", indent_level, raddbgi_stringize_spaces); + raddbgi_stringize_user_defined_type_flags(arena, out, udt->flags); str8_list_push(arena, out, str8_lit("\n")); if (udt->file_idx != 0){ str8_list_pushf(arena, out, "%.*sloc={file=%u; line=%u; col=%u}\n", - indent_level, raddbg_stringize_spaces, + indent_level, raddbgi_stringize_spaces, udt->file_idx, udt->line, udt->col); } // enum members - if (udt->flags & RADDBG_UserDefinedTypeFlag_EnumMembers){ + if (udt->flags & RADDBGI_UserDefinedTypeFlag_EnumMembers){ U32 first_raw = udt->member_first; U32 opl_raw = first_raw + udt->member_count; U32 opl = ClampTop(opl_raw, member_bundle->enum_member_count); U32 first = ClampTop(first_raw, opl); if (first < opl){ - str8_list_pushf(arena, out, "%.*smembers={\n", indent_level, raddbg_stringize_spaces); - RADDBG_EnumMember *enum_member = member_bundle->enum_members + first; + str8_list_pushf(arena, out, "%.*smembers={\n", indent_level, raddbgi_stringize_spaces); + RADDBGI_EnumMember *enum_member = member_bundle->enum_members + first; for (U32 i = first; i < opl; i += 1, enum_member += 1){ String8 name = {0}; - name.str = raddbg_string_from_idx(parsed, enum_member->name_string_idx, &name.size); + name.str = raddbgi_string_from_idx(parsed, enum_member->name_string_idx, &name.size); str8_list_pushf(arena, out, "%.*s '%.*s' %llu\n", - indent_level, raddbg_stringize_spaces, + indent_level, raddbgi_stringize_spaces, str8_varg(name), enum_member->val); } - str8_list_pushf(arena, out, "%.*s}\n", indent_level, raddbg_stringize_spaces); + str8_list_pushf(arena, out, "%.*s}\n", indent_level, raddbgi_stringize_spaces); } } @@ -487,117 +487,117 @@ raddbg_stringize_udt(Arena *arena, String8List *out, RADDBG_Parsed *parsed, U32 first = ClampTop(first_raw, opl); if (first < opl){ - str8_list_pushf(arena, out, "%.*smembers={\n", indent_level, raddbg_stringize_spaces); - RADDBG_Member *member = member_bundle->members + first; + str8_list_pushf(arena, out, "%.*smembers={\n", indent_level, raddbgi_stringize_spaces); + RADDBGI_Member *member = member_bundle->members + first; for (U32 i = first; i < opl; i += 1, member += 1){ - str8_list_pushf(arena, out, "%.*s {\n", indent_level, raddbg_stringize_spaces); + str8_list_pushf(arena, out, "%.*s {\n", indent_level, raddbgi_stringize_spaces); - String8 kind_str = raddbg_string_from_member_kind(member->kind); + String8 kind_str = raddbgi_string_from_member_kind(member->kind); str8_list_pushf(arena, out, "%.*s kind=%.*s\n", - indent_level, raddbg_stringize_spaces, str8_varg(kind_str)); + indent_level, raddbgi_stringize_spaces, str8_varg(kind_str)); if (member->name_string_idx != 0){ String8 name = {0}; - name.str = raddbg_string_from_idx(parsed, member->name_string_idx, &name.size); + name.str = raddbgi_string_from_idx(parsed, member->name_string_idx, &name.size); str8_list_pushf(arena, out, "%.*s name='%.*s'\n", - indent_level, raddbg_stringize_spaces, str8_varg(name)); + indent_level, raddbgi_stringize_spaces, str8_varg(name)); } str8_list_pushf(arena, out, "%.*s type=%u\n", - indent_level, raddbg_stringize_spaces, member->type_idx); + indent_level, raddbgi_stringize_spaces, member->type_idx); str8_list_pushf(arena, out, "%.*s off=%u\n", - indent_level, raddbg_stringize_spaces, member->off); + indent_level, raddbgi_stringize_spaces, member->off); - str8_list_pushf(arena, out, "%.*s }\n", indent_level, raddbg_stringize_spaces); + str8_list_pushf(arena, out, "%.*s }\n", indent_level, raddbgi_stringize_spaces); } - str8_list_pushf(arena, out, "%.*s}\n", indent_level, raddbg_stringize_spaces); + str8_list_pushf(arena, out, "%.*s}\n", indent_level, raddbgi_stringize_spaces); } } } static void -raddbg_stringize_global_variable(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_GlobalVariable *global_variable, U32 indent_level){ +raddbgi_stringize_global_variable(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_GlobalVariable *global_variable, U32 indent_level){ String8 name = {0}; - name.str = raddbg_string_from_idx(parsed, global_variable->name_string_idx, &name.size); + name.str = raddbgi_string_from_idx(parsed, global_variable->name_string_idx, &name.size); str8_list_pushf(arena, out, "%.*sname='%.*s'\n", - indent_level, raddbg_stringize_spaces, str8_varg(name)); + indent_level, raddbgi_stringize_spaces, str8_varg(name)); - str8_list_pushf(arena, out, "%.*slink_flags=", indent_level, raddbg_stringize_spaces); - raddbg_stringize_link_flags(arena, out, global_variable->link_flags); + str8_list_pushf(arena, out, "%.*slink_flags=", indent_level, raddbgi_stringize_spaces); + raddbgi_stringize_link_flags(arena, out, global_variable->link_flags); str8_list_push(arena, out, str8_lit("\n")); str8_list_pushf(arena, out, "%.*svoff=0x%08llx\n", - indent_level, raddbg_stringize_spaces, global_variable->voff); + indent_level, raddbgi_stringize_spaces, global_variable->voff); str8_list_pushf(arena, out, "%.*stype_idx=%u\n", - indent_level, raddbg_stringize_spaces, global_variable->type_idx); + indent_level, raddbgi_stringize_spaces, global_variable->type_idx); str8_list_pushf(arena, out, "%.*scontainer_idx=%u\n", - indent_level, raddbg_stringize_spaces, global_variable->container_idx); + indent_level, raddbgi_stringize_spaces, global_variable->container_idx); } static void -raddbg_stringize_thread_variable(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_ThreadVariable *thread_var, - U32 indent_level){ +raddbgi_stringize_thread_variable(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_ThreadVariable *thread_var, + U32 indent_level){ String8 name = {0}; - name.str = raddbg_string_from_idx(parsed, thread_var->name_string_idx, &name.size); + name.str = raddbgi_string_from_idx(parsed, thread_var->name_string_idx, &name.size); str8_list_pushf(arena, out, "%.*sname='%.*s'\n", - indent_level, raddbg_stringize_spaces, str8_varg(name)); + indent_level, raddbgi_stringize_spaces, str8_varg(name)); - str8_list_pushf(arena, out, "%.*slink_flags=", indent_level, raddbg_stringize_spaces); - raddbg_stringize_link_flags(arena, out, thread_var->link_flags); + str8_list_pushf(arena, out, "%.*slink_flags=", indent_level, raddbgi_stringize_spaces); + raddbgi_stringize_link_flags(arena, out, thread_var->link_flags); str8_list_push(arena, out, str8_lit("\n")); str8_list_pushf(arena, out, "%.*stls_off=0x%08x\n", - indent_level, raddbg_stringize_spaces, thread_var->tls_off); + indent_level, raddbgi_stringize_spaces, thread_var->tls_off); str8_list_pushf(arena, out, "%.*stype_idx=%u\n", - indent_level, raddbg_stringize_spaces, thread_var->type_idx); + indent_level, raddbgi_stringize_spaces, thread_var->type_idx); str8_list_pushf(arena, out, "%.*scontainer_idx=%u\n", - indent_level, raddbg_stringize_spaces, thread_var->container_idx); + indent_level, raddbgi_stringize_spaces, thread_var->container_idx); } static void -raddbg_stringize_procedure(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_Procedure *proc, U32 indent_level){ +raddbgi_stringize_procedure(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_Procedure *proc, U32 indent_level){ String8 name = {0}; - name.str = raddbg_string_from_idx(parsed, proc->name_string_idx, &name.size); + name.str = raddbgi_string_from_idx(parsed, proc->name_string_idx, &name.size); str8_list_pushf(arena, out, "%.*sname='%.*s'\n", - indent_level, raddbg_stringize_spaces, str8_varg(name)); + indent_level, raddbgi_stringize_spaces, str8_varg(name)); String8 link_name = {0}; - link_name.str = raddbg_string_from_idx(parsed, proc->link_name_string_idx, &link_name.size); + link_name.str = raddbgi_string_from_idx(parsed, proc->link_name_string_idx, &link_name.size); str8_list_pushf(arena, out, "%.*slink_name='%.*s'\n", - indent_level, raddbg_stringize_spaces, str8_varg(link_name)); + indent_level, raddbgi_stringize_spaces, str8_varg(link_name)); - str8_list_pushf(arena, out, "%.*slink_flags=", indent_level, raddbg_stringize_spaces); - raddbg_stringize_link_flags(arena, out, proc->link_flags); + str8_list_pushf(arena, out, "%.*slink_flags=", indent_level, raddbgi_stringize_spaces); + raddbgi_stringize_link_flags(arena, out, proc->link_flags); str8_list_push(arena, out, str8_lit("\n")); str8_list_pushf(arena, out, "%.*stype_idx=%u\n", - indent_level, raddbg_stringize_spaces, proc->type_idx); + indent_level, raddbgi_stringize_spaces, proc->type_idx); str8_list_pushf(arena, out, "%.*sroot_scope_idx=%u\n", - indent_level, raddbg_stringize_spaces, proc->root_scope_idx); + indent_level, raddbgi_stringize_spaces, proc->root_scope_idx); str8_list_pushf(arena, out, "%.*scontainer_idx=%u\n", - indent_level, raddbg_stringize_spaces, proc->container_idx); + indent_level, raddbgi_stringize_spaces, proc->container_idx); } static void -raddbg_stringize_scope(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_ScopeBundle *bundle, RADDBG_Scope *scope, U32 indent_level){ +raddbgi_stringize_scope(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_ScopeBundle *bundle, RADDBGI_Scope *scope, U32 indent_level){ U32 this_idx = (U32)(scope - bundle->scopes); str8_list_pushf(arena, out, "%.*s[%u]\n", - indent_level, raddbg_stringize_spaces, this_idx); + indent_level, raddbgi_stringize_spaces, this_idx); str8_list_pushf(arena, out, "%.*s proc_idx=%u\n", - indent_level, raddbg_stringize_spaces, scope->proc_idx); + indent_level, raddbgi_stringize_spaces, scope->proc_idx); // voff ranges { @@ -614,18 +614,18 @@ raddbg_stringize_scope(Arena *arena, String8List *out, RADDBG_Parsed *parsed, if (voff_range_opl - voff_range_first > 2){ str8_list_pushf(arena, out, "%.*s voff_ranges={\n", - indent_level, raddbg_stringize_spaces); + indent_level, raddbgi_stringize_spaces); for (U32 i = voff_range_first; i < voff_range_opl; i += 2, voff_ptr += 2){ str8_list_pushf(arena, out, "%.*s [0x%08llx, 0x%08llx)\n", - indent_level, raddbg_stringize_spaces, + indent_level, raddbgi_stringize_spaces, voff_ptr[0], voff_ptr[1]); } str8_list_pushf(arena, out, "%.*s }\n", - indent_level, raddbg_stringize_spaces); + indent_level, raddbgi_stringize_spaces); } else if (voff_range_opl - voff_range_first == 2){ str8_list_pushf(arena, out, "%.*s voff_range=[0x%08llx, 0x%08llx)\n", - indent_level, raddbg_stringize_spaces, + indent_level, raddbgi_stringize_spaces, voff_ptr[0], voff_ptr[1]); } } @@ -637,60 +637,60 @@ raddbg_stringize_scope(Arena *arena, String8List *out, RADDBG_Parsed *parsed, U32 local_opl = ClampTop(local_opl_raw, bundle->local_count); if (local_first < local_opl){ - RADDBG_Local *local_ptr = bundle->locals + local_first; + RADDBGI_Local *local_ptr = bundle->locals + local_first; for (U32 i = local_first; i < local_opl; i += 1, local_ptr += 1){ str8_list_pushf(arena, out, "%.*s local[%u]\n", - indent_level, raddbg_stringize_spaces, i); + indent_level, raddbgi_stringize_spaces, i); - String8 local_kind_str = raddbg_string_from_local_kind(local_ptr->kind); + String8 local_kind_str = raddbgi_string_from_local_kind(local_ptr->kind); str8_list_pushf(arena, out, "%.*s kind=%.*s\n", - indent_level, raddbg_stringize_spaces, str8_varg(local_kind_str)); + indent_level, raddbgi_stringize_spaces, str8_varg(local_kind_str)); String8 name = {0}; - name.str = raddbg_string_from_idx(parsed, local_ptr->name_string_idx, &name.size); + name.str = raddbgi_string_from_idx(parsed, local_ptr->name_string_idx, &name.size); str8_list_pushf(arena, out, "%.*s name='%.*s'\n", - indent_level, raddbg_stringize_spaces, str8_varg(name)); + indent_level, raddbgi_stringize_spaces, str8_varg(name)); str8_list_pushf(arena, out, "%.*s type_idx=%u\n", - indent_level, raddbg_stringize_spaces, local_ptr->type_idx); + indent_level, raddbgi_stringize_spaces, local_ptr->type_idx); U32 location_first = local_ptr->location_first; U32 location_opl_raw = local_ptr->location_opl; U32 location_opl = ClampTop(location_opl_raw, bundle->location_block_count); if (location_first < location_opl){ - str8_list_pushf(arena, out, "%.*s locations:\n", indent_level, raddbg_stringize_spaces); - RADDBG_LocationBlock *block_ptr = bundle->location_blocks + location_first; + str8_list_pushf(arena, out, "%.*s locations:\n", indent_level, raddbgi_stringize_spaces); + RADDBGI_LocationBlock *block_ptr = bundle->location_blocks + location_first; for (U32 j = location_first; j < location_opl; j += 1, block_ptr += 1){ if (block_ptr->scope_off_first == 0 && block_ptr->scope_off_opl == max_U32){ - str8_list_pushf(arena, out, "%.*s case *always*:\n", indent_level, raddbg_stringize_spaces); + str8_list_pushf(arena, out, "%.*s case *always*:\n", indent_level, raddbgi_stringize_spaces); } else{ str8_list_pushf(arena, out, "%.*s case [0x%08x, 0x%08x):\n", - indent_level, raddbg_stringize_spaces, + indent_level, raddbgi_stringize_spaces, block_ptr->scope_off_first, block_ptr->scope_off_opl); } if (block_ptr->location_data_off >= bundle->location_data_size){ str8_list_pushf(arena, out, "%.*s \n", - indent_level, raddbg_stringize_spaces); + indent_level, raddbgi_stringize_spaces); } else{ - str8_list_pushf(arena, out, "%.*s ", indent_level, raddbg_stringize_spaces); + str8_list_pushf(arena, out, "%.*s ", indent_level, raddbgi_stringize_spaces); U8 *loc_data_opl = bundle->location_data + bundle->location_data_size; U8 *loc_base_ptr = bundle->location_data + block_ptr->location_data_off; - RADDBG_LocationKind kind = (RADDBG_LocationKind)*loc_base_ptr; + RADDBGI_LocationKind kind = (RADDBGI_LocationKind)*loc_base_ptr; switch (kind){ default: { str8_list_pushf(arena, out, "\n"); }break; - case RADDBG_LocationKind_AddrBytecodeStream: + case RADDBGI_LocationKind_AddrBytecodeStream: { str8_list_pushf(arena, out, "AddrBytecodeStream\n"); - str8_list_pushf(arena, out, "%.*s ", indent_level, raddbg_stringize_spaces); + str8_list_pushf(arena, out, "%.*s ", indent_level, raddbgi_stringize_spaces); U8 *bytecode_ptr = loc_base_ptr + 1; for (;bytecode_ptr < loc_data_opl && *bytecode_ptr != 0; bytecode_ptr += 1){ str8_list_pushf(arena, out, "%02x ", *bytecode_ptr); @@ -698,10 +698,10 @@ raddbg_stringize_scope(Arena *arena, String8List *out, RADDBG_Parsed *parsed, str8_list_pushf(arena, out, "\n"); }break; - case RADDBG_LocationKind_ValBytecodeStream: + case RADDBGI_LocationKind_ValBytecodeStream: { str8_list_pushf(arena, out, "ValBytecodeStream\n"); - str8_list_pushf(arena, out, "%.*s ", indent_level, raddbg_stringize_spaces); + str8_list_pushf(arena, out, "%.*s ", indent_level, raddbgi_stringize_spaces); U8 *bytecode_ptr = loc_base_ptr + 1; for (;bytecode_ptr < loc_data_opl && *bytecode_ptr != 0; bytecode_ptr += 1){ str8_list_pushf(arena, out, "%02x ", *bytecode_ptr); @@ -709,37 +709,37 @@ raddbg_stringize_scope(Arena *arena, String8List *out, RADDBG_Parsed *parsed, str8_list_pushf(arena, out, "\n"); }break; - case RADDBG_LocationKind_AddrRegisterPlusU16: + case RADDBGI_LocationKind_AddrRegisterPlusU16: { - if (loc_base_ptr + sizeof(RADDBG_LocationRegisterPlusU16) > loc_data_opl){ + if (loc_base_ptr + sizeof(RADDBGI_LocationRegisterPlusU16) > loc_data_opl){ str8_list_pushf(arena, out, "AddrRegisterPlusU16( )\n"); } else{ - RADDBG_LocationRegisterPlusU16 *loc = (RADDBG_LocationRegisterPlusU16*)loc_base_ptr; + RADDBGI_LocationRegisterPlusU16 *loc = (RADDBGI_LocationRegisterPlusU16*)loc_base_ptr; str8_list_pushf(arena, out, "AddrRegisterPlusU16(reg: %u, off: %u)\n", loc->register_code, loc->offset); } }break; - case RADDBG_LocationKind_AddrAddrRegisterPlusU16: + case RADDBGI_LocationKind_AddrAddrRegisterPlusU16: { - if (loc_base_ptr + sizeof(RADDBG_LocationRegisterPlusU16) > loc_data_opl){ + if (loc_base_ptr + sizeof(RADDBGI_LocationRegisterPlusU16) > loc_data_opl){ str8_list_pushf(arena, out, "AddrAddrRegisterPlusU16( )\n"); } else{ - RADDBG_LocationRegisterPlusU16 *loc = (RADDBG_LocationRegisterPlusU16*)loc_base_ptr; + RADDBGI_LocationRegisterPlusU16 *loc = (RADDBGI_LocationRegisterPlusU16*)loc_base_ptr; str8_list_pushf(arena, out, "AddrAddrRegisterPlusU16(reg: %u, off: %u)\n", loc->register_code, loc->offset); } }break; - case RADDBG_LocationKind_ValRegister: + case RADDBGI_LocationKind_ValRegister: { - if (loc_base_ptr + sizeof(RADDBG_LocationRegister) > loc_data_opl){ + if (loc_base_ptr + sizeof(RADDBGI_LocationRegister) > loc_data_opl){ str8_list_pushf(arena, out, "ValRegister( )\n"); } else{ - RADDBG_LocationRegister *loc = (RADDBG_LocationRegister*)loc_base_ptr; + RADDBGI_LocationRegister *loc = (RADDBGI_LocationRegister*)loc_base_ptr; str8_list_pushf(arena, out, "ValRegister(reg: %u)\n", loc->register_code); } }break; @@ -756,7 +756,7 @@ raddbg_stringize_scope(Arena *arena, String8List *out, RADDBG_Parsed *parsed, for (U32 child = scope->first_child_scope_idx; child != 0;){ // get scope for child - RADDBG_Scope *child_scope = 0; + RADDBGI_Scope *child_scope = 0; if (child < bundle->scope_count){ child_scope = bundle->scopes + child; } @@ -765,12 +765,12 @@ raddbg_stringize_scope(Arena *arena, String8List *out, RADDBG_Parsed *parsed, } // stringize child - raddbg_stringize_scope(arena, out, parsed, bundle, child_scope, indent_level + 1); + raddbgi_stringize_scope(arena, out, parsed, bundle, child_scope, indent_level + 1); // increment iterator child = child_scope->next_sibling_scope_idx; } str8_list_pushf(arena, out, "%.*s[/%u]\n", - indent_level, raddbg_stringize_spaces, this_idx); + indent_level, raddbgi_stringize_spaces, this_idx); } diff --git a/src/raddbgi_dump/raddbgi_stringize.h b/src/raddbgi_dump/raddbgi_stringize.h index 6385b156..f1064c6e 100644 --- a/src/raddbgi_dump/raddbgi_stringize.h +++ b/src/raddbgi_dump/raddbgi_stringize.h @@ -1,8 +1,8 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef RADDBG_STRINGIZE_H -#define RADDBG_STRINGIZE_H +#ifndef RADDBGI_STRINGIZE_H +#define RADDBGI_STRINGIZE_H // TODO(allen): this depends on types from our base layer. // we need to decide if we want this to be included in the "format" layer @@ -13,108 +13,108 @@ //////////////////////////////// //~ RADDBG Stringize Helper Types -typedef struct RADDBG_FilePathBundle{ - RADDBG_FilePathNode *file_paths; +typedef struct RADDBGI_FilePathBundle{ + RADDBGI_FilePathNode *file_paths; U32 file_path_count; -} RADDBG_FilePathBundle; +} RADDBGI_FilePathBundle; -typedef struct RADDBG_UDTMemberBundle{ - RADDBG_Member *members; - RADDBG_EnumMember *enum_members; +typedef struct RADDBGI_UDTMemberBundle{ + RADDBGI_Member *members; + RADDBGI_EnumMember *enum_members; U32 member_count; U32 enum_member_count; -} RADDBG_UDTMemberBundle; +} RADDBGI_UDTMemberBundle; -typedef struct RADDBG_ScopeBundle{ - RADDBG_Scope *scopes; +typedef struct RADDBGI_ScopeBundle{ + RADDBGI_Scope *scopes; U64 *scope_voffs; - RADDBG_Local *locals; - RADDBG_LocationBlock *location_blocks; + RADDBGI_Local *locals; + RADDBGI_LocationBlock *location_blocks; U8 *location_data; U32 scope_count; U32 scope_voff_count; U32 local_count; U32 location_block_count; U32 location_data_size; -} RADDBG_ScopeBundle; +} RADDBGI_ScopeBundle; //////////////////////////////// //~ RADDBG Common Stringize Functions -static String8 raddbg_string_from_data_section_tag(RADDBG_DataSectionTag tag); -static String8 raddbg_string_from_arch(RADDBG_Arch arch); -static String8 raddbg_string_from_language(RADDBG_Language language); -static String8 raddbg_string_from_type_kind(RADDBG_TypeKind type_kind); -static String8 raddbg_string_from_member_kind(RADDBG_MemberKind member_kind); -static String8 raddbg_string_from_local_kind(RADDBG_LocalKind local_kind); +static String8 raddbgi_string_from_data_section_tag(RADDBGI_DataSectionTag tag); +static String8 raddbgi_string_from_arch(RADDBGI_Arch arch); +static String8 raddbgi_string_from_language(RADDBGI_Language language); +static String8 raddbgi_string_from_type_kind(RADDBGI_TypeKind type_kind); +static String8 raddbgi_string_from_member_kind(RADDBGI_MemberKind member_kind); +static String8 raddbgi_string_from_local_kind(RADDBGI_LocalKind local_kind); //////////////////////////////// //~ RADDBG Flags Stringize Functions -static void raddbg_stringize_binary_section_flags(Arena *arena, String8List *out, - RADDBG_BinarySectionFlags flags); +static void raddbgi_stringize_binary_section_flags(Arena *arena, String8List *out, + RADDBGI_BinarySectionFlags flags); -static void raddbg_stringize_type_modifier_flags(Arena *arena, String8List *out, - RADDBG_TypeModifierFlags flags); +static void raddbgi_stringize_type_modifier_flags(Arena *arena, String8List *out, + RADDBGI_TypeModifierFlags flags); -static void raddbg_stringize_user_defined_type_flags(Arena *arena, String8List *out, - RADDBG_UserDefinedTypeFlags flags); +static void raddbgi_stringize_user_defined_type_flags(Arena *arena, String8List *out, + RADDBGI_UserDefinedTypeFlags flags); -static void raddbg_stringize_link_flags(Arena *arena, String8List *out, - RADDBG_LinkFlags flags); +static void raddbgi_stringize_link_flags(Arena *arena, String8List *out, + RADDBGI_LinkFlags flags); //////////////////////////////// //~ RADDBG Compound Stringize Functions static void -raddbg_stringize_data_sections(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - U32 indent_level); +raddbgi_stringize_data_sections(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + U32 indent_level); static void -raddbg_stringize_top_level_info(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_TopLevelInfo *tli, U32 indent_level); +raddbgi_stringize_top_level_info(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_TopLevelInfo *tli, U32 indent_level); static void -raddbg_stringize_binary_section(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_BinarySection *bin_section, U32 indent_level); +raddbgi_stringize_binary_section(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_BinarySection *bin_section, U32 indent_level); static void -raddbg_stringize_file_path(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_FilePathBundle *bundle, RADDBG_FilePathNode *file_path, - U32 indent_level); +raddbgi_stringize_file_path(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_FilePathBundle *bundle, RADDBGI_FilePathNode *file_path, + U32 indent_level); static void -raddbg_stringize_source_file(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_SourceFile *source_file, U32 indent_level); +raddbgi_stringize_source_file(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_SourceFile *source_file, U32 indent_level); static void -raddbg_stringize_unit(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_Unit *unit, U32 indent_level); +raddbgi_stringize_unit(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_Unit *unit, U32 indent_level); static void -raddbg_stringize_type_node(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_TypeNode *type, U32 indent_level); +raddbgi_stringize_type_node(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_TypeNode *type, U32 indent_level); static void -raddbg_stringize_udt(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_UDTMemberBundle *bundle, RADDBG_UDT *udt, - U32 indent_level); +raddbgi_stringize_udt(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_UDTMemberBundle *bundle, RADDBGI_UDT *udt, + U32 indent_level); static void -raddbg_stringize_global_variable(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_GlobalVariable *global_variable, U32 indent_level); +raddbgi_stringize_global_variable(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_GlobalVariable *global_variable, U32 indent_level); static void -raddbg_stringize_thread_variable(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_ThreadVariable *thread_var, - U32 indent_level); +raddbgi_stringize_thread_variable(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_ThreadVariable *thread_var, + U32 indent_level); static void -raddbg_stringize_procedure(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_Procedure *proc, U32 indent_level); +raddbgi_stringize_procedure(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_Procedure *proc, U32 indent_level); static void -raddbg_stringize_scope(Arena *arena, String8List *out, RADDBG_Parsed *parsed, - RADDBG_ScopeBundle *bundle, RADDBG_Scope *scope, U32 indent_level); +raddbgi_stringize_scope(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, + RADDBGI_ScopeBundle *bundle, RADDBGI_Scope *scope, U32 indent_level); -#endif //RADDBG_STRINGIZE_H +#endif //RADDBGI_STRINGIZE_H diff --git a/src/raddbgi_format/raddbgi_format.c b/src/raddbgi_format/raddbgi_format.c index 10382bc4..50aa193d 100644 --- a/src/raddbgi_format/raddbgi_format.c +++ b/src/raddbgi_format/raddbgi_format.c @@ -4,24 +4,24 @@ //////////////////////////////// // Functions -RADDBG_PROC RADDBG_U64 -raddbg_hash(RADDBG_U8 *ptr, RADDBG_U64 size){ - RADDBG_U64 result = 5381; - RADDBG_U8 *opl = ptr + size; +RADDBGI_PROC RADDBGI_U64 +raddbgi_hash(RADDBGI_U8 *ptr, RADDBGI_U64 size){ + RADDBGI_U64 result = 5381; + RADDBGI_U8 *opl = ptr + size; for (; ptr < opl; ptr += 1){ result = ((result << 5) + result) + *ptr; } return(result); } -RADDBG_PROC RADDBG_U32 -raddbg_size_from_basic_type_kind(RADDBG_TypeKind kind){ - RADDBG_U32 result = 0; +RADDBGI_PROC RADDBGI_U32 +raddbgi_size_from_basic_type_kind(RADDBGI_TypeKind kind){ + RADDBGI_U32 result = 0; switch (kind){ #define X(N,C) #define XZ(N,C,Z) case C: result = Z; break; #define Y(A,N) - RADDBG_TypeKindXList(X,XZ,Y) + RADDBGI_TypeKindXList(X,XZ,Y) #undef X #undef XZ #undef Y @@ -29,12 +29,12 @@ raddbg_size_from_basic_type_kind(RADDBG_TypeKind kind){ return(result); } -RADDBG_PROC RADDBG_U32 -raddbg_addr_size_from_arch(RADDBG_Arch arch){ - RADDBG_U32 result = 0; +RADDBGI_PROC RADDBGI_U32 +raddbgi_addr_size_from_arch(RADDBGI_Arch arch){ + RADDBGI_U32 result = 0; switch (arch){ #define X(N,C,Z) case C: result = Z; break; - RADDBG_ArchXList(X) + RADDBGI_ArchXList(X) #undef X } return(result); @@ -42,14 +42,14 @@ raddbg_addr_size_from_arch(RADDBG_Arch arch){ //- eval helpers -RADDBG_PROC RADDBG_EvalConversionKind -raddbg_eval_conversion_rule(RADDBG_EvalTypeGroup in, RADDBG_EvalTypeGroup out){ - RADDBG_EvalConversionKind result = 0; +RADDBGI_PROC RADDBGI_EvalConversionKind +raddbgi_eval_conversion_rule(RADDBGI_EvalTypeGroup in, RADDBGI_EvalTypeGroup out){ + RADDBGI_EvalConversionKind result = 0; switch (in + (out << 8)){ -#define Y(i,o) case ((RADDBG_EvalTypeGroup_##i) + ((RADDBG_EvalTypeGroup_##o) << 8)): +#define Y(i,o) case ((RADDBGI_EvalTypeGroup_##i) + ((RADDBGI_EvalTypeGroup_##o) << 8)): #define Xb(c) -#define Xe(c) result = RADDBG_EvalConversionKind_##c; break; - RADDBG_EvalConversionKindFromTypeGroupPairMap(Y,Xb,Xe) +#define Xe(c) result = RADDBGI_EvalConversionKind_##c; break; + RADDBGI_EvalConversionKindFromTypeGroupPairMap(Y,Xb,Xe) #undef Xe #undef Xb #undef Y @@ -57,38 +57,38 @@ raddbg_eval_conversion_rule(RADDBG_EvalTypeGroup in, RADDBG_EvalTypeGroup out){ return(result); } -RADDBG_PROC RADDBG_U8* -raddbg_eval_conversion_message(RADDBG_EvalConversionKind conversion_kind, RADDBG_U64 *lenout){ - RADDBG_U8 *result = 0; +RADDBGI_PROC RADDBGI_U8* +raddbgi_eval_conversion_message(RADDBGI_EvalConversionKind conversion_kind, RADDBGI_U64 *lenout){ + RADDBGI_U8 *result = 0; switch (conversion_kind){ #define X(N,msg) \ -case RADDBG_EvalConversionKind_##N: result = (RADDBG_U8*)msg; *lenout = sizeof(msg) - 1; break; - RADDBG_EvalConversionKindXList(X) +case RADDBGI_EvalConversionKind_##N: result = (RADDBGI_U8*)msg; *lenout = sizeof(msg) - 1; break; + RADDBGI_EvalConversionKindXList(X) #undef X } return(result); } -RADDBG_PROC RADDBG_S32 -raddbg_eval_opcode_type_compatible(RADDBG_EvalOp op, RADDBG_EvalTypeGroup group){ - RADDBG_S32 result = 0; +RADDBGI_PROC RADDBGI_S32 +raddbgi_eval_opcode_type_compatible(RADDBGI_EvalOp op, RADDBGI_EvalTypeGroup group){ + RADDBGI_S32 result = 0; switch (op){ - case RADDBG_EvalOp_Neg: case RADDBG_EvalOp_Add: case RADDBG_EvalOp_Sub: - case RADDBG_EvalOp_Mul: case RADDBG_EvalOp_Div: - case RADDBG_EvalOp_EqEq:case RADDBG_EvalOp_NtEq: - case RADDBG_EvalOp_LsEq:case RADDBG_EvalOp_GrEq: - case RADDBG_EvalOp_Less:case RADDBG_EvalOp_Grtr: + case RADDBGI_EvalOp_Neg: case RADDBGI_EvalOp_Add: case RADDBGI_EvalOp_Sub: + case RADDBGI_EvalOp_Mul: case RADDBGI_EvalOp_Div: + case RADDBGI_EvalOp_EqEq:case RADDBGI_EvalOp_NtEq: + case RADDBGI_EvalOp_LsEq:case RADDBGI_EvalOp_GrEq: + case RADDBGI_EvalOp_Less:case RADDBGI_EvalOp_Grtr: { - if (group != RADDBG_EvalTypeGroup_Other){ + if (group != RADDBGI_EvalTypeGroup_Other){ result = 1; } }break; - case RADDBG_EvalOp_Mod:case RADDBG_EvalOp_LShift:case RADDBG_EvalOp_RShift: - case RADDBG_EvalOp_BitNot:case RADDBG_EvalOp_BitAnd:case RADDBG_EvalOp_BitXor: - case RADDBG_EvalOp_BitOr:case RADDBG_EvalOp_LogNot:case RADDBG_EvalOp_LogAnd: - case RADDBG_EvalOp_LogOr: + case RADDBGI_EvalOp_Mod:case RADDBGI_EvalOp_LShift:case RADDBGI_EvalOp_RShift: + case RADDBGI_EvalOp_BitNot:case RADDBGI_EvalOp_BitAnd:case RADDBGI_EvalOp_BitXor: + case RADDBGI_EvalOp_BitOr:case RADDBGI_EvalOp_LogNot:case RADDBGI_EvalOp_LogAnd: + case RADDBGI_EvalOp_LogOr: { - if (group == RADDBG_EvalTypeGroup_S || group == RADDBG_EvalTypeGroup_U){ + if (group == RADDBGI_EvalTypeGroup_S || group == RADDBGI_EvalTypeGroup_U){ result = 1; } }break; diff --git a/src/raddbgi_format/raddbgi_format.h b/src/raddbgi_format/raddbgi_format.h index 0dd4fa0d..a237173f 100644 --- a/src/raddbgi_format/raddbgi_format.h +++ b/src/raddbgi_format/raddbgi_format.h @@ -1,60 +1,60 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef RADDBG_FORMAT_H -#define RADDBG_FORMAT_H +#ifndef RADDBGI_FORMAT_H +#define RADDBGI_FORMAT_H //////////////////////////////////////////////////////////////// // Overridable procedure decoration -#if !defined(RADDBG_PROC) -# define RADDBG_PROC static +#if !defined(RADDBGI_PROC) +# define RADDBGI_PROC static #endif //////////////////////////////////////////////////////////////// // Overridable integer types -#if !defined(RADDBG_U8) -# define RADDBG_U8 RADDBG_U8 -# define RADDBG_U16 RADDBG_U16 -# define RADDBG_U32 RADDBG_U32 -# define RADDBG_U64 RADDBG_U64 -# define RADDBG_S8 RADDBG_S8 -# define RADDBG_S16 RADDBG_S16 -# define RADDBG_S32 RADDBG_S32 -# define RADDBG_S64 RADDBG_S64 +#if !defined(RADDBGI_U8) +# define RADDBGI_U8 RADDBGI_U8 +# define RADDBGI_U16 RADDBGI_U16 +# define RADDBGI_U32 RADDBGI_U32 +# define RADDBGI_U64 RADDBGI_U64 +# define RADDBGI_S8 RADDBGI_S8 +# define RADDBGI_S16 RADDBGI_S16 +# define RADDBGI_S32 RADDBGI_S32 +# define RADDBGI_S64 RADDBGI_S64 #include -typedef uint8_t RADDBG_U8; -typedef uint16_t RADDBG_U16; -typedef uint32_t RADDBG_U32; -typedef uint64_t RADDBG_U64; -typedef int8_t RADDBG_S8; -typedef int16_t RADDBG_S16; -typedef int32_t RADDBG_S32; -typedef int64_t RADDBG_S64; +typedef uint8_t RADDBGI_U8; +typedef uint16_t RADDBGI_U16; +typedef uint32_t RADDBGI_U32; +typedef uint64_t RADDBGI_U64; +typedef int8_t RADDBGI_S8; +typedef int16_t RADDBGI_S16; +typedef int32_t RADDBGI_S32; +typedef int64_t RADDBGI_S64; #endif //////////////////////////////////////////////////////////////// // Architecture Constants -#define RADDBG_ArchXList(X)\ +#define RADDBGI_ArchXList(X)\ X(NULL, 0, 0)\ X(X86, 1, 4)\ X(X64, 2, 8) -typedef RADDBG_U32 RADDBG_Arch; -typedef enum RADDBG_ArchEnum{ -#define X(N,C,Z) RADDBG_Arch_##N = C, - RADDBG_ArchXList(X) +typedef RADDBGI_U32 RADDBGI_Arch; +typedef enum RADDBGI_ArchEnum{ +#define X(N,C,Z) RADDBGI_Arch_##N = C, + RADDBGI_ArchXList(X) #undef X -} RADDBG_ArchEnum; +} RADDBGI_ArchEnum; -typedef RADDBG_U8 RADDBG_RegisterCode; +typedef RADDBGI_U8 RADDBGI_RegisterCode; // x86 registers -#define RADDBG_RegisterCode_X86_XList(X) \ +#define RADDBGI_RegisterCode_X86_XList(X) \ X(nil, 0) \ X(eax, 1) \ X(ecx, 2) \ @@ -118,14 +118,14 @@ X(ymm6, 59) \ X(ymm7, 60) \ X(COUNT, 61) -typedef enum RADDBG_RegisterCode_X86_Enum{ -#define X(N,C) RADDBG_RegisterCode_X86_##N = C, - RADDBG_RegisterCode_X86_XList(X) +typedef enum RADDBGI_RegisterCode_X86_Enum{ +#define X(N,C) RADDBGI_RegisterCode_X86_##N = C, + RADDBGI_RegisterCode_X86_XList(X) #undef X -} RADDBG_RegisterCode_X86_Enum; +} RADDBGI_RegisterCode_X86_Enum; // x64 registers -#define RADDBG_RegisterCode_X64_XList(X) \ +#define RADDBGI_RegisterCode_X64_XList(X) \ X(nil, 0) \ X(rax, 1) \ X(rcx, 2) \ @@ -205,48 +205,48 @@ X(fdp, 75) \ X(mxcsr_mask, 76) \ X(COUNT, 77) -typedef enum RADDBG_RegisterCode_X64_Enum{ -#define X(N,C) RADDBG_RegisterCode_X64_##N = C, - RADDBG_RegisterCode_X64_XList(X) +typedef enum RADDBGI_RegisterCode_X64_Enum{ +#define X(N,C) RADDBGI_RegisterCode_X64_##N = C, + RADDBGI_RegisterCode_X64_XList(X) #undef X -} RADDBG_RegisterCode_X64_Enum; +} RADDBGI_RegisterCode_X64_Enum; //////////////////////////////////////////////////////////////// // Format types // "raddbg\0\0" -#define RADDBG_MAGIC_CONSTANT 0x0000676264646172 -#define RADDBG_ENCODING_VERSION 1 +#define RADDBGI_MAGIC_CONSTANT 0x0000676264646172 +#define RADDBGI_ENCODING_VERSION 1 -#define RADDBG_LanguageXList(X) \ +#define RADDBGI_LanguageXList(X) \ X(NULL, 0) \ X(C, 1) \ X(CPlusPlus, 2) -typedef RADDBG_U32 RADDBG_Language; -typedef enum RADDBG_LanguageEnum{ -#define X(N,C) RADDBG_Language_##N = C, - RADDBG_LanguageXList(X) +typedef RADDBGI_U32 RADDBGI_Language; +typedef enum RADDBGI_LanguageEnum{ +#define X(N,C) RADDBGI_Language_##N = C, + RADDBGI_LanguageXList(X) #undef X -} RADDBG_LanguageEnum; +} RADDBGI_LanguageEnum; -typedef struct RADDBG_Header{ +typedef struct RADDBGI_Header{ // identification - RADDBG_U64 magic; - RADDBG_U32 encoding_version; + RADDBGI_U64 magic; + RADDBGI_U32 encoding_version; // data sections - RADDBG_U32 data_section_off; - RADDBG_U32 data_section_count; -} RADDBG_Header; + RADDBGI_U32 data_section_off; + RADDBGI_U32 data_section_count; +} RADDBGI_Header; //- data sections -#define RADDBG_DataSectionTag_SECONDARY 0x80000000 +#define RADDBGI_DataSectionTag_SECONDARY 0x80000000 -#define RADDBG_DataSectionTagXList(X,Y) \ +#define RADDBGI_DataSectionTagXList(X,Y) \ X(NULL, 0x0000)\ X(TopLevelInfo, 0x0001)\ X(StringData, 0x0002)\ @@ -273,131 +273,131 @@ X(LocationBlocks, 0x0016)\ X(LocationData, 0x0017)\ X(NameMaps, 0x0018)\ Y(PRIMARY_COUNT)\ -X(SKIP, RADDBG_DataSectionTag_SECONDARY|0x0000)\ -X(LineInfoVoffs, RADDBG_DataSectionTag_SECONDARY|0x0001)\ -X(LineInfoData, RADDBG_DataSectionTag_SECONDARY|0x0002)\ -X(LineInfoColumns, RADDBG_DataSectionTag_SECONDARY|0x0003)\ -X(LineMapNumbers, RADDBG_DataSectionTag_SECONDARY|0x0004)\ -X(LineMapRanges, RADDBG_DataSectionTag_SECONDARY|0x0005)\ -X(LineMapVoffs, RADDBG_DataSectionTag_SECONDARY|0x0006)\ -X(NameMapBuckets, RADDBG_DataSectionTag_SECONDARY|0x0007)\ -X(NameMapNodes, RADDBG_DataSectionTag_SECONDARY|0x0008) +X(SKIP, RADDBGI_DataSectionTag_SECONDARY|0x0000)\ +X(LineInfoVoffs, RADDBGI_DataSectionTag_SECONDARY|0x0001)\ +X(LineInfoData, RADDBGI_DataSectionTag_SECONDARY|0x0002)\ +X(LineInfoColumns, RADDBGI_DataSectionTag_SECONDARY|0x0003)\ +X(LineMapNumbers, RADDBGI_DataSectionTag_SECONDARY|0x0004)\ +X(LineMapRanges, RADDBGI_DataSectionTag_SECONDARY|0x0005)\ +X(LineMapVoffs, RADDBGI_DataSectionTag_SECONDARY|0x0006)\ +X(NameMapBuckets, RADDBGI_DataSectionTag_SECONDARY|0x0007)\ +X(NameMapNodes, RADDBGI_DataSectionTag_SECONDARY|0x0008) -typedef RADDBG_U32 RADDBG_DataSectionTag; -typedef enum RADDBG_DataSectionTagEnum{ -#define X(N,C) RADDBG_DataSectionTag_##N = C, -#define Y(N) RADDBG_DataSectionTag_##N, - RADDBG_DataSectionTagXList(X,Y) +typedef RADDBGI_U32 RADDBGI_DataSectionTag; +typedef enum RADDBGI_DataSectionTagEnum{ +#define X(N,C) RADDBGI_DataSectionTag_##N = C, +#define Y(N) RADDBGI_DataSectionTag_##N, + RADDBGI_DataSectionTagXList(X,Y) #undef X #undef Y -} RADDBG_DataSectionTagEnum; +} RADDBGI_DataSectionTagEnum; -#define RADDBG_DataSectionEncodingXList(X) \ +#define RADDBGI_DataSectionEncodingXList(X) \ X(Unpacked, 0) -typedef RADDBG_U32 RADDBG_DataSectionEncoding; -typedef enum RADDBG_DataSectionEncodingEnum{ -#define X(N,C) RADDBG_DataSectionEncoding_##N = C, - RADDBG_DataSectionEncodingXList(X) +typedef RADDBGI_U32 RADDBGI_DataSectionEncoding; +typedef enum RADDBGI_DataSectionEncodingEnum{ +#define X(N,C) RADDBGI_DataSectionEncoding_##N = C, + RADDBGI_DataSectionEncodingXList(X) #undef X -} RADDBG_DataSectionEncodingEnum; +} RADDBGI_DataSectionEncodingEnum; -typedef struct RADDBG_DataSection{ - RADDBG_DataSectionTag tag; - RADDBG_DataSectionEncoding encoding; - RADDBG_U64 off; - RADDBG_U64 encoded_size; - RADDBG_U64 unpacked_size; -} RADDBG_DataSection; +typedef struct RADDBGI_DataSection{ + RADDBGI_DataSectionTag tag; + RADDBGI_DataSectionEncoding encoding; + RADDBGI_U64 off; + RADDBGI_U64 encoded_size; + RADDBGI_U64 unpacked_size; +} RADDBGI_DataSection; //- common types -typedef struct RADDBG_VMapEntry{ - RADDBG_U64 voff; - RADDBG_U64 idx; -} RADDBG_VMapEntry; +typedef struct RADDBGI_VMapEntry{ + RADDBGI_U64 voff; + RADDBGI_U64 idx; +} RADDBGI_VMapEntry; //- top level info -typedef struct RADDBG_TopLevelInfo{ - RADDBG_Arch architecture; - RADDBG_U32 exe_name_string_idx; - RADDBG_U64 exe_hash; - RADDBG_U64 voff_max; -} RADDBG_TopLevelInfo; +typedef struct RADDBGI_TopLevelInfo{ + RADDBGI_Arch architecture; + RADDBGI_U32 exe_name_string_idx; + RADDBGI_U64 exe_hash; + RADDBGI_U64 voff_max; +} RADDBGI_TopLevelInfo; //- binary sections -typedef RADDBG_U32 RADDBG_BinarySectionFlags; -typedef enum RADDBG_BinarySectionFlagsEnum{ - RADDBG_BinarySectionFlag_Read = (1 << 0), - RADDBG_BinarySectionFlag_Write = (1 << 1), - RADDBG_BinarySectionFlag_Execute = (1 << 2) -} RADDBG_BinarySectionFlagsEnum; +typedef RADDBGI_U32 RADDBGI_BinarySectionFlags; +typedef enum RADDBGI_BinarySectionFlagsEnum{ + RADDBGI_BinarySectionFlag_Read = (1 << 0), + RADDBGI_BinarySectionFlag_Write = (1 << 1), + RADDBGI_BinarySectionFlag_Execute = (1 << 2) +} RADDBGI_BinarySectionFlagsEnum; -typedef struct RADDBG_BinarySection{ - RADDBG_U32 name_string_idx; - RADDBG_BinarySectionFlags flags; - RADDBG_U64 voff_first; - RADDBG_U64 voff_opl; - RADDBG_U64 foff_first; - RADDBG_U64 foff_opl; -} RADDBG_BinarySection; +typedef struct RADDBGI_BinarySection{ + RADDBGI_U32 name_string_idx; + RADDBGI_BinarySectionFlags flags; + RADDBGI_U64 voff_first; + RADDBGI_U64 voff_opl; + RADDBGI_U64 foff_first; + RADDBGI_U64 foff_opl; +} RADDBGI_BinarySection; //- file & file system info -typedef struct RADDBG_FilePathNode{ - RADDBG_U32 name_string_idx; - RADDBG_U32 parent_path_node; - RADDBG_U32 first_child; - RADDBG_U32 next_sibling; - RADDBG_U32 source_file_idx; -} RADDBG_FilePathNode; +typedef struct RADDBGI_FilePathNode{ + RADDBGI_U32 name_string_idx; + RADDBGI_U32 parent_path_node; + RADDBGI_U32 first_child; + RADDBGI_U32 next_sibling; + RADDBGI_U32 source_file_idx; +} RADDBGI_FilePathNode; -typedef struct RADDBG_SourceFile{ - RADDBG_U32 file_path_node_idx; +typedef struct RADDBGI_SourceFile{ + RADDBGI_U32 file_path_node_idx; - RADDBG_U32 normal_full_path_string_idx; + RADDBGI_U32 normal_full_path_string_idx; // usage of line map to go from a line number to an array of voffs // (line_map_nums * line_number) -> (nil | index) // (line_map_data * index) -> (range) // (line_map_voff_data * range) -> (array(voff)) - RADDBG_U32 line_map_count; - RADDBG_U32 line_map_nums_data_idx; // U32[line_map_count] (sorted - not closed ranges) - RADDBG_U32 line_map_range_data_idx; // U32[line_map_count + 1] (pairs form ranges) - RADDBG_U32 line_map_voff_data_idx; // U64[...] (idx by line_map_range_data) -} RADDBG_SourceFile; + RADDBGI_U32 line_map_count; + RADDBGI_U32 line_map_nums_data_idx; // U32[line_map_count] (sorted - not closed ranges) + RADDBGI_U32 line_map_range_data_idx; // U32[line_map_count + 1] (pairs form ranges) + RADDBGI_U32 line_map_voff_data_idx; // U64[...] (idx by line_map_range_data) +} RADDBGI_SourceFile; //- units & line info -typedef struct RADDBG_Unit{ - RADDBG_U32 unit_name_string_idx; - RADDBG_U32 compiler_name_string_idx; - RADDBG_U32 source_file_path_node; - RADDBG_U32 object_file_path_node; - RADDBG_U32 archive_file_path_node; - RADDBG_U32 build_path_node; - RADDBG_Language language; +typedef struct RADDBGI_Unit{ + RADDBGI_U32 unit_name_string_idx; + RADDBGI_U32 compiler_name_string_idx; + RADDBGI_U32 source_file_path_node; + RADDBGI_U32 object_file_path_node; + RADDBGI_U32 archive_file_path_node; + RADDBGI_U32 build_path_node; + RADDBGI_Language language; // usage of line info to go from voff to file & line number: // (line_info_voffs * voff) -> (nil + index) - // (line_info_data * index) -> (RADDBG_Line = (file_idx * line_number)) + // (line_info_data * index) -> (RADDBGI_Line = (file_idx * line_number)) - RADDBG_U32 line_info_voffs_data_idx; // U64[line_info_count + 1] (sorted ranges) - RADDBG_U32 line_info_data_idx; // RADDBG_Line[line_info_count] - RADDBG_U32 line_info_col_data_idx; // RADDBG_Col[line_info_count] - RADDBG_U32 line_info_count; -} RADDBG_Unit; + RADDBGI_U32 line_info_voffs_data_idx; // U64[line_info_count + 1] (sorted ranges) + RADDBGI_U32 line_info_data_idx; // RADDBGI_Line[line_info_count] + RADDBGI_U32 line_info_col_data_idx; // RADDBGI_Col[line_info_count] + RADDBGI_U32 line_info_count; +} RADDBGI_Unit; -typedef struct RADDBG_Line{ - RADDBG_U32 file_idx; - RADDBG_U32 line_num; -} RADDBG_Line; +typedef struct RADDBGI_Line{ + RADDBGI_U32 file_idx; + RADDBGI_U32 line_num; +} RADDBGI_Line; -typedef struct RADDBG_Column{ - RADDBG_U16 col_first; - RADDBG_U16 col_opl; -} RADDBG_Column; +typedef struct RADDBGI_Column{ + RADDBGI_U16 col_first; + RADDBGI_U16 col_opl; +} RADDBGI_Column; //- type info @@ -405,7 +405,7 @@ typedef struct RADDBG_Column{ // X(name,code) - defines a primary code // XZ(name,code size) - defines a primary code & associates a size // Y(alias_name,name) - defines an alias for bookends -#define RADDBG_TypeKindXList(X,XZ,Y)\ +#define RADDBGI_TypeKindXList(X,XZ,Y)\ X(NULL, 0x0000) \ \ XZ(Void, 0x0001, 0) Y(FirstBuiltIn, Void) \ @@ -466,23 +466,23 @@ Y(LastUserDefined, IncompleteEnum) \ X(Bitfield, 0xF000) \ X(Variadic, 0xF001) -typedef RADDBG_U16 RADDBG_TypeKind; -typedef enum RADDBG_TypeKindEnum{ +typedef RADDBGI_U16 RADDBGI_TypeKind; +typedef enum RADDBGI_TypeKindEnum{ -#define X(name,code) RADDBG_TypeKind_##name = code, +#define X(name,code) RADDBGI_TypeKind_##name = code, #define XZ(name,code,size) X(name,code) -#define Y(alias_name,name) RADDBG_TypeKind_##alias_name = RADDBG_TypeKind_##name, - RADDBG_TypeKindXList(X,XZ,Y) +#define Y(alias_name,name) RADDBGI_TypeKind_##alias_name = RADDBGI_TypeKind_##name, + RADDBGI_TypeKindXList(X,XZ,Y) #undef X #undef XZ #undef Y -} RADDBG_TypeKindEnum; +} RADDBGI_TypeKindEnum; -typedef RADDBG_U16 RADDBG_TypeModifierFlags; +typedef RADDBGI_U16 RADDBGI_TypeModifierFlags; enum{ - RADDBG_TypeModifierFlag_Const = (1 << 0), - RADDBG_TypeModifierFlag_Volatile = (1 << 1), + RADDBGI_TypeModifierFlag_Const = (1 << 0), + RADDBGI_TypeModifierFlag_Volatile = (1 << 1), }; // IMPORTANT NOTE: All type nodes in a valid raddbg are *topologically sorted*. @@ -493,65 +493,65 @@ enum{ // This restriction does not apply to the members of a type that are // attached through a "UDT" though. -typedef struct RADDBG_TypeNode{ - RADDBG_TypeKind kind; - // when kind is 'Modifier' -> RADDBG_TypeModifierFlags - RADDBG_U16 flags; +typedef struct RADDBGI_TypeNode{ + RADDBGI_TypeKind kind; + // when kind is 'Modifier' -> RADDBGI_TypeModifierFlags + RADDBGI_U16 flags; - RADDBG_U32 byte_size; + RADDBGI_U32 byte_size; union{ // kind is 'built-in' struct{ - RADDBG_U32 name_string_idx; + RADDBGI_U32 name_string_idx; } built_in; // kind is 'constructed' struct{ - RADDBG_U32 direct_type_idx; - RADDBG_U32 count; + RADDBGI_U32 direct_type_idx; + RADDBGI_U32 count; union{ // when kind is 'Function' or 'Method' - RADDBG_U32 param_idx_run_first; + RADDBGI_U32 param_idx_run_first; // when kind is 'MemberPtr' - RADDBG_U32 owner_type_idx; + RADDBGI_U32 owner_type_idx; }; } constructed; // kind is 'user defined' struct{ - RADDBG_U32 name_string_idx; - RADDBG_U32 direct_type_idx; - RADDBG_U32 udt_idx; + RADDBGI_U32 name_string_idx; + RADDBGI_U32 direct_type_idx; + RADDBGI_U32 udt_idx; } user_defined; // (kind = Bitfield) struct{ - RADDBG_U32 off; - RADDBG_U32 size; + RADDBGI_U32 off; + RADDBGI_U32 size; } bitfield; }; -} RADDBG_TypeNode; +} RADDBGI_TypeNode; -typedef RADDBG_U32 RADDBG_UserDefinedTypeFlags; +typedef RADDBGI_U32 RADDBGI_UserDefinedTypeFlags; enum{ - RADDBG_UserDefinedTypeFlag_EnumMembers = (1 << 0), + RADDBGI_UserDefinedTypeFlag_EnumMembers = (1 << 0), }; -typedef struct RADDBG_UDT{ - RADDBG_U32 self_type_idx; - RADDBG_UserDefinedTypeFlags flags; +typedef struct RADDBGI_UDT{ + RADDBGI_U32 self_type_idx; + RADDBGI_UserDefinedTypeFlags flags; // when EnumMembers flag is set, indexes into enum "enum_members" instead of "members" - RADDBG_U32 member_first; - RADDBG_U32 member_count; + RADDBGI_U32 member_first; + RADDBGI_U32 member_count; - RADDBG_U32 file_idx; - RADDBG_U32 line; - RADDBG_U32 col; -} RADDBG_UDT; + RADDBGI_U32 file_idx; + RADDBGI_U32 line; + RADDBGI_U32 col; +} RADDBGI_UDT; -#define RADDBG_MemberKindXList(X) \ +#define RADDBGI_MemberKindXList(X) \ X(NULL, 0x0000) \ X(DataField, 0x0001) \ X(StaticData, 0x0002) \ @@ -563,12 +563,12 @@ X(Base, 0x0201) \ X(VirtualBase, 0x0202) \ X(NestedType, 0x0300) -typedef RADDBG_U16 RADDBG_MemberKind; -typedef enum RADDBG_MemberKindEnum{ -#define X(N,C) RADDBG_MemberKind_##N = C, - RADDBG_MemberKindXList(X) +typedef RADDBGI_U16 RADDBGI_MemberKind; +typedef enum RADDBGI_MemberKindEnum{ +#define X(N,C) RADDBGI_MemberKind_##N = C, + RADDBGI_MemberKindXList(X) #undef X -} RADDBG_MemberKindEnum; +} RADDBGI_MemberKindEnum; // TODO(allen): need a way to equip methods and some virtual methods // with procedure symbol information. I'm thinking a seperate data @@ -578,141 +578,141 @@ typedef enum RADDBG_MemberKindEnum{ // like 'associate_method_to_proc' that can be used *after* both the // method and proc are known, rather than one that forces us to know // the association when constructing the member data. -typedef struct RADDBG_Member{ - RADDBG_MemberKind kind; - RADDBG_U16 __unused__; +typedef struct RADDBGI_Member{ + RADDBGI_MemberKind kind; + RADDBGI_U16 __unused__; - RADDBG_U32 name_string_idx; - RADDBG_U32 type_idx; - RADDBG_U32 off; -} RADDBG_Member; + RADDBGI_U32 name_string_idx; + RADDBGI_U32 type_idx; + RADDBGI_U32 off; +} RADDBGI_Member; -typedef struct RADDBG_EnumMember{ - RADDBG_U32 name_string_idx; - RADDBG_U32 __unused__; - RADDBG_U64 val; -} RADDBG_EnumMember; +typedef struct RADDBGI_EnumMember{ + RADDBGI_U32 name_string_idx; + RADDBGI_U32 __unused__; + RADDBGI_U64 val; +} RADDBGI_EnumMember; //- symbol info -typedef RADDBG_U32 RADDBG_LinkFlags; +typedef RADDBGI_U32 RADDBGI_LinkFlags; enum{ - RADDBG_LinkFlag_External = (1 << 0), + RADDBGI_LinkFlag_External = (1 << 0), // NOTE: Scope flags are mutually exclusive. // A symbol is either global scoped, type scoped, or procedure scoped. - RADDBG_LinkFlag_TypeScoped = (1 << 1), - RADDBG_LinkFlag_ProcScoped = (1 << 2), + RADDBGI_LinkFlag_TypeScoped = (1 << 1), + RADDBGI_LinkFlag_ProcScoped = (1 << 2), }; -typedef struct RADDBG_GlobalVariable{ - RADDBG_U32 name_string_idx; +typedef struct RADDBGI_GlobalVariable{ + RADDBGI_U32 name_string_idx; // NOTE: "global variables" can be scoped in *any* way. The scope flags here refer to // *namespace* scoping. "global variables" are all in the data section of the // final exe/dll type file, so they are "global" in the life-time sense of the // word. In the namespace sense of the word, they can be scoped globally, by type, // or by procedure. - RADDBG_LinkFlags link_flags; - RADDBG_U64 voff; - RADDBG_U32 type_idx; + RADDBGI_LinkFlags link_flags; + RADDBGI_U64 voff; + RADDBGI_U32 type_idx; // container_idx: UDT for "TypeScoped", Procedure for "ProcScoped" - RADDBG_U32 container_idx; -} RADDBG_GlobalVariable; + RADDBGI_U32 container_idx; +} RADDBGI_GlobalVariable; -typedef struct RADDBG_ThreadVariable{ - RADDBG_U32 name_string_idx; +typedef struct RADDBGI_ThreadVariable{ + RADDBGI_U32 name_string_idx; // NOTE: See the note in GlobalVariable regarding scoping. The same concept applies here. - RADDBG_LinkFlags link_flags; - RADDBG_U32 tls_off; - RADDBG_U32 type_idx; + RADDBGI_LinkFlags link_flags; + RADDBGI_U32 tls_off; + RADDBGI_U32 type_idx; // container_idx: UDT for "TypeScoped", Procedure for "ProcScoped" - RADDBG_U32 container_idx; -} RADDBG_ThreadVariable; + RADDBGI_U32 container_idx; +} RADDBGI_ThreadVariable; -typedef struct RADDBG_Procedure{ - RADDBG_U32 name_string_idx; - RADDBG_U32 link_name_string_idx; +typedef struct RADDBGI_Procedure{ + RADDBGI_U32 name_string_idx; + RADDBGI_U32 link_name_string_idx; // NOTE: See the note in GlobalVariable regarding scoping. The same concept applies here. - RADDBG_LinkFlags link_flags; - RADDBG_U32 type_idx; - RADDBG_U32 root_scope_idx; + RADDBGI_LinkFlags link_flags; + RADDBGI_U32 type_idx; + RADDBGI_U32 root_scope_idx; // container_idx: UDT for "TypeScoped", Procedure for "ProcScoped" - RADDBG_U32 container_idx; -} RADDBG_Procedure; + RADDBGI_U32 container_idx; +} RADDBGI_Procedure; -typedef struct RADDBG_Scope{ - RADDBG_U32 proc_idx; - RADDBG_U32 parent_scope_idx; - RADDBG_U32 first_child_scope_idx; - RADDBG_U32 next_sibling_scope_idx; +typedef struct RADDBGI_Scope{ + RADDBGI_U32 proc_idx; + RADDBGI_U32 parent_scope_idx; + RADDBGI_U32 first_child_scope_idx; + RADDBGI_U32 next_sibling_scope_idx; - RADDBG_U32 voff_range_first; - RADDBG_U32 voff_range_opl; + RADDBGI_U32 voff_range_first; + RADDBGI_U32 voff_range_opl; // indexes into "locals" - RADDBG_U32 local_first; - RADDBG_U32 local_count; + RADDBGI_U32 local_first; + RADDBGI_U32 local_count; - RADDBG_U32 static_local_idx_run_first; - RADDBG_U32 static_local_count; + RADDBGI_U32 static_local_idx_run_first; + RADDBGI_U32 static_local_count; // TODO(allen): attach less common scope-relevant info -} RADDBG_Scope; +} RADDBGI_Scope; -typedef RADDBG_U32 RADDBG_LocalKind; +typedef RADDBGI_U32 RADDBGI_LocalKind; typedef enum{ - RADDBG_LocalKind_NULL, - RADDBG_LocalKind_Parameter, - RADDBG_LocalKind_Variable, - RADDBG_LocalKind_COUNT -} RADDBG_LocalKindEnum; + RADDBGI_LocalKind_NULL, + RADDBGI_LocalKind_Parameter, + RADDBGI_LocalKind_Variable, + RADDBGI_LocalKind_COUNT +} RADDBGI_LocalKindEnum; -typedef struct RADDBG_Local{ - RADDBG_LocalKind kind; - RADDBG_U32 name_string_idx; - RADDBG_U64 type_idx; +typedef struct RADDBGI_Local{ + RADDBGI_LocalKind kind; + RADDBGI_U32 name_string_idx; + RADDBGI_U64 type_idx; // indexes into "location_blocks" - RADDBG_U32 location_first; - RADDBG_U32 location_opl; -} RADDBG_Local; + RADDBGI_U32 location_first; + RADDBGI_U32 location_opl; +} RADDBGI_Local; -typedef struct RADDBG_LocationBlock{ - RADDBG_U32 scope_off_first; - RADDBG_U32 scope_off_opl; - RADDBG_U32 location_data_off; -} RADDBG_LocationBlock; +typedef struct RADDBGI_LocationBlock{ + RADDBGI_U32 scope_off_first; + RADDBGI_U32 scope_off_opl; + RADDBGI_U32 location_data_off; +} RADDBGI_LocationBlock; -typedef RADDBG_U8 RADDBG_LocationKind; +typedef RADDBGI_U8 RADDBGI_LocationKind; typedef enum{ - RADDBG_LocationKind_NULL, - RADDBG_LocationKind_AddrBytecodeStream, - RADDBG_LocationKind_ValBytecodeStream, - RADDBG_LocationKind_AddrRegisterPlusU16, - RADDBG_LocationKind_AddrAddrRegisterPlusU16, - RADDBG_LocationKind_ValRegister, - RADDBG_LocationKind_COUNT -} RADDBG_LocationKindEnum; + RADDBGI_LocationKind_NULL, + RADDBGI_LocationKind_AddrBytecodeStream, + RADDBGI_LocationKind_ValBytecodeStream, + RADDBGI_LocationKind_AddrRegisterPlusU16, + RADDBGI_LocationKind_AddrAddrRegisterPlusU16, + RADDBGI_LocationKind_ValRegister, + RADDBGI_LocationKind_COUNT +} RADDBGI_LocationKindEnum; -typedef struct RADDBG_LocationBytecodeStream{ - RADDBG_LocationKind kind; - // [... 0] null terminated byte sequence RADDBG_EvalBytecodeStream -} RADDBG_LocationBytecodeStream; +typedef struct RADDBGI_LocationBytecodeStream{ + RADDBGI_LocationKind kind; + // [... 0] null terminated byte sequence RADDBGI_EvalBytecodeStream +} RADDBGI_LocationBytecodeStream; -typedef struct RADDBG_LocationRegisterPlusU16{ - RADDBG_LocationKind kind; - RADDBG_RegisterCode register_code; - RADDBG_U16 offset; -} RADDBG_LocationRegisterPlusU16; +typedef struct RADDBGI_LocationRegisterPlusU16{ + RADDBGI_LocationKind kind; + RADDBGI_RegisterCode register_code; + RADDBGI_U16 offset; +} RADDBGI_LocationRegisterPlusU16; -typedef struct RADDBG_LocationRegister{ - RADDBG_LocationKind kind; - RADDBG_RegisterCode register_code; -} RADDBG_LocationRegister; +typedef struct RADDBGI_LocationRegister{ + RADDBGI_LocationKind kind; + RADDBGI_RegisterCode register_code; +} RADDBGI_LocationRegister; //- name map types -#define RADDBG_NameMapXList(X)\ +#define RADDBGI_NameMapXList(X)\ X(NULL, 0)\ X(GlobalVariables, 1)\ X(ThreadVariables, 2)\ @@ -721,42 +721,42 @@ X(Types, 4)\ X(LinkNameProcedures, 5)\ X(NormalSourcePaths, 6) -typedef RADDBG_U32 RADDBG_NameMapKind; -typedef enum RADDBG_NameMapKindEnum{ -#define X(N,C) RADDBG_NameMapKind_##N = C, - RADDBG_NameMapXList(X) +typedef RADDBGI_U32 RADDBGI_NameMapKind; +typedef enum RADDBGI_NameMapKindEnum{ +#define X(N,C) RADDBGI_NameMapKind_##N = C, + RADDBGI_NameMapXList(X) #undef X - RADDBG_NameMapKind_COUNT -} RADDBG_NameMapKindEnum; + RADDBGI_NameMapKind_COUNT +} RADDBGI_NameMapKindEnum; // TODO(allen): documentation here for the hashing and probing strategy for this table -typedef struct RADDBG_NameMap{ - RADDBG_NameMapKind kind; - RADDBG_U32 bucket_data_idx; - RADDBG_U32 node_data_idx; -} RADDBG_NameMap; +typedef struct RADDBGI_NameMap{ + RADDBGI_NameMapKind kind; + RADDBGI_U32 bucket_data_idx; + RADDBGI_U32 node_data_idx; +} RADDBGI_NameMap; -typedef struct RADDBG_NameMapBucket{ - RADDBG_U32 first_node; - RADDBG_U32 node_count; -} RADDBG_NameMapBucket; +typedef struct RADDBGI_NameMapBucket{ + RADDBGI_U32 first_node; + RADDBGI_U32 node_count; +} RADDBGI_NameMapBucket; -typedef struct RADDBG_NameMapNode{ - RADDBG_U32 string_idx; - RADDBG_U32 match_count; +typedef struct RADDBGI_NameMapNode{ + RADDBGI_U32 string_idx; + RADDBGI_U32 match_count; // NOTE: if (match_count == 1) then this is the index of the matching item // if (match_count > 1) then this is the first for an index run of all the matches - RADDBG_U32 match_idx_or_idx_run_first; -} RADDBG_NameMapNode; + RADDBGI_U32 match_idx_or_idx_run_first; +} RADDBGI_NameMapNode; //////////////////////////////// // Eval Bytecode // (Name, decodeN, popN, pushN) -#define RADDBG_EvalOpXList(X)\ +#define RADDBGI_EvalOpXList(X)\ X(Stop, 0, 0, 0)\ X(Noop, 0, 0, 0)\ X(Cond, 1, 1, 0)\ @@ -803,7 +803,7 @@ X(Pop, 0, 1, 0)\ X(Insert, 1, 0, 0) // (Name) -#define RADDBG_EvalTypeGroupXList(X)\ +#define RADDBGI_EvalTypeGroupXList(X)\ X(Other)\ X(U)\ X(S)\ @@ -811,7 +811,7 @@ X(F32)\ X(F64) // (Name, error-message) -#define RADDBG_EvalConversionKindXList(X)\ +#define RADDBGI_EvalConversionKindXList(X)\ X(Noop, "")\ X(Legal, "")\ X(OtherToOther, "cannot convert between these types")\ @@ -819,7 +819,7 @@ X(ToOther, "cannot convert to this type")\ X(FromOther, "cannot convert this type") // Xb(EvalTypeGroup) Y(TypeKind) Xe(EvalTypeGroup) -#define RADDBG_EvalTypeGroupFromKindMap(Y,Xb,Xe)\ +#define RADDBGI_EvalTypeGroupFromKindMap(Y,Xb,Xe)\ \ Xb(U) Y(U8) Y(U16) Y(U32) Y(U64) Y(Bool) Y(Ptr) Y(Enum)\ Xe(U)\ @@ -834,7 +834,7 @@ Xb(F64) Y(F64)\ Xe(F64) // Xb(EvalConversionKind) Y(EvalTypeGroup, EvalTypeGroup) Xe(EvalConversionKind) -#define RADDBG_EvalConversionKindFromTypeGroupPairMap(Y,Xb,Xe)\ +#define RADDBGI_EvalConversionKindFromTypeGroupPairMap(Y,Xb,Xe)\ \ Xb(Noop) Y(U, U) Y(S, S) Y(F32, F32) Y(F64, F64) Y(U, S) Y(S, U)\ Xe(Noop)\ @@ -855,69 +855,65 @@ Xb(FromOther) Y(Other, U) Y(Other, S) Y(Other, F32) Y(Other, F64)\ Xe(FromOther) // eval interpretation macros -#define RADDBG_EncodeRegReadParam(reg,bytesize,bytepos) ((reg)|((bytesize)<<8)|((bytepos)<<16)) +#define RADDBGI_EncodeRegReadParam(reg,bytesize,bytepos) ((reg)|((bytesize)<<8)|((bytepos)<<16)) // eval enums -typedef RADDBG_U8 RADDBG_EvalOp; +typedef RADDBGI_U8 RADDBGI_EvalOp; -typedef enum RADDBG_EvalOpEnum{ -#define X(N,dec,pop,push) RADDBG_EvalOp_##N, - RADDBG_EvalOpXList(X) +typedef enum RADDBGI_EvalOpEnum{ +#define X(N,dec,pop,push) RADDBGI_EvalOp_##N, + RADDBGI_EvalOpXList(X) #undef X - RADDBG_EvalOp_COUNT -} RADDBG_EvalOpEnum; + RADDBGI_EvalOp_COUNT +} RADDBGI_EvalOpEnum; -typedef RADDBG_U8 RADDBG_EvalTypeGroup; +typedef RADDBGI_U8 RADDBGI_EvalTypeGroup; -typedef enum RADDBG_EvalTypeGroupEnum{ -#define X(N) RADDBG_EvalTypeGroup_##N, - RADDBG_EvalTypeGroupXList(X) +typedef enum RADDBGI_EvalTypeGroupEnum{ +#define X(N) RADDBGI_EvalTypeGroup_##N, + RADDBGI_EvalTypeGroupXList(X) #undef X - RADDBG_EvalTypeGroup_COUNT, -} RADDBG_EvalTypeGroupEnum; + RADDBGI_EvalTypeGroup_COUNT, +} RADDBGI_EvalTypeGroupEnum; -typedef RADDBG_U8 RADDBG_EvalConversionKind; +typedef RADDBGI_U8 RADDBGI_EvalConversionKind; -typedef enum RADDBG_EvalConversionKindEnum{ -#define X(N,msg) RADDBG_EvalConversionKind_##N, - RADDBG_EvalConversionKindXList(X) +typedef enum RADDBGI_EvalConversionKindEnum{ +#define X(N,msg) RADDBGI_EvalConversionKind_##N, + RADDBGI_EvalConversionKindXList(X) #undef X - RADDBG_EvalConversionKind_COUNT, -} RADDBG_EvalConversionKindEnum; + RADDBGI_EvalConversionKind_COUNT, +} RADDBGI_EvalConversionKindEnum; //- eval data tables -#define RADDBG_EVAL_CTRLBITS(decodeN,popN,pushN) ((decodeN) | ((popN) << 4) | ((pushN) << 6)) -#define RADDBG_DECODEN_FROM_CTRLBITS(ctrlbits) ((ctrlbits) & 0xf) -#define RADDBG_POPN_FROM_CTRLBITS(ctrlbits) (((ctrlbits) >> 4) & 0x3) -#define RADDBG_PUSHN_FROM_CTRLBITS(ctrlbits) (((ctrlbits) >> 6) & 0x3) +#define RADDBGI_EVAL_CTRLBITS(decodeN,popN,pushN) ((decodeN) | ((popN) << 4) | ((pushN) << 6)) +#define RADDBGI_DECODEN_FROM_CTRLBITS(ctrlbits) ((ctrlbits) & 0xf) +#define RADDBGI_POPN_FROM_CTRLBITS(ctrlbits) (((ctrlbits) >> 4) & 0x3) +#define RADDBGI_PUSHN_FROM_CTRLBITS(ctrlbits) (((ctrlbits) >> 6) & 0x3) -static RADDBG_U8 raddbg_eval_opcode_ctrlbits[] = { -#define X(Name, decodeN, popN, pushN) RADDBG_EVAL_CTRLBITS(decodeN,popN,pushN), - RADDBG_EvalOpXList(X) +static RADDBGI_U8 raddbgi_eval_opcode_ctrlbits[] = { +#define X(Name, decodeN, popN, pushN) RADDBGI_EVAL_CTRLBITS(decodeN,popN,pushN), + RADDBGI_EvalOpXList(X) #undef X }; //////////////////////////////// // Functions -RADDBG_PROC RADDBG_U64 raddbg_hash(RADDBG_U8 *ptr, RADDBG_U64 size); -RADDBG_PROC RADDBG_U32 raddbg_size_from_basic_type_kind(RADDBG_TypeKind kind); -RADDBG_PROC RADDBG_U32 raddbg_addr_size_from_arch(RADDBG_Arch arch); +RADDBGI_PROC RADDBGI_U64 raddbgi_hash(RADDBGI_U8 *ptr, RADDBGI_U64 size); +RADDBGI_PROC RADDBGI_U32 raddbgi_size_from_basic_type_kind(RADDBGI_TypeKind kind); +RADDBGI_PROC RADDBGI_U32 raddbgi_addr_size_from_arch(RADDBGI_Arch arch); //- eval helpers -RADDBG_PROC RADDBG_EvalConversionKind -raddbg_eval_conversion_rule(RADDBG_EvalTypeGroup in, RADDBG_EvalTypeGroup out); -RADDBG_PROC RADDBG_U8* -raddbg_eval_conversion_message(RADDBG_EvalConversionKind conversion_kind, RADDBG_U64 *lennout); +RADDBGI_PROC RADDBGI_EvalConversionKind raddbgi_eval_conversion_rule(RADDBGI_EvalTypeGroup in, RADDBGI_EvalTypeGroup out); +RADDBGI_PROC RADDBGI_U8* raddbgi_eval_conversion_message(RADDBGI_EvalConversionKind conversion_kind, RADDBGI_U64 *lennout); +RADDBGI_PROC RADDBGI_S32 raddbgi_eval_opcode_type_compatible(RADDBGI_EvalOp op, RADDBGI_EvalTypeGroup group); -RADDBG_PROC RADDBG_S32 -raddbg_eval_opcode_type_compatible(RADDBG_EvalOp op, RADDBG_EvalTypeGroup group); - -#endif // RADDBG_FORMAT_H +#endif // RADDBGI_FORMAT_H diff --git a/src/raddbgi_format/raddbgi_format_parse.c b/src/raddbgi_format/raddbgi_format_parse.c index b29e9776..9e294146 100644 --- a/src/raddbgi_format/raddbgi_format_parse.c +++ b/src/raddbgi_format/raddbgi_format_parse.c @@ -4,105 +4,105 @@ //////////////////////////////// //~ RADDBG Parse API -RADDBG_PROC RADDBG_ParseStatus -raddbg_parse(RADDBG_U8 *data, RADDBG_U64 size, RADDBG_Parsed *out){ - RADDBG_ParseStatus result = RADDBG_ParseStatus_Good; +RADDBGI_PROC RADDBGI_ParseStatus +raddbgi_parse(RADDBGI_U8 *data, RADDBGI_U64 size, RADDBGI_Parsed *out){ + RADDBGI_ParseStatus result = RADDBGI_ParseStatus_Good; // out header - RADDBG_Header *hdr = 0; + RADDBGI_Header *hdr = 0; { if (sizeof(*hdr) <= size){ - hdr = (RADDBG_Header*)data; + hdr = (RADDBGI_Header*)data; } // (errors) - if (hdr == 0 || hdr->magic != RADDBG_MAGIC_CONSTANT){ + if (hdr == 0 || hdr->magic != RADDBGI_MAGIC_CONSTANT){ hdr = 0; - result = RADDBG_ParseStatus_HeaderDoesNotMatch; + result = RADDBGI_ParseStatus_HeaderDoesNotMatch; } if (hdr != 0 && hdr->encoding_version != 1){ hdr = 0; - result = RADDBG_ParseStatus_UnsupportedVersionNumber; + result = RADDBGI_ParseStatus_UnsupportedVersionNumber; } } // out data sections - RADDBG_DataSection *dsecs = 0; - RADDBG_U32 dsec_count = 0; + RADDBGI_DataSection *dsecs = 0; + RADDBGI_U32 dsec_count = 0; if (hdr != 0){ - RADDBG_U64 opl = (RADDBG_U64)hdr->data_section_off + (RADDBG_U64)hdr->data_section_count*sizeof(*dsecs); + RADDBGI_U64 opl = (RADDBGI_U64)hdr->data_section_off + (RADDBGI_U64)hdr->data_section_count*sizeof(*dsecs); if (opl <= size){ - dsecs = (RADDBG_DataSection*)(data + hdr->data_section_off); + dsecs = (RADDBGI_DataSection*)(data + hdr->data_section_off); dsec_count = hdr->data_section_count; } // (errors) if (dsecs == 0){ - result = RADDBG_ParseStatus_InvalidDataSecionLayout; + result = RADDBGI_ParseStatus_InvalidDataSecionLayout; } } // extract primary data section indexes - RADDBG_U32 dsec_idx[RADDBG_DataSectionTag_PRIMARY_COUNT] = {0}; - if (result == RADDBG_ParseStatus_Good){ - RADDBG_DataSection *sec_ptr = dsecs; - for (RADDBG_U32 i = 0; i < dsec_count; i += 1, sec_ptr += 1){ - if (sec_ptr->tag < RADDBG_DataSectionTag_PRIMARY_COUNT){ + RADDBGI_U32 dsec_idx[RADDBGI_DataSectionTag_PRIMARY_COUNT] = {0}; + if (result == RADDBGI_ParseStatus_Good){ + RADDBGI_DataSection *sec_ptr = dsecs; + for (RADDBGI_U32 i = 0; i < dsec_count; i += 1, sec_ptr += 1){ + if (sec_ptr->tag < RADDBGI_DataSectionTag_PRIMARY_COUNT){ dsec_idx[sec_ptr->tag] = i; } } } // fill out data block (part 1) - if (result == RADDBG_ParseStatus_Good){ + if (result == RADDBGI_ParseStatus_Good){ out->raw_data = data; out->raw_data_size = size; out->dsecs = dsecs; out->dsec_count = dsec_count; - for (RADDBG_U32 i = 0; i < RADDBG_DataSectionTag_PRIMARY_COUNT; i += 1){ + for (RADDBGI_U32 i = 0; i < RADDBGI_DataSectionTag_PRIMARY_COUNT; i += 1){ out->dsec_idx[i] = dsec_idx[i]; } } // out string table - RADDBG_U8 *string_data = 0; - RADDBG_U64 string_opl = 0; - RADDBG_U32 *string_offs = 0; - RADDBG_U64 string_count = 0; - if (result == RADDBG_ParseStatus_Good){ - raddbg_parse__extract_primary(out, string_data, &string_opl, - RADDBG_DataSectionTag_StringData); + RADDBGI_U8 *string_data = 0; + RADDBGI_U64 string_opl = 0; + RADDBGI_U32 *string_offs = 0; + RADDBGI_U64 string_count = 0; + if (result == RADDBGI_ParseStatus_Good){ + raddbgi_parse__extract_primary(out, string_data, &string_opl, + RADDBGI_DataSectionTag_StringData); - RADDBG_U64 table_entry_count = 0; - raddbg_parse__extract_primary(out, string_offs, &table_entry_count, - RADDBG_DataSectionTag_StringTable); + RADDBGI_U64 table_entry_count = 0; + raddbgi_parse__extract_primary(out, string_offs, &table_entry_count, + RADDBGI_DataSectionTag_StringTable); if (table_entry_count > 0){ string_count = table_entry_count - 1; } // (errors) if (string_data == 0){ - result = RADDBG_ParseStatus_MissingStringDataSection; + result = RADDBGI_ParseStatus_MissingStringDataSection; } else if (string_offs == 0){ - result = RADDBG_ParseStatus_MissingStringTableSection; + result = RADDBGI_ParseStatus_MissingStringTableSection; } } // out index runs - RADDBG_U32 *idx_run_data = 0; - RADDBG_U64 idx_run_count = 0; - if (result == RADDBG_ParseStatus_Good){ - raddbg_parse__extract_primary(out, idx_run_data, &idx_run_count, - RADDBG_DataSectionTag_IndexRuns); + RADDBGI_U32 *idx_run_data = 0; + RADDBGI_U64 idx_run_count = 0; + if (result == RADDBGI_ParseStatus_Good){ + raddbgi_parse__extract_primary(out, idx_run_data, &idx_run_count, + RADDBGI_DataSectionTag_IndexRuns); // (errors) if (idx_run_data == 0){ - result = RADDBG_ParseStatus_MissingIndexRunSection; + result = RADDBGI_ParseStatus_MissingIndexRunSection; } } - if (result == RADDBG_ParseStatus_Good){ + if (result == RADDBGI_ParseStatus_Good){ // fill out primary data structures (part 2) out->string_data = string_data; out->string_offs = string_offs; @@ -112,81 +112,81 @@ raddbg_parse(RADDBG_U8 *data, RADDBG_U64 size, RADDBG_Parsed *out){ out->idx_run_count = idx_run_count; { - RADDBG_TopLevelInfo *tli = 0; - RADDBG_U64 dummy = 0; - raddbg_parse__extract_primary(out, tli, &dummy, RADDBG_DataSectionTag_TopLevelInfo); + RADDBGI_TopLevelInfo *tli = 0; + RADDBGI_U64 dummy = 0; + raddbgi_parse__extract_primary(out, tli, &dummy, RADDBGI_DataSectionTag_TopLevelInfo); if (dummy != 1){ tli = 0; } out->top_level_info = tli; } - raddbg_parse__extract_primary(out, out->binary_sections, &out->binary_sections_count, - RADDBG_DataSectionTag_BinarySections); + raddbgi_parse__extract_primary(out, out->binary_sections, &out->binary_sections_count, + RADDBGI_DataSectionTag_BinarySections); - raddbg_parse__extract_primary(out, out->file_paths, &out->file_paths_count, - RADDBG_DataSectionTag_FilePathNodes); + raddbgi_parse__extract_primary(out, out->file_paths, &out->file_paths_count, + RADDBGI_DataSectionTag_FilePathNodes); - raddbg_parse__extract_primary(out, out->source_files, &out->source_files_count, - RADDBG_DataSectionTag_SourceFiles); + raddbgi_parse__extract_primary(out, out->source_files, &out->source_files_count, + RADDBGI_DataSectionTag_SourceFiles); - raddbg_parse__extract_primary(out, out->units, &out->units_count, - RADDBG_DataSectionTag_Units); + raddbgi_parse__extract_primary(out, out->units, &out->units_count, + RADDBGI_DataSectionTag_Units); - raddbg_parse__extract_primary(out, out->unit_vmap, &out->unit_vmap_count, - RADDBG_DataSectionTag_UnitVmap); + raddbgi_parse__extract_primary(out, out->unit_vmap, &out->unit_vmap_count, + RADDBGI_DataSectionTag_UnitVmap); - raddbg_parse__extract_primary(out, out->unit_vmap, &out->unit_vmap_count, - RADDBG_DataSectionTag_UnitVmap); + raddbgi_parse__extract_primary(out, out->unit_vmap, &out->unit_vmap_count, + RADDBGI_DataSectionTag_UnitVmap); - raddbg_parse__extract_primary(out, out->type_nodes, &out->type_nodes_count, - RADDBG_DataSectionTag_TypeNodes); + raddbgi_parse__extract_primary(out, out->type_nodes, &out->type_nodes_count, + RADDBGI_DataSectionTag_TypeNodes); - raddbg_parse__extract_primary(out, out->udts, &out->udts_count, - RADDBG_DataSectionTag_UDTs); + raddbgi_parse__extract_primary(out, out->udts, &out->udts_count, + RADDBGI_DataSectionTag_UDTs); - raddbg_parse__extract_primary(out, out->members, &out->members_count, - RADDBG_DataSectionTag_Members); + raddbgi_parse__extract_primary(out, out->members, &out->members_count, + RADDBGI_DataSectionTag_Members); - raddbg_parse__extract_primary(out, out->enum_members, &out->enum_members_count, - RADDBG_DataSectionTag_EnumMembers); + raddbgi_parse__extract_primary(out, out->enum_members, &out->enum_members_count, + RADDBGI_DataSectionTag_EnumMembers); - raddbg_parse__extract_primary(out, out->global_variables, &out->global_variables_count, - RADDBG_DataSectionTag_GlobalVariables); + raddbgi_parse__extract_primary(out, out->global_variables, &out->global_variables_count, + RADDBGI_DataSectionTag_GlobalVariables); - raddbg_parse__extract_primary(out, out->global_vmap, &out->global_vmap_count, - RADDBG_DataSectionTag_GlobalVmap); + raddbgi_parse__extract_primary(out, out->global_vmap, &out->global_vmap_count, + RADDBGI_DataSectionTag_GlobalVmap); - raddbg_parse__extract_primary(out, out->thread_variables, &out->thread_variables_count, - RADDBG_DataSectionTag_ThreadVariables); + raddbgi_parse__extract_primary(out, out->thread_variables, &out->thread_variables_count, + RADDBGI_DataSectionTag_ThreadVariables); - raddbg_parse__extract_primary(out, out->procedures, &out->procedures_count, - RADDBG_DataSectionTag_Procedures); + raddbgi_parse__extract_primary(out, out->procedures, &out->procedures_count, + RADDBGI_DataSectionTag_Procedures); - raddbg_parse__extract_primary(out, out->scopes, &out->scopes_count, - RADDBG_DataSectionTag_Scopes); + raddbgi_parse__extract_primary(out, out->scopes, &out->scopes_count, + RADDBGI_DataSectionTag_Scopes); - raddbg_parse__extract_primary(out, out->scope_voffs, &out->scope_voffs_count, - RADDBG_DataSectionTag_ScopeVoffData); + raddbgi_parse__extract_primary(out, out->scope_voffs, &out->scope_voffs_count, + RADDBGI_DataSectionTag_ScopeVoffData); - raddbg_parse__extract_primary(out, out->scope_vmap, &out->scope_vmap_count, - RADDBG_DataSectionTag_ScopeVmap); + raddbgi_parse__extract_primary(out, out->scope_vmap, &out->scope_vmap_count, + RADDBGI_DataSectionTag_ScopeVmap); - raddbg_parse__extract_primary(out, out->locals, &out->locals_count, - RADDBG_DataSectionTag_Locals); + raddbgi_parse__extract_primary(out, out->locals, &out->locals_count, + RADDBGI_DataSectionTag_Locals); - raddbg_parse__extract_primary(out, out->location_blocks, &out->location_blocks_count, - RADDBG_DataSectionTag_LocationBlocks); + raddbgi_parse__extract_primary(out, out->location_blocks, &out->location_blocks_count, + RADDBGI_DataSectionTag_LocationBlocks); - raddbg_parse__extract_primary(out, out->location_data, &out->location_data_size, - RADDBG_DataSectionTag_LocationData); + raddbgi_parse__extract_primary(out, out->location_data, &out->location_data_size, + RADDBGI_DataSectionTag_LocationData); { - raddbg_parse__extract_primary(out, out->name_maps, &out->name_maps_count, - RADDBG_DataSectionTag_NameMaps); + raddbgi_parse__extract_primary(out, out->name_maps, &out->name_maps_count, + RADDBGI_DataSectionTag_NameMaps); - RADDBG_NameMap *name_map_ptr = out->name_maps; - RADDBG_NameMap *name_map_opl = out->name_maps + out->name_maps_count; + RADDBGI_NameMap *name_map_ptr = out->name_maps; + RADDBGI_NameMap *name_map_opl = out->name_maps + out->name_maps_count; for (; name_map_ptr < name_map_opl; name_map_ptr += 1){ if (out->name_maps_by_kind[name_map_ptr->kind] == 0){ out->name_maps_by_kind[name_map_ptr->kind] = name_map_ptr; @@ -194,25 +194,25 @@ raddbg_parse(RADDBG_U8 *data, RADDBG_U64 size, RADDBG_Parsed *out){ } } -#if !defined(RADDBG_DISABLE_NILS) - if(out->binary_sections == 0) { out->binary_sections = &raddbg_binary_section_nil; out->binary_sections_count = 1; } - if(out->file_paths == 0) { out->file_paths = &raddbg_file_path_node_nil; out->file_paths_count = 1; } - if(out->source_files == 0) { out->source_files = &raddbg_source_file_nil; out->source_files_count = 1; } - if(out->units == 0) { out->units = &raddbg_unit_nil; out->units_count = 1; } - if(out->unit_vmap == 0) { out->unit_vmap = &raddbg_vmap_entry_nil; out->unit_vmap_count = 1; } - if(out->type_nodes == 0) { out->type_nodes = &raddbg_type_node_nil; out->type_nodes_count = 1; } - if(out->udts == 0) { out->udts = &raddbg_udt_nil; out->udts_count = 1; } - if(out->members == 0) { out->members = &raddbg_member_nil; out->members_count = 1; } - if(out->enum_members == 0) { out->enum_members = &raddbg_enum_member_nil; out->enum_members_count = 1; } - if(out->global_variables == 0) { out->global_variables = &raddbg_global_variable_nil; out->global_variables_count = 1; } - if(out->global_vmap == 0) { out->global_vmap = &raddbg_vmap_entry_nil; out->global_vmap_count = 1; } - if(out->thread_variables == 0) { out->thread_variables = &raddbg_thread_variable_nil; out->thread_variables_count = 1; } - if(out->procedures == 0) { out->procedures = &raddbg_procedure_nil; out->procedures_count = 1; } - if(out->scopes == 0) { out->scopes = &raddbg_scope_nil; out->scopes_count = 1; } - if(out->scope_voffs == 0) { out->scope_voffs = &raddbg_voff_nil; out->scope_voffs_count = 1; } - if(out->scope_vmap == 0) { out->scope_vmap = &raddbg_vmap_entry_nil; out->scope_vmap_count = 1; } - if(out->locals == 0) { out->locals = &raddbg_local_nil; out->locals_count = 1; } - if(out->location_blocks == 0) { out->location_blocks = &raddbg_location_block_nil; out->location_blocks_count = 1; } +#if !defined(RADDBGI_DISABLE_NILS) + if(out->binary_sections == 0) { out->binary_sections = &raddbgi_binary_section_nil; out->binary_sections_count = 1; } + if(out->file_paths == 0) { out->file_paths = &raddbgi_file_path_node_nil; out->file_paths_count = 1; } + if(out->source_files == 0) { out->source_files = &raddbgi_source_file_nil; out->source_files_count = 1; } + if(out->units == 0) { out->units = &raddbgi_unit_nil; out->units_count = 1; } + if(out->unit_vmap == 0) { out->unit_vmap = &raddbgi_vmap_entry_nil; out->unit_vmap_count = 1; } + if(out->type_nodes == 0) { out->type_nodes = &raddbgi_type_node_nil; out->type_nodes_count = 1; } + if(out->udts == 0) { out->udts = &raddbgi_udt_nil; out->udts_count = 1; } + if(out->members == 0) { out->members = &raddbgi_member_nil; out->members_count = 1; } + if(out->enum_members == 0) { out->enum_members = &raddbgi_enum_member_nil; out->enum_members_count = 1; } + if(out->global_variables == 0) { out->global_variables = &raddbgi_global_variable_nil; out->global_variables_count = 1; } + if(out->global_vmap == 0) { out->global_vmap = &raddbgi_vmap_entry_nil; out->global_vmap_count = 1; } + if(out->thread_variables == 0) { out->thread_variables = &raddbgi_thread_variable_nil; out->thread_variables_count = 1; } + if(out->procedures == 0) { out->procedures = &raddbgi_procedure_nil; out->procedures_count = 1; } + if(out->scopes == 0) { out->scopes = &raddbgi_scope_nil; out->scopes_count = 1; } + if(out->scope_voffs == 0) { out->scope_voffs = &raddbgi_voff_nil; out->scope_voffs_count = 1; } + if(out->scope_vmap == 0) { out->scope_vmap = &raddbgi_vmap_entry_nil; out->scope_vmap_count = 1; } + if(out->locals == 0) { out->locals = &raddbgi_local_nil; out->locals_count = 1; } + if(out->location_blocks == 0) { out->location_blocks = &raddbgi_location_block_nil; out->location_blocks_count = 1; } #endif } @@ -220,15 +220,15 @@ raddbg_parse(RADDBG_U8 *data, RADDBG_U64 size, RADDBG_Parsed *out){ return(result); } -RADDBG_PROC RADDBG_U8* -raddbg_string_from_idx(RADDBG_Parsed *parsed, RADDBG_U32 idx, RADDBG_U64 *len_out){ - RADDBG_U8 *result = 0; - RADDBG_U64 len_result = 0; +RADDBGI_PROC RADDBGI_U8* +raddbgi_string_from_idx(RADDBGI_Parsed *parsed, RADDBGI_U32 idx, RADDBGI_U64 *len_out){ + RADDBGI_U8 *result = 0; + RADDBGI_U64 len_result = 0; if (idx < parsed->string_count){ - RADDBG_U32 off_raw = parsed->string_offs[idx]; - RADDBG_U32 opl_raw = parsed->string_offs[idx + 1]; - RADDBG_U32 opl = raddbg_parse__min(opl_raw, parsed->string_data_size); - RADDBG_U32 off = raddbg_parse__min(off_raw, opl); + RADDBGI_U32 off_raw = parsed->string_offs[idx]; + RADDBGI_U32 opl_raw = parsed->string_offs[idx + 1]; + RADDBGI_U32 opl = raddbgi_parse__min(opl_raw, parsed->string_data_size); + RADDBGI_U32 off = raddbgi_parse__min(off_raw, opl); result = parsed->string_data + off; len_result = opl - off; } @@ -236,15 +236,15 @@ raddbg_string_from_idx(RADDBG_Parsed *parsed, RADDBG_U32 idx, RADDBG_U64 *len_ou return(result); } -RADDBG_PROC RADDBG_U32* -raddbg_idx_run_from_first_count(RADDBG_Parsed *parsed, - RADDBG_U32 raw_first, RADDBG_U32 raw_count, - RADDBG_U32 *n_out){ - RADDBG_U32 raw_opl = raw_first + raw_count; - RADDBG_U32 opl = raddbg_parse__min(raw_opl, parsed->idx_run_count); - RADDBG_U32 first = raddbg_parse__min(raw_first, opl); +RADDBGI_PROC RADDBGI_U32* +raddbgi_idx_run_from_first_count(RADDBGI_Parsed *parsed, + RADDBGI_U32 raw_first, RADDBGI_U32 raw_count, + RADDBGI_U32 *n_out){ + RADDBGI_U32 raw_opl = raw_first + raw_count; + RADDBGI_U32 opl = raddbgi_parse__min(raw_opl, parsed->idx_run_count); + RADDBGI_U32 first = raddbgi_parse__min(raw_first, opl); - RADDBG_U32 *result = 0; + RADDBGI_U32 *result = 0; if (first < parsed->idx_run_count){ result = parsed->idx_run_data + first; } @@ -254,29 +254,29 @@ raddbg_idx_run_from_first_count(RADDBG_Parsed *parsed, //- line info -RADDBG_PROC void -raddbg_line_info_from_unit(RADDBG_Parsed *p, RADDBG_Unit *unit, RADDBG_ParsedLineInfo *out){ - RADDBG_U64 line_info_voff_count = 0; - RADDBG_U64 *voffs = (RADDBG_U64*) - raddbg_data_from_dsec(p, unit->line_info_voffs_data_idx, sizeof(RADDBG_U64), - RADDBG_DataSectionTag_LineInfoVoffs, - &line_info_voff_count); +RADDBGI_PROC void +raddbgi_line_info_from_unit(RADDBGI_Parsed *p, RADDBGI_Unit *unit, RADDBGI_ParsedLineInfo *out){ + RADDBGI_U64 line_info_voff_count = 0; + RADDBGI_U64 *voffs = (RADDBGI_U64*) + raddbgi_data_from_dsec(p, unit->line_info_voffs_data_idx, sizeof(RADDBGI_U64), + RADDBGI_DataSectionTag_LineInfoVoffs, + &line_info_voff_count); - RADDBG_U64 line_info_count_raw = 0; - RADDBG_Line *lines = (RADDBG_Line*) - raddbg_data_from_dsec(p, unit->line_info_data_idx, sizeof(RADDBG_Line), - RADDBG_DataSectionTag_LineInfoData, - &line_info_count_raw); + RADDBGI_U64 line_info_count_raw = 0; + RADDBGI_Line *lines = (RADDBGI_Line*) + raddbgi_data_from_dsec(p, unit->line_info_data_idx, sizeof(RADDBGI_Line), + RADDBGI_DataSectionTag_LineInfoData, + &line_info_count_raw); - RADDBG_U64 column_info_count_raw = 0; - RADDBG_Column *cols = (RADDBG_Column*) - raddbg_data_from_dsec(p, unit->line_info_col_data_idx, sizeof(RADDBG_Column), - RADDBG_DataSectionTag_LineInfoColumns, - &column_info_count_raw); + RADDBGI_U64 column_info_count_raw = 0; + RADDBGI_Column *cols = (RADDBGI_Column*) + raddbgi_data_from_dsec(p, unit->line_info_col_data_idx, sizeof(RADDBGI_Column), + RADDBGI_DataSectionTag_LineInfoColumns, + &column_info_count_raw); - RADDBG_U32 line_info_count_a = (line_info_voff_count > 0)?line_info_voff_count - 1:0; - RADDBG_U32 line_info_count = raddbg_parse__min(line_info_count_a, line_info_count_raw); - RADDBG_U32 column_info_count = raddbg_parse__min(column_info_count_raw, line_info_count); + RADDBGI_U32 line_info_count_a = (line_info_voff_count > 0)?line_info_voff_count - 1:0; + RADDBGI_U32 line_info_count = raddbgi_parse__min(line_info_count_a, line_info_count_raw); + RADDBGI_U32 column_info_count = raddbgi_parse__min(column_info_count_raw, line_info_count); out->voffs = voffs; out->lines = lines; @@ -285,17 +285,17 @@ raddbg_line_info_from_unit(RADDBG_Parsed *p, RADDBG_Unit *unit, RADDBG_ParsedLin out->col_count = column_info_count; } -RADDBG_PROC RADDBG_U64 -raddbg_line_info_idx_from_voff(RADDBG_ParsedLineInfo *line_info, RADDBG_U64 voff) +RADDBGI_PROC RADDBGI_U64 +raddbgi_line_info_idx_from_voff(RADDBGI_ParsedLineInfo *line_info, RADDBGI_U64 voff) { - RADDBG_U64 result = 0; + RADDBGI_U64 result = 0; if (line_info->count > 0 && line_info->voffs[0] <= voff && voff < line_info->voffs[line_info->count - 1]){ // assuming: (i < j) -> (vmap[i].voff < vmap[j].voff) // find i such that: (vmap[i].voff <= voff) && (voff < vmap[i + 1].voff) - RADDBG_U32 first = 0; - RADDBG_U32 opl = line_info->count; + RADDBGI_U32 first = 0; + RADDBGI_U32 opl = line_info->count; for (;;){ - RADDBG_U32 mid = (first + opl)/2; + RADDBGI_U32 mid = (first + opl)/2; if (line_info->voffs[mid] < voff){ first = mid; } @@ -310,35 +310,35 @@ raddbg_line_info_idx_from_voff(RADDBG_ParsedLineInfo *line_info, RADDBG_U64 voff break; } } - result = (RADDBG_U64)first; + result = (RADDBGI_U64)first; } return(result); } -RADDBG_PROC void -raddbg_line_map_from_source_file(RADDBG_Parsed *p, RADDBG_SourceFile *srcfile, - RADDBG_ParsedLineMap *out){ - RADDBG_U64 num_count = 0; - RADDBG_U32 *nums = (RADDBG_U32*) - raddbg_data_from_dsec(p, srcfile->line_map_nums_data_idx, sizeof(RADDBG_U32), - RADDBG_DataSectionTag_LineMapNumbers, - &num_count); +RADDBGI_PROC void +raddbgi_line_map_from_source_file(RADDBGI_Parsed *p, RADDBGI_SourceFile *srcfile, + RADDBGI_ParsedLineMap *out){ + RADDBGI_U64 num_count = 0; + RADDBGI_U32 *nums = (RADDBGI_U32*) + raddbgi_data_from_dsec(p, srcfile->line_map_nums_data_idx, sizeof(RADDBGI_U32), + RADDBGI_DataSectionTag_LineMapNumbers, + &num_count); - RADDBG_U64 range_count = 0; - RADDBG_U32 *ranges = (RADDBG_U32*) - raddbg_data_from_dsec(p, srcfile->line_map_range_data_idx, sizeof(RADDBG_U32), - RADDBG_DataSectionTag_LineMapRanges, - &range_count); + RADDBGI_U64 range_count = 0; + RADDBGI_U32 *ranges = (RADDBGI_U32*) + raddbgi_data_from_dsec(p, srcfile->line_map_range_data_idx, sizeof(RADDBGI_U32), + RADDBGI_DataSectionTag_LineMapRanges, + &range_count); - RADDBG_U64 voff_count = 0; - RADDBG_U64 *voffs = (RADDBG_U64*) - raddbg_data_from_dsec(p, srcfile->line_map_voff_data_idx, sizeof(RADDBG_U64), - RADDBG_DataSectionTag_LineMapVoffs, - &voff_count); + RADDBGI_U64 voff_count = 0; + RADDBGI_U64 *voffs = (RADDBGI_U64*) + raddbgi_data_from_dsec(p, srcfile->line_map_voff_data_idx, sizeof(RADDBGI_U64), + RADDBGI_DataSectionTag_LineMapVoffs, + &voff_count); - RADDBG_U32 count_a = (range_count > 0)?(range_count - 1):0; - RADDBG_U32 count_b = raddbg_parse__min(count_a, num_count); - RADDBG_U32 count = raddbg_parse__min(count_b, srcfile->line_map_count); + RADDBGI_U32 count_a = (range_count > 0)?(range_count - 1):0; + RADDBGI_U32 count_b = raddbgi_parse__min(count_a, num_count); + RADDBGI_U32 count = raddbgi_parse__min(count_b, srcfile->line_map_count); out->nums = nums; out->ranges = ranges; @@ -347,20 +347,20 @@ raddbg_line_map_from_source_file(RADDBG_Parsed *p, RADDBG_SourceFile *srcfile, out->voff_count = voff_count; } -RADDBG_PROC RADDBG_U64* -raddbg_line_voffs_from_num(RADDBG_ParsedLineMap *map, RADDBG_U32 linenum, RADDBG_U32 *n_out){ - RADDBG_U64 *result = 0; +RADDBGI_PROC RADDBGI_U64* +raddbgi_line_voffs_from_num(RADDBGI_ParsedLineMap *map, RADDBGI_U32 linenum, RADDBGI_U32 *n_out){ + RADDBGI_U64 *result = 0; *n_out = 0; - RADDBG_U32 closest_i = 0; + RADDBGI_U32 closest_i = 0; if (map->count > 0 && map->nums[0] <= linenum){ // assuming: (i < j) -> (nums[i] < nums[j]) // find i such that: (nums[i] <= linenum) && (linenum < nums[i + 1]) - RADDBG_U32 *nums = map->nums; - RADDBG_U32 first = 0; - RADDBG_U32 opl = map->count; + RADDBGI_U32 *nums = map->nums; + RADDBGI_U32 first = 0; + RADDBGI_U32 opl = map->count; for (;;){ - RADDBG_U32 mid = (first + opl)/2; + RADDBGI_U32 mid = (first + opl)/2; if (nums[mid] < linenum){ first = mid; } @@ -386,8 +386,8 @@ raddbg_line_voffs_from_num(RADDBG_ParsedLineMap *map, RADDBG_U32 linenum, RADDBG // set result if possible if (closest_i < map->count){ - RADDBG_U32 first = map->ranges[closest_i]; - RADDBG_U32 opl = map->ranges[closest_i + 1]; + RADDBGI_U32 first = map->ranges[closest_i]; + RADDBGI_U32 opl = map->ranges[closest_i + 1]; if (opl < map->voff_count){ result = map->voffs + first; *n_out = opl - first; @@ -400,16 +400,16 @@ raddbg_line_voffs_from_num(RADDBG_ParsedLineMap *map, RADDBG_U32 linenum, RADDBG //- vmaps -RADDBG_PROC RADDBG_U64 -raddbg_vmap_idx_from_voff(RADDBG_VMapEntry *vmap, RADDBG_U32 vmap_count, RADDBG_U64 voff){ - RADDBG_U64 result = 0; +RADDBGI_PROC RADDBGI_U64 +raddbgi_vmap_idx_from_voff(RADDBGI_VMapEntry *vmap, RADDBGI_U32 vmap_count, RADDBGI_U64 voff){ + RADDBGI_U64 result = 0; if (vmap_count > 0 && vmap[0].voff <= voff && voff < vmap[vmap_count - 1].voff){ // assuming: (i < j) -> (vmap[i].voff < vmap[j].voff) // find i such that: (vmap[i].voff <= voff) && (voff < vmap[i + 1].voff) - RADDBG_U32 first = 0; - RADDBG_U32 opl = vmap_count; + RADDBGI_U32 first = 0; + RADDBGI_U32 opl = vmap_count; for (;;){ - RADDBG_U32 mid = (first + opl)/2; + RADDBGI_U32 mid = (first + opl)/2; if (vmap[mid].voff < voff){ first = mid; } @@ -424,60 +424,60 @@ raddbg_vmap_idx_from_voff(RADDBG_VMapEntry *vmap, RADDBG_U32 vmap_count, RADDBG_ break; } } - result = (RADDBG_U64)vmap[first].idx; + result = (RADDBGI_U64)vmap[first].idx; } return(result); } //- name maps -RADDBG_PROC RADDBG_NameMap* -raddbg_name_map_from_kind(RADDBG_Parsed *p, RADDBG_NameMapKind kind){ - RADDBG_NameMap *result = 0; - if (0 < kind && kind < RADDBG_NameMapKind_COUNT){ +RADDBGI_PROC RADDBGI_NameMap* +raddbgi_name_map_from_kind(RADDBGI_Parsed *p, RADDBGI_NameMapKind kind){ + RADDBGI_NameMap *result = 0; + if (0 < kind && kind < RADDBGI_NameMapKind_COUNT){ result = p->name_maps_by_kind[kind]; } return(result); } -RADDBG_PROC void -raddbg_name_map_parse(RADDBG_Parsed *p, RADDBG_NameMap *mapptr, RADDBG_ParsedNameMap *out){ +RADDBGI_PROC void +raddbgi_name_map_parse(RADDBGI_Parsed *p, RADDBGI_NameMap *mapptr, RADDBGI_ParsedNameMap *out){ out->buckets = 0; out->bucket_count = 0; if (mapptr != 0){ - out->buckets = (RADDBG_NameMapBucket*) - raddbg_data_from_dsec(p, mapptr->bucket_data_idx, sizeof(RADDBG_NameMapBucket), - RADDBG_DataSectionTag_NameMapBuckets, &out->bucket_count); - out->nodes = (RADDBG_NameMapNode*) - raddbg_data_from_dsec(p, mapptr->node_data_idx, sizeof(RADDBG_NameMapNode), - RADDBG_DataSectionTag_NameMapNodes, &out->node_count); + out->buckets = (RADDBGI_NameMapBucket*) + raddbgi_data_from_dsec(p, mapptr->bucket_data_idx, sizeof(RADDBGI_NameMapBucket), + RADDBGI_DataSectionTag_NameMapBuckets, &out->bucket_count); + out->nodes = (RADDBGI_NameMapNode*) + raddbgi_data_from_dsec(p, mapptr->node_data_idx, sizeof(RADDBGI_NameMapNode), + RADDBGI_DataSectionTag_NameMapNodes, &out->node_count); } } -RADDBG_PROC RADDBG_NameMapNode* -raddbg_name_map_lookup(RADDBG_Parsed *p, RADDBG_ParsedNameMap *map, - RADDBG_U8 *str, RADDBG_U64 len){ - RADDBG_NameMapNode *result = 0; +RADDBGI_PROC RADDBGI_NameMapNode* +raddbgi_name_map_lookup(RADDBGI_Parsed *p, RADDBGI_ParsedNameMap *map, + RADDBGI_U8 *str, RADDBGI_U64 len){ + RADDBGI_NameMapNode *result = 0; if (map->bucket_count > 0){ - RADDBG_NameMapBucket *buckets = map->buckets; - RADDBG_U64 bucket_count = map->bucket_count; - RADDBG_U64 hash = raddbg_hash(str, len); - RADDBG_U64 bucket_index = hash%bucket_count; - RADDBG_NameMapBucket *bucket = map->buckets + bucket_index; + RADDBGI_NameMapBucket *buckets = map->buckets; + RADDBGI_U64 bucket_count = map->bucket_count; + RADDBGI_U64 hash = raddbgi_hash(str, len); + RADDBGI_U64 bucket_index = hash%bucket_count; + RADDBGI_NameMapBucket *bucket = map->buckets + bucket_index; - RADDBG_NameMapNode *node = map->nodes + bucket->first_node; - RADDBG_NameMapNode *node_opl = node + bucket->node_count; + RADDBGI_NameMapNode *node = map->nodes + bucket->first_node; + RADDBGI_NameMapNode *node_opl = node + bucket->node_count; for (;node < node_opl; node += 1){ // extract a string from this node - RADDBG_U64 nlen = 0; - RADDBG_U8 *nstr = raddbg_string_from_idx(p, node->string_idx, &nlen); + RADDBGI_U64 nlen = 0; + RADDBGI_U8 *nstr = raddbgi_string_from_idx(p, node->string_idx, &nlen); // compare this to the needle string - RADDBG_S32 match = 0; + RADDBGI_S32 match = 0; if (nlen == len){ - RADDBG_U8 *a = str; - RADDBG_U8 *aopl = str + len; - RADDBG_U8 *b = nstr; + RADDBGI_U8 *a = str; + RADDBGI_U8 *aopl = str + len; + RADDBGI_U8 *b = nstr; for (;a < aopl && *a == *b; a += 1, b += 1); match = (a == aopl); } @@ -493,10 +493,10 @@ raddbg_name_map_lookup(RADDBG_Parsed *p, RADDBG_ParsedNameMap *map, return(result); } -RADDBG_PROC RADDBG_U32* -raddbg_matches_from_map_node(RADDBG_Parsed *p, RADDBG_NameMapNode *node, - RADDBG_U32 *n_out){ - RADDBG_U32 *result = 0; +RADDBGI_PROC RADDBGI_U32* +raddbgi_matches_from_map_node(RADDBGI_Parsed *p, RADDBGI_NameMapNode *node, + RADDBGI_U32 *n_out){ + RADDBGI_U32 *result = 0; *n_out = 0; if (node != 0){ if (node->match_count == 1){ @@ -504,8 +504,8 @@ raddbg_matches_from_map_node(RADDBG_Parsed *p, RADDBG_NameMapNode *node, *n_out = 1; } else{ - result = raddbg_idx_run_from_first_count(p, node->match_idx_or_idx_run_first, - node->match_count, n_out); + result = raddbgi_idx_run_from_first_count(p, node->match_idx_or_idx_run_first, + node->match_count, n_out); } } return(result); @@ -513,14 +513,14 @@ raddbg_matches_from_map_node(RADDBG_Parsed *p, RADDBG_NameMapNode *node, //- common helpers -RADDBG_PROC RADDBG_U64 -raddbg_first_voff_from_proc(RADDBG_Parsed *p, RADDBG_U32 proc_id){ - RADDBG_U64 result = 0; +RADDBGI_PROC RADDBGI_U64 +raddbgi_first_voff_from_proc(RADDBGI_Parsed *p, RADDBGI_U32 proc_id){ + RADDBGI_U64 result = 0; if (0 < proc_id && proc_id < p->procedures_count){ - RADDBG_Procedure *proc = p->procedures + proc_id; - RADDBG_U32 scope_id = proc->root_scope_idx; + RADDBGI_Procedure *proc = p->procedures + proc_id; + RADDBGI_U32 scope_id = proc->root_scope_idx; if (0 < scope_id && scope_id < p->scopes_count){ - RADDBG_Scope *scope = p->scopes + scope_id; + RADDBGI_Scope *scope = p->scopes + scope_id; if (scope->voff_range_first < scope->voff_range_opl && scope->voff_range_first < p->scope_voffs_count){ result = p->scope_voffs[scope->voff_range_first]; @@ -533,19 +533,19 @@ raddbg_first_voff_from_proc(RADDBG_Parsed *p, RADDBG_U32 proc_id){ //////////////////////////////// //~ RADDBG Parsing Helpers -RADDBG_PROC void* -raddbg_data_from_dsec(RADDBG_Parsed *parsed, RADDBG_U32 idx, RADDBG_U32 item_size, - RADDBG_DataSectionTag expected_tag, - RADDBG_U64 *count_out){ +RADDBGI_PROC void* +raddbgi_data_from_dsec(RADDBGI_Parsed *parsed, RADDBGI_U32 idx, RADDBGI_U32 item_size, + RADDBGI_DataSectionTag expected_tag, + RADDBGI_U64 *count_out){ void *result = 0; - RADDBG_U32 count_result = 0; + RADDBGI_U32 count_result = 0; // TODO(allen): need a version of this that works with encodings other than "Unpacked" if (0 < idx && idx < parsed->dsec_count){ - RADDBG_DataSection *ds = parsed->dsecs + idx; + RADDBGI_DataSection *ds = parsed->dsecs + idx; if (ds->tag == expected_tag){ - RADDBG_U64 opl = ds->off + ds->encoded_size; + RADDBGI_U64 opl = ds->off + ds->encoded_size; if (opl <= parsed->raw_data_size){ count_result = ds->encoded_size/item_size; result = (parsed->raw_data + ds->off); diff --git a/src/raddbgi_format/raddbgi_format_parse.h b/src/raddbgi_format/raddbgi_format_parse.h index 5f8e0d14..6d167aa6 100644 --- a/src/raddbgi_format/raddbgi_format_parse.h +++ b/src/raddbgi_format/raddbgi_format_parse.h @@ -1,105 +1,105 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef RADDBG_PARSE_H -#define RADDBG_PARSE_H +#ifndef RADDBGI_PARSE_H +#define RADDBGI_PARSE_H //////////////////////////////// //~ RADDBG Parsing Helpers -typedef struct RADDBG_Parsed{ +typedef struct RADDBGI_Parsed{ // raw data & data sections (part 1) - RADDBG_U8 *raw_data; - RADDBG_U64 raw_data_size; - RADDBG_DataSection *dsecs; - RADDBG_U64 dsec_count; - RADDBG_U32 dsec_idx[RADDBG_DataSectionTag_PRIMARY_COUNT]; + RADDBGI_U8 *raw_data; + RADDBGI_U64 raw_data_size; + RADDBGI_DataSection *dsecs; + RADDBGI_U64 dsec_count; + RADDBGI_U32 dsec_idx[RADDBGI_DataSectionTag_PRIMARY_COUNT]; // primary data structures (part 2) // handled by helper APIs - RADDBG_U8* string_data; - RADDBG_U64 string_data_size; - RADDBG_U32* string_offs; - RADDBG_U64 string_count; - RADDBG_U32* idx_run_data; - RADDBG_U32 idx_run_count; + RADDBGI_U8* string_data; + RADDBGI_U64 string_data_size; + RADDBGI_U32* string_offs; + RADDBGI_U64 string_count; + RADDBGI_U32* idx_run_data; + RADDBGI_U32 idx_run_count; // directly readable by users // (any of these may be empty and null even in a successful parse) - RADDBG_TopLevelInfo* top_level_info; + RADDBGI_TopLevelInfo* top_level_info; - RADDBG_BinarySection* binary_sections; - RADDBG_U64 binary_sections_count; - RADDBG_FilePathNode* file_paths; - RADDBG_U64 file_paths_count; - RADDBG_SourceFile* source_files; - RADDBG_U64 source_files_count; - RADDBG_Unit* units; - RADDBG_U64 units_count; - RADDBG_VMapEntry* unit_vmap; - RADDBG_U64 unit_vmap_count; - RADDBG_TypeNode* type_nodes; - RADDBG_U64 type_nodes_count; - RADDBG_UDT* udts; - RADDBG_U64 udts_count; - RADDBG_Member* members; - RADDBG_U64 members_count; - RADDBG_EnumMember* enum_members; - RADDBG_U64 enum_members_count; - RADDBG_GlobalVariable* global_variables; - RADDBG_U64 global_variables_count; - RADDBG_VMapEntry* global_vmap; - RADDBG_U64 global_vmap_count; - RADDBG_ThreadVariable* thread_variables; - RADDBG_U64 thread_variables_count; - RADDBG_Procedure* procedures; - RADDBG_U64 procedures_count; - RADDBG_Scope* scopes; - RADDBG_U64 scopes_count; - RADDBG_U64* scope_voffs; - RADDBG_U64 scope_voffs_count; - RADDBG_VMapEntry* scope_vmap; - RADDBG_U64 scope_vmap_count; - RADDBG_Local* locals; - RADDBG_U64 locals_count; - RADDBG_LocationBlock* location_blocks; - RADDBG_U64 location_blocks_count; - RADDBG_U8* location_data; - RADDBG_U64 location_data_size; - RADDBG_NameMap* name_maps; - RADDBG_U64 name_maps_count; + RADDBGI_BinarySection* binary_sections; + RADDBGI_U64 binary_sections_count; + RADDBGI_FilePathNode* file_paths; + RADDBGI_U64 file_paths_count; + RADDBGI_SourceFile* source_files; + RADDBGI_U64 source_files_count; + RADDBGI_Unit* units; + RADDBGI_U64 units_count; + RADDBGI_VMapEntry* unit_vmap; + RADDBGI_U64 unit_vmap_count; + RADDBGI_TypeNode* type_nodes; + RADDBGI_U64 type_nodes_count; + RADDBGI_UDT* udts; + RADDBGI_U64 udts_count; + RADDBGI_Member* members; + RADDBGI_U64 members_count; + RADDBGI_EnumMember* enum_members; + RADDBGI_U64 enum_members_count; + RADDBGI_GlobalVariable* global_variables; + RADDBGI_U64 global_variables_count; + RADDBGI_VMapEntry* global_vmap; + RADDBGI_U64 global_vmap_count; + RADDBGI_ThreadVariable* thread_variables; + RADDBGI_U64 thread_variables_count; + RADDBGI_Procedure* procedures; + RADDBGI_U64 procedures_count; + RADDBGI_Scope* scopes; + RADDBGI_U64 scopes_count; + RADDBGI_U64* scope_voffs; + RADDBGI_U64 scope_voffs_count; + RADDBGI_VMapEntry* scope_vmap; + RADDBGI_U64 scope_vmap_count; + RADDBGI_Local* locals; + RADDBGI_U64 locals_count; + RADDBGI_LocationBlock* location_blocks; + RADDBGI_U64 location_blocks_count; + RADDBGI_U8* location_data; + RADDBGI_U64 location_data_size; + RADDBGI_NameMap* name_maps; + RADDBGI_U64 name_maps_count; // other helpers - RADDBG_NameMap* name_maps_by_kind[RADDBG_NameMapKind_COUNT]; + RADDBGI_NameMap* name_maps_by_kind[RADDBGI_NameMapKind_COUNT]; -} RADDBG_Parsed; +} RADDBGI_Parsed; typedef enum{ - RADDBG_ParseStatus_Good = 0, - RADDBG_ParseStatus_HeaderDoesNotMatch = 1, - RADDBG_ParseStatus_UnsupportedVersionNumber = 2, - RADDBG_ParseStatus_InvalidDataSecionLayout = 3, - RADDBG_ParseStatus_MissingStringDataSection = 4, - RADDBG_ParseStatus_MissingStringTableSection = 5, - RADDBG_ParseStatus_MissingIndexRunSection = 6, -} RADDBG_ParseStatus; + RADDBGI_ParseStatus_Good = 0, + RADDBGI_ParseStatus_HeaderDoesNotMatch = 1, + RADDBGI_ParseStatus_UnsupportedVersionNumber = 2, + RADDBGI_ParseStatus_InvalidDataSecionLayout = 3, + RADDBGI_ParseStatus_MissingStringDataSection = 4, + RADDBGI_ParseStatus_MissingStringTableSection = 5, + RADDBGI_ParseStatus_MissingIndexRunSection = 6, +} RADDBGI_ParseStatus; -typedef struct RADDBG_ParsedLineInfo{ +typedef struct RADDBGI_ParsedLineInfo{ // NOTE: Mapping VOFF -> LINE_INFO // // * [ voff[i], voff[i + 1] ) forms the voff range // * for the line info at lines[i] (and cols[i] if i < col_count) - RADDBG_U64* voffs; // [count + 1] sorted - RADDBG_Line* lines; // [count] - RADDBG_Column* cols; // [col_count] - RADDBG_U64 count; - RADDBG_U64 col_count; -} RADDBG_ParsedLineInfo; + RADDBGI_U64* voffs; // [count + 1] sorted + RADDBGI_Line* lines; // [count] + RADDBGI_Column* cols; // [col_count] + RADDBGI_U64 count; + RADDBGI_U64 col_count; +} RADDBGI_ParsedLineInfo; -typedef struct RADDBG_ParsedLineMap{ +typedef struct RADDBGI_ParsedLineMap{ // NOTE: Mapping LINE_NUMBER -> VOFFs // // * nums[i] gives a line number @@ -109,111 +109,111 @@ typedef struct RADDBG_ParsedLineMap{ // * let k span over the range [ ranges[i], ranges[i + 1] ) // * voffs[k] gives the associated voffs - RADDBG_U32* nums; // [count] sorted - RADDBG_U32* ranges; // [count + 1] - RADDBG_U64* voffs; // [voff_count] - RADDBG_U64 count; - RADDBG_U64 voff_count; -} RADDBG_ParsedLineMap; + RADDBGI_U32* nums; // [count] sorted + RADDBGI_U32* ranges; // [count + 1] + RADDBGI_U64* voffs; // [voff_count] + RADDBGI_U64 count; + RADDBGI_U64 voff_count; +} RADDBGI_ParsedLineMap; -typedef struct RADDBG_ParsedNameMap{ - RADDBG_NameMapBucket *buckets; - RADDBG_NameMapNode *nodes; - RADDBG_U64 bucket_count; - RADDBG_U64 node_count; -} RADDBG_ParsedNameMap; +typedef struct RADDBGI_ParsedNameMap{ + RADDBGI_NameMapBucket *buckets; + RADDBGI_NameMapNode *nodes; + RADDBGI_U64 bucket_count; + RADDBGI_U64 node_count; +} RADDBGI_ParsedNameMap; //////////////////////////////// //~ Global Nils -#if !defined(RADDBG_DISABLE_NILS) -static RADDBG_BinarySection raddbg_binary_section_nil = {0}; -static RADDBG_FilePathNode raddbg_file_path_node_nil = {0}; -static RADDBG_SourceFile raddbg_source_file_nil = {0}; -static RADDBG_Unit raddbg_unit_nil = {0}; -static RADDBG_VMapEntry raddbg_vmap_entry_nil = {0}; -static RADDBG_TypeNode raddbg_type_node_nil = {0}; -static RADDBG_UDT raddbg_udt_nil = {0}; -static RADDBG_Member raddbg_member_nil = {0}; -static RADDBG_EnumMember raddbg_enum_member_nil = {0}; -static RADDBG_GlobalVariable raddbg_global_variable_nil = {0}; -static RADDBG_ThreadVariable raddbg_thread_variable_nil = {0}; -static RADDBG_Procedure raddbg_procedure_nil = {0}; -static RADDBG_Scope raddbg_scope_nil = {0}; -static U64 raddbg_voff_nil = 0; -static RADDBG_LocationBlock raddbg_location_block_nil = {0}; -static RADDBG_Local raddbg_local_nil = {0}; +#if !defined(RADDBGI_DISABLE_NILS) +static RADDBGI_BinarySection raddbgi_binary_section_nil = {0}; +static RADDBGI_FilePathNode raddbgi_file_path_node_nil = {0}; +static RADDBGI_SourceFile raddbgi_source_file_nil = {0}; +static RADDBGI_Unit raddbgi_unit_nil = {0}; +static RADDBGI_VMapEntry raddbgi_vmap_entry_nil = {0}; +static RADDBGI_TypeNode raddbgi_type_node_nil = {0}; +static RADDBGI_UDT raddbgi_udt_nil = {0}; +static RADDBGI_Member raddbgi_member_nil = {0}; +static RADDBGI_EnumMember raddbgi_enum_member_nil = {0}; +static RADDBGI_GlobalVariable raddbgi_global_variable_nil = {0}; +static RADDBGI_ThreadVariable raddbgi_thread_variable_nil = {0}; +static RADDBGI_Procedure raddbgi_procedure_nil = {0}; +static RADDBGI_Scope raddbgi_scope_nil = {0}; +static U64 raddbgi_voff_nil = 0; +static RADDBGI_LocationBlock raddbgi_location_block_nil = {0}; +static RADDBGI_Local raddbgi_local_nil = {0}; #endif //////////////////////////////// //~ RADDBG Parse API -RADDBG_PROC RADDBG_ParseStatus -raddbg_parse(RADDBG_U8 *data, RADDBG_U64 size, RADDBG_Parsed *out); +RADDBGI_PROC RADDBGI_ParseStatus +raddbgi_parse(RADDBGI_U8 *data, RADDBGI_U64 size, RADDBGI_Parsed *out); -RADDBG_PROC RADDBG_U8* -raddbg_string_from_idx(RADDBG_Parsed *parsed, RADDBG_U32 idx, RADDBG_U64 *len_out); +RADDBGI_PROC RADDBGI_U8* +raddbgi_string_from_idx(RADDBGI_Parsed *parsed, RADDBGI_U32 idx, RADDBGI_U64 *len_out); -RADDBG_PROC RADDBG_U32* -raddbg_idx_run_from_first_count(RADDBG_Parsed *parsed, RADDBG_U32 first, RADDBG_U32 raw_count, - RADDBG_U32 *n_out); +RADDBGI_PROC RADDBGI_U32* +raddbgi_idx_run_from_first_count(RADDBGI_Parsed *parsed, RADDBGI_U32 first, RADDBGI_U32 raw_count, + RADDBGI_U32 *n_out); //- table lookups -#define raddbg_element_from_idx(parsed, name, idx) ((0 <= (idx) && (idx) < (parsed)->name##_count) ? &(parsed)->name[idx] : (parsed)->name ? &(parsed)->name[0] : 0) +#define raddbgi_element_from_idx(parsed, name, idx) ((0 <= (idx) && (idx) < (parsed)->name##_count) ? &(parsed)->name[idx] : (parsed)->name ? &(parsed)->name[0] : 0) //- line info -RADDBG_PROC void -raddbg_line_info_from_unit(RADDBG_Parsed *p, RADDBG_Unit *unit, RADDBG_ParsedLineInfo *out); +RADDBGI_PROC void +raddbgi_line_info_from_unit(RADDBGI_Parsed *p, RADDBGI_Unit *unit, RADDBGI_ParsedLineInfo *out); -RADDBG_PROC RADDBG_U64 -raddbg_line_info_idx_from_voff(RADDBG_ParsedLineInfo *line_info, RADDBG_U64 voff); +RADDBGI_PROC RADDBGI_U64 +raddbgi_line_info_idx_from_voff(RADDBGI_ParsedLineInfo *line_info, RADDBGI_U64 voff); -RADDBG_PROC void -raddbg_line_map_from_source_file(RADDBG_Parsed *p, RADDBG_SourceFile *srcfile, - RADDBG_ParsedLineMap *out); +RADDBGI_PROC void +raddbgi_line_map_from_source_file(RADDBGI_Parsed *p, RADDBGI_SourceFile *srcfile, + RADDBGI_ParsedLineMap *out); -RADDBG_PROC RADDBG_U64* -raddbg_line_voffs_from_num(RADDBG_ParsedLineMap *map, RADDBG_U32 linenum, RADDBG_U32 *n_out); +RADDBGI_PROC RADDBGI_U64* +raddbgi_line_voffs_from_num(RADDBGI_ParsedLineMap *map, RADDBGI_U32 linenum, RADDBGI_U32 *n_out); //- vmaps -RADDBG_PROC RADDBG_U64 -raddbg_vmap_idx_from_voff(RADDBG_VMapEntry *vmap, RADDBG_U32 vmap_count, RADDBG_U64 voff); +RADDBGI_PROC RADDBGI_U64 +raddbgi_vmap_idx_from_voff(RADDBGI_VMapEntry *vmap, RADDBGI_U32 vmap_count, RADDBGI_U64 voff); //- name maps -RADDBG_PROC RADDBG_NameMap* -raddbg_name_map_from_kind(RADDBG_Parsed *p, RADDBG_NameMapKind kind); +RADDBGI_PROC RADDBGI_NameMap* +raddbgi_name_map_from_kind(RADDBGI_Parsed *p, RADDBGI_NameMapKind kind); -RADDBG_PROC void -raddbg_name_map_parse(RADDBG_Parsed* p, RADDBG_NameMap *mapptr, RADDBG_ParsedNameMap *out); +RADDBGI_PROC void +raddbgi_name_map_parse(RADDBGI_Parsed* p, RADDBGI_NameMap *mapptr, RADDBGI_ParsedNameMap *out); -RADDBG_PROC RADDBG_NameMapNode* -raddbg_name_map_lookup(RADDBG_Parsed *p, RADDBG_ParsedNameMap *map, - RADDBG_U8 *str, RADDBG_U64 len); +RADDBGI_PROC RADDBGI_NameMapNode* +raddbgi_name_map_lookup(RADDBGI_Parsed *p, RADDBGI_ParsedNameMap *map, + RADDBGI_U8 *str, RADDBGI_U64 len); -RADDBG_PROC RADDBG_U32* -raddbg_matches_from_map_node(RADDBG_Parsed *p, RADDBG_NameMapNode *node, RADDBG_U32 *n_out); +RADDBGI_PROC RADDBGI_U32* +raddbgi_matches_from_map_node(RADDBGI_Parsed *p, RADDBGI_NameMapNode *node, RADDBGI_U32 *n_out); //- common helpers -RADDBG_PROC RADDBG_U64 -raddbg_first_voff_from_proc(RADDBG_Parsed *p, RADDBG_U32 proc_id); +RADDBGI_PROC RADDBGI_U64 +raddbgi_first_voff_from_proc(RADDBGI_Parsed *p, RADDBGI_U32 proc_id); //////////////////////////////// //~ RADDBG Parsing Helpers -#define raddbg_parse__extract_primary(p,outptr,outn,pritag) \ +#define raddbgi_parse__extract_primary(p,outptr,outn,pritag) \ ( (*(void**)&(outptr)) = \ -raddbg_data_from_dsec((p),(p)->dsec_idx[pritag],sizeof(*(outptr)),(pritag),(outn)) ) +raddbgi_data_from_dsec((p),(p)->dsec_idx[pritag],sizeof(*(outptr)),(pritag),(outn)) ) -RADDBG_PROC void* -raddbg_data_from_dsec(RADDBG_Parsed *p, RADDBG_U32 idx, RADDBG_U32 item_size, - RADDBG_DataSectionTag expected_tag, RADDBG_U64 *n_out); +RADDBGI_PROC void* +raddbgi_data_from_dsec(RADDBGI_Parsed *p, RADDBGI_U32 idx, RADDBGI_U32 item_size, + RADDBGI_DataSectionTag expected_tag, RADDBGI_U64 *n_out); -#define raddbg_parse__min(a,b) (((a)<(b))?(a):(b)) +#define raddbgi_parse__min(a,b) (((a)<(b))?(a):(b)) -#endif //RADDBG_PARSE_H +#endif // RADDBGI_PARSE_H diff --git a/src/regs/generated/regs_raddbg.meta.c b/src/regs/generated/regs_raddbg.meta.c deleted file mode 100644 index 8b322f55..00000000 --- a/src/regs/generated/regs_raddbg.meta.c +++ /dev/null @@ -1,322 +0,0 @@ -// generated -#ifndef _REGS_RADDBG_META_C -#define _REGS_RADDBG_META_C - -internal RADDBG_RegisterCode regs_raddbg_code_from_arch_reg_code(Architecture arch, REGS_RegCode code) -{ -RADDBG_RegisterCode result = 0; -switch(arch) -{ -case Architecture_x64: -{ -switch(code) -{ -default:{}break; -case REGS_RegCodeX64_rax:{result = RADDBG_RegisterCode_X64_rax;}break; -case REGS_RegCodeX64_rcx:{result = RADDBG_RegisterCode_X64_rcx;}break; -case REGS_RegCodeX64_rdx:{result = RADDBG_RegisterCode_X64_rdx;}break; -case REGS_RegCodeX64_rbx:{result = RADDBG_RegisterCode_X64_rbx;}break; -case REGS_RegCodeX64_rsp:{result = RADDBG_RegisterCode_X64_rsp;}break; -case REGS_RegCodeX64_rbp:{result = RADDBG_RegisterCode_X64_rbp;}break; -case REGS_RegCodeX64_rsi:{result = RADDBG_RegisterCode_X64_rsi;}break; -case REGS_RegCodeX64_rdi:{result = RADDBG_RegisterCode_X64_rdi;}break; -case REGS_RegCodeX64_r8:{result = RADDBG_RegisterCode_X64_r8;}break; -case REGS_RegCodeX64_r9:{result = RADDBG_RegisterCode_X64_r9;}break; -case REGS_RegCodeX64_r10:{result = RADDBG_RegisterCode_X64_r10;}break; -case REGS_RegCodeX64_r11:{result = RADDBG_RegisterCode_X64_r11;}break; -case REGS_RegCodeX64_r12:{result = RADDBG_RegisterCode_X64_r12;}break; -case REGS_RegCodeX64_r13:{result = RADDBG_RegisterCode_X64_r13;}break; -case REGS_RegCodeX64_r14:{result = RADDBG_RegisterCode_X64_r14;}break; -case REGS_RegCodeX64_r15:{result = RADDBG_RegisterCode_X64_r15;}break; -case REGS_RegCodeX64_fsbase:{result = RADDBG_RegisterCode_X64_fsbase;}break; -case REGS_RegCodeX64_gsbase:{result = RADDBG_RegisterCode_X64_gsbase;}break; -case REGS_RegCodeX64_rip:{result = RADDBG_RegisterCode_X64_rip;}break; -case REGS_RegCodeX64_rflags:{result = RADDBG_RegisterCode_X64_rflags;}break; -case REGS_RegCodeX64_dr0:{result = RADDBG_RegisterCode_X64_dr0;}break; -case REGS_RegCodeX64_dr1:{result = RADDBG_RegisterCode_X64_dr1;}break; -case REGS_RegCodeX64_dr2:{result = RADDBG_RegisterCode_X64_dr2;}break; -case REGS_RegCodeX64_dr3:{result = RADDBG_RegisterCode_X64_dr3;}break; -case REGS_RegCodeX64_dr4:{result = RADDBG_RegisterCode_X64_dr4;}break; -case REGS_RegCodeX64_dr5:{result = RADDBG_RegisterCode_X64_dr5;}break; -case REGS_RegCodeX64_dr6:{result = RADDBG_RegisterCode_X64_dr6;}break; -case REGS_RegCodeX64_dr7:{result = RADDBG_RegisterCode_X64_dr7;}break; -case REGS_RegCodeX64_fpr0:{result = RADDBG_RegisterCode_X64_fpr0;}break; -case REGS_RegCodeX64_fpr1:{result = RADDBG_RegisterCode_X64_fpr1;}break; -case REGS_RegCodeX64_fpr2:{result = RADDBG_RegisterCode_X64_fpr2;}break; -case REGS_RegCodeX64_fpr3:{result = RADDBG_RegisterCode_X64_fpr3;}break; -case REGS_RegCodeX64_fpr4:{result = RADDBG_RegisterCode_X64_fpr4;}break; -case REGS_RegCodeX64_fpr5:{result = RADDBG_RegisterCode_X64_fpr5;}break; -case REGS_RegCodeX64_fpr6:{result = RADDBG_RegisterCode_X64_fpr6;}break; -case REGS_RegCodeX64_fpr7:{result = RADDBG_RegisterCode_X64_fpr7;}break; -case REGS_RegCodeX64_st0:{result = RADDBG_RegisterCode_X64_st0;}break; -case REGS_RegCodeX64_st1:{result = RADDBG_RegisterCode_X64_st1;}break; -case REGS_RegCodeX64_st2:{result = RADDBG_RegisterCode_X64_st2;}break; -case REGS_RegCodeX64_st3:{result = RADDBG_RegisterCode_X64_st3;}break; -case REGS_RegCodeX64_st4:{result = RADDBG_RegisterCode_X64_st4;}break; -case REGS_RegCodeX64_st5:{result = RADDBG_RegisterCode_X64_st5;}break; -case REGS_RegCodeX64_st6:{result = RADDBG_RegisterCode_X64_st6;}break; -case REGS_RegCodeX64_st7:{result = RADDBG_RegisterCode_X64_st7;}break; -case REGS_RegCodeX64_fcw:{result = RADDBG_RegisterCode_X64_fcw;}break; -case REGS_RegCodeX64_fsw:{result = RADDBG_RegisterCode_X64_fsw;}break; -case REGS_RegCodeX64_ftw:{result = RADDBG_RegisterCode_X64_ftw;}break; -case REGS_RegCodeX64_fop:{result = RADDBG_RegisterCode_X64_fop;}break; -case REGS_RegCodeX64_fcs:{result = RADDBG_RegisterCode_X64_fcs;}break; -case REGS_RegCodeX64_fds:{result = RADDBG_RegisterCode_X64_fds;}break; -case REGS_RegCodeX64_fip:{result = RADDBG_RegisterCode_X64_fip;}break; -case REGS_RegCodeX64_fdp:{result = RADDBG_RegisterCode_X64_fdp;}break; -case REGS_RegCodeX64_mxcsr:{result = RADDBG_RegisterCode_X64_mxcsr;}break; -case REGS_RegCodeX64_mxcsr_mask:{result = RADDBG_RegisterCode_X64_mxcsr_mask;}break; -case REGS_RegCodeX64_ss:{result = RADDBG_RegisterCode_X64_ss;}break; -case REGS_RegCodeX64_cs:{result = RADDBG_RegisterCode_X64_cs;}break; -case REGS_RegCodeX64_ds:{result = RADDBG_RegisterCode_X64_ds;}break; -case REGS_RegCodeX64_es:{result = RADDBG_RegisterCode_X64_es;}break; -case REGS_RegCodeX64_fs:{result = RADDBG_RegisterCode_X64_fs;}break; -case REGS_RegCodeX64_gs:{result = RADDBG_RegisterCode_X64_gs;}break; -case REGS_RegCodeX64_ymm0:{result = RADDBG_RegisterCode_X64_ymm0;}break; -case REGS_RegCodeX64_ymm1:{result = RADDBG_RegisterCode_X64_ymm1;}break; -case REGS_RegCodeX64_ymm2:{result = RADDBG_RegisterCode_X64_ymm2;}break; -case REGS_RegCodeX64_ymm3:{result = RADDBG_RegisterCode_X64_ymm3;}break; -case REGS_RegCodeX64_ymm4:{result = RADDBG_RegisterCode_X64_ymm4;}break; -case REGS_RegCodeX64_ymm5:{result = RADDBG_RegisterCode_X64_ymm5;}break; -case REGS_RegCodeX64_ymm6:{result = RADDBG_RegisterCode_X64_ymm6;}break; -case REGS_RegCodeX64_ymm7:{result = RADDBG_RegisterCode_X64_ymm7;}break; -case REGS_RegCodeX64_ymm8:{result = RADDBG_RegisterCode_X64_ymm8;}break; -case REGS_RegCodeX64_ymm9:{result = RADDBG_RegisterCode_X64_ymm9;}break; -case REGS_RegCodeX64_ymm10:{result = RADDBG_RegisterCode_X64_ymm10;}break; -case REGS_RegCodeX64_ymm11:{result = RADDBG_RegisterCode_X64_ymm11;}break; -case REGS_RegCodeX64_ymm12:{result = RADDBG_RegisterCode_X64_ymm12;}break; -case REGS_RegCodeX64_ymm13:{result = RADDBG_RegisterCode_X64_ymm13;}break; -case REGS_RegCodeX64_ymm14:{result = RADDBG_RegisterCode_X64_ymm14;}break; -case REGS_RegCodeX64_ymm15:{result = RADDBG_RegisterCode_X64_ymm15;}break; -} -}break; -case Architecture_x86: -{ -switch(code) -{ -default:{}break; -case REGS_RegCodeX86_eax:{result = RADDBG_RegisterCode_X86_eax;}break; -case REGS_RegCodeX86_ecx:{result = RADDBG_RegisterCode_X86_ecx;}break; -case REGS_RegCodeX86_edx:{result = RADDBG_RegisterCode_X86_edx;}break; -case REGS_RegCodeX86_ebx:{result = RADDBG_RegisterCode_X86_ebx;}break; -case REGS_RegCodeX86_esp:{result = RADDBG_RegisterCode_X86_esp;}break; -case REGS_RegCodeX86_ebp:{result = RADDBG_RegisterCode_X86_ebp;}break; -case REGS_RegCodeX86_esi:{result = RADDBG_RegisterCode_X86_esi;}break; -case REGS_RegCodeX86_edi:{result = RADDBG_RegisterCode_X86_edi;}break; -case REGS_RegCodeX86_fsbase:{result = RADDBG_RegisterCode_X86_fsbase;}break; -case REGS_RegCodeX86_gsbase:{result = RADDBG_RegisterCode_X86_gsbase;}break; -case REGS_RegCodeX86_eflags:{result = RADDBG_RegisterCode_X86_eflags;}break; -case REGS_RegCodeX86_eip:{result = RADDBG_RegisterCode_X86_eip;}break; -case REGS_RegCodeX86_dr0:{result = RADDBG_RegisterCode_X86_dr0;}break; -case REGS_RegCodeX86_dr1:{result = RADDBG_RegisterCode_X86_dr1;}break; -case REGS_RegCodeX86_dr2:{result = RADDBG_RegisterCode_X86_dr2;}break; -case REGS_RegCodeX86_dr3:{result = RADDBG_RegisterCode_X86_dr3;}break; -case REGS_RegCodeX86_dr4:{result = RADDBG_RegisterCode_X86_dr4;}break; -case REGS_RegCodeX86_dr5:{result = RADDBG_RegisterCode_X86_dr5;}break; -case REGS_RegCodeX86_dr6:{result = RADDBG_RegisterCode_X86_dr6;}break; -case REGS_RegCodeX86_dr7:{result = RADDBG_RegisterCode_X86_dr7;}break; -case REGS_RegCodeX86_fpr0:{result = RADDBG_RegisterCode_X86_fpr0;}break; -case REGS_RegCodeX86_fpr1:{result = RADDBG_RegisterCode_X86_fpr1;}break; -case REGS_RegCodeX86_fpr2:{result = RADDBG_RegisterCode_X86_fpr2;}break; -case REGS_RegCodeX86_fpr3:{result = RADDBG_RegisterCode_X86_fpr3;}break; -case REGS_RegCodeX86_fpr4:{result = RADDBG_RegisterCode_X86_fpr4;}break; -case REGS_RegCodeX86_fpr5:{result = RADDBG_RegisterCode_X86_fpr5;}break; -case REGS_RegCodeX86_fpr6:{result = RADDBG_RegisterCode_X86_fpr6;}break; -case REGS_RegCodeX86_fpr7:{result = RADDBG_RegisterCode_X86_fpr7;}break; -case REGS_RegCodeX86_st0:{result = RADDBG_RegisterCode_X86_st0;}break; -case REGS_RegCodeX86_st1:{result = RADDBG_RegisterCode_X86_st1;}break; -case REGS_RegCodeX86_st2:{result = RADDBG_RegisterCode_X86_st2;}break; -case REGS_RegCodeX86_st3:{result = RADDBG_RegisterCode_X86_st3;}break; -case REGS_RegCodeX86_st4:{result = RADDBG_RegisterCode_X86_st4;}break; -case REGS_RegCodeX86_st5:{result = RADDBG_RegisterCode_X86_st5;}break; -case REGS_RegCodeX86_st6:{result = RADDBG_RegisterCode_X86_st6;}break; -case REGS_RegCodeX86_st7:{result = RADDBG_RegisterCode_X86_st7;}break; -case REGS_RegCodeX86_fcw:{result = RADDBG_RegisterCode_X86_fcw;}break; -case REGS_RegCodeX86_fsw:{result = RADDBG_RegisterCode_X86_fsw;}break; -case REGS_RegCodeX86_ftw:{result = RADDBG_RegisterCode_X86_ftw;}break; -case REGS_RegCodeX86_fop:{result = RADDBG_RegisterCode_X86_fop;}break; -case REGS_RegCodeX86_fcs:{result = RADDBG_RegisterCode_X86_fcs;}break; -case REGS_RegCodeX86_fds:{result = RADDBG_RegisterCode_X86_fds;}break; -case REGS_RegCodeX86_fip:{result = RADDBG_RegisterCode_X86_fip;}break; -case REGS_RegCodeX86_fdp:{result = RADDBG_RegisterCode_X86_fdp;}break; -case REGS_RegCodeX86_mxcsr:{result = RADDBG_RegisterCode_X86_mxcsr;}break; -case REGS_RegCodeX86_mxcsr_mask:{result = RADDBG_RegisterCode_X86_mxcsr_mask;}break; -case REGS_RegCodeX86_ss:{result = RADDBG_RegisterCode_X86_ss;}break; -case REGS_RegCodeX86_cs:{result = RADDBG_RegisterCode_X86_cs;}break; -case REGS_RegCodeX86_ds:{result = RADDBG_RegisterCode_X86_ds;}break; -case REGS_RegCodeX86_es:{result = RADDBG_RegisterCode_X86_es;}break; -case REGS_RegCodeX86_fs:{result = RADDBG_RegisterCode_X86_fs;}break; -case REGS_RegCodeX86_gs:{result = RADDBG_RegisterCode_X86_gs;}break; -case REGS_RegCodeX86_ymm0:{result = RADDBG_RegisterCode_X86_ymm0;}break; -case REGS_RegCodeX86_ymm1:{result = RADDBG_RegisterCode_X86_ymm1;}break; -case REGS_RegCodeX86_ymm2:{result = RADDBG_RegisterCode_X86_ymm2;}break; -case REGS_RegCodeX86_ymm3:{result = RADDBG_RegisterCode_X86_ymm3;}break; -case REGS_RegCodeX86_ymm4:{result = RADDBG_RegisterCode_X86_ymm4;}break; -case REGS_RegCodeX86_ymm5:{result = RADDBG_RegisterCode_X86_ymm5;}break; -case REGS_RegCodeX86_ymm6:{result = RADDBG_RegisterCode_X86_ymm6;}break; -case REGS_RegCodeX86_ymm7:{result = RADDBG_RegisterCode_X86_ymm7;}break; -} -}break; -} -return result; -} -internal REGS_RegCode regs_reg_code_from_arch_raddbg_code(Architecture arch, RADDBG_RegisterCode code) -{ -REGS_RegCode result = 0; -switch(arch) -{ -case Architecture_x64: -{ -switch(code) -{ -default:{}break; -case RADDBG_RegisterCode_X64_rax:{result = REGS_RegCodeX64_rax;}break; -case RADDBG_RegisterCode_X64_rcx:{result = REGS_RegCodeX64_rcx;}break; -case RADDBG_RegisterCode_X64_rdx:{result = REGS_RegCodeX64_rdx;}break; -case RADDBG_RegisterCode_X64_rbx:{result = REGS_RegCodeX64_rbx;}break; -case RADDBG_RegisterCode_X64_rsp:{result = REGS_RegCodeX64_rsp;}break; -case RADDBG_RegisterCode_X64_rbp:{result = REGS_RegCodeX64_rbp;}break; -case RADDBG_RegisterCode_X64_rsi:{result = REGS_RegCodeX64_rsi;}break; -case RADDBG_RegisterCode_X64_rdi:{result = REGS_RegCodeX64_rdi;}break; -case RADDBG_RegisterCode_X64_r8:{result = REGS_RegCodeX64_r8;}break; -case RADDBG_RegisterCode_X64_r9:{result = REGS_RegCodeX64_r9;}break; -case RADDBG_RegisterCode_X64_r10:{result = REGS_RegCodeX64_r10;}break; -case RADDBG_RegisterCode_X64_r11:{result = REGS_RegCodeX64_r11;}break; -case RADDBG_RegisterCode_X64_r12:{result = REGS_RegCodeX64_r12;}break; -case RADDBG_RegisterCode_X64_r13:{result = REGS_RegCodeX64_r13;}break; -case RADDBG_RegisterCode_X64_r14:{result = REGS_RegCodeX64_r14;}break; -case RADDBG_RegisterCode_X64_r15:{result = REGS_RegCodeX64_r15;}break; -case RADDBG_RegisterCode_X64_fsbase:{result = REGS_RegCodeX64_fsbase;}break; -case RADDBG_RegisterCode_X64_gsbase:{result = REGS_RegCodeX64_gsbase;}break; -case RADDBG_RegisterCode_X64_rip:{result = REGS_RegCodeX64_rip;}break; -case RADDBG_RegisterCode_X64_rflags:{result = REGS_RegCodeX64_rflags;}break; -case RADDBG_RegisterCode_X64_dr0:{result = REGS_RegCodeX64_dr0;}break; -case RADDBG_RegisterCode_X64_dr1:{result = REGS_RegCodeX64_dr1;}break; -case RADDBG_RegisterCode_X64_dr2:{result = REGS_RegCodeX64_dr2;}break; -case RADDBG_RegisterCode_X64_dr3:{result = REGS_RegCodeX64_dr3;}break; -case RADDBG_RegisterCode_X64_dr4:{result = REGS_RegCodeX64_dr4;}break; -case RADDBG_RegisterCode_X64_dr5:{result = REGS_RegCodeX64_dr5;}break; -case RADDBG_RegisterCode_X64_dr6:{result = REGS_RegCodeX64_dr6;}break; -case RADDBG_RegisterCode_X64_dr7:{result = REGS_RegCodeX64_dr7;}break; -case RADDBG_RegisterCode_X64_fpr0:{result = REGS_RegCodeX64_fpr0;}break; -case RADDBG_RegisterCode_X64_fpr1:{result = REGS_RegCodeX64_fpr1;}break; -case RADDBG_RegisterCode_X64_fpr2:{result = REGS_RegCodeX64_fpr2;}break; -case RADDBG_RegisterCode_X64_fpr3:{result = REGS_RegCodeX64_fpr3;}break; -case RADDBG_RegisterCode_X64_fpr4:{result = REGS_RegCodeX64_fpr4;}break; -case RADDBG_RegisterCode_X64_fpr5:{result = REGS_RegCodeX64_fpr5;}break; -case RADDBG_RegisterCode_X64_fpr6:{result = REGS_RegCodeX64_fpr6;}break; -case RADDBG_RegisterCode_X64_fpr7:{result = REGS_RegCodeX64_fpr7;}break; -case RADDBG_RegisterCode_X64_st0:{result = REGS_RegCodeX64_st0;}break; -case RADDBG_RegisterCode_X64_st1:{result = REGS_RegCodeX64_st1;}break; -case RADDBG_RegisterCode_X64_st2:{result = REGS_RegCodeX64_st2;}break; -case RADDBG_RegisterCode_X64_st3:{result = REGS_RegCodeX64_st3;}break; -case RADDBG_RegisterCode_X64_st4:{result = REGS_RegCodeX64_st4;}break; -case RADDBG_RegisterCode_X64_st5:{result = REGS_RegCodeX64_st5;}break; -case RADDBG_RegisterCode_X64_st6:{result = REGS_RegCodeX64_st6;}break; -case RADDBG_RegisterCode_X64_st7:{result = REGS_RegCodeX64_st7;}break; -case RADDBG_RegisterCode_X64_fcw:{result = REGS_RegCodeX64_fcw;}break; -case RADDBG_RegisterCode_X64_fsw:{result = REGS_RegCodeX64_fsw;}break; -case RADDBG_RegisterCode_X64_ftw:{result = REGS_RegCodeX64_ftw;}break; -case RADDBG_RegisterCode_X64_fop:{result = REGS_RegCodeX64_fop;}break; -case RADDBG_RegisterCode_X64_fcs:{result = REGS_RegCodeX64_fcs;}break; -case RADDBG_RegisterCode_X64_fds:{result = REGS_RegCodeX64_fds;}break; -case RADDBG_RegisterCode_X64_fip:{result = REGS_RegCodeX64_fip;}break; -case RADDBG_RegisterCode_X64_fdp:{result = REGS_RegCodeX64_fdp;}break; -case RADDBG_RegisterCode_X64_mxcsr:{result = REGS_RegCodeX64_mxcsr;}break; -case RADDBG_RegisterCode_X64_mxcsr_mask:{result = REGS_RegCodeX64_mxcsr_mask;}break; -case RADDBG_RegisterCode_X64_ss:{result = REGS_RegCodeX64_ss;}break; -case RADDBG_RegisterCode_X64_cs:{result = REGS_RegCodeX64_cs;}break; -case RADDBG_RegisterCode_X64_ds:{result = REGS_RegCodeX64_ds;}break; -case RADDBG_RegisterCode_X64_es:{result = REGS_RegCodeX64_es;}break; -case RADDBG_RegisterCode_X64_fs:{result = REGS_RegCodeX64_fs;}break; -case RADDBG_RegisterCode_X64_gs:{result = REGS_RegCodeX64_gs;}break; -case RADDBG_RegisterCode_X64_ymm0:{result = REGS_RegCodeX64_ymm0;}break; -case RADDBG_RegisterCode_X64_ymm1:{result = REGS_RegCodeX64_ymm1;}break; -case RADDBG_RegisterCode_X64_ymm2:{result = REGS_RegCodeX64_ymm2;}break; -case RADDBG_RegisterCode_X64_ymm3:{result = REGS_RegCodeX64_ymm3;}break; -case RADDBG_RegisterCode_X64_ymm4:{result = REGS_RegCodeX64_ymm4;}break; -case RADDBG_RegisterCode_X64_ymm5:{result = REGS_RegCodeX64_ymm5;}break; -case RADDBG_RegisterCode_X64_ymm6:{result = REGS_RegCodeX64_ymm6;}break; -case RADDBG_RegisterCode_X64_ymm7:{result = REGS_RegCodeX64_ymm7;}break; -case RADDBG_RegisterCode_X64_ymm8:{result = REGS_RegCodeX64_ymm8;}break; -case RADDBG_RegisterCode_X64_ymm9:{result = REGS_RegCodeX64_ymm9;}break; -case RADDBG_RegisterCode_X64_ymm10:{result = REGS_RegCodeX64_ymm10;}break; -case RADDBG_RegisterCode_X64_ymm11:{result = REGS_RegCodeX64_ymm11;}break; -case RADDBG_RegisterCode_X64_ymm12:{result = REGS_RegCodeX64_ymm12;}break; -case RADDBG_RegisterCode_X64_ymm13:{result = REGS_RegCodeX64_ymm13;}break; -case RADDBG_RegisterCode_X64_ymm14:{result = REGS_RegCodeX64_ymm14;}break; -case RADDBG_RegisterCode_X64_ymm15:{result = REGS_RegCodeX64_ymm15;}break; -} -}break; -case Architecture_x86: -{ -switch(code) -{ -default:{}break; -case RADDBG_RegisterCode_X86_eax:{result = REGS_RegCodeX86_eax;}break; -case RADDBG_RegisterCode_X86_ecx:{result = REGS_RegCodeX86_ecx;}break; -case RADDBG_RegisterCode_X86_edx:{result = REGS_RegCodeX86_edx;}break; -case RADDBG_RegisterCode_X86_ebx:{result = REGS_RegCodeX86_ebx;}break; -case RADDBG_RegisterCode_X86_esp:{result = REGS_RegCodeX86_esp;}break; -case RADDBG_RegisterCode_X86_ebp:{result = REGS_RegCodeX86_ebp;}break; -case RADDBG_RegisterCode_X86_esi:{result = REGS_RegCodeX86_esi;}break; -case RADDBG_RegisterCode_X86_edi:{result = REGS_RegCodeX86_edi;}break; -case RADDBG_RegisterCode_X86_fsbase:{result = REGS_RegCodeX86_fsbase;}break; -case RADDBG_RegisterCode_X86_gsbase:{result = REGS_RegCodeX86_gsbase;}break; -case RADDBG_RegisterCode_X86_eflags:{result = REGS_RegCodeX86_eflags;}break; -case RADDBG_RegisterCode_X86_eip:{result = REGS_RegCodeX86_eip;}break; -case RADDBG_RegisterCode_X86_dr0:{result = REGS_RegCodeX86_dr0;}break; -case RADDBG_RegisterCode_X86_dr1:{result = REGS_RegCodeX86_dr1;}break; -case RADDBG_RegisterCode_X86_dr2:{result = REGS_RegCodeX86_dr2;}break; -case RADDBG_RegisterCode_X86_dr3:{result = REGS_RegCodeX86_dr3;}break; -case RADDBG_RegisterCode_X86_dr4:{result = REGS_RegCodeX86_dr4;}break; -case RADDBG_RegisterCode_X86_dr5:{result = REGS_RegCodeX86_dr5;}break; -case RADDBG_RegisterCode_X86_dr6:{result = REGS_RegCodeX86_dr6;}break; -case RADDBG_RegisterCode_X86_dr7:{result = REGS_RegCodeX86_dr7;}break; -case RADDBG_RegisterCode_X86_fpr0:{result = REGS_RegCodeX86_fpr0;}break; -case RADDBG_RegisterCode_X86_fpr1:{result = REGS_RegCodeX86_fpr1;}break; -case RADDBG_RegisterCode_X86_fpr2:{result = REGS_RegCodeX86_fpr2;}break; -case RADDBG_RegisterCode_X86_fpr3:{result = REGS_RegCodeX86_fpr3;}break; -case RADDBG_RegisterCode_X86_fpr4:{result = REGS_RegCodeX86_fpr4;}break; -case RADDBG_RegisterCode_X86_fpr5:{result = REGS_RegCodeX86_fpr5;}break; -case RADDBG_RegisterCode_X86_fpr6:{result = REGS_RegCodeX86_fpr6;}break; -case RADDBG_RegisterCode_X86_fpr7:{result = REGS_RegCodeX86_fpr7;}break; -case RADDBG_RegisterCode_X86_st0:{result = REGS_RegCodeX86_st0;}break; -case RADDBG_RegisterCode_X86_st1:{result = REGS_RegCodeX86_st1;}break; -case RADDBG_RegisterCode_X86_st2:{result = REGS_RegCodeX86_st2;}break; -case RADDBG_RegisterCode_X86_st3:{result = REGS_RegCodeX86_st3;}break; -case RADDBG_RegisterCode_X86_st4:{result = REGS_RegCodeX86_st4;}break; -case RADDBG_RegisterCode_X86_st5:{result = REGS_RegCodeX86_st5;}break; -case RADDBG_RegisterCode_X86_st6:{result = REGS_RegCodeX86_st6;}break; -case RADDBG_RegisterCode_X86_st7:{result = REGS_RegCodeX86_st7;}break; -case RADDBG_RegisterCode_X86_fcw:{result = REGS_RegCodeX86_fcw;}break; -case RADDBG_RegisterCode_X86_fsw:{result = REGS_RegCodeX86_fsw;}break; -case RADDBG_RegisterCode_X86_ftw:{result = REGS_RegCodeX86_ftw;}break; -case RADDBG_RegisterCode_X86_fop:{result = REGS_RegCodeX86_fop;}break; -case RADDBG_RegisterCode_X86_fcs:{result = REGS_RegCodeX86_fcs;}break; -case RADDBG_RegisterCode_X86_fds:{result = REGS_RegCodeX86_fds;}break; -case RADDBG_RegisterCode_X86_fip:{result = REGS_RegCodeX86_fip;}break; -case RADDBG_RegisterCode_X86_fdp:{result = REGS_RegCodeX86_fdp;}break; -case RADDBG_RegisterCode_X86_mxcsr:{result = REGS_RegCodeX86_mxcsr;}break; -case RADDBG_RegisterCode_X86_mxcsr_mask:{result = REGS_RegCodeX86_mxcsr_mask;}break; -case RADDBG_RegisterCode_X86_ss:{result = REGS_RegCodeX86_ss;}break; -case RADDBG_RegisterCode_X86_cs:{result = REGS_RegCodeX86_cs;}break; -case RADDBG_RegisterCode_X86_ds:{result = REGS_RegCodeX86_ds;}break; -case RADDBG_RegisterCode_X86_es:{result = REGS_RegCodeX86_es;}break; -case RADDBG_RegisterCode_X86_fs:{result = REGS_RegCodeX86_fs;}break; -case RADDBG_RegisterCode_X86_gs:{result = REGS_RegCodeX86_gs;}break; -case RADDBG_RegisterCode_X86_ymm0:{result = REGS_RegCodeX86_ymm0;}break; -case RADDBG_RegisterCode_X86_ymm1:{result = REGS_RegCodeX86_ymm1;}break; -case RADDBG_RegisterCode_X86_ymm2:{result = REGS_RegCodeX86_ymm2;}break; -case RADDBG_RegisterCode_X86_ymm3:{result = REGS_RegCodeX86_ymm3;}break; -case RADDBG_RegisterCode_X86_ymm4:{result = REGS_RegCodeX86_ymm4;}break; -case RADDBG_RegisterCode_X86_ymm5:{result = REGS_RegCodeX86_ymm5;}break; -case RADDBG_RegisterCode_X86_ymm6:{result = REGS_RegCodeX86_ymm6;}break; -case RADDBG_RegisterCode_X86_ymm7:{result = REGS_RegCodeX86_ymm7;}break; -} -}break; -} -return result; -} - -#endif diff --git a/src/regs/raddbgi/generated/regs_raddbgi.meta.c b/src/regs/raddbgi/generated/regs_raddbgi.meta.c index c52e08b2..19d272d1 100644 --- a/src/regs/raddbgi/generated/regs_raddbgi.meta.c +++ b/src/regs/raddbgi/generated/regs_raddbgi.meta.c @@ -3,9 +3,9 @@ //- GENERATED CODE -internal RADDBG_RegisterCode regs_raddbg_code_from_arch_reg_code(Architecture arch, REGS_RegCode code) +internal RADDBGI_RegisterCode regs_raddbgi_code_from_arch_reg_code(Architecture arch, REGS_RegCode code) { -RADDBG_RegisterCode result = 0; +RADDBGI_RegisterCode result = 0; switch(arch) { default:{}break; @@ -14,82 +14,82 @@ case Architecture_x64: switch(code) { default:{}break; -case REGS_RegCodeX64_rax:{result = RADDBG_RegisterCode_X64_rax;}break; -case REGS_RegCodeX64_rcx:{result = RADDBG_RegisterCode_X64_rcx;}break; -case REGS_RegCodeX64_rdx:{result = RADDBG_RegisterCode_X64_rdx;}break; -case REGS_RegCodeX64_rbx:{result = RADDBG_RegisterCode_X64_rbx;}break; -case REGS_RegCodeX64_rsp:{result = RADDBG_RegisterCode_X64_rsp;}break; -case REGS_RegCodeX64_rbp:{result = RADDBG_RegisterCode_X64_rbp;}break; -case REGS_RegCodeX64_rsi:{result = RADDBG_RegisterCode_X64_rsi;}break; -case REGS_RegCodeX64_rdi:{result = RADDBG_RegisterCode_X64_rdi;}break; -case REGS_RegCodeX64_r8:{result = RADDBG_RegisterCode_X64_r8;}break; -case REGS_RegCodeX64_r9:{result = RADDBG_RegisterCode_X64_r9;}break; -case REGS_RegCodeX64_r10:{result = RADDBG_RegisterCode_X64_r10;}break; -case REGS_RegCodeX64_r11:{result = RADDBG_RegisterCode_X64_r11;}break; -case REGS_RegCodeX64_r12:{result = RADDBG_RegisterCode_X64_r12;}break; -case REGS_RegCodeX64_r13:{result = RADDBG_RegisterCode_X64_r13;}break; -case REGS_RegCodeX64_r14:{result = RADDBG_RegisterCode_X64_r14;}break; -case REGS_RegCodeX64_r15:{result = RADDBG_RegisterCode_X64_r15;}break; -case REGS_RegCodeX64_fsbase:{result = RADDBG_RegisterCode_X64_fsbase;}break; -case REGS_RegCodeX64_gsbase:{result = RADDBG_RegisterCode_X64_gsbase;}break; -case REGS_RegCodeX64_rip:{result = RADDBG_RegisterCode_X64_rip;}break; -case REGS_RegCodeX64_rflags:{result = RADDBG_RegisterCode_X64_rflags;}break; -case REGS_RegCodeX64_dr0:{result = RADDBG_RegisterCode_X64_dr0;}break; -case REGS_RegCodeX64_dr1:{result = RADDBG_RegisterCode_X64_dr1;}break; -case REGS_RegCodeX64_dr2:{result = RADDBG_RegisterCode_X64_dr2;}break; -case REGS_RegCodeX64_dr3:{result = RADDBG_RegisterCode_X64_dr3;}break; -case REGS_RegCodeX64_dr4:{result = RADDBG_RegisterCode_X64_dr4;}break; -case REGS_RegCodeX64_dr5:{result = RADDBG_RegisterCode_X64_dr5;}break; -case REGS_RegCodeX64_dr6:{result = RADDBG_RegisterCode_X64_dr6;}break; -case REGS_RegCodeX64_dr7:{result = RADDBG_RegisterCode_X64_dr7;}break; -case REGS_RegCodeX64_fpr0:{result = RADDBG_RegisterCode_X64_fpr0;}break; -case REGS_RegCodeX64_fpr1:{result = RADDBG_RegisterCode_X64_fpr1;}break; -case REGS_RegCodeX64_fpr2:{result = RADDBG_RegisterCode_X64_fpr2;}break; -case REGS_RegCodeX64_fpr3:{result = RADDBG_RegisterCode_X64_fpr3;}break; -case REGS_RegCodeX64_fpr4:{result = RADDBG_RegisterCode_X64_fpr4;}break; -case REGS_RegCodeX64_fpr5:{result = RADDBG_RegisterCode_X64_fpr5;}break; -case REGS_RegCodeX64_fpr6:{result = RADDBG_RegisterCode_X64_fpr6;}break; -case REGS_RegCodeX64_fpr7:{result = RADDBG_RegisterCode_X64_fpr7;}break; -case REGS_RegCodeX64_st0:{result = RADDBG_RegisterCode_X64_st0;}break; -case REGS_RegCodeX64_st1:{result = RADDBG_RegisterCode_X64_st1;}break; -case REGS_RegCodeX64_st2:{result = RADDBG_RegisterCode_X64_st2;}break; -case REGS_RegCodeX64_st3:{result = RADDBG_RegisterCode_X64_st3;}break; -case REGS_RegCodeX64_st4:{result = RADDBG_RegisterCode_X64_st4;}break; -case REGS_RegCodeX64_st5:{result = RADDBG_RegisterCode_X64_st5;}break; -case REGS_RegCodeX64_st6:{result = RADDBG_RegisterCode_X64_st6;}break; -case REGS_RegCodeX64_st7:{result = RADDBG_RegisterCode_X64_st7;}break; -case REGS_RegCodeX64_fcw:{result = RADDBG_RegisterCode_X64_fcw;}break; -case REGS_RegCodeX64_fsw:{result = RADDBG_RegisterCode_X64_fsw;}break; -case REGS_RegCodeX64_ftw:{result = RADDBG_RegisterCode_X64_ftw;}break; -case REGS_RegCodeX64_fop:{result = RADDBG_RegisterCode_X64_fop;}break; -case REGS_RegCodeX64_fcs:{result = RADDBG_RegisterCode_X64_fcs;}break; -case REGS_RegCodeX64_fds:{result = RADDBG_RegisterCode_X64_fds;}break; -case REGS_RegCodeX64_fip:{result = RADDBG_RegisterCode_X64_fip;}break; -case REGS_RegCodeX64_fdp:{result = RADDBG_RegisterCode_X64_fdp;}break; -case REGS_RegCodeX64_mxcsr:{result = RADDBG_RegisterCode_X64_mxcsr;}break; -case REGS_RegCodeX64_mxcsr_mask:{result = RADDBG_RegisterCode_X64_mxcsr_mask;}break; -case REGS_RegCodeX64_ss:{result = RADDBG_RegisterCode_X64_ss;}break; -case REGS_RegCodeX64_cs:{result = RADDBG_RegisterCode_X64_cs;}break; -case REGS_RegCodeX64_ds:{result = RADDBG_RegisterCode_X64_ds;}break; -case REGS_RegCodeX64_es:{result = RADDBG_RegisterCode_X64_es;}break; -case REGS_RegCodeX64_fs:{result = RADDBG_RegisterCode_X64_fs;}break; -case REGS_RegCodeX64_gs:{result = RADDBG_RegisterCode_X64_gs;}break; -case REGS_RegCodeX64_ymm0:{result = RADDBG_RegisterCode_X64_ymm0;}break; -case REGS_RegCodeX64_ymm1:{result = RADDBG_RegisterCode_X64_ymm1;}break; -case REGS_RegCodeX64_ymm2:{result = RADDBG_RegisterCode_X64_ymm2;}break; -case REGS_RegCodeX64_ymm3:{result = RADDBG_RegisterCode_X64_ymm3;}break; -case REGS_RegCodeX64_ymm4:{result = RADDBG_RegisterCode_X64_ymm4;}break; -case REGS_RegCodeX64_ymm5:{result = RADDBG_RegisterCode_X64_ymm5;}break; -case REGS_RegCodeX64_ymm6:{result = RADDBG_RegisterCode_X64_ymm6;}break; -case REGS_RegCodeX64_ymm7:{result = RADDBG_RegisterCode_X64_ymm7;}break; -case REGS_RegCodeX64_ymm8:{result = RADDBG_RegisterCode_X64_ymm8;}break; -case REGS_RegCodeX64_ymm9:{result = RADDBG_RegisterCode_X64_ymm9;}break; -case REGS_RegCodeX64_ymm10:{result = RADDBG_RegisterCode_X64_ymm10;}break; -case REGS_RegCodeX64_ymm11:{result = RADDBG_RegisterCode_X64_ymm11;}break; -case REGS_RegCodeX64_ymm12:{result = RADDBG_RegisterCode_X64_ymm12;}break; -case REGS_RegCodeX64_ymm13:{result = RADDBG_RegisterCode_X64_ymm13;}break; -case REGS_RegCodeX64_ymm14:{result = RADDBG_RegisterCode_X64_ymm14;}break; -case REGS_RegCodeX64_ymm15:{result = RADDBG_RegisterCode_X64_ymm15;}break; +case REGS_RegCodeX64_rax:{result = RADDBGI_RegisterCode_X64_rax;}break; +case REGS_RegCodeX64_rcx:{result = RADDBGI_RegisterCode_X64_rcx;}break; +case REGS_RegCodeX64_rdx:{result = RADDBGI_RegisterCode_X64_rdx;}break; +case REGS_RegCodeX64_rbx:{result = RADDBGI_RegisterCode_X64_rbx;}break; +case REGS_RegCodeX64_rsp:{result = RADDBGI_RegisterCode_X64_rsp;}break; +case REGS_RegCodeX64_rbp:{result = RADDBGI_RegisterCode_X64_rbp;}break; +case REGS_RegCodeX64_rsi:{result = RADDBGI_RegisterCode_X64_rsi;}break; +case REGS_RegCodeX64_rdi:{result = RADDBGI_RegisterCode_X64_rdi;}break; +case REGS_RegCodeX64_r8:{result = RADDBGI_RegisterCode_X64_r8;}break; +case REGS_RegCodeX64_r9:{result = RADDBGI_RegisterCode_X64_r9;}break; +case REGS_RegCodeX64_r10:{result = RADDBGI_RegisterCode_X64_r10;}break; +case REGS_RegCodeX64_r11:{result = RADDBGI_RegisterCode_X64_r11;}break; +case REGS_RegCodeX64_r12:{result = RADDBGI_RegisterCode_X64_r12;}break; +case REGS_RegCodeX64_r13:{result = RADDBGI_RegisterCode_X64_r13;}break; +case REGS_RegCodeX64_r14:{result = RADDBGI_RegisterCode_X64_r14;}break; +case REGS_RegCodeX64_r15:{result = RADDBGI_RegisterCode_X64_r15;}break; +case REGS_RegCodeX64_fsbase:{result = RADDBGI_RegisterCode_X64_fsbase;}break; +case REGS_RegCodeX64_gsbase:{result = RADDBGI_RegisterCode_X64_gsbase;}break; +case REGS_RegCodeX64_rip:{result = RADDBGI_RegisterCode_X64_rip;}break; +case REGS_RegCodeX64_rflags:{result = RADDBGI_RegisterCode_X64_rflags;}break; +case REGS_RegCodeX64_dr0:{result = RADDBGI_RegisterCode_X64_dr0;}break; +case REGS_RegCodeX64_dr1:{result = RADDBGI_RegisterCode_X64_dr1;}break; +case REGS_RegCodeX64_dr2:{result = RADDBGI_RegisterCode_X64_dr2;}break; +case REGS_RegCodeX64_dr3:{result = RADDBGI_RegisterCode_X64_dr3;}break; +case REGS_RegCodeX64_dr4:{result = RADDBGI_RegisterCode_X64_dr4;}break; +case REGS_RegCodeX64_dr5:{result = RADDBGI_RegisterCode_X64_dr5;}break; +case REGS_RegCodeX64_dr6:{result = RADDBGI_RegisterCode_X64_dr6;}break; +case REGS_RegCodeX64_dr7:{result = RADDBGI_RegisterCode_X64_dr7;}break; +case REGS_RegCodeX64_fpr0:{result = RADDBGI_RegisterCode_X64_fpr0;}break; +case REGS_RegCodeX64_fpr1:{result = RADDBGI_RegisterCode_X64_fpr1;}break; +case REGS_RegCodeX64_fpr2:{result = RADDBGI_RegisterCode_X64_fpr2;}break; +case REGS_RegCodeX64_fpr3:{result = RADDBGI_RegisterCode_X64_fpr3;}break; +case REGS_RegCodeX64_fpr4:{result = RADDBGI_RegisterCode_X64_fpr4;}break; +case REGS_RegCodeX64_fpr5:{result = RADDBGI_RegisterCode_X64_fpr5;}break; +case REGS_RegCodeX64_fpr6:{result = RADDBGI_RegisterCode_X64_fpr6;}break; +case REGS_RegCodeX64_fpr7:{result = RADDBGI_RegisterCode_X64_fpr7;}break; +case REGS_RegCodeX64_st0:{result = RADDBGI_RegisterCode_X64_st0;}break; +case REGS_RegCodeX64_st1:{result = RADDBGI_RegisterCode_X64_st1;}break; +case REGS_RegCodeX64_st2:{result = RADDBGI_RegisterCode_X64_st2;}break; +case REGS_RegCodeX64_st3:{result = RADDBGI_RegisterCode_X64_st3;}break; +case REGS_RegCodeX64_st4:{result = RADDBGI_RegisterCode_X64_st4;}break; +case REGS_RegCodeX64_st5:{result = RADDBGI_RegisterCode_X64_st5;}break; +case REGS_RegCodeX64_st6:{result = RADDBGI_RegisterCode_X64_st6;}break; +case REGS_RegCodeX64_st7:{result = RADDBGI_RegisterCode_X64_st7;}break; +case REGS_RegCodeX64_fcw:{result = RADDBGI_RegisterCode_X64_fcw;}break; +case REGS_RegCodeX64_fsw:{result = RADDBGI_RegisterCode_X64_fsw;}break; +case REGS_RegCodeX64_ftw:{result = RADDBGI_RegisterCode_X64_ftw;}break; +case REGS_RegCodeX64_fop:{result = RADDBGI_RegisterCode_X64_fop;}break; +case REGS_RegCodeX64_fcs:{result = RADDBGI_RegisterCode_X64_fcs;}break; +case REGS_RegCodeX64_fds:{result = RADDBGI_RegisterCode_X64_fds;}break; +case REGS_RegCodeX64_fip:{result = RADDBGI_RegisterCode_X64_fip;}break; +case REGS_RegCodeX64_fdp:{result = RADDBGI_RegisterCode_X64_fdp;}break; +case REGS_RegCodeX64_mxcsr:{result = RADDBGI_RegisterCode_X64_mxcsr;}break; +case REGS_RegCodeX64_mxcsr_mask:{result = RADDBGI_RegisterCode_X64_mxcsr_mask;}break; +case REGS_RegCodeX64_ss:{result = RADDBGI_RegisterCode_X64_ss;}break; +case REGS_RegCodeX64_cs:{result = RADDBGI_RegisterCode_X64_cs;}break; +case REGS_RegCodeX64_ds:{result = RADDBGI_RegisterCode_X64_ds;}break; +case REGS_RegCodeX64_es:{result = RADDBGI_RegisterCode_X64_es;}break; +case REGS_RegCodeX64_fs:{result = RADDBGI_RegisterCode_X64_fs;}break; +case REGS_RegCodeX64_gs:{result = RADDBGI_RegisterCode_X64_gs;}break; +case REGS_RegCodeX64_ymm0:{result = RADDBGI_RegisterCode_X64_ymm0;}break; +case REGS_RegCodeX64_ymm1:{result = RADDBGI_RegisterCode_X64_ymm1;}break; +case REGS_RegCodeX64_ymm2:{result = RADDBGI_RegisterCode_X64_ymm2;}break; +case REGS_RegCodeX64_ymm3:{result = RADDBGI_RegisterCode_X64_ymm3;}break; +case REGS_RegCodeX64_ymm4:{result = RADDBGI_RegisterCode_X64_ymm4;}break; +case REGS_RegCodeX64_ymm5:{result = RADDBGI_RegisterCode_X64_ymm5;}break; +case REGS_RegCodeX64_ymm6:{result = RADDBGI_RegisterCode_X64_ymm6;}break; +case REGS_RegCodeX64_ymm7:{result = RADDBGI_RegisterCode_X64_ymm7;}break; +case REGS_RegCodeX64_ymm8:{result = RADDBGI_RegisterCode_X64_ymm8;}break; +case REGS_RegCodeX64_ymm9:{result = RADDBGI_RegisterCode_X64_ymm9;}break; +case REGS_RegCodeX64_ymm10:{result = RADDBGI_RegisterCode_X64_ymm10;}break; +case REGS_RegCodeX64_ymm11:{result = RADDBGI_RegisterCode_X64_ymm11;}break; +case REGS_RegCodeX64_ymm12:{result = RADDBGI_RegisterCode_X64_ymm12;}break; +case REGS_RegCodeX64_ymm13:{result = RADDBGI_RegisterCode_X64_ymm13;}break; +case REGS_RegCodeX64_ymm14:{result = RADDBGI_RegisterCode_X64_ymm14;}break; +case REGS_RegCodeX64_ymm15:{result = RADDBGI_RegisterCode_X64_ymm15;}break; } }break; case Architecture_x86: @@ -97,72 +97,72 @@ case Architecture_x86: switch(code) { default:{}break; -case REGS_RegCodeX86_eax:{result = RADDBG_RegisterCode_X86_eax;}break; -case REGS_RegCodeX86_ecx:{result = RADDBG_RegisterCode_X86_ecx;}break; -case REGS_RegCodeX86_edx:{result = RADDBG_RegisterCode_X86_edx;}break; -case REGS_RegCodeX86_ebx:{result = RADDBG_RegisterCode_X86_ebx;}break; -case REGS_RegCodeX86_esp:{result = RADDBG_RegisterCode_X86_esp;}break; -case REGS_RegCodeX86_ebp:{result = RADDBG_RegisterCode_X86_ebp;}break; -case REGS_RegCodeX86_esi:{result = RADDBG_RegisterCode_X86_esi;}break; -case REGS_RegCodeX86_edi:{result = RADDBG_RegisterCode_X86_edi;}break; -case REGS_RegCodeX86_fsbase:{result = RADDBG_RegisterCode_X86_fsbase;}break; -case REGS_RegCodeX86_gsbase:{result = RADDBG_RegisterCode_X86_gsbase;}break; -case REGS_RegCodeX86_eflags:{result = RADDBG_RegisterCode_X86_eflags;}break; -case REGS_RegCodeX86_eip:{result = RADDBG_RegisterCode_X86_eip;}break; -case REGS_RegCodeX86_dr0:{result = RADDBG_RegisterCode_X86_dr0;}break; -case REGS_RegCodeX86_dr1:{result = RADDBG_RegisterCode_X86_dr1;}break; -case REGS_RegCodeX86_dr2:{result = RADDBG_RegisterCode_X86_dr2;}break; -case REGS_RegCodeX86_dr3:{result = RADDBG_RegisterCode_X86_dr3;}break; -case REGS_RegCodeX86_dr4:{result = RADDBG_RegisterCode_X86_dr4;}break; -case REGS_RegCodeX86_dr5:{result = RADDBG_RegisterCode_X86_dr5;}break; -case REGS_RegCodeX86_dr6:{result = RADDBG_RegisterCode_X86_dr6;}break; -case REGS_RegCodeX86_dr7:{result = RADDBG_RegisterCode_X86_dr7;}break; -case REGS_RegCodeX86_fpr0:{result = RADDBG_RegisterCode_X86_fpr0;}break; -case REGS_RegCodeX86_fpr1:{result = RADDBG_RegisterCode_X86_fpr1;}break; -case REGS_RegCodeX86_fpr2:{result = RADDBG_RegisterCode_X86_fpr2;}break; -case REGS_RegCodeX86_fpr3:{result = RADDBG_RegisterCode_X86_fpr3;}break; -case REGS_RegCodeX86_fpr4:{result = RADDBG_RegisterCode_X86_fpr4;}break; -case REGS_RegCodeX86_fpr5:{result = RADDBG_RegisterCode_X86_fpr5;}break; -case REGS_RegCodeX86_fpr6:{result = RADDBG_RegisterCode_X86_fpr6;}break; -case REGS_RegCodeX86_fpr7:{result = RADDBG_RegisterCode_X86_fpr7;}break; -case REGS_RegCodeX86_st0:{result = RADDBG_RegisterCode_X86_st0;}break; -case REGS_RegCodeX86_st1:{result = RADDBG_RegisterCode_X86_st1;}break; -case REGS_RegCodeX86_st2:{result = RADDBG_RegisterCode_X86_st2;}break; -case REGS_RegCodeX86_st3:{result = RADDBG_RegisterCode_X86_st3;}break; -case REGS_RegCodeX86_st4:{result = RADDBG_RegisterCode_X86_st4;}break; -case REGS_RegCodeX86_st5:{result = RADDBG_RegisterCode_X86_st5;}break; -case REGS_RegCodeX86_st6:{result = RADDBG_RegisterCode_X86_st6;}break; -case REGS_RegCodeX86_st7:{result = RADDBG_RegisterCode_X86_st7;}break; -case REGS_RegCodeX86_fcw:{result = RADDBG_RegisterCode_X86_fcw;}break; -case REGS_RegCodeX86_fsw:{result = RADDBG_RegisterCode_X86_fsw;}break; -case REGS_RegCodeX86_ftw:{result = RADDBG_RegisterCode_X86_ftw;}break; -case REGS_RegCodeX86_fop:{result = RADDBG_RegisterCode_X86_fop;}break; -case REGS_RegCodeX86_fcs:{result = RADDBG_RegisterCode_X86_fcs;}break; -case REGS_RegCodeX86_fds:{result = RADDBG_RegisterCode_X86_fds;}break; -case REGS_RegCodeX86_fip:{result = RADDBG_RegisterCode_X86_fip;}break; -case REGS_RegCodeX86_fdp:{result = RADDBG_RegisterCode_X86_fdp;}break; -case REGS_RegCodeX86_mxcsr:{result = RADDBG_RegisterCode_X86_mxcsr;}break; -case REGS_RegCodeX86_mxcsr_mask:{result = RADDBG_RegisterCode_X86_mxcsr_mask;}break; -case REGS_RegCodeX86_ss:{result = RADDBG_RegisterCode_X86_ss;}break; -case REGS_RegCodeX86_cs:{result = RADDBG_RegisterCode_X86_cs;}break; -case REGS_RegCodeX86_ds:{result = RADDBG_RegisterCode_X86_ds;}break; -case REGS_RegCodeX86_es:{result = RADDBG_RegisterCode_X86_es;}break; -case REGS_RegCodeX86_fs:{result = RADDBG_RegisterCode_X86_fs;}break; -case REGS_RegCodeX86_gs:{result = RADDBG_RegisterCode_X86_gs;}break; -case REGS_RegCodeX86_ymm0:{result = RADDBG_RegisterCode_X86_ymm0;}break; -case REGS_RegCodeX86_ymm1:{result = RADDBG_RegisterCode_X86_ymm1;}break; -case REGS_RegCodeX86_ymm2:{result = RADDBG_RegisterCode_X86_ymm2;}break; -case REGS_RegCodeX86_ymm3:{result = RADDBG_RegisterCode_X86_ymm3;}break; -case REGS_RegCodeX86_ymm4:{result = RADDBG_RegisterCode_X86_ymm4;}break; -case REGS_RegCodeX86_ymm5:{result = RADDBG_RegisterCode_X86_ymm5;}break; -case REGS_RegCodeX86_ymm6:{result = RADDBG_RegisterCode_X86_ymm6;}break; -case REGS_RegCodeX86_ymm7:{result = RADDBG_RegisterCode_X86_ymm7;}break; +case REGS_RegCodeX86_eax:{result = RADDBGI_RegisterCode_X86_eax;}break; +case REGS_RegCodeX86_ecx:{result = RADDBGI_RegisterCode_X86_ecx;}break; +case REGS_RegCodeX86_edx:{result = RADDBGI_RegisterCode_X86_edx;}break; +case REGS_RegCodeX86_ebx:{result = RADDBGI_RegisterCode_X86_ebx;}break; +case REGS_RegCodeX86_esp:{result = RADDBGI_RegisterCode_X86_esp;}break; +case REGS_RegCodeX86_ebp:{result = RADDBGI_RegisterCode_X86_ebp;}break; +case REGS_RegCodeX86_esi:{result = RADDBGI_RegisterCode_X86_esi;}break; +case REGS_RegCodeX86_edi:{result = RADDBGI_RegisterCode_X86_edi;}break; +case REGS_RegCodeX86_fsbase:{result = RADDBGI_RegisterCode_X86_fsbase;}break; +case REGS_RegCodeX86_gsbase:{result = RADDBGI_RegisterCode_X86_gsbase;}break; +case REGS_RegCodeX86_eflags:{result = RADDBGI_RegisterCode_X86_eflags;}break; +case REGS_RegCodeX86_eip:{result = RADDBGI_RegisterCode_X86_eip;}break; +case REGS_RegCodeX86_dr0:{result = RADDBGI_RegisterCode_X86_dr0;}break; +case REGS_RegCodeX86_dr1:{result = RADDBGI_RegisterCode_X86_dr1;}break; +case REGS_RegCodeX86_dr2:{result = RADDBGI_RegisterCode_X86_dr2;}break; +case REGS_RegCodeX86_dr3:{result = RADDBGI_RegisterCode_X86_dr3;}break; +case REGS_RegCodeX86_dr4:{result = RADDBGI_RegisterCode_X86_dr4;}break; +case REGS_RegCodeX86_dr5:{result = RADDBGI_RegisterCode_X86_dr5;}break; +case REGS_RegCodeX86_dr6:{result = RADDBGI_RegisterCode_X86_dr6;}break; +case REGS_RegCodeX86_dr7:{result = RADDBGI_RegisterCode_X86_dr7;}break; +case REGS_RegCodeX86_fpr0:{result = RADDBGI_RegisterCode_X86_fpr0;}break; +case REGS_RegCodeX86_fpr1:{result = RADDBGI_RegisterCode_X86_fpr1;}break; +case REGS_RegCodeX86_fpr2:{result = RADDBGI_RegisterCode_X86_fpr2;}break; +case REGS_RegCodeX86_fpr3:{result = RADDBGI_RegisterCode_X86_fpr3;}break; +case REGS_RegCodeX86_fpr4:{result = RADDBGI_RegisterCode_X86_fpr4;}break; +case REGS_RegCodeX86_fpr5:{result = RADDBGI_RegisterCode_X86_fpr5;}break; +case REGS_RegCodeX86_fpr6:{result = RADDBGI_RegisterCode_X86_fpr6;}break; +case REGS_RegCodeX86_fpr7:{result = RADDBGI_RegisterCode_X86_fpr7;}break; +case REGS_RegCodeX86_st0:{result = RADDBGI_RegisterCode_X86_st0;}break; +case REGS_RegCodeX86_st1:{result = RADDBGI_RegisterCode_X86_st1;}break; +case REGS_RegCodeX86_st2:{result = RADDBGI_RegisterCode_X86_st2;}break; +case REGS_RegCodeX86_st3:{result = RADDBGI_RegisterCode_X86_st3;}break; +case REGS_RegCodeX86_st4:{result = RADDBGI_RegisterCode_X86_st4;}break; +case REGS_RegCodeX86_st5:{result = RADDBGI_RegisterCode_X86_st5;}break; +case REGS_RegCodeX86_st6:{result = RADDBGI_RegisterCode_X86_st6;}break; +case REGS_RegCodeX86_st7:{result = RADDBGI_RegisterCode_X86_st7;}break; +case REGS_RegCodeX86_fcw:{result = RADDBGI_RegisterCode_X86_fcw;}break; +case REGS_RegCodeX86_fsw:{result = RADDBGI_RegisterCode_X86_fsw;}break; +case REGS_RegCodeX86_ftw:{result = RADDBGI_RegisterCode_X86_ftw;}break; +case REGS_RegCodeX86_fop:{result = RADDBGI_RegisterCode_X86_fop;}break; +case REGS_RegCodeX86_fcs:{result = RADDBGI_RegisterCode_X86_fcs;}break; +case REGS_RegCodeX86_fds:{result = RADDBGI_RegisterCode_X86_fds;}break; +case REGS_RegCodeX86_fip:{result = RADDBGI_RegisterCode_X86_fip;}break; +case REGS_RegCodeX86_fdp:{result = RADDBGI_RegisterCode_X86_fdp;}break; +case REGS_RegCodeX86_mxcsr:{result = RADDBGI_RegisterCode_X86_mxcsr;}break; +case REGS_RegCodeX86_mxcsr_mask:{result = RADDBGI_RegisterCode_X86_mxcsr_mask;}break; +case REGS_RegCodeX86_ss:{result = RADDBGI_RegisterCode_X86_ss;}break; +case REGS_RegCodeX86_cs:{result = RADDBGI_RegisterCode_X86_cs;}break; +case REGS_RegCodeX86_ds:{result = RADDBGI_RegisterCode_X86_ds;}break; +case REGS_RegCodeX86_es:{result = RADDBGI_RegisterCode_X86_es;}break; +case REGS_RegCodeX86_fs:{result = RADDBGI_RegisterCode_X86_fs;}break; +case REGS_RegCodeX86_gs:{result = RADDBGI_RegisterCode_X86_gs;}break; +case REGS_RegCodeX86_ymm0:{result = RADDBGI_RegisterCode_X86_ymm0;}break; +case REGS_RegCodeX86_ymm1:{result = RADDBGI_RegisterCode_X86_ymm1;}break; +case REGS_RegCodeX86_ymm2:{result = RADDBGI_RegisterCode_X86_ymm2;}break; +case REGS_RegCodeX86_ymm3:{result = RADDBGI_RegisterCode_X86_ymm3;}break; +case REGS_RegCodeX86_ymm4:{result = RADDBGI_RegisterCode_X86_ymm4;}break; +case REGS_RegCodeX86_ymm5:{result = RADDBGI_RegisterCode_X86_ymm5;}break; +case REGS_RegCodeX86_ymm6:{result = RADDBGI_RegisterCode_X86_ymm6;}break; +case REGS_RegCodeX86_ymm7:{result = RADDBGI_RegisterCode_X86_ymm7;}break; } }break; } return result; } -internal REGS_RegCode regs_reg_code_from_arch_raddbg_code(Architecture arch, RADDBG_RegisterCode code) +internal REGS_RegCode regs_reg_code_from_arch_raddbgi_code(Architecture arch, RADDBGI_RegisterCode code) { REGS_RegCode result = 0; switch(arch) @@ -173,82 +173,82 @@ case Architecture_x64: switch(code) { default:{}break; -case RADDBG_RegisterCode_X64_rax:{result = REGS_RegCodeX64_rax;}break; -case RADDBG_RegisterCode_X64_rcx:{result = REGS_RegCodeX64_rcx;}break; -case RADDBG_RegisterCode_X64_rdx:{result = REGS_RegCodeX64_rdx;}break; -case RADDBG_RegisterCode_X64_rbx:{result = REGS_RegCodeX64_rbx;}break; -case RADDBG_RegisterCode_X64_rsp:{result = REGS_RegCodeX64_rsp;}break; -case RADDBG_RegisterCode_X64_rbp:{result = REGS_RegCodeX64_rbp;}break; -case RADDBG_RegisterCode_X64_rsi:{result = REGS_RegCodeX64_rsi;}break; -case RADDBG_RegisterCode_X64_rdi:{result = REGS_RegCodeX64_rdi;}break; -case RADDBG_RegisterCode_X64_r8:{result = REGS_RegCodeX64_r8;}break; -case RADDBG_RegisterCode_X64_r9:{result = REGS_RegCodeX64_r9;}break; -case RADDBG_RegisterCode_X64_r10:{result = REGS_RegCodeX64_r10;}break; -case RADDBG_RegisterCode_X64_r11:{result = REGS_RegCodeX64_r11;}break; -case RADDBG_RegisterCode_X64_r12:{result = REGS_RegCodeX64_r12;}break; -case RADDBG_RegisterCode_X64_r13:{result = REGS_RegCodeX64_r13;}break; -case RADDBG_RegisterCode_X64_r14:{result = REGS_RegCodeX64_r14;}break; -case RADDBG_RegisterCode_X64_r15:{result = REGS_RegCodeX64_r15;}break; -case RADDBG_RegisterCode_X64_fsbase:{result = REGS_RegCodeX64_fsbase;}break; -case RADDBG_RegisterCode_X64_gsbase:{result = REGS_RegCodeX64_gsbase;}break; -case RADDBG_RegisterCode_X64_rip:{result = REGS_RegCodeX64_rip;}break; -case RADDBG_RegisterCode_X64_rflags:{result = REGS_RegCodeX64_rflags;}break; -case RADDBG_RegisterCode_X64_dr0:{result = REGS_RegCodeX64_dr0;}break; -case RADDBG_RegisterCode_X64_dr1:{result = REGS_RegCodeX64_dr1;}break; -case RADDBG_RegisterCode_X64_dr2:{result = REGS_RegCodeX64_dr2;}break; -case RADDBG_RegisterCode_X64_dr3:{result = REGS_RegCodeX64_dr3;}break; -case RADDBG_RegisterCode_X64_dr4:{result = REGS_RegCodeX64_dr4;}break; -case RADDBG_RegisterCode_X64_dr5:{result = REGS_RegCodeX64_dr5;}break; -case RADDBG_RegisterCode_X64_dr6:{result = REGS_RegCodeX64_dr6;}break; -case RADDBG_RegisterCode_X64_dr7:{result = REGS_RegCodeX64_dr7;}break; -case RADDBG_RegisterCode_X64_fpr0:{result = REGS_RegCodeX64_fpr0;}break; -case RADDBG_RegisterCode_X64_fpr1:{result = REGS_RegCodeX64_fpr1;}break; -case RADDBG_RegisterCode_X64_fpr2:{result = REGS_RegCodeX64_fpr2;}break; -case RADDBG_RegisterCode_X64_fpr3:{result = REGS_RegCodeX64_fpr3;}break; -case RADDBG_RegisterCode_X64_fpr4:{result = REGS_RegCodeX64_fpr4;}break; -case RADDBG_RegisterCode_X64_fpr5:{result = REGS_RegCodeX64_fpr5;}break; -case RADDBG_RegisterCode_X64_fpr6:{result = REGS_RegCodeX64_fpr6;}break; -case RADDBG_RegisterCode_X64_fpr7:{result = REGS_RegCodeX64_fpr7;}break; -case RADDBG_RegisterCode_X64_st0:{result = REGS_RegCodeX64_st0;}break; -case RADDBG_RegisterCode_X64_st1:{result = REGS_RegCodeX64_st1;}break; -case RADDBG_RegisterCode_X64_st2:{result = REGS_RegCodeX64_st2;}break; -case RADDBG_RegisterCode_X64_st3:{result = REGS_RegCodeX64_st3;}break; -case RADDBG_RegisterCode_X64_st4:{result = REGS_RegCodeX64_st4;}break; -case RADDBG_RegisterCode_X64_st5:{result = REGS_RegCodeX64_st5;}break; -case RADDBG_RegisterCode_X64_st6:{result = REGS_RegCodeX64_st6;}break; -case RADDBG_RegisterCode_X64_st7:{result = REGS_RegCodeX64_st7;}break; -case RADDBG_RegisterCode_X64_fcw:{result = REGS_RegCodeX64_fcw;}break; -case RADDBG_RegisterCode_X64_fsw:{result = REGS_RegCodeX64_fsw;}break; -case RADDBG_RegisterCode_X64_ftw:{result = REGS_RegCodeX64_ftw;}break; -case RADDBG_RegisterCode_X64_fop:{result = REGS_RegCodeX64_fop;}break; -case RADDBG_RegisterCode_X64_fcs:{result = REGS_RegCodeX64_fcs;}break; -case RADDBG_RegisterCode_X64_fds:{result = REGS_RegCodeX64_fds;}break; -case RADDBG_RegisterCode_X64_fip:{result = REGS_RegCodeX64_fip;}break; -case RADDBG_RegisterCode_X64_fdp:{result = REGS_RegCodeX64_fdp;}break; -case RADDBG_RegisterCode_X64_mxcsr:{result = REGS_RegCodeX64_mxcsr;}break; -case RADDBG_RegisterCode_X64_mxcsr_mask:{result = REGS_RegCodeX64_mxcsr_mask;}break; -case RADDBG_RegisterCode_X64_ss:{result = REGS_RegCodeX64_ss;}break; -case RADDBG_RegisterCode_X64_cs:{result = REGS_RegCodeX64_cs;}break; -case RADDBG_RegisterCode_X64_ds:{result = REGS_RegCodeX64_ds;}break; -case RADDBG_RegisterCode_X64_es:{result = REGS_RegCodeX64_es;}break; -case RADDBG_RegisterCode_X64_fs:{result = REGS_RegCodeX64_fs;}break; -case RADDBG_RegisterCode_X64_gs:{result = REGS_RegCodeX64_gs;}break; -case RADDBG_RegisterCode_X64_ymm0:{result = REGS_RegCodeX64_ymm0;}break; -case RADDBG_RegisterCode_X64_ymm1:{result = REGS_RegCodeX64_ymm1;}break; -case RADDBG_RegisterCode_X64_ymm2:{result = REGS_RegCodeX64_ymm2;}break; -case RADDBG_RegisterCode_X64_ymm3:{result = REGS_RegCodeX64_ymm3;}break; -case RADDBG_RegisterCode_X64_ymm4:{result = REGS_RegCodeX64_ymm4;}break; -case RADDBG_RegisterCode_X64_ymm5:{result = REGS_RegCodeX64_ymm5;}break; -case RADDBG_RegisterCode_X64_ymm6:{result = REGS_RegCodeX64_ymm6;}break; -case RADDBG_RegisterCode_X64_ymm7:{result = REGS_RegCodeX64_ymm7;}break; -case RADDBG_RegisterCode_X64_ymm8:{result = REGS_RegCodeX64_ymm8;}break; -case RADDBG_RegisterCode_X64_ymm9:{result = REGS_RegCodeX64_ymm9;}break; -case RADDBG_RegisterCode_X64_ymm10:{result = REGS_RegCodeX64_ymm10;}break; -case RADDBG_RegisterCode_X64_ymm11:{result = REGS_RegCodeX64_ymm11;}break; -case RADDBG_RegisterCode_X64_ymm12:{result = REGS_RegCodeX64_ymm12;}break; -case RADDBG_RegisterCode_X64_ymm13:{result = REGS_RegCodeX64_ymm13;}break; -case RADDBG_RegisterCode_X64_ymm14:{result = REGS_RegCodeX64_ymm14;}break; -case RADDBG_RegisterCode_X64_ymm15:{result = REGS_RegCodeX64_ymm15;}break; +case RADDBGI_RegisterCode_X64_rax:{result = REGS_RegCodeX64_rax;}break; +case RADDBGI_RegisterCode_X64_rcx:{result = REGS_RegCodeX64_rcx;}break; +case RADDBGI_RegisterCode_X64_rdx:{result = REGS_RegCodeX64_rdx;}break; +case RADDBGI_RegisterCode_X64_rbx:{result = REGS_RegCodeX64_rbx;}break; +case RADDBGI_RegisterCode_X64_rsp:{result = REGS_RegCodeX64_rsp;}break; +case RADDBGI_RegisterCode_X64_rbp:{result = REGS_RegCodeX64_rbp;}break; +case RADDBGI_RegisterCode_X64_rsi:{result = REGS_RegCodeX64_rsi;}break; +case RADDBGI_RegisterCode_X64_rdi:{result = REGS_RegCodeX64_rdi;}break; +case RADDBGI_RegisterCode_X64_r8:{result = REGS_RegCodeX64_r8;}break; +case RADDBGI_RegisterCode_X64_r9:{result = REGS_RegCodeX64_r9;}break; +case RADDBGI_RegisterCode_X64_r10:{result = REGS_RegCodeX64_r10;}break; +case RADDBGI_RegisterCode_X64_r11:{result = REGS_RegCodeX64_r11;}break; +case RADDBGI_RegisterCode_X64_r12:{result = REGS_RegCodeX64_r12;}break; +case RADDBGI_RegisterCode_X64_r13:{result = REGS_RegCodeX64_r13;}break; +case RADDBGI_RegisterCode_X64_r14:{result = REGS_RegCodeX64_r14;}break; +case RADDBGI_RegisterCode_X64_r15:{result = REGS_RegCodeX64_r15;}break; +case RADDBGI_RegisterCode_X64_fsbase:{result = REGS_RegCodeX64_fsbase;}break; +case RADDBGI_RegisterCode_X64_gsbase:{result = REGS_RegCodeX64_gsbase;}break; +case RADDBGI_RegisterCode_X64_rip:{result = REGS_RegCodeX64_rip;}break; +case RADDBGI_RegisterCode_X64_rflags:{result = REGS_RegCodeX64_rflags;}break; +case RADDBGI_RegisterCode_X64_dr0:{result = REGS_RegCodeX64_dr0;}break; +case RADDBGI_RegisterCode_X64_dr1:{result = REGS_RegCodeX64_dr1;}break; +case RADDBGI_RegisterCode_X64_dr2:{result = REGS_RegCodeX64_dr2;}break; +case RADDBGI_RegisterCode_X64_dr3:{result = REGS_RegCodeX64_dr3;}break; +case RADDBGI_RegisterCode_X64_dr4:{result = REGS_RegCodeX64_dr4;}break; +case RADDBGI_RegisterCode_X64_dr5:{result = REGS_RegCodeX64_dr5;}break; +case RADDBGI_RegisterCode_X64_dr6:{result = REGS_RegCodeX64_dr6;}break; +case RADDBGI_RegisterCode_X64_dr7:{result = REGS_RegCodeX64_dr7;}break; +case RADDBGI_RegisterCode_X64_fpr0:{result = REGS_RegCodeX64_fpr0;}break; +case RADDBGI_RegisterCode_X64_fpr1:{result = REGS_RegCodeX64_fpr1;}break; +case RADDBGI_RegisterCode_X64_fpr2:{result = REGS_RegCodeX64_fpr2;}break; +case RADDBGI_RegisterCode_X64_fpr3:{result = REGS_RegCodeX64_fpr3;}break; +case RADDBGI_RegisterCode_X64_fpr4:{result = REGS_RegCodeX64_fpr4;}break; +case RADDBGI_RegisterCode_X64_fpr5:{result = REGS_RegCodeX64_fpr5;}break; +case RADDBGI_RegisterCode_X64_fpr6:{result = REGS_RegCodeX64_fpr6;}break; +case RADDBGI_RegisterCode_X64_fpr7:{result = REGS_RegCodeX64_fpr7;}break; +case RADDBGI_RegisterCode_X64_st0:{result = REGS_RegCodeX64_st0;}break; +case RADDBGI_RegisterCode_X64_st1:{result = REGS_RegCodeX64_st1;}break; +case RADDBGI_RegisterCode_X64_st2:{result = REGS_RegCodeX64_st2;}break; +case RADDBGI_RegisterCode_X64_st3:{result = REGS_RegCodeX64_st3;}break; +case RADDBGI_RegisterCode_X64_st4:{result = REGS_RegCodeX64_st4;}break; +case RADDBGI_RegisterCode_X64_st5:{result = REGS_RegCodeX64_st5;}break; +case RADDBGI_RegisterCode_X64_st6:{result = REGS_RegCodeX64_st6;}break; +case RADDBGI_RegisterCode_X64_st7:{result = REGS_RegCodeX64_st7;}break; +case RADDBGI_RegisterCode_X64_fcw:{result = REGS_RegCodeX64_fcw;}break; +case RADDBGI_RegisterCode_X64_fsw:{result = REGS_RegCodeX64_fsw;}break; +case RADDBGI_RegisterCode_X64_ftw:{result = REGS_RegCodeX64_ftw;}break; +case RADDBGI_RegisterCode_X64_fop:{result = REGS_RegCodeX64_fop;}break; +case RADDBGI_RegisterCode_X64_fcs:{result = REGS_RegCodeX64_fcs;}break; +case RADDBGI_RegisterCode_X64_fds:{result = REGS_RegCodeX64_fds;}break; +case RADDBGI_RegisterCode_X64_fip:{result = REGS_RegCodeX64_fip;}break; +case RADDBGI_RegisterCode_X64_fdp:{result = REGS_RegCodeX64_fdp;}break; +case RADDBGI_RegisterCode_X64_mxcsr:{result = REGS_RegCodeX64_mxcsr;}break; +case RADDBGI_RegisterCode_X64_mxcsr_mask:{result = REGS_RegCodeX64_mxcsr_mask;}break; +case RADDBGI_RegisterCode_X64_ss:{result = REGS_RegCodeX64_ss;}break; +case RADDBGI_RegisterCode_X64_cs:{result = REGS_RegCodeX64_cs;}break; +case RADDBGI_RegisterCode_X64_ds:{result = REGS_RegCodeX64_ds;}break; +case RADDBGI_RegisterCode_X64_es:{result = REGS_RegCodeX64_es;}break; +case RADDBGI_RegisterCode_X64_fs:{result = REGS_RegCodeX64_fs;}break; +case RADDBGI_RegisterCode_X64_gs:{result = REGS_RegCodeX64_gs;}break; +case RADDBGI_RegisterCode_X64_ymm0:{result = REGS_RegCodeX64_ymm0;}break; +case RADDBGI_RegisterCode_X64_ymm1:{result = REGS_RegCodeX64_ymm1;}break; +case RADDBGI_RegisterCode_X64_ymm2:{result = REGS_RegCodeX64_ymm2;}break; +case RADDBGI_RegisterCode_X64_ymm3:{result = REGS_RegCodeX64_ymm3;}break; +case RADDBGI_RegisterCode_X64_ymm4:{result = REGS_RegCodeX64_ymm4;}break; +case RADDBGI_RegisterCode_X64_ymm5:{result = REGS_RegCodeX64_ymm5;}break; +case RADDBGI_RegisterCode_X64_ymm6:{result = REGS_RegCodeX64_ymm6;}break; +case RADDBGI_RegisterCode_X64_ymm7:{result = REGS_RegCodeX64_ymm7;}break; +case RADDBGI_RegisterCode_X64_ymm8:{result = REGS_RegCodeX64_ymm8;}break; +case RADDBGI_RegisterCode_X64_ymm9:{result = REGS_RegCodeX64_ymm9;}break; +case RADDBGI_RegisterCode_X64_ymm10:{result = REGS_RegCodeX64_ymm10;}break; +case RADDBGI_RegisterCode_X64_ymm11:{result = REGS_RegCodeX64_ymm11;}break; +case RADDBGI_RegisterCode_X64_ymm12:{result = REGS_RegCodeX64_ymm12;}break; +case RADDBGI_RegisterCode_X64_ymm13:{result = REGS_RegCodeX64_ymm13;}break; +case RADDBGI_RegisterCode_X64_ymm14:{result = REGS_RegCodeX64_ymm14;}break; +case RADDBGI_RegisterCode_X64_ymm15:{result = REGS_RegCodeX64_ymm15;}break; } }break; case Architecture_x86: @@ -256,66 +256,66 @@ case Architecture_x86: switch(code) { default:{}break; -case RADDBG_RegisterCode_X86_eax:{result = REGS_RegCodeX86_eax;}break; -case RADDBG_RegisterCode_X86_ecx:{result = REGS_RegCodeX86_ecx;}break; -case RADDBG_RegisterCode_X86_edx:{result = REGS_RegCodeX86_edx;}break; -case RADDBG_RegisterCode_X86_ebx:{result = REGS_RegCodeX86_ebx;}break; -case RADDBG_RegisterCode_X86_esp:{result = REGS_RegCodeX86_esp;}break; -case RADDBG_RegisterCode_X86_ebp:{result = REGS_RegCodeX86_ebp;}break; -case RADDBG_RegisterCode_X86_esi:{result = REGS_RegCodeX86_esi;}break; -case RADDBG_RegisterCode_X86_edi:{result = REGS_RegCodeX86_edi;}break; -case RADDBG_RegisterCode_X86_fsbase:{result = REGS_RegCodeX86_fsbase;}break; -case RADDBG_RegisterCode_X86_gsbase:{result = REGS_RegCodeX86_gsbase;}break; -case RADDBG_RegisterCode_X86_eflags:{result = REGS_RegCodeX86_eflags;}break; -case RADDBG_RegisterCode_X86_eip:{result = REGS_RegCodeX86_eip;}break; -case RADDBG_RegisterCode_X86_dr0:{result = REGS_RegCodeX86_dr0;}break; -case RADDBG_RegisterCode_X86_dr1:{result = REGS_RegCodeX86_dr1;}break; -case RADDBG_RegisterCode_X86_dr2:{result = REGS_RegCodeX86_dr2;}break; -case RADDBG_RegisterCode_X86_dr3:{result = REGS_RegCodeX86_dr3;}break; -case RADDBG_RegisterCode_X86_dr4:{result = REGS_RegCodeX86_dr4;}break; -case RADDBG_RegisterCode_X86_dr5:{result = REGS_RegCodeX86_dr5;}break; -case RADDBG_RegisterCode_X86_dr6:{result = REGS_RegCodeX86_dr6;}break; -case RADDBG_RegisterCode_X86_dr7:{result = REGS_RegCodeX86_dr7;}break; -case RADDBG_RegisterCode_X86_fpr0:{result = REGS_RegCodeX86_fpr0;}break; -case RADDBG_RegisterCode_X86_fpr1:{result = REGS_RegCodeX86_fpr1;}break; -case RADDBG_RegisterCode_X86_fpr2:{result = REGS_RegCodeX86_fpr2;}break; -case RADDBG_RegisterCode_X86_fpr3:{result = REGS_RegCodeX86_fpr3;}break; -case RADDBG_RegisterCode_X86_fpr4:{result = REGS_RegCodeX86_fpr4;}break; -case RADDBG_RegisterCode_X86_fpr5:{result = REGS_RegCodeX86_fpr5;}break; -case RADDBG_RegisterCode_X86_fpr6:{result = REGS_RegCodeX86_fpr6;}break; -case RADDBG_RegisterCode_X86_fpr7:{result = REGS_RegCodeX86_fpr7;}break; -case RADDBG_RegisterCode_X86_st0:{result = REGS_RegCodeX86_st0;}break; -case RADDBG_RegisterCode_X86_st1:{result = REGS_RegCodeX86_st1;}break; -case RADDBG_RegisterCode_X86_st2:{result = REGS_RegCodeX86_st2;}break; -case RADDBG_RegisterCode_X86_st3:{result = REGS_RegCodeX86_st3;}break; -case RADDBG_RegisterCode_X86_st4:{result = REGS_RegCodeX86_st4;}break; -case RADDBG_RegisterCode_X86_st5:{result = REGS_RegCodeX86_st5;}break; -case RADDBG_RegisterCode_X86_st6:{result = REGS_RegCodeX86_st6;}break; -case RADDBG_RegisterCode_X86_st7:{result = REGS_RegCodeX86_st7;}break; -case RADDBG_RegisterCode_X86_fcw:{result = REGS_RegCodeX86_fcw;}break; -case RADDBG_RegisterCode_X86_fsw:{result = REGS_RegCodeX86_fsw;}break; -case RADDBG_RegisterCode_X86_ftw:{result = REGS_RegCodeX86_ftw;}break; -case RADDBG_RegisterCode_X86_fop:{result = REGS_RegCodeX86_fop;}break; -case RADDBG_RegisterCode_X86_fcs:{result = REGS_RegCodeX86_fcs;}break; -case RADDBG_RegisterCode_X86_fds:{result = REGS_RegCodeX86_fds;}break; -case RADDBG_RegisterCode_X86_fip:{result = REGS_RegCodeX86_fip;}break; -case RADDBG_RegisterCode_X86_fdp:{result = REGS_RegCodeX86_fdp;}break; -case RADDBG_RegisterCode_X86_mxcsr:{result = REGS_RegCodeX86_mxcsr;}break; -case RADDBG_RegisterCode_X86_mxcsr_mask:{result = REGS_RegCodeX86_mxcsr_mask;}break; -case RADDBG_RegisterCode_X86_ss:{result = REGS_RegCodeX86_ss;}break; -case RADDBG_RegisterCode_X86_cs:{result = REGS_RegCodeX86_cs;}break; -case RADDBG_RegisterCode_X86_ds:{result = REGS_RegCodeX86_ds;}break; -case RADDBG_RegisterCode_X86_es:{result = REGS_RegCodeX86_es;}break; -case RADDBG_RegisterCode_X86_fs:{result = REGS_RegCodeX86_fs;}break; -case RADDBG_RegisterCode_X86_gs:{result = REGS_RegCodeX86_gs;}break; -case RADDBG_RegisterCode_X86_ymm0:{result = REGS_RegCodeX86_ymm0;}break; -case RADDBG_RegisterCode_X86_ymm1:{result = REGS_RegCodeX86_ymm1;}break; -case RADDBG_RegisterCode_X86_ymm2:{result = REGS_RegCodeX86_ymm2;}break; -case RADDBG_RegisterCode_X86_ymm3:{result = REGS_RegCodeX86_ymm3;}break; -case RADDBG_RegisterCode_X86_ymm4:{result = REGS_RegCodeX86_ymm4;}break; -case RADDBG_RegisterCode_X86_ymm5:{result = REGS_RegCodeX86_ymm5;}break; -case RADDBG_RegisterCode_X86_ymm6:{result = REGS_RegCodeX86_ymm6;}break; -case RADDBG_RegisterCode_X86_ymm7:{result = REGS_RegCodeX86_ymm7;}break; +case RADDBGI_RegisterCode_X86_eax:{result = REGS_RegCodeX86_eax;}break; +case RADDBGI_RegisterCode_X86_ecx:{result = REGS_RegCodeX86_ecx;}break; +case RADDBGI_RegisterCode_X86_edx:{result = REGS_RegCodeX86_edx;}break; +case RADDBGI_RegisterCode_X86_ebx:{result = REGS_RegCodeX86_ebx;}break; +case RADDBGI_RegisterCode_X86_esp:{result = REGS_RegCodeX86_esp;}break; +case RADDBGI_RegisterCode_X86_ebp:{result = REGS_RegCodeX86_ebp;}break; +case RADDBGI_RegisterCode_X86_esi:{result = REGS_RegCodeX86_esi;}break; +case RADDBGI_RegisterCode_X86_edi:{result = REGS_RegCodeX86_edi;}break; +case RADDBGI_RegisterCode_X86_fsbase:{result = REGS_RegCodeX86_fsbase;}break; +case RADDBGI_RegisterCode_X86_gsbase:{result = REGS_RegCodeX86_gsbase;}break; +case RADDBGI_RegisterCode_X86_eflags:{result = REGS_RegCodeX86_eflags;}break; +case RADDBGI_RegisterCode_X86_eip:{result = REGS_RegCodeX86_eip;}break; +case RADDBGI_RegisterCode_X86_dr0:{result = REGS_RegCodeX86_dr0;}break; +case RADDBGI_RegisterCode_X86_dr1:{result = REGS_RegCodeX86_dr1;}break; +case RADDBGI_RegisterCode_X86_dr2:{result = REGS_RegCodeX86_dr2;}break; +case RADDBGI_RegisterCode_X86_dr3:{result = REGS_RegCodeX86_dr3;}break; +case RADDBGI_RegisterCode_X86_dr4:{result = REGS_RegCodeX86_dr4;}break; +case RADDBGI_RegisterCode_X86_dr5:{result = REGS_RegCodeX86_dr5;}break; +case RADDBGI_RegisterCode_X86_dr6:{result = REGS_RegCodeX86_dr6;}break; +case RADDBGI_RegisterCode_X86_dr7:{result = REGS_RegCodeX86_dr7;}break; +case RADDBGI_RegisterCode_X86_fpr0:{result = REGS_RegCodeX86_fpr0;}break; +case RADDBGI_RegisterCode_X86_fpr1:{result = REGS_RegCodeX86_fpr1;}break; +case RADDBGI_RegisterCode_X86_fpr2:{result = REGS_RegCodeX86_fpr2;}break; +case RADDBGI_RegisterCode_X86_fpr3:{result = REGS_RegCodeX86_fpr3;}break; +case RADDBGI_RegisterCode_X86_fpr4:{result = REGS_RegCodeX86_fpr4;}break; +case RADDBGI_RegisterCode_X86_fpr5:{result = REGS_RegCodeX86_fpr5;}break; +case RADDBGI_RegisterCode_X86_fpr6:{result = REGS_RegCodeX86_fpr6;}break; +case RADDBGI_RegisterCode_X86_fpr7:{result = REGS_RegCodeX86_fpr7;}break; +case RADDBGI_RegisterCode_X86_st0:{result = REGS_RegCodeX86_st0;}break; +case RADDBGI_RegisterCode_X86_st1:{result = REGS_RegCodeX86_st1;}break; +case RADDBGI_RegisterCode_X86_st2:{result = REGS_RegCodeX86_st2;}break; +case RADDBGI_RegisterCode_X86_st3:{result = REGS_RegCodeX86_st3;}break; +case RADDBGI_RegisterCode_X86_st4:{result = REGS_RegCodeX86_st4;}break; +case RADDBGI_RegisterCode_X86_st5:{result = REGS_RegCodeX86_st5;}break; +case RADDBGI_RegisterCode_X86_st6:{result = REGS_RegCodeX86_st6;}break; +case RADDBGI_RegisterCode_X86_st7:{result = REGS_RegCodeX86_st7;}break; +case RADDBGI_RegisterCode_X86_fcw:{result = REGS_RegCodeX86_fcw;}break; +case RADDBGI_RegisterCode_X86_fsw:{result = REGS_RegCodeX86_fsw;}break; +case RADDBGI_RegisterCode_X86_ftw:{result = REGS_RegCodeX86_ftw;}break; +case RADDBGI_RegisterCode_X86_fop:{result = REGS_RegCodeX86_fop;}break; +case RADDBGI_RegisterCode_X86_fcs:{result = REGS_RegCodeX86_fcs;}break; +case RADDBGI_RegisterCode_X86_fds:{result = REGS_RegCodeX86_fds;}break; +case RADDBGI_RegisterCode_X86_fip:{result = REGS_RegCodeX86_fip;}break; +case RADDBGI_RegisterCode_X86_fdp:{result = REGS_RegCodeX86_fdp;}break; +case RADDBGI_RegisterCode_X86_mxcsr:{result = REGS_RegCodeX86_mxcsr;}break; +case RADDBGI_RegisterCode_X86_mxcsr_mask:{result = REGS_RegCodeX86_mxcsr_mask;}break; +case RADDBGI_RegisterCode_X86_ss:{result = REGS_RegCodeX86_ss;}break; +case RADDBGI_RegisterCode_X86_cs:{result = REGS_RegCodeX86_cs;}break; +case RADDBGI_RegisterCode_X86_ds:{result = REGS_RegCodeX86_ds;}break; +case RADDBGI_RegisterCode_X86_es:{result = REGS_RegCodeX86_es;}break; +case RADDBGI_RegisterCode_X86_fs:{result = REGS_RegCodeX86_fs;}break; +case RADDBGI_RegisterCode_X86_gs:{result = REGS_RegCodeX86_gs;}break; +case RADDBGI_RegisterCode_X86_ymm0:{result = REGS_RegCodeX86_ymm0;}break; +case RADDBGI_RegisterCode_X86_ymm1:{result = REGS_RegCodeX86_ymm1;}break; +case RADDBGI_RegisterCode_X86_ymm2:{result = REGS_RegCodeX86_ymm2;}break; +case RADDBGI_RegisterCode_X86_ymm3:{result = REGS_RegCodeX86_ymm3;}break; +case RADDBGI_RegisterCode_X86_ymm4:{result = REGS_RegCodeX86_ymm4;}break; +case RADDBGI_RegisterCode_X86_ymm5:{result = REGS_RegCodeX86_ymm5;}break; +case RADDBGI_RegisterCode_X86_ymm6:{result = REGS_RegCodeX86_ymm6;}break; +case RADDBGI_RegisterCode_X86_ymm7:{result = REGS_RegCodeX86_ymm7;}break; } }break; } diff --git a/src/regs/raddbgi/generated/regs_raddbgi.meta.h b/src/regs/raddbgi/generated/regs_raddbgi.meta.h index 6e1c7f59..43dafbdd 100644 --- a/src/regs/raddbgi/generated/regs_raddbgi.meta.h +++ b/src/regs/raddbgi/generated/regs_raddbgi.meta.h @@ -3,8 +3,8 @@ //- GENERATED CODE -#ifndef REGS_RADDBG_META_H -#define REGS_RADDBG_META_H +#ifndef REGS_RADDBGI_META_H +#define REGS_RADDBGI_META_H -#endif // REGS_RADDBG_META_H +#endif // REGS_RADDBGI_META_H diff --git a/src/regs/raddbgi/regs_raddbgi.h b/src/regs/raddbgi/regs_raddbgi.h index 77f9a25d..03b3a569 100644 --- a/src/regs/raddbgi/regs_raddbgi.h +++ b/src/regs/raddbgi/regs_raddbgi.h @@ -1,10 +1,10 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef REGS_RADDBG_H -#define REGS_RADDBG_H +#ifndef REGS_RADDBGI_H +#define REGS_RADDBGI_H -internal RADDBG_RegisterCode regs_raddbg_code_from_arch_reg_code(Architecture arch, REGS_RegCode code); -internal REGS_RegCode regs_reg_code_from_arch_raddbg_code(Architecture arch, RADDBG_RegisterCode reg); +internal RADDBGI_RegisterCode regs_raddbgi_code_from_arch_reg_code(Architecture arch, REGS_RegCode code); +internal REGS_RegCode regs_reg_code_from_arch_raddbgi_code(Architecture arch, RADDBGI_RegisterCode reg); -#endif //REGS_RADDBG_H +#endif //REGS_RADDBGI_H diff --git a/src/regs/raddbgi/regs_raddbgi.mc b/src/regs/raddbgi/regs_raddbgi.mdesk similarity index 65% rename from src/regs/raddbgi/regs_raddbgi.mc rename to src/regs/raddbgi/regs_raddbgi.mdesk index ce76ed45..a70a5011 100644 --- a/src/regs/raddbgi/regs_raddbgi.mc +++ b/src/regs/raddbgi/regs_raddbgi.mdesk @@ -6,9 +6,9 @@ @table_gen @c_file { - `internal RADDBG_RegisterCode regs_raddbg_code_from_arch_reg_code(Architecture arch, REGS_RegCode code)`; + `internal RADDBGI_RegisterCode regs_raddbgi_code_from_arch_reg_code(Architecture arch, REGS_RegCode code)`; `{`; - `RADDBG_RegisterCode result = 0;`; + `RADDBGI_RegisterCode result = 0;`; `switch(arch)`; `{`; `default:{}break;`; @@ -17,7 +17,7 @@ `switch(code)` `{`; `default:{}break;`; - @expand(REGS_RegTableX64 a) `case REGS_RegCodeX64_$(a.name):{result = RADDBG_RegisterCode_X64_$(a.name);}break;`; + @expand(REGS_RegTableX64 a) `case REGS_RegCodeX64_$(a.name):{result = RADDBGI_RegisterCode_X64_$(a.name);}break;`; `}`; `}break;`; `case Architecture_x86:`; @@ -25,7 +25,7 @@ `switch(code)` `{`; `default:{}break;`; - @expand(REGS_RegTableX86 a) `case REGS_RegCodeX86_$(a.name):{result = RADDBG_RegisterCode_X86_$(a.name);}break;`; + @expand(REGS_RegTableX86 a) `case REGS_RegCodeX86_$(a.name):{result = RADDBGI_RegisterCode_X86_$(a.name);}break;`; `}`; `}break;`; `}`; @@ -35,7 +35,7 @@ @table_gen @c_file { - `internal REGS_RegCode regs_reg_code_from_arch_raddbg_code(Architecture arch, RADDBG_RegisterCode code)`; + `internal REGS_RegCode regs_reg_code_from_arch_raddbgi_code(Architecture arch, RADDBGI_RegisterCode code)`; `{`; `REGS_RegCode result = 0;`; `switch(arch)`; @@ -46,7 +46,7 @@ `switch(code)` `{`; `default:{}break;`; - @expand(REGS_RegTableX64 a) `case RADDBG_RegisterCode_X64_$(a.name):{result = REGS_RegCodeX64_$(a.name);}break;`; + @expand(REGS_RegTableX64 a) `case RADDBGI_RegisterCode_X64_$(a.name):{result = REGS_RegCodeX64_$(a.name);}break;`; `}`; `}break;`; `case Architecture_x86:`; @@ -54,7 +54,7 @@ `switch(code)` `{`; `default:{}break;`; - @expand(REGS_RegTableX86 a) `case RADDBG_RegisterCode_X86_$(a.name):{result = REGS_RegCodeX86_$(a.name);}break;`; + @expand(REGS_RegTableX86 a) `case RADDBGI_RegisterCode_X86_$(a.name):{result = REGS_RegCodeX86_$(a.name);}break;`; `}`; `}break;`; `}`; diff --git a/src/scratch/look_at_raddbg.c b/src/scratch/look_at_raddbg.c index ce6d9129..a6aa5b8d 100644 --- a/src/scratch/look_at_raddbg.c +++ b/src/scratch/look_at_raddbg.c @@ -22,16 +22,16 @@ int main(int argument_count, char **arguments) uint8_t *data = (uint8_t *)MapViewOfFile(map, FILE_MAP_READ, 0, 0, data_size); // parse raw data as raddbg - RADDBG_Parsed rdbg = {0}; - RADDBG_ParseStatus parse_status = raddbg_parse(data, data_size, &rdbg); + RADDBGI_Parsed rdbg = {0}; + RADDBGI_ParseStatus parse_status = raddbgi_parse(data, data_size, &rdbg); // usage example: print out all procedure symbol names #if 1 for(uint64_t procedure_idx = 0; procedure_idx < rdbg.procedure_count; procedure_idx += 1) { - RADDBG_Procedure *procedure = &rdbg.procedures[procedure_idx]; + RADDBGI_Procedure *procedure = &rdbg.procedures[procedure_idx]; uint64_t name_size = 0; - uint8_t *name = raddbg_string_from_idx(&rdbg, procedure->name_string_idx, &name_size); + uint8_t *name = raddbgi_string_from_idx(&rdbg, procedure->name_string_idx, &name_size); printf("[%I64u] %.*s\n", procedure_idx, (int)name_size, name); } #endif @@ -40,15 +40,15 @@ int main(int argument_count, char **arguments) #if 0 for(uint64_t udt_idx = 0; udt_idx < rdbg.udt_count; udt_idx += 1) { - RADDBG_UDT *udt = &rdbg.udts[udt_idx]; - RADDBG_TypeNode *type = &rdbg.type_nodes[udt->self_type_idx]; + RADDBGI_UDT *udt = &rdbg.udts[udt_idx]; + RADDBGI_TypeNode *type = &rdbg.type_nodes[udt->self_type_idx]; uint64_t name_size = 0; - uint8_t *name = raddbg_string_from_idx(&rdbg, type->user_defined.name_string_idx, &name_size); + uint8_t *name = raddbgi_string_from_idx(&rdbg, type->user_defined.name_string_idx, &name_size); printf("[%I64u] %.*s\n", udt_idx, (int)name_size, name); } #endif - // for getting more info, look at the `RADDBG_Parsed` structure. all data is + // for getting more info, look at the `RADDBGI_Parsed` structure. all data is // represented as a bunch of flat plain-old-data tables. data which must // reference other data uses indices into that other data's table. for // example, given a `type_idx`, I will index into `rdbg.type_nodes`. given a diff --git a/src/type_graph/type_graph.c b/src/type_graph/type_graph.c index 48bfa512..0500ac74 100644 --- a/src/type_graph/type_graph.c +++ b/src/type_graph/type_graph.c @@ -54,85 +54,85 @@ tg_key_list_copy(Arena *arena, TG_KeyList *src) //~ rjf: RADDBG <-> TG Enum Conversions internal TG_Kind -tg_kind_from_raddbg_type_kind(RADDBG_TypeKind kind) +tg_kind_from_raddbgi_type_kind(RADDBGI_TypeKind kind) { TG_Kind result = TG_Kind_Null; switch(kind) { default:{}break; - case RADDBG_TypeKind_Void: {result = TG_Kind_Void;}break; - case RADDBG_TypeKind_Handle: {result = TG_Kind_Handle;}break; - case RADDBG_TypeKind_Char8: {result = TG_Kind_Char8;}break; - case RADDBG_TypeKind_Char16: {result = TG_Kind_Char16;}break; - case RADDBG_TypeKind_Char32: {result = TG_Kind_Char32;}break; - case RADDBG_TypeKind_UChar8: {result = TG_Kind_UChar8;}break; - case RADDBG_TypeKind_UChar16: {result = TG_Kind_UChar16;}break; - case RADDBG_TypeKind_UChar32: {result = TG_Kind_UChar32;}break; - case RADDBG_TypeKind_U8: {result = TG_Kind_U8;}break; - case RADDBG_TypeKind_U16: {result = TG_Kind_U16;}break; - case RADDBG_TypeKind_U32: {result = TG_Kind_U32;}break; - case RADDBG_TypeKind_U64: {result = TG_Kind_U64;}break; - case RADDBG_TypeKind_U128: {result = TG_Kind_U128;}break; - case RADDBG_TypeKind_U256: {result = TG_Kind_U256;}break; - case RADDBG_TypeKind_U512: {result = TG_Kind_U512;}break; - case RADDBG_TypeKind_S8: {result = TG_Kind_S8;}break; - case RADDBG_TypeKind_S16: {result = TG_Kind_S16;}break; - case RADDBG_TypeKind_S32: {result = TG_Kind_S32;}break; - case RADDBG_TypeKind_S64: {result = TG_Kind_S64;}break; - case RADDBG_TypeKind_S128: {result = TG_Kind_S128;}break; - case RADDBG_TypeKind_S256: {result = TG_Kind_S256;}break; - case RADDBG_TypeKind_S512: {result = TG_Kind_S512;}break; - case RADDBG_TypeKind_Bool: {result = TG_Kind_Bool;}break; - case RADDBG_TypeKind_F16: {result = TG_Kind_F16;}break; - case RADDBG_TypeKind_F32: {result = TG_Kind_F32;}break; - case RADDBG_TypeKind_F32PP: {result = TG_Kind_F32PP;}break; - case RADDBG_TypeKind_F48: {result = TG_Kind_F48;}break; - case RADDBG_TypeKind_F64: {result = TG_Kind_F64;}break; - case RADDBG_TypeKind_F80: {result = TG_Kind_F80;}break; - case RADDBG_TypeKind_F128: {result = TG_Kind_F128;}break; - case RADDBG_TypeKind_ComplexF32: {result = TG_Kind_ComplexF32;}break; - case RADDBG_TypeKind_ComplexF64: {result = TG_Kind_ComplexF64;}break; - case RADDBG_TypeKind_ComplexF80: {result = TG_Kind_ComplexF80;}break; - case RADDBG_TypeKind_ComplexF128: {result = TG_Kind_ComplexF128;}break; - case RADDBG_TypeKind_Modifier: {result = TG_Kind_Modifier;}break; - case RADDBG_TypeKind_Ptr: {result = TG_Kind_Ptr;}break; - case RADDBG_TypeKind_LRef: {result = TG_Kind_LRef;}break; - case RADDBG_TypeKind_RRef: {result = TG_Kind_RRef;}break; - case RADDBG_TypeKind_Array: {result = TG_Kind_Array;}break; - case RADDBG_TypeKind_Function: {result = TG_Kind_Function;}break; - case RADDBG_TypeKind_Method: {result = TG_Kind_Method;}break; - case RADDBG_TypeKind_MemberPtr: {result = TG_Kind_MemberPtr;}break; - case RADDBG_TypeKind_Struct: {result = TG_Kind_Struct;}break; - case RADDBG_TypeKind_Class: {result = TG_Kind_Class;}break; - case RADDBG_TypeKind_Union: {result = TG_Kind_Union;}break; - case RADDBG_TypeKind_Enum: {result = TG_Kind_Enum;}break; - case RADDBG_TypeKind_Alias: {result = TG_Kind_Alias;}break; - case RADDBG_TypeKind_IncompleteStruct: {result = TG_Kind_IncompleteStruct;}break; - case RADDBG_TypeKind_IncompleteUnion: {result = TG_Kind_IncompleteUnion;}break; - case RADDBG_TypeKind_IncompleteClass: {result = TG_Kind_IncompleteClass;}break; - case RADDBG_TypeKind_IncompleteEnum: {result = TG_Kind_IncompleteEnum;}break; - case RADDBG_TypeKind_Bitfield: {result = TG_Kind_Bitfield;}break; - case RADDBG_TypeKind_Variadic: {result = TG_Kind_Variadic;}break; + case RADDBGI_TypeKind_Void: {result = TG_Kind_Void;}break; + case RADDBGI_TypeKind_Handle: {result = TG_Kind_Handle;}break; + case RADDBGI_TypeKind_Char8: {result = TG_Kind_Char8;}break; + case RADDBGI_TypeKind_Char16: {result = TG_Kind_Char16;}break; + case RADDBGI_TypeKind_Char32: {result = TG_Kind_Char32;}break; + case RADDBGI_TypeKind_UChar8: {result = TG_Kind_UChar8;}break; + case RADDBGI_TypeKind_UChar16: {result = TG_Kind_UChar16;}break; + case RADDBGI_TypeKind_UChar32: {result = TG_Kind_UChar32;}break; + case RADDBGI_TypeKind_U8: {result = TG_Kind_U8;}break; + case RADDBGI_TypeKind_U16: {result = TG_Kind_U16;}break; + case RADDBGI_TypeKind_U32: {result = TG_Kind_U32;}break; + case RADDBGI_TypeKind_U64: {result = TG_Kind_U64;}break; + case RADDBGI_TypeKind_U128: {result = TG_Kind_U128;}break; + case RADDBGI_TypeKind_U256: {result = TG_Kind_U256;}break; + case RADDBGI_TypeKind_U512: {result = TG_Kind_U512;}break; + case RADDBGI_TypeKind_S8: {result = TG_Kind_S8;}break; + case RADDBGI_TypeKind_S16: {result = TG_Kind_S16;}break; + case RADDBGI_TypeKind_S32: {result = TG_Kind_S32;}break; + case RADDBGI_TypeKind_S64: {result = TG_Kind_S64;}break; + case RADDBGI_TypeKind_S128: {result = TG_Kind_S128;}break; + case RADDBGI_TypeKind_S256: {result = TG_Kind_S256;}break; + case RADDBGI_TypeKind_S512: {result = TG_Kind_S512;}break; + case RADDBGI_TypeKind_Bool: {result = TG_Kind_Bool;}break; + case RADDBGI_TypeKind_F16: {result = TG_Kind_F16;}break; + case RADDBGI_TypeKind_F32: {result = TG_Kind_F32;}break; + case RADDBGI_TypeKind_F32PP: {result = TG_Kind_F32PP;}break; + case RADDBGI_TypeKind_F48: {result = TG_Kind_F48;}break; + case RADDBGI_TypeKind_F64: {result = TG_Kind_F64;}break; + case RADDBGI_TypeKind_F80: {result = TG_Kind_F80;}break; + case RADDBGI_TypeKind_F128: {result = TG_Kind_F128;}break; + case RADDBGI_TypeKind_ComplexF32: {result = TG_Kind_ComplexF32;}break; + case RADDBGI_TypeKind_ComplexF64: {result = TG_Kind_ComplexF64;}break; + case RADDBGI_TypeKind_ComplexF80: {result = TG_Kind_ComplexF80;}break; + case RADDBGI_TypeKind_ComplexF128: {result = TG_Kind_ComplexF128;}break; + case RADDBGI_TypeKind_Modifier: {result = TG_Kind_Modifier;}break; + case RADDBGI_TypeKind_Ptr: {result = TG_Kind_Ptr;}break; + case RADDBGI_TypeKind_LRef: {result = TG_Kind_LRef;}break; + case RADDBGI_TypeKind_RRef: {result = TG_Kind_RRef;}break; + case RADDBGI_TypeKind_Array: {result = TG_Kind_Array;}break; + case RADDBGI_TypeKind_Function: {result = TG_Kind_Function;}break; + case RADDBGI_TypeKind_Method: {result = TG_Kind_Method;}break; + case RADDBGI_TypeKind_MemberPtr: {result = TG_Kind_MemberPtr;}break; + case RADDBGI_TypeKind_Struct: {result = TG_Kind_Struct;}break; + case RADDBGI_TypeKind_Class: {result = TG_Kind_Class;}break; + case RADDBGI_TypeKind_Union: {result = TG_Kind_Union;}break; + case RADDBGI_TypeKind_Enum: {result = TG_Kind_Enum;}break; + case RADDBGI_TypeKind_Alias: {result = TG_Kind_Alias;}break; + case RADDBGI_TypeKind_IncompleteStruct: {result = TG_Kind_IncompleteStruct;}break; + case RADDBGI_TypeKind_IncompleteUnion: {result = TG_Kind_IncompleteUnion;}break; + case RADDBGI_TypeKind_IncompleteClass: {result = TG_Kind_IncompleteClass;}break; + case RADDBGI_TypeKind_IncompleteEnum: {result = TG_Kind_IncompleteEnum;}break; + case RADDBGI_TypeKind_Bitfield: {result = TG_Kind_Bitfield;}break; + case RADDBGI_TypeKind_Variadic: {result = TG_Kind_Variadic;}break; } return result; } internal TG_MemberKind -tg_member_kind_from_raddbg_member_kind(RADDBG_MemberKind kind) +tg_member_kind_from_raddbgi_member_kind(RADDBGI_MemberKind kind) { TG_MemberKind result = TG_MemberKind_Null; switch(kind) { default:{}break; - case RADDBG_MemberKind_DataField: {result = TG_MemberKind_DataField;}break; - case RADDBG_MemberKind_StaticData: {result = TG_MemberKind_StaticData;}break; - case RADDBG_MemberKind_Method: {result = TG_MemberKind_Method;}break; - case RADDBG_MemberKind_StaticMethod: {result = TG_MemberKind_StaticMethod;}break; - case RADDBG_MemberKind_VirtualMethod: {result = TG_MemberKind_VirtualMethod;}break; - case RADDBG_MemberKind_VTablePtr: {result = TG_MemberKind_VTablePtr;}break; - case RADDBG_MemberKind_Base: {result = TG_MemberKind_Base;}break; - case RADDBG_MemberKind_VirtualBase: {result = TG_MemberKind_VirtualBase;}break; - case RADDBG_MemberKind_NestedType: {result = TG_MemberKind_NestedType;}break; + case RADDBGI_MemberKind_DataField: {result = TG_MemberKind_DataField;}break; + case RADDBGI_MemberKind_StaticData: {result = TG_MemberKind_StaticData;}break; + case RADDBGI_MemberKind_Method: {result = TG_MemberKind_Method;}break; + case RADDBGI_MemberKind_StaticMethod: {result = TG_MemberKind_StaticMethod;}break; + case RADDBGI_MemberKind_VirtualMethod: {result = TG_MemberKind_VirtualMethod;}break; + case RADDBGI_MemberKind_VTablePtr: {result = TG_MemberKind_VTablePtr;}break; + case RADDBGI_MemberKind_Base: {result = TG_MemberKind_Base;}break; + case RADDBGI_MemberKind_VirtualBase: {result = TG_MemberKind_VirtualBase;}break; + case RADDBGI_MemberKind_NestedType: {result = TG_MemberKind_NestedType;}break; } return result; } @@ -274,7 +274,7 @@ tg_cons_type_make(TG_Graph *graph, TG_Kind kind, TG_Key direct_type_key, U64 u64 //~ rjf: Graph Introspection API internal TG_Type * -tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key) +tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key) { TG_Type *type = &tg_type_nil; U64 reg_byte_count = 0; @@ -319,7 +319,7 @@ tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg }break; case TG_Kind_Array: { - U64 ptee_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, cons_type->direct_type_key); + U64 ptee_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, cons_type->direct_type_key); type->byte_size = ptee_size * type->count; }break; } @@ -333,18 +333,18 @@ tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg U64 type_node_idx = key.u64[0]; if(0 <= type_node_idx && type_node_idx < rdbg->type_nodes_count) { - RADDBG_TypeNode *rdbg_type = &rdbg->type_nodes[type_node_idx]; - TG_Kind kind = tg_kind_from_raddbg_type_kind(rdbg_type->kind); + RADDBGI_TypeNode *rdbg_type = &rdbg->type_nodes[type_node_idx]; + TG_Kind kind = tg_kind_from_raddbgi_type_kind(rdbg_type->kind); //- rjf: record types => unpack name * members & produce - if(RADDBG_TypeKind_FirstRecord <= rdbg_type->kind && rdbg_type->kind <= RADDBG_TypeKind_LastRecord) + if(RADDBGI_TypeKind_FirstRecord <= rdbg_type->kind && rdbg_type->kind <= RADDBGI_TypeKind_LastRecord) { // rjf: unpack name String8 name = {0}; - name.str = raddbg_string_from_idx(rdbg, rdbg_type->user_defined.name_string_idx, &name.size); + name.str = raddbgi_string_from_idx(rdbg, rdbg_type->user_defined.name_string_idx, &name.size); // rjf: unpack UDT info - RADDBG_UDT *udt = raddbg_element_from_idx(rdbg, udts, rdbg_type->user_defined.udt_idx); + RADDBGI_UDT *udt = raddbgi_element_from_idx(rdbg, udts, rdbg_type->user_defined.udt_idx); // rjf: unpack members TG_Member *members = 0; @@ -358,17 +358,17 @@ tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg member_idx < udt->member_first+udt->member_count; member_idx += 1) { - RADDBG_Member *src = &rdbg->members[member_idx]; + RADDBGI_Member *src = &rdbg->members[member_idx]; TG_Kind member_type_kind = TG_Kind_Null; if(src->type_idx < rdbg->type_nodes_count) { - RADDBG_TypeNode *member_type = &rdbg->type_nodes[src->type_idx]; - member_type_kind = tg_kind_from_raddbg_type_kind(member_type->kind); + RADDBGI_TypeNode *member_type = &rdbg->type_nodes[src->type_idx]; + member_type_kind = tg_kind_from_raddbgi_type_kind(member_type->kind); } TG_Member *dst = &members[member_idx-udt->member_first]; - dst->kind = tg_member_kind_from_raddbg_member_kind(src->kind); + dst->kind = tg_member_kind_from_raddbgi_member_kind(src->kind); dst->type_key = tg_key_ext(member_type_kind, (U64)src->type_idx); - dst->name.str = raddbg_string_from_idx(rdbg, src->name_string_idx, &dst->name.size); + dst->name.str = raddbgi_string_from_idx(rdbg, src->name_string_idx, &dst->name.size); dst->off = (U64)src->off; } } @@ -384,18 +384,18 @@ tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg } //- rjf: enum types => unpack name * values & produce - else if(rdbg_type->kind == RADDBG_TypeKind_Enum) + else if(rdbg_type->kind == RADDBGI_TypeKind_Enum) { // rjf: unpack name String8 name = {0}; - name.str = raddbg_string_from_idx(rdbg, rdbg_type->user_defined.name_string_idx, &name.size); + name.str = raddbgi_string_from_idx(rdbg, rdbg_type->user_defined.name_string_idx, &name.size); // rjf: unpack direct type TG_Key direct_type_key = zero_struct; if(rdbg_type->user_defined.direct_type_idx < type_node_idx) { - RADDBG_TypeNode *direct_type_node = &rdbg->type_nodes[rdbg_type->user_defined.direct_type_idx]; - TG_Kind direct_type_kind = tg_kind_from_raddbg_type_kind(direct_type_node->kind); + RADDBGI_TypeNode *direct_type_node = &rdbg->type_nodes[rdbg_type->user_defined.direct_type_idx]; + TG_Kind direct_type_kind = tg_kind_from_raddbgi_type_kind(direct_type_node->kind); direct_type_key = tg_key_ext(direct_type_kind, (U64)rdbg_type->user_defined.direct_type_idx); } @@ -406,7 +406,7 @@ tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg U32 udt_idx = rdbg_type->user_defined.udt_idx; if(0 <= udt_idx && udt_idx < rdbg->udts_count) { - RADDBG_UDT *udt = &rdbg->udts[udt_idx]; + RADDBGI_UDT *udt = &rdbg->udts[udt_idx]; enum_vals_count = udt->member_count; enum_vals = push_array(arena, TG_EnumVal, enum_vals_count); if(0 <= udt->member_first && udt->member_first+udt->member_count < rdbg->enum_members_count) @@ -415,9 +415,9 @@ tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg member_idx < udt->member_first+udt->member_count; member_idx += 1) { - RADDBG_EnumMember *src = &rdbg->enum_members[member_idx]; + RADDBGI_EnumMember *src = &rdbg->enum_members[member_idx]; TG_EnumVal *dst = &enum_vals[member_idx-udt->member_first]; - dst->name.str = raddbg_string_from_idx(rdbg, src->name_string_idx, &dst->name.size); + dst->name.str = raddbgi_string_from_idx(rdbg, src->name_string_idx, &dst->name.size); dst->val = src->val; } } @@ -435,7 +435,7 @@ tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg } //- rjf: constructed types - if(RADDBG_TypeKind_FirstConstructed <= rdbg_type->kind && rdbg_type->kind <= RADDBG_TypeKind_LastConstructed) + if(RADDBGI_TypeKind_FirstConstructed <= rdbg_type->kind && rdbg_type->kind <= RADDBGI_TypeKind_LastConstructed) { // rjf: unpack direct type B32 direct_type_is_good = 0; @@ -443,8 +443,8 @@ tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg U64 direct_type_byte_size = 0; if(rdbg_type->constructed.direct_type_idx < type_node_idx) { - RADDBG_TypeNode *direct_type_node = &rdbg->type_nodes[rdbg_type->constructed.direct_type_idx]; - TG_Kind direct_type_kind = tg_kind_from_raddbg_type_kind(direct_type_node->kind); + RADDBGI_TypeNode *direct_type_node = &rdbg->type_nodes[rdbg_type->constructed.direct_type_idx]; + TG_Kind direct_type_kind = tg_kind_from_raddbgi_type_kind(direct_type_node->kind); direct_type_key = tg_key_ext(direct_type_kind, (U64)rdbg_type->constructed.direct_type_idx); direct_type_is_good = 1; direct_type_byte_size = (U64)direct_type_node->byte_size; @@ -453,14 +453,14 @@ tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg // rjf: construct based on kind switch(rdbg_type->kind) { - case RADDBG_TypeKind_Modifier: + case RADDBGI_TypeKind_Modifier: { TG_Flags flags = 0; - if(rdbg_type->flags & RADDBG_TypeModifierFlag_Const) + if(rdbg_type->flags & RADDBGI_TypeModifierFlag_Const) { flags |= TG_Flag_Const; } - if(rdbg_type->flags & RADDBG_TypeModifierFlag_Volatile) + if(rdbg_type->flags & RADDBGI_TypeModifierFlag_Volatile) { flags |= TG_Flag_Volatile; } @@ -470,9 +470,9 @@ tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg type->byte_size = direct_type_byte_size; type->flags = flags; }break; - case RADDBG_TypeKind_Ptr: - case RADDBG_TypeKind_LRef: - case RADDBG_TypeKind_RRef: + case RADDBGI_TypeKind_Ptr: + case RADDBGI_TypeKind_LRef: + case RADDBGI_TypeKind_RRef: { type = push_array(arena, TG_Type, 1); type->kind = kind; @@ -480,7 +480,7 @@ tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg type->byte_size = graph->address_size; }break; - case RADDBG_TypeKind_Array: + case RADDBGI_TypeKind_Array: { type = push_array(arena, TG_Type, 1); type->kind = kind; @@ -488,12 +488,12 @@ tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg type->count = rdbg_type->constructed.count; type->byte_size = direct_type_byte_size * type->count; }break; - case RADDBG_TypeKind_Function: + case RADDBGI_TypeKind_Function: { U32 count = rdbg_type->constructed.count; U32 idx_run_first = rdbg_type->constructed.param_idx_run_first; U32 check_count = 0; - U32 *idx_run = raddbg_idx_run_from_first_count(rdbg, idx_run_first, count, &check_count); + U32 *idx_run = raddbgi_idx_run_from_first_count(rdbg, idx_run_first, count, &check_count); if(check_count == count) { type = push_array(arena, TG_Type, 1); @@ -507,8 +507,8 @@ tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg U32 param_type_idx = idx_run[idx]; if(param_type_idx < type_node_idx) { - RADDBG_TypeNode *param_type_node = &rdbg->type_nodes[param_type_idx]; - TG_Kind param_kind = tg_kind_from_raddbg_type_kind(param_type_node->kind); + RADDBGI_TypeNode *param_type_node = &rdbg->type_nodes[param_type_idx]; + TG_Kind param_kind = tg_kind_from_raddbgi_type_kind(param_type_node->kind); type->param_type_keys[idx] = tg_key_ext(param_kind, (U64)param_type_idx); } else @@ -518,7 +518,7 @@ tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg } } }break; - case RADDBG_TypeKind_Method: + case RADDBGI_TypeKind_Method: { // NOTE(rjf): for methods, the `direct` type points at the owner type. // the return type, instead of being encoded via the `direct` type, is @@ -526,7 +526,7 @@ tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg U32 count = rdbg_type->constructed.count; U32 idx_run_first = rdbg_type->constructed.param_idx_run_first; U32 check_count = 0; - U32 *idx_run = raddbg_idx_run_from_first_count(rdbg, idx_run_first, count, &check_count); + U32 *idx_run = raddbgi_idx_run_from_first_count(rdbg, idx_run_first, count, &check_count); if(check_count == count) { type = push_array(arena, TG_Type, 1); @@ -540,8 +540,8 @@ tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg U32 param_type_idx = idx_run[idx]; if(param_type_idx < type_node_idx) { - RADDBG_TypeNode *param_type_node = &rdbg->type_nodes[param_type_idx]; - TG_Kind param_kind = tg_kind_from_raddbg_type_kind(param_type_node->kind); + RADDBGI_TypeNode *param_type_node = &rdbg->type_nodes[param_type_idx]; + TG_Kind param_kind = tg_kind_from_raddbgi_type_kind(param_type_node->kind); type->param_type_keys[idx] = tg_key_ext(param_kind, (U64)param_type_idx); } else @@ -557,14 +557,14 @@ tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg } } }break; - case RADDBG_TypeKind_MemberPtr: + case RADDBGI_TypeKind_MemberPtr: { // rjf: unpack owner type TG_Key owner_type_key = zero_struct; if(rdbg_type->constructed.owner_type_idx < type_node_idx) { - RADDBG_TypeNode *owner_type_node = &rdbg->type_nodes[rdbg_type->constructed.owner_type_idx]; - TG_Kind owner_type_kind = tg_kind_from_raddbg_type_kind(owner_type_node->kind); + RADDBGI_TypeNode *owner_type_node = &rdbg->type_nodes[rdbg_type->constructed.owner_type_idx]; + TG_Kind owner_type_kind = tg_kind_from_raddbgi_type_kind(owner_type_node->kind); owner_type_key = tg_key_ext(owner_type_kind, (U64)rdbg_type->constructed.owner_type_idx); } type = push_array(arena, TG_Type, 1); @@ -577,19 +577,19 @@ tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg } //- rjf: alias types - else if(rdbg_type->kind == RADDBG_TypeKind_Alias) + else if(rdbg_type->kind == RADDBGI_TypeKind_Alias) { // rjf: unpack name String8 name = {0}; - name.str = raddbg_string_from_idx(rdbg, rdbg_type->user_defined.name_string_idx, &name.size); + name.str = raddbgi_string_from_idx(rdbg, rdbg_type->user_defined.name_string_idx, &name.size); // rjf: unpack direct type TG_Key direct_type_key = zero_struct; U64 direct_type_byte_size = 0; if(rdbg_type->user_defined.direct_type_idx < type_node_idx) { - RADDBG_TypeNode *direct_type_node = &rdbg->type_nodes[rdbg_type->user_defined.direct_type_idx]; - TG_Kind direct_type_kind = tg_kind_from_raddbg_type_kind(direct_type_node->kind); + RADDBGI_TypeNode *direct_type_node = &rdbg->type_nodes[rdbg_type->user_defined.direct_type_idx]; + TG_Kind direct_type_kind = tg_kind_from_raddbgi_type_kind(direct_type_node->kind); direct_type_key = tg_key_ext(direct_type_kind, (U64)rdbg_type->user_defined.direct_type_idx); direct_type_byte_size = direct_type_node->byte_size; } @@ -603,11 +603,11 @@ tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg } //- rjf: incomplete types - else if(RADDBG_TypeKind_FirstIncomplete <= rdbg_type->kind && rdbg_type->kind <= RADDBG_TypeKind_LastIncomplete) + else if(RADDBGI_TypeKind_FirstIncomplete <= rdbg_type->kind && rdbg_type->kind <= RADDBGI_TypeKind_LastIncomplete) { // rjf: unpack name String8 name = {0}; - name.str = raddbg_string_from_idx(rdbg, rdbg_type->user_defined.name_string_idx, &name.size); + name.str = raddbgi_string_from_idx(rdbg, rdbg_type->user_defined.name_string_idx, &name.size); // rjf: produce type = push_array(arena, TG_Type, 1); @@ -790,7 +790,7 @@ tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg } internal TG_Key -tg_direct_from_graph_raddbg_key(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key) +tg_direct_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key) { TG_Key result = zero_struct; switch(key.kind) @@ -800,7 +800,7 @@ tg_direct_from_graph_raddbg_key(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key case TG_KeyKind_Cons: { Temp scratch = scratch_begin(0, 0); - TG_Type *type = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); result = type->direct_type_key; scratch_end(scratch); }break; @@ -809,16 +809,16 @@ tg_direct_from_graph_raddbg_key(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key } internal TG_Key -tg_unwrapped_direct_from_graph_raddbg_key(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key) +tg_unwrapped_direct_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key) { - key = tg_unwrapped_from_graph_raddbg_key(graph, rdbg, key); - key = tg_direct_from_graph_raddbg_key(graph, rdbg, key); - key = tg_unwrapped_from_graph_raddbg_key(graph, rdbg, key); + key = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, key); + key = tg_direct_from_graph_raddbgi_key(graph, rdbg, key); + key = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, key); return key; } internal TG_Key -tg_owner_from_graph_raddbg_key(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key) +tg_owner_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key) { TG_Key result = zero_struct; switch(key.kind) @@ -828,7 +828,7 @@ tg_owner_from_graph_raddbg_key(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key) case TG_KeyKind_Cons: { Temp scratch = scratch_begin(0, 0); - TG_Type *type = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); result = type->owner_type_key; scratch_end(scratch); }break; @@ -837,14 +837,14 @@ tg_owner_from_graph_raddbg_key(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key) } internal TG_Key -tg_ptee_from_graph_raddbg_key(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key) +tg_ptee_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key) { TG_Key result = key; B32 passed_ptr = 0; for(;;) { TG_Kind kind = tg_kind_from_key(result); - result = tg_direct_from_graph_raddbg_key(graph, rdbg, result); + result = tg_direct_from_graph_raddbgi_key(graph, rdbg, result); if(kind == TG_Kind_Ptr || kind == TG_Kind_LRef || kind == TG_Kind_RRef) { passed_ptr = 1; @@ -869,7 +869,7 @@ tg_ptee_from_graph_raddbg_key(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key) } internal TG_Key -tg_unwrapped_from_graph_raddbg_key(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key) +tg_unwrapped_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key) { TG_Key result = key; for(B32 good = 1; good;) @@ -879,7 +879,7 @@ tg_unwrapped_from_graph_raddbg_key(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key kind == TG_Kind_Modifier || kind == TG_Kind_Alias) { - result = tg_direct_from_graph_raddbg_key(graph, rdbg, result); + result = tg_direct_from_graph_raddbgi_key(graph, rdbg, result); } else { @@ -890,7 +890,7 @@ tg_unwrapped_from_graph_raddbg_key(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key } internal U64 -tg_byte_size_from_graph_raddbg_key(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key) +tg_byte_size_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key) { U64 result = 0; switch(key.kind) @@ -905,7 +905,7 @@ tg_byte_size_from_graph_raddbg_key(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key case TG_KeyKind_Cons: { Temp scratch = scratch_begin(0, 0); - TG_Type *type = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); result = type->byte_size; scratch_end(scratch); }break; @@ -940,12 +940,12 @@ tg_member_copy(Arena *arena, TG_Member *src) } internal TG_MemberArray -tg_members_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key) +tg_members_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key) { TG_MemberArray result = {0}; Temp scratch = scratch_begin(&arena, 1); { - TG_Type *type = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); if(type->members != 0) { result.count = type->count; @@ -962,7 +962,7 @@ tg_members_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *r } internal TG_MemberArray -tg_data_members_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key) +tg_data_members_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key) { Temp scratch = scratch_begin(&arena, 1); TG_Kind root_type_kind = tg_kind_from_key(key); @@ -971,7 +971,7 @@ tg_data_members_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Pars TG_MemberList members_list = {0}; B32 members_need_offset_sort = 0; { - TG_Type *root_type = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, key); + TG_Type *root_type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); typedef struct Task Task; struct Task { @@ -1010,7 +1010,7 @@ tg_data_members_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Pars t->inheritance_chain = tg_key_list_copy(scratch.arena, &task->inheritance_chain); tg_key_list_push(scratch.arena, &t->inheritance_chain, type->members[member_idx].type_key); t->type_key = type->members[member_idx].type_key; - t->type = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, type->members[member_idx].type_key); + t->type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, type->members[member_idx].type_key); SLLQueuePush(first_task, last_task, t); members_need_offset_sort = 1; } @@ -1059,7 +1059,7 @@ tg_data_members_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Pars TG_Member *member = &members.v[idx]; if(idx+1 < members.count) { - U64 member_byte_size = tg_byte_size_from_graph_raddbg_key(graph, rdbg, member->type_key); + U64 member_byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, member->type_key); Rng1U64 member_byte_range = r1u64(member->off, member->off + member_byte_size); if(member[1].off > member_byte_range.max) { @@ -1106,7 +1106,7 @@ tg_data_members_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Pars } internal void -tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key, String8List *out, U32 prec, B32 skip_return) +tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key, String8List *out, U32 prec, B32 skip_return) { String8 keyword = {0}; TG_Kind kind = tg_kind_from_key(key); @@ -1115,7 +1115,7 @@ tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Ke default: { Temp scratch = scratch_begin(&arena, 1); - TG_Type *type = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); str8_list_push(arena, out, push_str8_copy(arena, type->name)); str8_list_push(arena, out, str8_lit(" ")); scratch_end(scratch); @@ -1123,14 +1123,14 @@ tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Ke case TG_Kind_Bitfield: { - TG_Key direct = tg_direct_from_graph_raddbg_key(graph, rdbg, key); + TG_Key direct = tg_direct_from_graph_raddbgi_key(graph, rdbg, key); tg_lhs_string_from_key(arena, graph, rdbg, direct, out, prec, skip_return); }break; case TG_Kind_Modifier: { Temp scratch = scratch_begin(&arena, 1); - TG_Type *type = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); TG_Key direct = type->direct_type_key; tg_lhs_string_from_key(arena, graph, rdbg, direct, out, 1, skip_return); if(type->flags & TG_Flag_Const) @@ -1156,7 +1156,7 @@ tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Ke case TG_Kind_Alias: { Temp scratch = scratch_begin(&arena, 1); - TG_Type *type = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); str8_list_push(arena, out, push_str8_copy(arena, type->name)); str8_list_push(arena, out, str8_lit(" ")); scratch_end(scratch); @@ -1169,7 +1169,7 @@ tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Ke fwd_udt:; { Temp scratch = scratch_begin(&arena, 1); - TG_Type *type = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); str8_list_push(arena, out, keyword); str8_list_push(arena, out, str8_lit(" ")); str8_list_push(arena, out, push_str8_copy(arena, type->name)); @@ -1179,7 +1179,7 @@ tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Ke case TG_Kind_Array: { - TG_Key direct = tg_direct_from_graph_raddbg_key(graph, rdbg, key); + TG_Key direct = tg_direct_from_graph_raddbgi_key(graph, rdbg, key); tg_lhs_string_from_key(arena, graph, rdbg, direct, out, 2, skip_return); if(prec == 1) { @@ -1191,7 +1191,7 @@ tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Ke { if(!skip_return) { - TG_Key direct = tg_direct_from_graph_raddbg_key(graph, rdbg, key); + TG_Key direct = tg_direct_from_graph_raddbgi_key(graph, rdbg, key); tg_lhs_string_from_key(arena, graph, rdbg, direct, out, 2, 0); } if(prec == 1) @@ -1202,21 +1202,21 @@ tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Ke case TG_Kind_Ptr: { - TG_Key direct = tg_direct_from_graph_raddbg_key(graph, rdbg, key); + TG_Key direct = tg_direct_from_graph_raddbgi_key(graph, rdbg, key); tg_lhs_string_from_key(arena, graph, rdbg, direct, out, 1, skip_return); str8_list_push(arena, out, str8_lit("*")); }break; case TG_Kind_LRef: { - TG_Key direct = tg_direct_from_graph_raddbg_key(graph, rdbg, key); + TG_Key direct = tg_direct_from_graph_raddbgi_key(graph, rdbg, key); tg_lhs_string_from_key(arena, graph, rdbg, direct, out, 1, skip_return); str8_list_push(arena, out, str8_lit("&")); }break; case TG_Kind_RRef: { - TG_Key direct = tg_direct_from_graph_raddbg_key(graph, rdbg, key); + TG_Key direct = tg_direct_from_graph_raddbgi_key(graph, rdbg, key); tg_lhs_string_from_key(arena, graph, rdbg, direct, out, 1, skip_return); str8_list_push(arena, out, str8_lit("&&")); }break; @@ -1224,10 +1224,10 @@ tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Ke case TG_Kind_MemberPtr: { Temp scratch = scratch_begin(&arena, 1); - TG_Type *type = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); TG_Key direct = type->direct_type_key; tg_lhs_string_from_key(arena, graph, rdbg, direct, out, 1, skip_return); - TG_Type *container = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, type->owner_type_key); + TG_Type *container = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, type->owner_type_key); if(container->kind != TG_Kind_Null) { str8_list_push(arena, out, push_str8_copy(arena, container->name)); @@ -1243,7 +1243,7 @@ tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Ke } internal void -tg_rhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key, String8List *out, U32 prec) +tg_rhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key, String8List *out, U32 prec) { TG_Kind kind = tg_kind_from_key(key); switch(kind) @@ -1252,7 +1252,7 @@ tg_rhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Ke case TG_Kind_Bitfield: { - TG_Key direct = tg_direct_from_graph_raddbg_key(graph, rdbg, key); + TG_Key direct = tg_direct_from_graph_raddbgi_key(graph, rdbg, key); tg_rhs_string_from_key(arena, graph, rdbg, direct, out, prec); }break; @@ -1262,14 +1262,14 @@ tg_rhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Ke case TG_Kind_RRef: case TG_Kind_MemberPtr: { - TG_Key direct = tg_direct_from_graph_raddbg_key(graph, rdbg, key); + TG_Key direct = tg_direct_from_graph_raddbgi_key(graph, rdbg, key); tg_rhs_string_from_key(arena, graph, rdbg, direct, out, 1); }break; case TG_Kind_Array: { Temp scratch = scratch_begin(&arena, 1); - TG_Type *type = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); if(prec == 1) { str8_list_push(arena, out, str8_lit(")")); @@ -1278,7 +1278,7 @@ tg_rhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Ke str8_list_push(arena, out, str8_lit("[")); str8_list_push(arena, out, count_str); str8_list_push(arena, out, str8_lit("]")); - TG_Key direct = tg_direct_from_graph_raddbg_key(graph, rdbg, key); + TG_Key direct = tg_direct_from_graph_raddbgi_key(graph, rdbg, key); tg_rhs_string_from_key(arena, graph, rdbg, direct, out, 2); scratch_end(scratch); }break; @@ -1286,7 +1286,7 @@ tg_rhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Ke case TG_Kind_Function: { Temp scratch = scratch_begin(&arena, 1); - TG_Type *type = tg_type_from_graph_raddbg_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); if(prec == 1) { str8_list_push(arena, out, str8_lit(")")); @@ -1315,7 +1315,7 @@ tg_rhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Ke } str8_list_push(arena, out, str8_lit(")")); } - TG_Key direct = tg_direct_from_graph_raddbg_key(graph, rdbg, key); + TG_Key direct = tg_direct_from_graph_raddbgi_key(graph, rdbg, key); tg_rhs_string_from_key(arena, graph, rdbg, direct, out, 2); scratch_end(scratch); }break; @@ -1323,7 +1323,7 @@ tg_rhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Ke } internal String8 -tg_string_from_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key) +tg_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key) { Temp scratch = scratch_begin(&arena, 1); String8List list = {0}; diff --git a/src/type_graph/type_graph.h b/src/type_graph/type_graph.h index 68bf9b60..9ce08056 100644 --- a/src/type_graph/type_graph.h +++ b/src/type_graph/type_graph.h @@ -203,8 +203,8 @@ internal TG_KeyList tg_key_list_copy(Arena *arena, TG_KeyList *src); //////////////////////////////// //~ rjf: RADDBG <-> TG Enum Conversions -internal TG_Kind tg_kind_from_raddbg_type_kind(RADDBG_TypeKind kind); -internal TG_MemberKind tg_member_kind_from_raddbg_member_kind(RADDBG_MemberKind kind); +internal TG_Kind tg_kind_from_raddbgi_type_kind(RADDBGI_TypeKind kind); +internal TG_MemberKind tg_member_kind_from_raddbgi_member_kind(RADDBGI_MemberKind kind); //////////////////////////////// //~ rjf: Key Type Functions @@ -225,19 +225,19 @@ internal TG_Key tg_cons_type_make(TG_Graph *graph, TG_Kind kind, TG_Key direct_t //////////////////////////////// //~ rjf: Graph Introspection API -internal TG_Type *tg_type_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key); -internal TG_Key tg_direct_from_graph_raddbg_key(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key); -internal TG_Key tg_unwrapped_direct_from_graph_raddbg_key(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key); -internal TG_Key tg_owner_from_graph_raddbg_key(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key); -internal TG_Key tg_ptee_from_graph_raddbg_key(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key); -internal TG_Key tg_unwrapped_from_graph_raddbg_key(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key); -internal U64 tg_byte_size_from_graph_raddbg_key(TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key); +internal TG_Type *tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key); +internal TG_Key tg_direct_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key); +internal TG_Key tg_unwrapped_direct_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key); +internal TG_Key tg_owner_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key); +internal TG_Key tg_ptee_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key); +internal TG_Key tg_unwrapped_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key); +internal U64 tg_byte_size_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key); internal TG_Kind tg_kind_from_key(TG_Key key); internal TG_Member *tg_member_copy(Arena *arena, TG_Member *src); -internal TG_MemberArray tg_members_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key); -internal TG_MemberArray tg_data_members_from_graph_raddbg_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key); -internal void tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key, String8List *out, U32 prec, B32 skip_return); -internal void tg_rhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key, String8List *out, U32 prec); -internal String8 tg_string_from_key(Arena *arena, TG_Graph *graph, RADDBG_Parsed *rdbg, TG_Key key); +internal TG_MemberArray tg_members_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key); +internal TG_MemberArray tg_data_members_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key); +internal void tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key, String8List *out, U32 prec, B32 skip_return); +internal void tg_rhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key, String8List *out, U32 prec); +internal String8 tg_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key); #endif // TYPE_GRAPH_NEW_H