diff --git a/build.bat b/build.bat index 153e1fb9..4db67b11 100644 --- a/build.bat +++ b/build.bat @@ -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% -DRADDBGI_GIT=\"%%i\" +for /f %%i in ('call git describe --always --dirty') do set compile=%compile% -DRADDBG_GIT=\"%%i\" :: --- Build & Run Metaprogram ------------------------------------------------ if "%no_meta%"=="1" echo [skipping metagen] diff --git a/src/codeview/codeview.h b/src/codeview/codeview.h index 07d60867..4075934c 100644 --- a/src/codeview/codeview.h +++ b/src/codeview/codeview.h @@ -27,7 +27,7 @@ read_only global CV_TypeId cv_type_id_variadic = 0xFFFFFFFF; //////////////////////////////// //~ rjf: Registers -// X(NAME, CODE, (RADDBGI_RegsiterCode_X86) NAME, BYTE_POS, BYTE_SIZE) +// X(NAME, CODE, (RDI_RegisterCode_X86) NAME, BYTE_POS, BYTE_SIZE) #define CV_Reg_X86_XList(X) \ X(NONE, 0, nil, 0, 0)\ X(AL, 1, eax, 0, 1)\ @@ -282,7 +282,7 @@ typedef enum CV_Regx86Enum } CV_Regx86Enum; -// X(NAME, CODE, (RADDBGI_RegsiterCode_X64) NAME, BYTE_POS, BYTE_SIZE) +// X(NAME, CODE, (RDI_RegisterCode_X64) NAME, BYTE_POS, BYTE_SIZE) #define CV_Reg_X64_XList(X) \ X(NONE, 0, nil, 0, 0)\ X(AL, 1, rax, 0, 1)\ diff --git a/src/ctrl/ctrl_core.c b/src/ctrl/ctrl_core.c index 767ec495..e050523a 100644 --- a/src/ctrl/ctrl_core.c +++ b/src/ctrl/ctrl_core.c @@ -204,7 +204,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); - RADDBGI_Parsed *rdbg = &dbgi->rdbg; + RDI_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) { @@ -229,16 +229,16 @@ ctrl_append_resolved_module_user_bp_traps(Arena *arena, DEMON_Handle process, DE // rjf: filename -> src_id U32 src_id = 0; { - RADDBGI_NameMap *mapptr = raddbgi_name_map_from_kind(rdbg, RADDBGI_NameMapKind_NormalSourcePaths); + RDI_NameMap *mapptr = rdi_name_map_from_kind(rdbg, RDI_NameMapKind_NormalSourcePaths); if(mapptr != 0) { - 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); + RDI_ParsedNameMap map = {0}; + rdi_name_map_parse(rdbg, mapptr, &map); + RDI_NameMapNode *node = rdi_name_map_lookup(rdbg, &map, filename_normalized.str, filename_normalized.size); if(node != 0) { U32 id_count = 0; - U32 *ids = raddbgi_matches_from_map_node(rdbg, node, &id_count); + U32 *ids = rdi_matches_from_map_node(rdbg, node, &id_count); if(id_count > 0) { src_id = ids[0]; @@ -249,11 +249,11 @@ ctrl_append_resolved_module_user_bp_traps(Arena *arena, DEMON_Handle process, DE // rjf: src_id * pt -> push { - 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); + RDI_SourceFile *src = rdi_element_from_idx(rdbg, source_files, src_id); + RDI_ParsedLineMap line_map = {0}; + rdi_line_map_from_source_file(rdbg, src, &line_map); U32 voff_count = 0; - U64 *voffs = raddbgi_line_voffs_from_num(&line_map, pt.line, &voff_count); + U64 *voffs = rdi_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; @@ -270,19 +270,19 @@ ctrl_append_resolved_module_user_bp_traps(Arena *arena, DEMON_Handle process, DE U64 voff = bp->u64; if(rdbg != 0 && rdbg->procedures != 0) { - RADDBGI_NameMap *mapptr = raddbgi_name_map_from_kind(rdbg, RADDBGI_NameMapKind_Procedures); + RDI_NameMap *mapptr = rdi_name_map_from_kind(rdbg, RDI_NameMapKind_Procedures); if(mapptr != 0) { - 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); + RDI_ParsedNameMap map = {0}; + rdi_name_map_parse(rdbg, mapptr, &map); + RDI_NameMapNode *node = rdi_name_map_lookup(rdbg, &map, symbol_name.str, symbol_name.size); if(node != 0) { U32 id_count = 0; - U32 *ids = raddbgi_matches_from_map_node(rdbg, node, &id_count); + U32 *ids = rdi_matches_from_map_node(rdbg, node, &id_count); for(U32 match_i = 0; match_i < id_count; match_i += 1) { - U64 proc_voff = raddbgi_first_voff_from_proc(rdbg, ids[match_i]); + U64 proc_voff = rdi_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); @@ -1643,21 +1643,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); - RADDBGI_Parsed *rdbg = &dbgi->rdbg; - RADDBGI_NameMap *unparsed_map = raddbgi_name_map_from_kind(rdbg, RADDBGI_NameMapKind_GlobalVariables); + RDI_Parsed *rdbg = &dbgi->rdbg; + RDI_NameMap *unparsed_map = rdi_name_map_from_kind(rdbg, RDI_NameMapKind_GlobalVariables); if(rdbg->global_variables != 0 && unparsed_map != 0) { - RADDBGI_ParsedNameMap map = {0}; - raddbgi_name_map_parse(rdbg, unparsed_map, &map); + RDI_ParsedNameMap map = {0}; + rdi_name_map_parse(rdbg, unparsed_map, &map); String8 name = str8_lit("__asan_shadow_memory_dynamic_address"); - RADDBGI_NameMapNode *node = raddbgi_name_map_lookup(rdbg, &map, name.str, name.size); + RDI_NameMapNode *node = rdi_name_map_lookup(rdbg, &map, name.str, name.size); if(node != 0) { U32 id_count = 0; - U32 *ids = raddbgi_matches_from_map_node(rdbg, node, &id_count); + U32 *ids = rdi_matches_from_map_node(rdbg, node, &id_count); if(id_count > 0) { - RADDBGI_GlobalVariable *global_var = raddbgi_element_from_idx(rdbg, global_variables, ids[0]); + RDI_GlobalVariable *global_var = rdi_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); @@ -2148,10 +2148,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); - 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); + RDI_Parsed *rdbg = &dbgi->rdbg; + RDI_NameMap *unparsed_map = rdi_name_map_from_kind(rdbg, RDI_NameMapKind_Procedures); + RDI_ParsedNameMap map = {0}; + rdi_name_map_parse(rdbg, unparsed_map, &map); //- rjf: add trap for user-specified entry point, if specified B32 entries_found = 0; @@ -2162,15 +2162,15 @@ ctrl_thread__launch_and_init(CTRL_Msg *msg) U32 procedure_id = 0; { String8 name = n->string; - RADDBGI_NameMapNode *node = raddbgi_name_map_lookup(rdbg, &map, name.str, name.size); + RDI_NameMapNode *node = rdi_name_map_lookup(rdbg, &map, name.str, name.size); U32 id_count = 0; - U32 *ids = raddbgi_matches_from_map_node(rdbg, node, &id_count); + U32 *ids = rdi_matches_from_map_node(rdbg, node, &id_count); if(id_count > 0) { procedure_id = ids[0]; } } - U64 voff = raddbgi_first_voff_from_proc(rdbg, procedure_id); + U64 voff = rdi_first_voff_from_proc(rdbg, procedure_id); if(voff != 0) { entries_found = 1; @@ -2188,15 +2188,15 @@ ctrl_thread__launch_and_init(CTRL_Msg *msg) U32 procedure_id = 0; { String8 name = n->string; - RADDBGI_NameMapNode *node = raddbgi_name_map_lookup(rdbg, &map, name.str, name.size); + RDI_NameMapNode *node = rdi_name_map_lookup(rdbg, &map, name.str, name.size); U32 id_count = 0; - U32 *ids = raddbgi_matches_from_map_node(rdbg, node, &id_count); + U32 *ids = rdi_matches_from_map_node(rdbg, node, &id_count); if(id_count > 0) { procedure_id = ids[0]; } } - U64 voff = raddbgi_first_voff_from_proc(rdbg, procedure_id); + U64 voff = rdi_first_voff_from_proc(rdbg, procedure_id); if(voff != 0) { DEMON_Trap trap = {run_ctrls.run_entities[process_idx], module_base_vaddr + voff}; @@ -2221,15 +2221,15 @@ ctrl_thread__launch_and_init(CTRL_Msg *msg) U32 procedure_id = 0; { String8 name = hi_entry_points[idx]; - RADDBGI_NameMapNode *node = raddbgi_name_map_lookup(rdbg, &map, name.str, name.size); + RDI_NameMapNode *node = rdi_name_map_lookup(rdbg, &map, name.str, name.size); U32 id_count = 0; - U32 *ids = raddbgi_matches_from_map_node(rdbg, node, &id_count); + U32 *ids = rdi_matches_from_map_node(rdbg, node, &id_count); if(id_count > 0) { procedure_id = ids[0]; } } - U64 voff = raddbgi_first_voff_from_proc(rdbg, procedure_id); + U64 voff = rdi_first_voff_from_proc(rdbg, procedure_id); if(voff != 0) { entries_found = 1; @@ -2265,15 +2265,15 @@ ctrl_thread__launch_and_init(CTRL_Msg *msg) U32 procedure_id = 0; { String8 name = lo_entry_points[idx]; - RADDBGI_NameMapNode *node = raddbgi_name_map_lookup(rdbg, &map, name.str, name.size); + RDI_NameMapNode *node = rdi_name_map_lookup(rdbg, &map, name.str, name.size); U32 id_count = 0; - U32 *ids = raddbgi_matches_from_map_node(rdbg, node, &id_count); + U32 *ids = rdi_matches_from_map_node(rdbg, node, &id_count); if(id_count > 0) { procedure_id = ids[0]; } } - U64 voff = raddbgi_first_voff_from_proc(rdbg, procedure_id); + U64 voff = rdi_first_voff_from_proc(rdbg, procedure_id); if(voff != 0) { entries_found = 1; @@ -2871,7 +2871,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); - RADDBGI_Parsed *rdbg = &dbgi->rdbg; + RDI_Parsed *rdbg = &dbgi->rdbg; for(String8Node *condition_n = conditions.first; condition_n != 0; condition_n = condition_n->next) { String8 string = condition_n->string; @@ -2883,8 +2883,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_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); + parse_ctx.locals_map = eval_push_locals_map_from_rdi_voff(temp.arena, rdbg, thread_rip_voff); + parse_ctx.member_map = eval_push_member_map_from_rdi_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 fc03ea0f..e34dcf39 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(RADDBGI_Parsed *rdbg, DBGI_FuzzySearchTarget target, U64 element_idx) +dbgi_fuzzy_item_string_from_rdbg_target_element_idx(RDI_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(RADDBGI_Parsed *rdbg, DBGI_F // NOTE(rjf): no default - warn if we miss a case case DBGI_FuzzySearchTarget_Procedures: { - RADDBGI_Procedure *proc = raddbgi_element_from_idx(rdbg, procedures, element_idx); + RDI_Procedure *proc = rdi_element_from_idx(rdbg, procedures, element_idx); U64 name_size = 0; - U8 *name_base = raddbgi_string_from_idx(rdbg, proc->name_string_idx, &name_size); + U8 *name_base = rdi_string_from_idx(rdbg, proc->name_string_idx, &name_size); result = str8(name_base, name_size); }break; case DBGI_FuzzySearchTarget_GlobalVariables: { - RADDBGI_GlobalVariable *gvar = raddbgi_element_from_idx(rdbg, global_variables, element_idx); + RDI_GlobalVariable *gvar = rdi_element_from_idx(rdbg, global_variables, element_idx); U64 name_size = 0; - U8 *name_base = raddbgi_string_from_idx(rdbg, gvar->name_string_idx, &name_size); + U8 *name_base = rdi_string_from_idx(rdbg, gvar->name_string_idx, &name_size); result = str8(name_base, name_size); }break; case DBGI_FuzzySearchTarget_ThreadVariables: { - RADDBGI_ThreadVariable *tvar = raddbgi_element_from_idx(rdbg, thread_variables, element_idx); + RDI_ThreadVariable *tvar = rdi_element_from_idx(rdbg, thread_variables, element_idx); U64 name_size = 0; - U8 *name_base = raddbgi_string_from_idx(rdbg, tvar->name_string_idx, &name_size); + U8 *name_base = rdi_string_from_idx(rdbg, tvar->name_string_idx, &name_size); result = str8(name_base, name_size); }break; case DBGI_FuzzySearchTarget_UDTs: { - 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); + RDI_UDT *udt = rdi_element_from_idx(rdbg, udts, element_idx); + RDI_TypeNode *type_node = rdi_element_from_idx(rdbg, type_nodes, udt->self_type_idx); U64 name_size = 0; - U8 *name_base = raddbgi_string_from_idx(rdbg, type_node->user_defined.name_string_idx, &name_size); + U8 *name_base = rdi_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 == RADDBGI_MAGIC_CONSTANT) + if(data.size >= 8 && *(U64 *)data.str == RDI_MAGIC_CONSTANT) { og_dbg_format_is_known = 1; og_dbg_is_raddbg = 1; @@ -838,10 +838,10 @@ dbgi_parse_thread_entry_point(void *p) 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(RADDBGI_Header) <= file_props.size) + if(sizeof(RDI_Header) <= file_props.size) { - RADDBGI_Header *header = (RADDBGI_Header*)file_base; - if(header->encoding_version != RADDBGI_ENCODING_VERSION) + RDI_Header *header = (RDI_Header*)file_base; + if(header->encoding_version != RDI_ENCODING_VERSION) { raddbgi_file_is_up_to_date = 0; } @@ -1017,14 +1017,14 @@ dbgi_parse_thread_entry_point(void *p) } //- rjf: parse raddbg info - RADDBGI_Parsed raddbgi_parsed = dbgi_parse_nil.rdbg; + RDI_Parsed rdi_parsed = dbgi_parse_nil.rdbg; U64 arch_addr_size = 8; if(do_task) { - RADDBGI_ParseStatus parse_status = raddbgi_parse((U8 *)raddbgi_file_base, raddbgi_file_props.size, &raddbgi_parsed); - if(raddbgi_parsed.top_level_info != 0) + RDI_ParseStatus parse_status = rdi_parse((U8 *)raddbgi_file_base, raddbgi_file_props.size, &rdi_parsed); + if(rdi_parsed.top_level_info != 0) { - arch_addr_size = raddbgi_addr_size_from_arch(raddbgi_parsed.top_level_info->architecture); + arch_addr_size = rdi_addr_size_from_arch(rdi_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, &raddbgi_parsed); + MemoryCopyStruct(&bin->parse.rdbg, &rdi_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); - RADDBGI_Parsed *rdbg = &dbgi->rdbg; + RDI_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(RADDBGI_Parsed, procedures); - element_name_idx_off = OffsetOf(RADDBGI_Procedure, name_string_idx); + table_ptr_off = OffsetOf(RDI_Parsed, procedures); + element_name_idx_off = OffsetOf(RDI_Procedure, name_string_idx); element_count = rdbg->procedures_count; - element_size = sizeof(RADDBGI_Procedure); + element_size = sizeof(RDI_Procedure); }break; case DBGI_FuzzySearchTarget_GlobalVariables: { - table_ptr_off = OffsetOf(RADDBGI_Parsed, global_variables); - element_name_idx_off = OffsetOf(RADDBGI_GlobalVariable, name_string_idx); + table_ptr_off = OffsetOf(RDI_Parsed, global_variables); + element_name_idx_off = OffsetOf(RDI_GlobalVariable, name_string_idx); element_count = rdbg->global_variables_count; - element_size = sizeof(RADDBGI_GlobalVariable); + element_size = sizeof(RDI_GlobalVariable); }break; case DBGI_FuzzySearchTarget_ThreadVariables: { - table_ptr_off = OffsetOf(RADDBGI_Parsed, thread_variables); - element_name_idx_off = OffsetOf(RADDBGI_ThreadVariable, name_string_idx); + table_ptr_off = OffsetOf(RDI_Parsed, thread_variables); + element_name_idx_off = OffsetOf(RDI_ThreadVariable, name_string_idx); element_count = rdbg->thread_variables_count; - element_size = sizeof(RADDBGI_ThreadVariable); + element_size = sizeof(RDI_ThreadVariable); }break; case DBGI_FuzzySearchTarget_UDTs: { - table_ptr_off = OffsetOf(RADDBGI_Parsed, udts); + table_ptr_off = OffsetOf(RDI_Parsed, udts); element_count = rdbg->udts_count; - element_size = sizeof(RADDBGI_UDT); + element_size = sizeof(RDI_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) { - RADDBGI_UDT *udt = (RADDBGI_UDT *)element; - RADDBGI_TypeNode *type_node = raddbgi_element_from_idx(rdbg, type_nodes, udt->self_type_idx); + RDI_UDT *udt = (RDI_UDT *)element; + RDI_TypeNode *type_node = rdi_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 = raddbgi_string_from_idx(rdbg, name_idx, &name_size); + U8 *name_base = rdi_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 94906ce2..0ba0f35b 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; - RADDBGI_Parsed rdbg; + RDI_Parsed rdbg; }; //////////////////////////////// @@ -341,24 +341,24 @@ global DBGI_Parse dbgi_parse_nil = 0, 0, 0, - &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, + &rdi_binary_section_nil, 1, + &rdi_file_path_node_nil, 1, + &rdi_source_file_nil, 1, + &rdi_unit_nil, 1, + &rdi_vmap_entry_nil, 1, + &rdi_type_node_nil, 1, + &rdi_udt_nil, 1, + &rdi_member_nil, 1, + &rdi_enum_member_nil, 1, + &rdi_global_variable_nil, 1, + &rdi_vmap_entry_nil, 1, + &rdi_thread_variable_nil, 1, + &rdi_procedure_nil, 1, + &rdi_scope_nil, 1, + &rdi_voff_nil, 1, + &rdi_vmap_entry_nil, 1, + &rdi_local_nil, 1, + &rdi_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(RADDBGI_Parsed *rdbg, DBGI_FuzzySearchTarget target, U64 element_idx); +internal String8 dbgi_fuzzy_item_string_from_rdbg_target_element_idx(RDI_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 c296d905..24f23489 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_raddbgi_key(parse_ctx.type_graph, parse_ctx.rdbg, eval.type_key)); + TG_Kind eval_type_kind = tg_kind_from_key(tg_unwrapped_from_graph_rdi_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); - RADDBGI_Parsed *rdbg = &dbgi->rdbg; + RDI_Parsed *rdbg = &dbgi->rdbg; if(result.size == 0 && rdbg->scope_vmap != 0) { - U64 scope_idx = raddbgi_vmap_idx_from_voff(rdbg->scope_vmap, rdbg->scope_vmap_count, voff); - RADDBGI_Scope *scope = &rdbg->scopes[scope_idx]; + U64 scope_idx = rdi_vmap_idx_from_voff(rdbg->scope_vmap, rdbg->scope_vmap_count, voff); + RDI_Scope *scope = &rdbg->scopes[scope_idx]; U64 proc_idx = scope->proc_idx; - RADDBGI_Procedure *procedure = &rdbg->procedures[proc_idx]; + RDI_Procedure *procedure = &rdbg->procedures[proc_idx]; U64 name_size = 0; - U8 *name_ptr = raddbgi_string_from_idx(rdbg, procedure->name_string_idx, &name_size); + U8 *name_ptr = rdi_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 = raddbgi_vmap_idx_from_voff(rdbg->global_vmap, rdbg->global_vmap_count, voff); - RADDBGI_GlobalVariable *global_var = &rdbg->global_variables[global_idx]; + U64 global_idx = rdi_vmap_idx_from_voff(rdbg->global_vmap, rdbg->global_vmap_count, voff); + RDI_GlobalVariable *global_var = &rdbg->global_variables[global_idx]; U64 name_size = 0; - U8 *name_ptr = raddbgi_string_from_idx(rdbg, global_var->name_string_idx, &name_size); + U8 *name_ptr = rdi_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); - RADDBGI_Parsed *rdbg = &dbgi->rdbg; + RDI_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) { - RADDBGI_NameMap *mapptr = raddbgi_name_map_from_kind(rdbg, RADDBGI_NameMapKind_NormalSourcePaths); + RDI_NameMap *mapptr = rdi_name_map_from_kind(rdbg, RDI_NameMapKind_NormalSourcePaths); if(mapptr != 0) { - 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); + RDI_ParsedNameMap map = {0}; + rdi_name_map_parse(rdbg, mapptr, &map); + RDI_NameMapNode *node = rdi_name_map_lookup(rdbg, &map, file_path_normalized.str, file_path_normalized.size); if(node != 0) { U32 id_count = 0; - U32 *ids = raddbgi_matches_from_map_node(rdbg, node, &id_count); + U32 *ids = rdi_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) { - RADDBGI_SourceFile *src = rdbg->source_files+src_id; - RADDBGI_ParsedLineMap line_map = {0}; - raddbgi_line_map_from_source_file(rdbg, src, &line_map); + RDI_SourceFile *src = rdbg->source_files+src_id; + RDI_ParsedLineMap line_map = {0}; + rdi_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 = raddbgi_line_voffs_from_num(&line_map, u32_from_u64_saturate((U64)line_num), &voff_count); + U64 *voffs = rdi_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 = 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); + U64 unit_idx = rdi_vmap_idx_from_voff(rdbg->unit_vmap, rdbg->unit_vmap_count, base_voff); + RDI_Unit *unit = &rdbg->units[unit_idx]; + RDI_ParsedLineInfo unit_line_info = {0}; + rdi_line_info_from_unit(rdbg, unit, &unit_line_info); + U64 line_info_idx = rdi_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); - RADDBGI_Parsed *rdbg = &dbgi->rdbg; + RDI_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 = 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); + U64 unit_idx = rdi_vmap_idx_from_voff(rdbg->unit_vmap, rdbg->unit_vmap_count, voff); + RDI_Unit *unit = &rdbg->units[unit_idx]; + RDI_ParsedLineInfo unit_line_info = {0}; + rdi_line_info_from_unit(rdbg, unit, &unit_line_info); + U64 line_info_idx = rdi_line_info_idx_from_voff(&unit_line_info, voff); if(line_info_idx < unit_line_info.count) { - 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]; + RDI_Line *line = &unit_line_info.lines[line_info_idx]; + RDI_Column *column = (line_info_idx < unit_line_info.col_count) ? &unit_line_info.cols[line_info_idx] : 0; + RDI_SourceFile *file = &rdbg->source_files[line->file_idx]; String8 file_normalized_full_path = {0}; - file_normalized_full_path.str = raddbgi_string_from_idx(rdbg, file->normal_full_path_string_idx, &file_normalized_full_path.size); + file_normalized_full_path.str = rdi_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); - RADDBGI_Parsed *rdbg = &dbgi->rdbg; - RADDBGI_NameMapKind name_map_kinds[] = + RDI_Parsed *rdbg = &dbgi->rdbg; + RDI_NameMapKind name_map_kinds[] = { - RADDBGI_NameMapKind_GlobalVariables, - RADDBGI_NameMapKind_Procedures, + RDI_NameMapKind_GlobalVariables, + RDI_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) { - 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); + RDI_NameMapKind name_map_kind = name_map_kinds[name_map_kind_idx]; + RDI_NameMap *name_map = rdi_name_map_from_kind(rdbg, name_map_kind); + RDI_ParsedNameMap parsed_name_map = {0}; + rdi_name_map_parse(rdbg, name_map, &parsed_name_map); + RDI_NameMapNode *node = rdi_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 = raddbgi_matches_from_map_node(rdbg, node, &num); + U32 *run = rdi_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 RADDBGI_NameMapKind_GlobalVariables: + case RDI_NameMapKind_GlobalVariables: { - RADDBGI_GlobalVariable *global_var = raddbgi_element_from_idx(rdbg, global_variables, entity_num-1); + RDI_GlobalVariable *global_var = rdi_element_from_idx(rdbg, global_variables, entity_num-1); voff = global_var->voff; }break; - case RADDBGI_NameMapKind_Procedures: + case RDI_NameMapKind_Procedures: { - 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); + RDI_Procedure *procedure = rdi_element_from_idx(rdbg, procedures, entity_num-1); + RDI_Scope *scope = rdi_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); - 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); + RDI_Parsed *rdbg = &dbgi->rdbg; + RDI_NameMap *name_map = rdi_name_map_from_kind(rdbg, RDI_NameMapKind_Types); + RDI_ParsedNameMap parsed_name_map = {0}; + rdi_name_map_parse(rdbg, name_map, &parsed_name_map); + RDI_NameMapNode *node = rdi_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 = raddbgi_matches_from_map_node(rdbg, node, &num); + U32 *run = rdi_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); - RADDBGI_Parsed *rdbg = &dbgi->rdbg; - EVAL_String2NumMap *result = eval_push_locals_map_from_raddbgi_voff(arena, rdbg, voff); + RDI_Parsed *rdbg = &dbgi->rdbg; + EVAL_String2NumMap *result = eval_push_locals_map_from_rdi_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); - RADDBGI_Parsed *rdbg = &dbgi->rdbg; - EVAL_String2NumMap *result = eval_push_member_map_from_raddbgi_voff(arena, rdbg, voff); + RDI_Parsed *rdbg = &dbgi->rdbg; + EVAL_String2NumMap *result = eval_push_member_map_from_rdi_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); - RADDBGI_Parsed *rdbg = &dbgi->rdbg; + RDI_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); - RADDBGI_Parsed *rdbg = &dbgi->rdbg; + RDI_Parsed *rdbg = &dbgi->rdbg; // rjf: file_path_normalized * rdbg -> src_id B32 good_src_id = 0; U32 src_id = 0; { - RADDBGI_NameMap *mapptr = raddbgi_name_map_from_kind(rdbg, RADDBGI_NameMapKind_NormalSourcePaths); + RDI_NameMap *mapptr = rdi_name_map_from_kind(rdbg, RDI_NameMapKind_NormalSourcePaths); if(mapptr != 0) { - 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); + RDI_ParsedNameMap map = {0}; + rdi_name_map_parse(rdbg, mapptr, &map); + RDI_NameMapNode *node = rdi_name_map_lookup(rdbg, &map, file_path_normalized.str, file_path_normalized.size); if(node != 0) { U32 id_count = 0; - U32 *ids = raddbgi_matches_from_map_node(rdbg, node, &id_count); + U32 *ids = rdi_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) { - RADDBGI_SourceFile *src = rdbg->source_files+src_id; - RADDBGI_ParsedLineMap line_map = {0}; - raddbgi_line_map_from_source_file(rdbg, src, &line_map); + RDI_SourceFile *src = rdbg->source_files+src_id; + RDI_ParsedLineMap line_map = {0}; + rdi_line_map_from_source_file(rdbg, src, &line_map); U32 voff_count = 0; - U64 *voffs = raddbgi_line_voffs_from_num(&line_map, (U32)pt.line, &voff_count); + U64 *voffs = rdi_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 = 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); + U64 unit_idx = rdi_vmap_idx_from_voff(rdbg->unit_vmap, rdbg->unit_vmap_count, base_voff); + RDI_Unit *unit = &rdbg->units[unit_idx]; + RDI_ParsedLineInfo unit_line_info = {0}; + rdi_line_info_from_unit(rdbg, unit, &unit_line_info); + U64 line_info_idx = rdi_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, RADDBGI_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, DF_Eval eval) +df_value_mode_eval_from_eval(TG_Graph *graph, RDI_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, RADDBGI_Parsed *rdbg, DF_CtrlCtx * { 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_raddbgi_key(graph, rdbg, type_key); + U64 type_byte_size = tg_byte_size_from_graph_rdi_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, RADDBGI_Parsed *rdbg, DF_CtrlCtx * case EVAL_EvalMode_Reg: { TG_Key type_key = eval.type_key; - U64 type_byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, type_key); + U64 type_byte_size = tg_byte_size_from_graph_rdi_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, RADDBGI_Parsed *rdbg, DF_CtrlCtx * } internal DF_Eval -df_dynamically_typed_eval_from_eval(TG_Graph *graph, RADDBGI_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, DF_Eval eval) +df_dynamically_typed_eval_from_eval(TG_Graph *graph, RDI_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, RADDBGI_Parsed *rdbg, DF_Ct 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_raddbgi_key(graph, rdbg, type_key); + TG_Key ptee_type_key = tg_unwrapped_direct_from_graph_rdi_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_raddbgi_key(scratch.arena, graph, rdbg, ptee_type_key); + TG_Type *ptee_type = tg_type_from_graph_rdi_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, RADDBGI_Parsed *rdbg, DF_Ct 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 = 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) + U64 global_idx = rdi_vmap_idx_from_voff(rdbg->global_vmap, rdbg->global_vmap_count, vtable_voff); + RDI_GlobalVariable *global_var = rdi_element_from_idx(rdbg, global_variables, global_idx); + if(global_var->link_flags & RDI_LinkFlag_TypeScoped) { - 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); + RDI_UDT *udt = rdi_element_from_idx(rdbg, udts, global_var->container_idx); + RDI_TypeNode *type = rdi_element_from_idx(rdbg, type_nodes, udt->self_type_idx); + TG_Key derived_type_key = tg_key_ext(tg_kind_from_rdi_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, RADDBGI_Parsed *rdbg, DF_EvalVizStringFlags flags, U32 radix, DF_Eval eval) +df_string_from_simple_typed_eval(Arena *arena, TG_Graph *graph, RDI_Parsed *rdbg, DF_EvalVizStringFlags flags, U32 radix, DF_Eval eval) { ProfBeginFunction(); String8 result = {0}; - TG_Key type_key = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, eval.type_key); + TG_Key type_key = tg_unwrapped_from_graph_rdi_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_raddbgi_key(graph, rdbg, type_key); + U64 type_byte_size = tg_byte_size_from_graph_rdi_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, RADDBGI_Parsed * case TG_Kind_Enum: { Temp scratch = scratch_begin(&arena, 1); - TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, type_key); + TG_Type *type = tg_type_from_graph_rdi_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, RADDBGI_Parsed * //- rjf: writing values back to child processes internal B32 -df_commit_eval_value(TG_Graph *graph, RADDBGI_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, DF_Eval dst_eval, DF_Eval src_eval) +df_commit_eval_value(TG_Graph *graph, RDI_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, RADDBGI_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_raddbgi_key(graph, rdbg, dst_type_key); - U64 src_type_byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, src_type_key); + U64 dst_type_byte_size = tg_byte_size_from_graph_rdi_key(graph, rdbg, dst_type_key); + U64 src_type_byte_size = tg_byte_size_from_graph_rdi_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, RADDBGI_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, RDI_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_raddbgi_key(parse_ctx->type_graph, parse_ctx->rdbg, eval.type_key); + TG_Key eval_type_key = tg_unwrapped_from_graph_rdi_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_raddbgi_key(parse_ctx->type_graph, parse_ctx->rdbg, eval_type_key); + TG_Key direct_type_key = tg_ptee_from_graph_rdi_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_raddbgi_key(scratch.arena, parse_ctx->type_graph, parse_ctx->rdbg, udt_eval.type_key); + TG_MemberArray data_members = tg_data_members_from_graph_rdi_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_raddbgi_key(scratch.arena, parse_ctx->type_graph, parse_ctx->rdbg, udt_eval.type_key); + TG_Type *type = tg_type_from_graph_rdi_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_raddbgi_key(scratch.arena, parse_ctx->type_graph, parse_ctx->rdbg, udt_eval.type_key); + TG_MemberArray data_members = tg_data_members_from_graph_rdi_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_raddbgi_key(parse_ctx->type_graph, parse_ctx->rdbg, link_member->type_key); + link_member_ptee_type_key = tg_ptee_from_graph_rdi_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_raddbgi_key(scratch.arena, parse_ctx->type_graph, parse_ctx->rdbg, arr_eval.type_key); + TG_Type *array_type = tg_type_from_graph_rdi_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_raddbgi_key(parse_ctx->type_graph, parse_ctx->rdbg, element_type_key); + U64 element_type_byte_size = tg_byte_size_from_graph_rdi_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_raddbgi_key(parse_ctx->type_graph, parse_ctx->rdbg, t)) + for(TG_Key t = eval.type_key;; t = tg_unwrapped_direct_from_graph_rdi_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 85d27da0..e2d24277 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, 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_value_mode_eval_from_eval(TG_Graph *graph, RDI_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, DF_Eval eval); +internal DF_Eval df_dynamically_typed_eval_from_eval(TG_Graph *graph, RDI_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, RADDBGI_Parsed *rdbg, DF_EvalVizStringFlags flags, U32 radix, DF_Eval eval); +internal String8 df_string_from_simple_typed_eval(Arena *arena, TG_Graph *graph, RDI_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, RADDBGI_Parsed *rdbg, DF_CtrlCtx *ctrl_ctx, DF_Eval dst_eval, DF_Eval src_eval); +internal B32 df_commit_eval_value(TG_Graph *graph, RDI_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, RADDBGI_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, RDI_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 b59ddc60..7c3d640d 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 raddbgi_path = task->name; - String8 raddbgi_name = str8_skip_last_slash(raddbgi_path); - String8 task_text = push_str8f(scratch.arena, "Creating %S...", raddbgi_name); + String8 rdi_path = task->name; + String8 rdi_name = str8_skip_last_slash(rdi_path); + String8 task_text = push_str8f(scratch.arena, "Creating %S...", rdi_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(raddbgi_path); + ui_label(rdi_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_raddbgi_key(parse_ctx.type_graph, parse_ctx.rdbg, row->eval.type_key); + U64 size = tg_byte_size_from_graph_rdi_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, 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) +df_single_line_eval_value_strings_from_eval(Arena *arena, DF_EvalVizStringFlags flags, TG_Graph *graph, RDI_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_raddbgi_key(graph, rdbg, opt_member->type_key); + U64 member_byte_size = tg_byte_size_from_graph_rdi_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_raddbgi_key(graph, rdbg, eval.type_key); + U64 byte_size = tg_byte_size_from_graph_rdi_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_raddbgi_key(graph, rdbg, eval.type_key)); + TG_Kind eval_type_kind = tg_kind_from_key(tg_unwrapped_from_graph_rdi_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_raddbgi_key(graph, rdbg, eval.type_key); + TG_Key direct_type_key = tg_ptee_from_graph_rdi_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_raddbgi_key(scratch.arena, graph, rdbg, eval.type_key); + TG_Type *eval_type = tg_type_from_graph_rdi_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_raddbgi_key(graph, rdbg, direct_type_key); + U64 direct_type_byte_size = tg_byte_size_from_graph_rdi_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_raddbgi_key(scratch.arena, graph, rdbg, eval.type_key); + TG_MemberArray data_members = tg_data_members_from_graph_rdi_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_raddbgi_key(scratch.arena, parse_ctx->type_graph, parse_ctx->rdbg, block->eval.type_key); + TG_MemberArray data_members = tg_data_members_from_graph_rdi_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_raddbgi_key(scratch.arena, parse_ctx->type_graph, parse_ctx->rdbg, block->eval.type_key); + TG_Type *type = tg_type_from_graph_rdi_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_raddbgi_key(parse_ctx->type_graph, parse_ctx->rdbg, block->eval.type_key); + TG_Key direct_type_key = tg_unwrapped_direct_from_graph_rdi_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_raddbgi_key(parse_ctx->type_graph, parse_ctx->rdbg, direct_type_key); + U64 direct_type_key_byte_size = tg_byte_size_from_graph_rdi_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 36d5b226..cb2637d9 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, 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 String8List df_single_line_eval_value_strings_from_eval(Arena *arena, DF_EvalVizStringFlags flags, TG_Graph *graph, RDI_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 0a6ddbf4..cb43eda3 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, RADDBGI_Parsed *raddbg, DF_Entity *process) +df_view_rule_hooks__rgba_from_eval(DF_Eval eval, TG_Graph *graph, RDI_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, RADDBGI_Parsed case TG_Kind_Array: if(eval.mode == EVAL_EvalMode_Addr) { - U64 array_total_size = tg_byte_size_from_graph_raddbgi_key(graph, raddbg, type_key); + U64 array_total_size = tg_byte_size_from_graph_rdi_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_raddbgi_key(graph, raddbg, type_key); + TG_Key element_type_key = tg_unwrapped_direct_from_graph_rdi_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_raddbgi_key(graph, raddbg, element_type_key); + U64 element_type_size = tg_byte_size_from_graph_rdi_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, RADDBGI_Parsed case TG_Kind_Union: if(eval.mode == EVAL_EvalMode_Addr) { - U64 struct_total_size = tg_byte_size_from_graph_raddbgi_key(graph, raddbg, type_key); + U64 struct_total_size = tg_byte_size_from_graph_rdi_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_raddbgi_key(scratch.arena, graph, raddbg, type_key); + TG_Type *type = tg_type_from_graph_rdi_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, RADDBGI_Parsed } internal void -df_view_rule_hooks__eval_commit_rgba(DF_Eval eval, TG_Graph *graph, RADDBGI_Parsed *raddbg, DF_CtrlCtx *ctrl_ctx, Vec4F32 rgba) +df_view_rule_hooks__eval_commit_rgba(DF_Eval eval, TG_Graph *graph, RDI_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, RADDBGI_Pars case TG_Kind_Array: if(eval.mode == EVAL_EvalMode_Addr) { - U64 array_total_size = tg_byte_size_from_graph_raddbgi_key(graph, raddbg, type_key); + U64 array_total_size = tg_byte_size_from_graph_rdi_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_raddbgi_key(graph, raddbg, type_key); + TG_Key element_type_key = tg_unwrapped_direct_from_graph_rdi_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_raddbgi_key(graph, raddbg, element_type_key); + U64 element_type_size = tg_byte_size_from_graph_rdi_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, RADDBGI_Pars case TG_Kind_Union: if(eval.mode == EVAL_EvalMode_Addr) { - U64 struct_total_size = tg_byte_size_from_graph_raddbgi_key(graph, raddbg, type_key); + U64 struct_total_size = tg_byte_size_from_graph_rdi_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_raddbgi_key(scratch.arena, graph, raddbg, type_key); + TG_Type *type = tg_type_from_graph_rdi_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_raddbgi_key(parse_ctx->type_graph, parse_ctx->rdbg, type_key); + TG_Key pointee = tg_ptee_from_graph_rdi_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_raddbgi_key(parse_ctx->type_graph, parse_ctx->rdbg, type_key); + U64 type_size_bytes = tg_byte_size_from_graph_rdi_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 9b2f578b..c57d9ca4 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, 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 Vec4F32 df_view_rule_hooks__rgba_from_eval(DF_Eval eval, TG_Graph *graph, RDI_Parsed *raddbg, DF_Entity *process); +internal void df_view_rule_hooks__eval_commit_rgba(DF_Eval eval, TG_Graph *graph, RDI_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 808ebd2d..c6424a10 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); - RADDBGI_Parsed *rdbg = &dbgi->rdbg; + RDI_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_raddbgi_key(parse_ctx.type_graph, parse_ctx.rdbg, row->eval.type_key); + U64 size = tg_byte_size_from_graph_rdi_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_raddbgi_key(parse_ctx.type_graph, parse_ctx.rdbg, row->eval.type_key)); + U64 next_off = (row->eval.offset + tg_byte_size_from_graph_rdi_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); - RADDBGI_Parsed *rdbg = &dbgi->rdbg; + RDI_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)) { - RADDBGI_Procedure *procedure = raddbgi_element_from_idx(rdbg, procedures, items.v[0].idx); + RDI_Procedure *procedure = rdi_element_from_idx(rdbg, procedures, items.v[0].idx); U64 name_size = 0; - U8 *name_base = raddbgi_string_from_idx(rdbg, procedure->name_string_idx, &name_size); + U8 *name_base = rdi_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]; - RADDBGI_Procedure *procedure = raddbgi_element_from_idx(rdbg, procedures, item->idx); + RDI_Procedure *procedure = rdi_element_from_idx(rdbg, procedures, item->idx); U64 name_size = 0; - U8 *name_base = raddbgi_string_from_idx(rdbg, procedure->name_string_idx, &name_size); + U8 *name_base = rdi_string_from_idx(rdbg, procedure->name_string_idx, &name_size); String8 name = str8(name_base, name_size); - 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); + RDI_TypeNode *type_node = rdi_element_from_idx(rdbg, type_nodes, procedure->type_idx); + TG_Key type_key = tg_key_ext(tg_kind_from_rdi_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); - RADDBGI_Parsed *rdbg = parse_ctx.rdbg; + RDI_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_raddbgi_key(parse_ctx.type_graph, rdbg, local_eval.type_key); + U64 local_eval_type_size = tg_byte_size_from_graph_rdi_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 b1fd0409..afcd9812 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 = raddbgi_eval_opcode_ctrlbits[opcode]; - U64 extra_byte_count = RADDBGI_DECODEN_FROM_CTRLBITS(ctrlbits); + U8 ctrlbits = rdi_eval_opcode_ctrlbits[opcode]; + U64 extra_byte_count = RDI_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, RADDBGI_EvalOp opcode, U64 p){ - U8 ctrlbits = raddbgi_eval_opcode_ctrlbits[opcode]; - U32 p_size = RADDBGI_DECODEN_FROM_CTRLBITS(ctrlbits); +eval_oplist_push_op(Arena *arena, EVAL_OpList *list, RDI_EvalOp opcode, U64 p){ + U8 ctrlbits = rdi_eval_opcode_ctrlbits[opcode]; + U32 p_size = RDI_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, RADDBGI_EvalOp opcode, U64 internal void eval_oplist_push_uconst(Arena *arena, EVAL_OpList *list, U64 x){ if (x <= 0xFF){ - eval_oplist_push_op(arena, list, RADDBGI_EvalOp_ConstU8, x); + eval_oplist_push_op(arena, list, RDI_EvalOp_ConstU8, x); } else if (x <= 0xFFFF){ - eval_oplist_push_op(arena, list, RADDBGI_EvalOp_ConstU16, x); + eval_oplist_push_op(arena, list, RDI_EvalOp_ConstU16, x); } else if (x <= 0xFFFFFFFF){ - eval_oplist_push_op(arena, list, RADDBGI_EvalOp_ConstU32, x); + eval_oplist_push_op(arena, list, RDI_EvalOp_ConstU32, x); } else{ - eval_oplist_push_op(arena, list, RADDBGI_EvalOp_ConstU64, x); + eval_oplist_push_op(arena, list, RDI_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, RADDBGI_EvalOp_ConstU8, (U64)x); - eval_oplist_push_op(arena, list, RADDBGI_EvalOp_TruncSigned, 8); + eval_oplist_push_op(arena, list, RDI_EvalOp_ConstU8, (U64)x); + eval_oplist_push_op(arena, list, RDI_EvalOp_TruncSigned, 8); } else if (-0x8000 <= x && x <= 0x7FFF){ - eval_oplist_push_op(arena, list, RADDBGI_EvalOp_ConstU16, (U64)x); - eval_oplist_push_op(arena, list, RADDBGI_EvalOp_TruncSigned, 16); + eval_oplist_push_op(arena, list, RDI_EvalOp_ConstU16, (U64)x); + eval_oplist_push_op(arena, list, RDI_EvalOp_TruncSigned, 16); } else if (-0x80000000ll <= x && x <= 0x7FFFFFFFll){ - eval_oplist_push_op(arena, list, RADDBGI_EvalOp_ConstU32, (U64)x); - eval_oplist_push_op(arena, list, RADDBGI_EvalOp_TruncSigned, 32); + eval_oplist_push_op(arena, list, RDI_EvalOp_ConstU32, (U64)x); + eval_oplist_push_op(arena, list, RDI_EvalOp_TruncSigned, 32); } else{ - eval_oplist_push_op(arena, list, RADDBGI_EvalOp_ConstU64, (U64)x); + eval_oplist_push_op(arena, list, RDI_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 RADDBGI_EvalOp +internal RDI_EvalOp eval_opcode_from_expr_kind(EVAL_ExprKind kind){ - RADDBGI_EvalOp result = RADDBGI_EvalOp_Stop; + RDI_EvalOp result = RDI_EvalOp_Stop; switch (kind){ - 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; + case EVAL_ExprKind_Neg: result = RDI_EvalOp_Neg; break; + case EVAL_ExprKind_LogNot: result = RDI_EvalOp_LogNot; break; + case EVAL_ExprKind_BitNot: result = RDI_EvalOp_BitNot; break; + case EVAL_ExprKind_Mul: result = RDI_EvalOp_Mul; break; + case EVAL_ExprKind_Div: result = RDI_EvalOp_Div; break; + case EVAL_ExprKind_Mod: result = RDI_EvalOp_Mod; break; + case EVAL_ExprKind_Add: result = RDI_EvalOp_Add; break; + case EVAL_ExprKind_Sub: result = RDI_EvalOp_Sub; break; + case EVAL_ExprKind_LShift: result = RDI_EvalOp_LShift; break; + case EVAL_ExprKind_RShift: result = RDI_EvalOp_RShift; break; + case EVAL_ExprKind_Less: result = RDI_EvalOp_Less; break; + case EVAL_ExprKind_LsEq: result = RDI_EvalOp_LsEq; break; + case EVAL_ExprKind_Grtr: result = RDI_EvalOp_Grtr; break; + case EVAL_ExprKind_GrEq: result = RDI_EvalOp_GrEq; break; + case EVAL_ExprKind_EqEq: result = RDI_EvalOp_EqEq; break; + case EVAL_ExprKind_NtEq: result = RDI_EvalOp_NtEq; break; + case EVAL_ExprKind_BitAnd: result = RDI_EvalOp_BitAnd; break; + case EVAL_ExprKind_BitXor: result = RDI_EvalOp_BitXor; break; + case EVAL_ExprKind_BitOr: result = RDI_EvalOp_BitOr; break; + case EVAL_ExprKind_LogAnd: result = RDI_EvalOp_LogAnd; break; + case EVAL_ExprKind_LogOr: result = RDI_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 RADDBGI_EvalTypeGroup +internal RDI_EvalTypeGroup eval_type_group_from_kind(TG_Kind kind){ - RADDBGI_EvalTypeGroup result = 0; + RDI_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 = RADDBGI_EvalTypeGroup_Other; break; + result = RDI_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 = RADDBGI_EvalTypeGroup_U; break; + result = RDI_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 = RADDBGI_EvalTypeGroup_S; break; + result = RDI_EvalTypeGroup_S; break; case TG_Kind_F32: - result = RADDBGI_EvalTypeGroup_F32; break; + result = RDI_EvalTypeGroup_F32; break; case TG_Kind_F64: - result = RADDBGI_EvalTypeGroup_F64; break; + result = RDI_EvalTypeGroup_F64; break; } return(result); } internal TG_Key -eval_type_unwrap_enum(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key) +eval_type_unwrap_enum(TG_Graph *graph, RDI_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, RADDBGI_Parsed *rdbg, TG_Key key) TG_Kind kind = tg_kind_from_key(key); if(kind == TG_Kind_Enum) { - result = tg_direct_from_graph_raddbgi_key(graph, rdbg, result); + result = tg_direct_from_graph_rdi_key(graph, rdbg, result); } else { @@ -350,7 +350,7 @@ 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){ +eval_type_promote(TG_Graph *graph, RDI_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, RADDBGI_Parsed *rdbg, TG_Key key){ } internal TG_Key -eval_type_coerce(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key l, TG_Key r){ +eval_type_coerce(TG_Graph *graph, RDI_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, RADDBGI_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){ +eval_type_match(TG_Graph *graph, RDI_Parsed *rdbg, TG_Key l, TG_Key r){ B32 result = 0; // unwrap - TG_Key lu = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, l); - TG_Key ru = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, r); + TG_Key lu = tg_unwrapped_from_graph_rdi_key(graph, rdbg, l); + TG_Key ru = tg_unwrapped_from_graph_rdi_key(graph, rdbg, r); if (tg_key_match(lu, ru)){ result = 1; @@ -408,8 +408,8 @@ eval_type_match(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key l, TG_Key r){ case TG_Kind_LRef: case TG_Kind_RRef: { - 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 lud = tg_direct_from_graph_rdi_key(graph, rdbg, lu); + TG_Key rud = tg_direct_from_graph_rdi_key(graph, rdbg, ru); if (eval_type_match(graph, rdbg, lud, rud)){ result = 1; } @@ -417,10 +417,10 @@ eval_type_match(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key l, TG_Key r){ case TG_Kind_MemberPtr: { - 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); + TG_Key lud = tg_direct_from_graph_rdi_key(graph, rdbg, lu); + TG_Key rud = tg_direct_from_graph_rdi_key(graph, rdbg, ru); + TG_Key luo = tg_owner_from_graph_rdi_key(graph, rdbg, lu); + TG_Key ruo = tg_owner_from_graph_rdi_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, RADDBGI_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_raddbgi_key(scratch.arena, graph, rdbg, l); - TG_Type *rt = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, r); + TG_Type *lt = tg_type_from_graph_rdi_key(scratch.arena, graph, rdbg, l); + TG_Type *rt = tg_type_from_graph_rdi_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, RADDBGI_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_raddbgi_key(scratch.arena, graph, rdbg, l); - TG_Type *rt = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, r); + TG_Type *lt = tg_type_from_graph_rdi_key(scratch.arena, graph, rdbg, l); + TG_Type *rt = tg_type_from_graph_rdi_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, RADDBGI_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_raddbgi_key(scratch.arena, graph, rdbg, l); - TG_Type *rt = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, r); + TG_Type *lt = tg_type_from_graph_rdi_key(scratch.arena, graph, rdbg, l); + TG_Type *rt = tg_type_from_graph_rdi_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 - RADDBGI_EvalOp op = RADDBGI_EvalOp_ConstU64; + RDI_EvalOp op = RDI_EvalOp_ConstU64; if (v < 0x100){ - op = RADDBGI_EvalOp_ConstU8; + op = RDI_EvalOp_ConstU8; } else if (v < 0x10000){ - op = RADDBGI_EvalOp_ConstU16; + op = RDI_EvalOp_ConstU16; } else if (v < 0x100000000){ - op = RADDBGI_EvalOp_ConstU32; + op = RDI_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, RADDBGI_EvalOp op, - RADDBGI_EvalTypeGroup group, EVAL_IRTree *c){ +eval_irtree_unary_op(Arena *arena, RDI_EvalOp op, + RDI_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, RADDBGI_EvalOp op, } internal EVAL_IRTree* -eval_irtree_binary_op(Arena *arena, RADDBGI_EvalOp op, RADDBGI_EvalTypeGroup group, +eval_irtree_binary_op(Arena *arena, RDI_EvalOp op, RDI_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, RADDBGI_EvalOp op, RADDBGI_EvalTypeGroup gro } internal EVAL_IRTree* -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); +eval_irtree_binary_op_u(Arena *arena, RDI_EvalOp op, EVAL_IRTree *l, EVAL_IRTree *r){ + EVAL_IRTree *result = eval_irtree_binary_op(arena, op, RDI_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 = RADDBGI_EvalOp_Cond; + result->op = RDI_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, 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_mem_read_type(Arena *arena, TG_Graph *graph, RDI_Parsed *rdbg, EVAL_IRTree *c, TG_Key type_key){ + U64 byte_size = tg_byte_size_from_graph_rdi_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 = RADDBGI_EvalOp_MemRead; + read_node->op = RDI_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, RADDBGI_Parsed *rdbg, E 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 = RADDBGI_EvalOp_TruncSigned; + with_trunc->op = RDI_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, RADDBGI_Parsed *rdbg, E } internal EVAL_IRTree* -eval_irtree_convert_lo(Arena *arena, EVAL_IRTree *c, RADDBGI_EvalTypeGroup out, RADDBGI_EvalTypeGroup in){ +eval_irtree_convert_lo(Arena *arena, EVAL_IRTree *c, RDI_EvalTypeGroup out, RDI_EvalTypeGroup in){ EVAL_IRTree *result = push_array(arena, EVAL_IRTree, 1); - result->op = RADDBGI_EvalOp_Convert; + result->op = RDI_EvalOp_Convert; result->p = in | (out << 8); result->children[0] = c; return(result); } internal EVAL_IRTree* -eval_irtree_trunc(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, EVAL_IRTree *c, TG_Key type_key){ +eval_irtree_trunc(Arena *arena, TG_Graph *graph, RDI_Parsed *rdbg, EVAL_IRTree *c, TG_Key type_key){ EVAL_IRTree *result = c; - U64 byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, type_key); + U64 byte_size = tg_byte_size_from_graph_rdi_key(graph, rdbg, type_key); if (byte_size < 64){ - RADDBGI_EvalOp op = RADDBGI_EvalOp_Trunc; + RDI_EvalOp op = RDI_EvalOp_Trunc; TG_Kind kind = tg_kind_from_key(type_key); if (eval_kind_is_signed(kind)){ - op = RADDBGI_EvalOp_TruncSigned; + op = RDI_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, RADDBGI_Parsed *rdbg, EVAL_IRTr } internal EVAL_IRTree* -eval_irtree_convert_hi(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, EVAL_IRTree *c, TG_Key out, TG_Key in){ +eval_irtree_convert_hi(Arena *arena, TG_Graph *graph, RDI_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 = raddbgi_eval_conversion_rule(in_group, out_group); - if(conversion_rule == RADDBGI_EvalConversionKind_Legal) + U32 conversion_rule = rdi_eval_conversion_rule(in_group, out_group); + if(conversion_rule == RDI_EvalConversionKind_Legal) { result = eval_irtree_convert_lo(arena, result, out_group, in_group); } - 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); + U64 in_byte_size = tg_byte_size_from_graph_rdi_key(graph, rdbg, in); + U64 out_byte_size = tg_byte_size_from_graph_rdi_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, RADDBGI_Parsed *rdbg, EVAL } internal EVAL_IRTree* -eval_irtree_resolve_to_value(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, EVAL_EvalMode from_mode, +eval_irtree_resolve_to_value(Arena *arena, TG_Graph *graph, RDI_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, RADDBGI_Parsed *rdbg }break; case EVAL_EvalMode_Reg: { - result = eval_irtree_unary_op(arena, RADDBGI_EvalOp_RegReadDyn, RADDBGI_EvalTypeGroup_U, tree); + result = eval_irtree_unary_op(arena, RDI_EvalOp_RegReadDyn, RDI_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, RADDBGI_Parsed *rdbg, EVAL_Expr *expr, EVAL_ErrorList *eout){ +eval_type_from_type_expr(Arena *arena, TG_Graph *graph, RDI_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, RADDBGI_Parsed *rdbg, EV } 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) +eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RDI_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, RADDBGI_Parsed *rd 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_raddbgi_key(graph, rdbg, l.type_key); - TG_Key r_restype = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, r.type_key); + TG_Key l_restype = tg_unwrapped_from_graph_rdi_key(graph, rdbg, l.type_key); + TG_Key r_restype = tg_unwrapped_from_graph_rdi_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, RADDBGI_Parsed *rd eval_errorf(arena, eout, EVAL_ErrorKind_MalformedInput, exprr->location, "Cannot index with this type."); } else{ - 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); + direct_type = tg_unwrapped_direct_from_graph_rdi_key(graph, rdbg, l_restype); + direct_type_size = tg_byte_size_from_graph_rdi_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, RADDBGI_Parsed *rd 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, RADDBGI_EvalOp_Mul, index_tree, const_tree); + index_tree = eval_irtree_binary_op_u(arena, RDI_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, RADDBGI_Parsed *rd } // how to compute the final address - EVAL_IRTree *new_tree = eval_irtree_binary_op_u(arena, RADDBGI_EvalOp_Add, index_tree, base_tree); + EVAL_IRTree *new_tree = eval_irtree_binary_op_u(arena, RDI_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, RADDBGI_Parsed *rd 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_raddbgi_key(graph, rdbg, l.type_key); + TG_Key l_restype = tg_unwrapped_from_graph_rdi_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_raddbgi_key(graph, rdbg, l_restype); + check_type_key = tg_unwrapped_direct_from_graph_rdi_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, RADDBGI_Parsed *rd if (l_good && r_good){ Temp scratch = scratch_begin(&arena, 1); - TG_MemberArray check_type_members = tg_data_members_from_graph_raddbgi_key(scratch.arena, graph, rdbg, check_type_key); + TG_MemberArray check_type_members = tg_data_members_from_graph_rdi_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, RADDBGI_Parsed *rd } if (r_off != 0){ EVAL_IRTree *const_tree = eval_irtree_const_u(arena, r_off); - new_tree = eval_irtree_binary_op_u(arena, RADDBGI_EvalOp_Add, new_tree, const_tree); + new_tree = eval_irtree_binary_op_u(arena, RDI_EvalOp_Add, new_tree, const_tree); } // fill result @@ -978,10 +978,10 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd 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_raddbgi_key(graph, rdbg, c.type_key); + TG_Key c_restype = tg_unwrapped_from_graph_rdi_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_raddbgi_key(graph, rdbg, c_restype); - U64 c_restype_direct_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, c_restype_direct); + TG_Key c_restype_direct = tg_unwrapped_direct_from_graph_rdi_key(graph, rdbg, c_restype); + U64 c_restype_direct_size = tg_byte_size_from_graph_rdi_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, RADDBGI_Parsed *rd 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_raddbgi_key(graph, rdbg, c.type_key); + TG_Key c_restype = tg_unwrapped_from_graph_rdi_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, RADDBGI_Parsed *rd if(cast_type_kind != TG_Kind_Null && c.tree->op != 0) { - TG_Key c_restype = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, c.type_key); + TG_Key c_restype = tg_unwrapped_from_graph_rdi_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_raddbgi_key(graph, rdbg, c_restype); - U64 cast_type_byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, cast_type_key); + U64 c_restype_byte_size = tg_byte_size_from_graph_rdi_key(graph, rdbg, c_restype); + U64 cast_type_byte_size = tg_byte_size_from_graph_rdi_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); - RADDBGI_EvalConversionKind conversion_rule = raddbgi_eval_conversion_rule(in_group, out_group); + RDI_EvalConversionKind conversion_rule = rdi_eval_conversion_rule(in_group, out_group); // generate tree switch(conversion_rule) { - case RADDBGI_EvalConversionKind_Noop: - case RADDBGI_EvalConversionKind_Legal: + case RDI_EvalConversionKind_Noop: + case RDI_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 == RADDBGI_EvalConversionKind_Legal){ + if (conversion_rule == RDI_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, RADDBGI_Parsed *rd default: { String8 text = str8_lit("(internal) unknown conversion rule"); - if (conversion_rule < RADDBGI_EvalConversionKind_COUNT){ - text.str = raddbgi_eval_conversion_message(conversion_rule, &text.size); + if (conversion_rule < RDI_EvalConversionKind_COUNT){ + text.str = rdi_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, RADDBGI_Parsed *rd 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_raddbgi_key(graph, rdbg, type_key); + size = tg_byte_size_from_graph_rdi_key(graph, rdbg, type_key); } // generate ir tree @@ -1162,15 +1162,15 @@ eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd 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_raddbgi_key(graph, rdbg, c.type_key); + TG_Key c_restype = tg_unwrapped_from_graph_rdi_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; - RADDBGI_EvalOp op = eval_opcode_from_expr_kind(kind); + RDI_EvalOp op = eval_opcode_from_expr_kind(kind); U8 c_group = eval_type_group_from_kind(c_restype_kind); - if (!raddbgi_eval_opcode_type_compatible(op, c_group)){ + if (!rdi_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, RADDBGI_Parsed *rd 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_raddbgi_key(graph, rdbg, l.type_key); - TG_Key r_restype = tg_unwrapped_from_graph_raddbgi_key(graph, rdbg, r.type_key); + TG_Key l_restype = tg_unwrapped_from_graph_rdi_key(graph, rdbg, l.type_key); + TG_Key r_restype = tg_unwrapped_from_graph_rdi_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, RADDBGI_Parsed *rd r_restype_kind = tg_kind_from_key(r_restype); } - RADDBGI_EvalOp op = eval_opcode_from_expr_kind(kind); + RDI_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, RADDBGI_Parsed *rd arith_path = EVAL_ArithPath_PtrAdd; } if (l_is_pointer_like && r_is_pointer_like){ - 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); + TG_Key l_restype_direct = tg_unwrapped_direct_from_graph_rdi_key(graph, rdbg, l_restype); + TG_Key r_restype_direct = tg_unwrapped_direct_from_graph_rdi_key(graph, rdbg, r_restype); + U64 l_restype_direct_byte_size = tg_byte_size_from_graph_rdi_key(graph, rdbg, l_restype_direct); + U64 r_restype_direct_byte_size = tg_byte_size_from_graph_rdi_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, RADDBGI_Parsed *rd U8 cv_group = eval_type_group_from_kind(cv_type_kind); B32 can_generate = 0; - if (raddbgi_eval_opcode_type_compatible(op, cv_group)){ + if (rdi_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, RADDBGI_Parsed *rd ptr_is_decay = r_is_decay; } - 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); + TG_Key direct = tg_unwrapped_direct_from_graph_rdi_key(graph, rdbg, ptr->type_key); + U64 direct_type_size = tg_byte_size_from_graph_rdi_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, RADDBGI_Parsed *rd 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, RADDBGI_EvalOp_Mul, integer_tree, const_tree); + integer_tree = eval_irtree_binary_op_u(arena, RDI_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, RADDBGI_Parsed *rd ptr_type = tg_cons_type_make(graph, TG_Kind_Ptr, direct, 0); } - EVAL_IRTree *new_tree = eval_irtree_binary_op(arena, op, RADDBGI_EvalTypeGroup_U, ptr_tree, integer_tree); + EVAL_IRTree *new_tree = eval_irtree_binary_op(arena, op, RDI_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, RADDBGI_Parsed *rd case EVAL_ArithPath_PtrSub: { - 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); + TG_Key direct = tg_unwrapped_direct_from_graph_rdi_key(graph, rdbg, l_restype); + U64 direct_type_size = tg_byte_size_from_graph_rdi_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, RADDBGI_Parsed *rd 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, RADDBGI_EvalTypeGroup_U, l_tree, r_tree); + EVAL_IRTree *op_tree = eval_irtree_binary_op(arena, op, RDI_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, RADDBGI_EvalOp_Div, RADDBGI_EvalTypeGroup_U, new_tree, const_tree); + new_tree = eval_irtree_binary_op(arena, RDI_EvalOp_Div, RDI_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, RADDBGI_Parsed *rd if (l.tree->op != 0 && r.tree->op != 0 && c.tree->op != 0){ - 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_Key c_restype = tg_unwrapped_from_graph_rdi_key(graph, rdbg, c.type_key); + TG_Key l_restype = tg_unwrapped_from_graph_rdi_key(graph, rdbg, l.type_key); + TG_Key r_restype = tg_unwrapped_from_graph_rdi_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 RADDBGI_EvalOp_Stop: - case RADDBGI_EvalOp_Skip: + case RDI_EvalOp_Stop: + case RDI_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 RADDBGI_EvalOp_Cond: + case RDI_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, RADDBGI_EvalOp_Skip, prt_left.encoded_size); + eval_oplist_push_op(arena, &prt_right, RDI_EvalOp_Skip, prt_left.encoded_size); // merge 1 into out eval_oplist_concat_in_place(out, &prt_cond); - eval_oplist_push_op(arena, out, RADDBGI_EvalOp_Cond, prt_right.encoded_size); + eval_oplist_push_op(arena, out, RDI_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 >= RADDBGI_EvalOp_COUNT){ + if (op >= RDI_EvalOp_COUNT){ // TODO: error - invalid ir-tree op } else{ // handle all children - U8 ctrlbits = raddbgi_eval_opcode_ctrlbits[op]; - U64 child_count = RADDBGI_POPN_FROM_CTRLBITS(ctrlbits); + U8 ctrlbits = rdi_eval_opcode_ctrlbits[op]; + U64 child_count = RDI_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, (RADDBGI_EvalOp)tree->op, tree->p); + eval_oplist_push_op(arena, out, (RDI_EvalOp)tree->op, tree->p); } }break; } diff --git a/src/eval/eval_compiler.h b/src/eval/eval_compiler.h index 57066ce9..910bbc07 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, RADDBGI_EvalOp op, U64 p); +internal void eval_oplist_push_op(Arena *arena, EVAL_OpList *list, RDI_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,7 +20,7 @@ internal void eval_oplist_concat_in_place(EVAL_OpList *left_dst, EVAL_OpList *ri //////////////////////////////// //~ allen: EVAL Expression Info Functions -internal RADDBGI_EvalOp eval_opcode_from_expr_kind(EVAL_ExprKind kind); +internal RDI_EvalOp eval_opcode_from_expr_kind(EVAL_ExprKind kind); internal B32 eval_expr_kind_is_comparison(EVAL_ExprKind kind); //////////////////////////////// @@ -40,13 +40,13 @@ internal EVAL_Expr* eval_expr_leaf_type(Arena *arena, void *location, TG_Key typ //////////////////////////////// //~ allen: EVAL Type Information Transformers -internal RADDBGI_EvalTypeGroup eval_type_group_from_kind(TG_Kind kind); +internal RDI_EvalTypeGroup eval_type_group_from_kind(TG_Kind kind); -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 TG_Key eval_type_unwrap_enum(TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key); +internal TG_Key eval_type_promote(TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key); +internal TG_Key eval_type_coerce(TG_Graph *graph, RDI_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_type_match(TG_Graph *graph, RDI_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, 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_unary_op(Arena *arena, RDI_EvalOp op, RDI_EvalTypeGroup group, EVAL_IRTree *c); +internal EVAL_IRTree* eval_irtree_binary_op(Arena *arena, RDI_EvalOp op, RDI_EvalTypeGroup group, EVAL_IRTree *l, EVAL_IRTree *r); +internal EVAL_IRTree* eval_irtree_binary_op_u(Arena *arena, RDI_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, 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); +internal EVAL_IRTree* eval_irtree_mem_read_type(Arena *arena, TG_Graph *graph, RDI_Parsed *rdbg, EVAL_IRTree *c, TG_Key type_key); +internal EVAL_IRTree* eval_irtree_convert_lo(Arena *arena, EVAL_IRTree *c, RDI_EvalTypeGroup out, RDI_EvalTypeGroup in); +internal EVAL_IRTree* eval_irtree_trunc(Arena *arena, TG_Graph *graph, RDI_Parsed *rdbg, EVAL_IRTree *c, TG_Key type_key); +internal EVAL_IRTree* eval_irtree_convert_hi(Arena *arena, TG_Graph *graph, RDI_Parsed *rdbg, EVAL_IRTree *c, TG_Key out, TG_Key in); +internal EVAL_IRTree* eval_irtree_resolve_to_value(Arena *arena, TG_Graph *graph, RDI_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, 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 TG_Key eval_type_from_type_expr(Arena *arena, TG_Graph *graph, RDI_Parsed *rdbg, EVAL_Expr *expr, EVAL_ErrorList *eout); +internal EVAL_IRTreeAndType eval_irtree_and_type_from_expr(Arena *arena, TG_Graph *graph, RDI_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 26d54c4a..93c5d03b 100644 --- a/src/eval/eval_core.h +++ b/src/eval/eval_core.h @@ -41,7 +41,7 @@ struct EVAL_ErrorList enum { - EVAL_IRExtKind_Bytecode = RADDBGI_EvalOp_COUNT, + EVAL_IRExtKind_Bytecode = RDI_EvalOp_COUNT, EVAL_IRExtKind_COUNT }; @@ -49,7 +49,7 @@ typedef struct EVAL_Op EVAL_Op; struct EVAL_Op { EVAL_Op *next; - RADDBGI_EvalOp opcode; + RDI_EvalOp opcode; union { U64 p; @@ -115,7 +115,7 @@ struct EVAL_Expr typedef struct EVAL_IRTree EVAL_IRTree; struct EVAL_IRTree{ - RADDBGI_EvalOp op; + RDI_EvalOp op; EVAL_IRTree *children[3]; union{ U64 p; diff --git a/src/eval/eval_machine.c b/src/eval/eval_machine.c index 1649b54d..0a44e9f9 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 - RADDBGI_EvalOp op = (RADDBGI_EvalOp)*ptr; - if (op >= RADDBGI_EvalOp_COUNT){ + RDI_EvalOp op = (RDI_EvalOp)*ptr; + if (op >= RDI_EvalOp_COUNT){ result.code = EVAL_ResultCode_BadOp; goto done; } - U8 ctrlbits = raddbgi_eval_opcode_ctrlbits[op]; + U8 ctrlbits = rdi_eval_opcode_ctrlbits[op]; ptr += 1; // decode U64 imm = 0; { - U32 decode_size = RADDBGI_DECODEN_FROM_CTRLBITS(ctrlbits); + U32 decode_size = RDI_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 = RADDBGI_POPN_FROM_CTRLBITS(ctrlbits); + U32 pop_count = RDI_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 RADDBGI_EvalOp_Stop: + case RDI_EvalOp_Stop: { goto done; }break; - case RADDBGI_EvalOp_Noop: + case RDI_EvalOp_Noop: { // do nothing }break; - case RADDBGI_EvalOp_Cond: + case RDI_EvalOp_Cond: { if (svals[0].u64){ ptr += imm; } }break; - case RADDBGI_EvalOp_Skip: + case RDI_EvalOp_Skip: { ptr += imm; }break; - case RADDBGI_EvalOp_MemRead: + case RDI_EvalOp_MemRead: { U64 addr = svals[0].u64; U64 size = imm; @@ -105,12 +105,12 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBGI_EvalOp_RegRead: + case RDI_EvalOp_RegRead: { - U8 raddbgi_reg_code = (imm&0x0000FF)>>0; + U8 rdi_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_RegCode base_reg_code = regs_reg_code_from_arch_rdi_code(machine->arch, rdi_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 RADDBGI_EvalOp_RegReadDyn: + case RDI_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 RADDBGI_EvalOp_FrameOff: + case RDI_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 RADDBGI_EvalOp_ModuleOff: + case RDI_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 RADDBGI_EvalOp_TLSOff: + case RDI_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 RADDBGI_EvalOp_ConstU8: - case RADDBGI_EvalOp_ConstU16: - case RADDBGI_EvalOp_ConstU32: - case RADDBGI_EvalOp_ConstU64: + case RDI_EvalOp_ConstU8: + case RDI_EvalOp_ConstU16: + case RDI_EvalOp_ConstU32: + case RDI_EvalOp_ConstU64: { nval.u64 = imm; }break; - case RADDBGI_EvalOp_Abs: + case RDI_EvalOp_Abs: { - if (imm == RADDBGI_EvalTypeGroup_F32){ + if (imm == RDI_EvalTypeGroup_F32){ nval.f32 = svals[0].f32; if (svals[0].f32 < 0){ nval.f32 = -svals[0].f32; } } - else if (imm == RADDBGI_EvalTypeGroup_F64){ + else if (imm == RDI_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 RADDBGI_EvalOp_Neg: + case RDI_EvalOp_Neg: { - if (imm == RADDBGI_EvalTypeGroup_F32){ + if (imm == RDI_EvalTypeGroup_F32){ nval.f32 = -svals[0].f32; } - else if (imm == RADDBGI_EvalTypeGroup_F64){ + else if (imm == RDI_EvalTypeGroup_F64){ nval.f64 = -svals[0].f64; } else{ @@ -212,12 +212,12 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBGI_EvalOp_Add: + case RDI_EvalOp_Add: { - if (imm == RADDBGI_EvalTypeGroup_F32){ + if (imm == RDI_EvalTypeGroup_F32){ nval.f32 = svals[0].f32 + svals[1].f32; } - else if (imm == RADDBGI_EvalTypeGroup_F64){ + else if (imm == RDI_EvalTypeGroup_F64){ nval.f64 = svals[0].f64 + svals[1].f64; } else{ @@ -225,12 +225,12 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBGI_EvalOp_Sub: + case RDI_EvalOp_Sub: { - if (imm == RADDBGI_EvalTypeGroup_F32){ + if (imm == RDI_EvalTypeGroup_F32){ nval.f32 = svals[0].f32 - svals[1].f32; } - else if (imm == RADDBGI_EvalTypeGroup_F64){ + else if (imm == RDI_EvalTypeGroup_F64){ nval.f64 = svals[0].f64 - svals[1].f64; } else{ @@ -238,12 +238,12 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBGI_EvalOp_Mul: + case RDI_EvalOp_Mul: { - if (imm == RADDBGI_EvalTypeGroup_F32){ + if (imm == RDI_EvalTypeGroup_F32){ nval.f32 = svals[0].f32*svals[1].f32; } - else if (imm == RADDBGI_EvalTypeGroup_F64){ + else if (imm == RDI_EvalTypeGroup_F64){ nval.f64 = svals[0].f64*svals[1].f64; } else{ @@ -251,9 +251,9 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBGI_EvalOp_Div: + case RDI_EvalOp_Div: { - if (imm == RADDBGI_EvalTypeGroup_F32){ + if (imm == RDI_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 == RADDBGI_EvalTypeGroup_F64){ + else if (imm == RDI_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 == RADDBGI_EvalTypeGroup_U || - imm == RADDBGI_EvalTypeGroup_S){ + else if (imm == RDI_EvalTypeGroup_U || + imm == RDI_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 RADDBGI_EvalOp_Mod: + case RDI_EvalOp_Mod: { - if (imm == RADDBGI_EvalTypeGroup_U || - imm == RADDBGI_EvalTypeGroup_S){ + if (imm == RDI_EvalTypeGroup_U || + imm == RDI_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 RADDBGI_EvalOp_LShift: + case RDI_EvalOp_LShift: { - if (imm == RADDBGI_EvalTypeGroup_U || - imm == RADDBGI_EvalTypeGroup_S){ + if (imm == RDI_EvalTypeGroup_U || + imm == RDI_EvalTypeGroup_S){ nval.u64 = svals[0].u64 << svals[1].u64; } else{ @@ -316,12 +316,12 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBGI_EvalOp_RShift: + case RDI_EvalOp_RShift: { - if (imm == RADDBGI_EvalTypeGroup_U){ + if (imm == RDI_EvalTypeGroup_U){ nval.u64 = svals[0].u64 >> svals[1].u64; } - else if (imm == RADDBGI_EvalTypeGroup_S){ + else if (imm == RDI_EvalTypeGroup_S){ nval.u64 = svals[0].s64 >> svals[1].u64; } else{ @@ -330,10 +330,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBGI_EvalOp_BitAnd: + case RDI_EvalOp_BitAnd: { - if (imm == RADDBGI_EvalTypeGroup_U || - imm == RADDBGI_EvalTypeGroup_S){ + if (imm == RDI_EvalTypeGroup_U || + imm == RDI_EvalTypeGroup_S){ nval.u64 = svals[0].u64&svals[1].u64; } else{ @@ -342,10 +342,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBGI_EvalOp_BitOr: + case RDI_EvalOp_BitOr: { - if (imm == RADDBGI_EvalTypeGroup_U || - imm == RADDBGI_EvalTypeGroup_S){ + if (imm == RDI_EvalTypeGroup_U || + imm == RDI_EvalTypeGroup_S){ nval.u64 = svals[0].u64|svals[1].u64; } else{ @@ -354,10 +354,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBGI_EvalOp_BitXor: + case RDI_EvalOp_BitXor: { - if (imm == RADDBGI_EvalTypeGroup_U || - imm == RADDBGI_EvalTypeGroup_S){ + if (imm == RDI_EvalTypeGroup_U || + imm == RDI_EvalTypeGroup_S){ nval.u64 = svals[0].u64^svals[1].u64; } else{ @@ -366,10 +366,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBGI_EvalOp_BitNot: + case RDI_EvalOp_BitNot: { - if (imm == RADDBGI_EvalTypeGroup_U || - imm == RADDBGI_EvalTypeGroup_S){ + if (imm == RDI_EvalTypeGroup_U || + imm == RDI_EvalTypeGroup_S){ nval.u64 = ~svals[0].u64; } else{ @@ -378,10 +378,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBGI_EvalOp_LogAnd: + case RDI_EvalOp_LogAnd: { - if (imm == RADDBGI_EvalTypeGroup_U || - imm == RADDBGI_EvalTypeGroup_S){ + if (imm == RDI_EvalTypeGroup_U || + imm == RDI_EvalTypeGroup_S){ nval.u64 = (svals[0].u64 && svals[1].u64); } else{ @@ -390,10 +390,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBGI_EvalOp_LogOr: + case RDI_EvalOp_LogOr: { - if (imm == RADDBGI_EvalTypeGroup_U || - imm == RADDBGI_EvalTypeGroup_S){ + if (imm == RDI_EvalTypeGroup_U || + imm == RDI_EvalTypeGroup_S){ nval.u64 = (svals[0].u64 || svals[1].u64); } else{ @@ -402,10 +402,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBGI_EvalOp_LogNot: + case RDI_EvalOp_LogNot: { - if (imm == RADDBGI_EvalTypeGroup_U || - imm == RADDBGI_EvalTypeGroup_S){ + if (imm == RDI_EvalTypeGroup_U || + imm == RDI_EvalTypeGroup_S){ nval.u64 = (!svals[0].u64); } else{ @@ -414,28 +414,28 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBGI_EvalOp_EqEq: + case RDI_EvalOp_EqEq: { nval.u64 = (svals[0].u64 == svals[1].u64); }break; - case RADDBGI_EvalOp_NtEq: + case RDI_EvalOp_NtEq: { nval.u64 = (svals[0].u64 != svals[1].u64); }break; - case RADDBGI_EvalOp_LsEq: + case RDI_EvalOp_LsEq: { - if (imm == RADDBGI_EvalTypeGroup_F32){ + if (imm == RDI_EvalTypeGroup_F32){ nval.u64 = (svals[0].f32 <= svals[1].f32); } - else if (imm == RADDBGI_EvalTypeGroup_F64){ + else if (imm == RDI_EvalTypeGroup_F64){ nval.u64 = (svals[0].f64 <= svals[1].f64); } - else if (imm == RADDBGI_EvalTypeGroup_U){ + else if (imm == RDI_EvalTypeGroup_U){ nval.u64 = (svals[0].u64 <= svals[1].u64); } - else if (imm == RADDBGI_EvalTypeGroup_S){ + else if (imm == RDI_EvalTypeGroup_S){ nval.u64 = (svals[0].s64 <= svals[1].s64); } else{ @@ -444,18 +444,18 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBGI_EvalOp_GrEq: + case RDI_EvalOp_GrEq: { - if (imm == RADDBGI_EvalTypeGroup_F32){ + if (imm == RDI_EvalTypeGroup_F32){ nval.u64 = (svals[0].f32 >= svals[1].f32); } - else if (imm == RADDBGI_EvalTypeGroup_F64){ + else if (imm == RDI_EvalTypeGroup_F64){ nval.u64 = (svals[0].f64 >= svals[1].f64); } - else if (imm == RADDBGI_EvalTypeGroup_U){ + else if (imm == RDI_EvalTypeGroup_U){ nval.u64 = (svals[0].u64 >= svals[1].u64); } - else if (imm == RADDBGI_EvalTypeGroup_S){ + else if (imm == RDI_EvalTypeGroup_S){ nval.u64 = (svals[0].s64 >= svals[1].s64); } else{ @@ -464,18 +464,18 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBGI_EvalOp_Less: + case RDI_EvalOp_Less: { - if (imm == RADDBGI_EvalTypeGroup_F32){ + if (imm == RDI_EvalTypeGroup_F32){ nval.u64 = (svals[0].f32 < svals[1].f32); } - else if (imm == RADDBGI_EvalTypeGroup_F64){ + else if (imm == RDI_EvalTypeGroup_F64){ nval.u64 = (svals[0].f64 < svals[1].f64); } - else if (imm == RADDBGI_EvalTypeGroup_U){ + else if (imm == RDI_EvalTypeGroup_U){ nval.u64 = (svals[0].u64 < svals[1].u64); } - else if (imm == RADDBGI_EvalTypeGroup_S){ + else if (imm == RDI_EvalTypeGroup_S){ nval.u64 = (svals[0].s64 < svals[1].s64); } else{ @@ -484,18 +484,18 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBGI_EvalOp_Grtr: + case RDI_EvalOp_Grtr: { - if (imm == RADDBGI_EvalTypeGroup_F32){ + if (imm == RDI_EvalTypeGroup_F32){ nval.u64 = (svals[0].f32 > svals[1].f32); } - else if (imm == RADDBGI_EvalTypeGroup_F64){ + else if (imm == RDI_EvalTypeGroup_F64){ nval.u64 = (svals[0].f64 > svals[1].f64); } - else if (imm == RADDBGI_EvalTypeGroup_U){ + else if (imm == RDI_EvalTypeGroup_U){ nval.u64 = (svals[0].u64 > svals[1].u64); } - else if (imm == RADDBGI_EvalTypeGroup_S){ + else if (imm == RDI_EvalTypeGroup_S){ nval.u64 = (svals[0].s64 > svals[1].s64); } else{ @@ -504,7 +504,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBGI_EvalOp_Trunc: + case RDI_EvalOp_Trunc: { if (0 < imm){ U64 mask = 0; @@ -515,7 +515,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBGI_EvalOp_TruncSigned: + case RDI_EvalOp_TruncSigned: { if (0 < imm){ U64 mask = 0; @@ -530,52 +530,52 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBGI_EvalOp_Convert: + case RDI_EvalOp_Convert: { U32 in = imm&0xFF; U32 out = (imm >> 8)&0xFF; if (in != out){ - switch (in + out*RADDBGI_EvalTypeGroup_COUNT){ - case RADDBGI_EvalTypeGroup_F32 + RADDBGI_EvalTypeGroup_U*RADDBGI_EvalTypeGroup_COUNT: + switch (in + out*RDI_EvalTypeGroup_COUNT){ + case RDI_EvalTypeGroup_F32 + RDI_EvalTypeGroup_U*RDI_EvalTypeGroup_COUNT: { nval.u64 = (U64)svals[0].f32; }break; - case RADDBGI_EvalTypeGroup_F64 + RADDBGI_EvalTypeGroup_U*RADDBGI_EvalTypeGroup_COUNT: + case RDI_EvalTypeGroup_F64 + RDI_EvalTypeGroup_U*RDI_EvalTypeGroup_COUNT: { nval.u64 = (U64)svals[0].f64; }break; - case RADDBGI_EvalTypeGroup_F32 + RADDBGI_EvalTypeGroup_S*RADDBGI_EvalTypeGroup_COUNT: + case RDI_EvalTypeGroup_F32 + RDI_EvalTypeGroup_S*RDI_EvalTypeGroup_COUNT: { nval.s64 = (S64)svals[0].f32; }break; - case RADDBGI_EvalTypeGroup_F64 + RADDBGI_EvalTypeGroup_S*RADDBGI_EvalTypeGroup_COUNT: + case RDI_EvalTypeGroup_F64 + RDI_EvalTypeGroup_S*RDI_EvalTypeGroup_COUNT: { nval.s64 = (S64)svals[0].f64; }break; - case RADDBGI_EvalTypeGroup_U + RADDBGI_EvalTypeGroup_F32*RADDBGI_EvalTypeGroup_COUNT: + case RDI_EvalTypeGroup_U + RDI_EvalTypeGroup_F32*RDI_EvalTypeGroup_COUNT: { nval.f32 = (F32)svals[0].u64; }break; - case RADDBGI_EvalTypeGroup_S + RADDBGI_EvalTypeGroup_F32*RADDBGI_EvalTypeGroup_COUNT: + case RDI_EvalTypeGroup_S + RDI_EvalTypeGroup_F32*RDI_EvalTypeGroup_COUNT: { nval.f32 = (F32)svals[0].s64; }break; - case RADDBGI_EvalTypeGroup_F64 + RADDBGI_EvalTypeGroup_F32*RADDBGI_EvalTypeGroup_COUNT: + case RDI_EvalTypeGroup_F64 + RDI_EvalTypeGroup_F32*RDI_EvalTypeGroup_COUNT: { nval.f32 = (F32)svals[0].f64; }break; - case RADDBGI_EvalTypeGroup_U + RADDBGI_EvalTypeGroup_F64*RADDBGI_EvalTypeGroup_COUNT: + case RDI_EvalTypeGroup_U + RDI_EvalTypeGroup_F64*RDI_EvalTypeGroup_COUNT: { nval.f64 = (F64)svals[0].u64; }break; - case RADDBGI_EvalTypeGroup_S + RADDBGI_EvalTypeGroup_F64*RADDBGI_EvalTypeGroup_COUNT: + case RDI_EvalTypeGroup_S + RDI_EvalTypeGroup_F64*RDI_EvalTypeGroup_COUNT: { nval.f64 = (F64)svals[0].s64; }break; - case RADDBGI_EvalTypeGroup_F32 + RADDBGI_EvalTypeGroup_F64*RADDBGI_EvalTypeGroup_COUNT: + case RDI_EvalTypeGroup_F32 + RDI_EvalTypeGroup_F64*RDI_EvalTypeGroup_COUNT: { nval.f64 = (F64)svals[0].f32; }break; @@ -583,7 +583,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) } }break; - case RADDBGI_EvalOp_Pick: + case RDI_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 RADDBGI_EvalOp_Pop: + case RDI_EvalOp_Pop: { // do nothing - the pop is handled by the control bits }break; - case RADDBGI_EvalOp_Insert: + case RDI_EvalOp_Insert: { if (stack_count > imm){ if (imm > 0){ @@ -619,7 +619,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode) // push { - U64 push_count = RADDBGI_PUSHN_FROM_CTRLBITS(ctrlbits); + U64 push_count = RDI_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 dbbd3a6b..a832bca4 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_raddbgi_voff(Arena *arena, RADDBGI_Parsed *rdbg, U64 voff) +eval_push_locals_map_from_rdi_voff(Arena *arena, RDI_Parsed *rdbg, U64 voff) { Temp scratch = scratch_begin(&arena, 1); @@ -66,17 +66,17 @@ eval_push_locals_map_from_raddbgi_voff(Arena *arena, RADDBGI_Parsed *rdbg, U64 v struct Task { Task *next; - RADDBGI_Scope *scope; + RDI_Scope *scope; }; Task *first_task = 0; Task *last_task = 0; //- rjf: voff -> tightest scope - RADDBGI_Scope *tightest_scope = 0; + RDI_Scope *tightest_scope = 0; if(rdbg->scope_vmap != 0 && rdbg->scopes != 0) { - U64 scope_idx = raddbgi_vmap_idx_from_voff(rdbg->scope_vmap, rdbg->scope_vmap_count, voff); - RADDBGI_Scope *scope = &rdbg->scopes[scope_idx]; + U64 scope_idx = rdi_vmap_idx_from_voff(rdbg->scope_vmap, rdbg->scope_vmap_count, voff); + RDI_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_raddbgi_voff(Arena *arena, RADDBGI_Parsed *rdbg, U64 v //- rjf: voff-1 -> scope if(voff > 0 && rdbg->scope_vmap != 0 && rdbg->scopes != 0) { - U64 scope_idx = raddbgi_vmap_idx_from_voff(rdbg->scope_vmap, rdbg->scope_vmap_count, voff-1); - RADDBGI_Scope *scope = &rdbg->scopes[scope_idx]; + U64 scope_idx = rdi_vmap_idx_from_voff(rdbg->scope_vmap, rdbg->scope_vmap_count, voff-1); + RDI_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_raddbgi_voff(Arena *arena, RADDBGI_Parsed *rdbg, U64 v //- rjf: tightest scope -> walk up the tree & build tasks for each parent scope if(tightest_scope != 0) { - for(RADDBGI_Scope *scope = &rdbg->scopes[tightest_scope->parent_scope_idx]; + for(RDI_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_raddbgi_voff(Arena *arena, RADDBGI_Parsed *rdbg, U64 v //- rjf: accumulate locals for all tasks for(Task *task = first_task; task != 0; task = task->next) { - RADDBGI_Scope *scope = task->scope; + RDI_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) { - RADDBGI_Local *local_var = &rdbg->locals[local_idx]; + RDI_Local *local_var = &rdbg->locals[local_idx]; U64 local_name_size = 0; - U8 *local_name_str = raddbgi_string_from_idx(rdbg, local_var->name_string_idx, &local_name_size); + U8 *local_name_str = rdi_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_raddbgi_voff(Arena *arena, RADDBGI_Parsed *rdbg, U64 v } internal EVAL_String2NumMap * -eval_push_member_map_from_raddbgi_voff(Arena *arena, RADDBGI_Parsed *rdbg, U64 voff) +eval_push_member_map_from_rdi_voff(Arena *arena, RDI_Parsed *rdbg, U64 voff) { //- rjf: voff -> tightest scope - RADDBGI_Scope *tightest_scope = 0; + RDI_Scope *tightest_scope = 0; if(rdbg->scope_vmap != 0 && rdbg->scopes != 0) { - U64 scope_idx = raddbgi_vmap_idx_from_voff(rdbg->scope_vmap, rdbg->scope_vmap_count, voff); + U64 scope_idx = rdi_vmap_idx_from_voff(rdbg->scope_vmap, rdbg->scope_vmap_count, voff); tightest_scope = &rdbg->scopes[scope_idx]; } //- rjf: tightest scope -> procedure - RADDBGI_Procedure *procedure = 0; + RDI_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_raddbgi_voff(Arena *arena, RADDBGI_Parsed *rdbg, U64 v } //- rjf: procedure -> udt - RADDBGI_UDT *udt = 0; - if(procedure != 0 && rdbg->udts != 0 && procedure->link_flags & RADDBGI_LinkFlag_TypeScoped) + RDI_UDT *udt = 0; + if(procedure != 0 && rdbg->udts != 0 && procedure->link_flags & RDI_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_raddbgi_voff(Arena *arena, RADDBGI_Parsed *rdbg, U64 v *map = eval_string2num_map_make(arena, 64); //- rjf: udt -> fill member map - if(udt != 0 && !(udt->flags & RADDBGI_UserDefinedTypeFlag_EnumMembers) && rdbg->members != 0) + if(udt != 0 && !(udt->flags & RDI_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_raddbgi_voff(Arena *arena, RADDBGI_Parsed *rdbg, U64 v { break; } - RADDBGI_Member *m = &rdbg->members[member_idx]; - if(m->kind == RADDBGI_MemberKind_DataField) + RDI_Member *m = &rdbg->members[member_idx]; + if(m->kind == RDI_MemberKind_DataField) { String8 name = {0}; - name.str = raddbgi_string_from_idx(rdbg, m->name_string_idx, &name.size); + name.str = rdi_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(RADDBGI_Parsed *rdbg, String8 name) +eval_leaf_type_from_name(RDI_Parsed *rdbg, String8 name) { TG_Key key = zero_struct; B32 found = 0; if(rdbg->type_nodes != 0) { - 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); + RDI_NameMap *name_map = rdi_name_map_from_kind(rdbg, RDI_NameMapKind_Types); + RDI_ParsedNameMap parsed_name_map = {0}; + rdi_name_map_parse(rdbg, name_map, &parsed_name_map); + RDI_NameMapNode *node = rdi_name_map_lookup(rdbg, &parsed_name_map, name.str, name.size); if(node != 0) { U32 match_count = 0; - U32 *matches = raddbgi_matches_from_map_node(rdbg, node, &match_count); + U32 *matches = rdi_matches_from_map_node(rdbg, node, &match_count); if(match_count != 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]); + RDI_TypeNode *type_node = rdi_element_from_idx(rdbg, type_nodes, matches[0]); + found = type_node->kind != RDI_TypeKind_NULL; + key = tg_key_ext(tg_kind_from_rdi_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; - RADDBGI_LocationKind loc_kind = RADDBGI_LocationKind_NULL; - RADDBGI_LocationRegister loc_reg = {0}; - RADDBGI_LocationRegisterPlusU16 loc_reg_u16 = {0}; + RDI_LocationKind loc_kind = RDI_LocationKind_NULL; + RDI_LocationRegister loc_reg = {0}; + RDI_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 = 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 scope_idx = rdi_vmap_idx_from_voff(ctx->rdbg->scope_vmap, ctx->rdbg->scope_vmap_count, ctx->ip_voff); + RDI_Scope *scope = &ctx->rdbg->scopes[scope_idx]; U64 proc_idx = scope->proc_idx; - RADDBGI_Procedure *procedure = &ctx->rdbg->procedures[proc_idx]; + RDI_Procedure *procedure = &ctx->rdbg->procedures[proc_idx]; U64 name_size = 0; - U8 *name_ptr = raddbgi_string_from_idx(ctx->rdbg, procedure->name_string_idx, &name_size); + U8 *name_ptr = rdi_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; - 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); + RDI_Local *local_var = rdi_element_from_idx(ctx->rdbg, locals, local_num-1); + RDI_TypeNode *type_node = rdi_element_from_idx(ctx->rdbg, type_nodes, local_var->type_idx); + type_key = tg_key_ext(tg_kind_from_rdi_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) { - RADDBGI_LocationBlock *block = &ctx->rdbg->location_blocks[loc_block_idx]; + RDI_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 = *((RADDBGI_LocationKind *)(ctx->rdbg->location_data + block->location_data_off)); + loc_kind = *((RDI_LocationKind *)(ctx->rdbg->location_data + block->location_data_off)); switch(loc_kind) { default:{mapped_identifier = 0;}break; - case RADDBGI_LocationKind_AddrBytecodeStream: - case RADDBGI_LocationKind_ValBytecodeStream: + case RDI_LocationKind_AddrBytecodeStream: + case RDI_LocationKind_ValBytecodeStream: { - U8 *bytecode_base = ctx->rdbg->location_data + block->location_data_off + sizeof(RADDBGI_LocationKind); + U8 *bytecode_base = ctx->rdbg->location_data + block->location_data_off + sizeof(RDI_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 = raddbgi_eval_opcode_ctrlbits[op]; - U32 p_size = RADDBGI_DECODEN_FROM_CTRLBITS(ctrlbits); + U8 ctrlbits = rdi_eval_opcode_ctrlbits[op]; + U32 p_size = RDI_DECODEN_FROM_CTRLBITS(ctrlbits); bytecode_size += 1+p_size; } loc_bytecode = str8(bytecode_base, bytecode_size); }break; - case RADDBGI_LocationKind_AddrRegisterPlusU16: - case RADDBGI_LocationKind_AddrAddrRegisterPlusU16: + case RDI_LocationKind_AddrRegisterPlusU16: + case RDI_LocationKind_AddrAddrRegisterPlusU16: { MemoryCopy(&loc_reg_u16, (ctx->rdbg->location_data + block->location_data_off), sizeof(loc_reg_u16)); }break; - case RADDBGI_LocationKind_ValRegister: + case RDI_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) { - RADDBGI_NameMap *name_map = raddbgi_name_map_from_kind(ctx->rdbg, RADDBGI_NameMapKind_GlobalVariables); + RDI_NameMap *name_map = rdi_name_map_from_kind(ctx->rdbg, RDI_NameMapKind_GlobalVariables); if(name_map != 0 && ctx->rdbg->global_variables != 0) { - 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); + RDI_ParsedNameMap parsed_name_map = {0}; + rdi_name_map_parse(ctx->rdbg, name_map, &parsed_name_map); + RDI_NameMapNode *node = rdi_name_map_lookup(ctx->rdbg, &parsed_name_map, token_string.str, token_string.size); U32 matches_count = 0; - U32 *matches = raddbgi_matches_from_map_node(ctx->rdbg, node, &matches_count); + U32 *matches = rdi_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 = raddbgi_name_map_lookup(ctx->rdbg, &parsed_name_map, n->string.str, n->string.size); + node = rdi_name_map_lookup(ctx->rdbg, &parsed_name_map, n->string.str, n->string.size); matches_count = 0; - matches = raddbgi_matches_from_map_node(ctx->rdbg, node, &matches_count); + matches = rdi_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]; - RADDBGI_GlobalVariable *global_var = &ctx->rdbg->global_variables[match_idx]; + RDI_GlobalVariable *global_var = &ctx->rdbg->global_variables[match_idx]; EVAL_OpList oplist = {0}; - eval_oplist_push_op(arena, &oplist, RADDBGI_EvalOp_ModuleOff, global_var->voff); - loc_kind = RADDBGI_LocationKind_AddrBytecodeStream; + eval_oplist_push_op(arena, &oplist, RDI_EvalOp_ModuleOff, global_var->voff); + loc_kind = RDI_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) { - 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); + RDI_TypeNode *type_node = &ctx->rdbg->type_nodes[type_idx]; + type_key = tg_key_ext(tg_kind_from_rdi_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) { - RADDBGI_NameMap *name_map = raddbgi_name_map_from_kind(ctx->rdbg, RADDBGI_NameMapKind_ThreadVariables); + RDI_NameMap *name_map = rdi_name_map_from_kind(ctx->rdbg, RDI_NameMapKind_ThreadVariables); if(name_map != 0 && ctx->rdbg->global_variables != 0) { - 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); + RDI_ParsedNameMap parsed_name_map = {0}; + rdi_name_map_parse(ctx->rdbg, name_map, &parsed_name_map); + RDI_NameMapNode *node = rdi_name_map_lookup(ctx->rdbg, &parsed_name_map, token_string.str, token_string.size); U32 matches_count = 0; - U32 *matches = raddbgi_matches_from_map_node(ctx->rdbg, node, &matches_count); + U32 *matches = rdi_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 = raddbgi_name_map_lookup(ctx->rdbg, &parsed_name_map, n->string.str, n->string.size); + node = rdi_name_map_lookup(ctx->rdbg, &parsed_name_map, n->string.str, n->string.size); matches_count = 0; - matches = raddbgi_matches_from_map_node(ctx->rdbg, node, &matches_count); + matches = rdi_matches_from_map_node(ctx->rdbg, node, &matches_count); } if(matches_count != 0) { U32 match_idx = matches[0]; - RADDBGI_ThreadVariable *thread_var = &ctx->rdbg->thread_variables[match_idx]; + RDI_ThreadVariable *thread_var = &ctx->rdbg->thread_variables[match_idx]; EVAL_OpList oplist = {0}; - eval_oplist_push_op(arena, &oplist, RADDBGI_EvalOp_TLSOff, thread_var->tls_off); - loc_kind = RADDBGI_LocationKind_AddrBytecodeStream; + eval_oplist_push_op(arena, &oplist, RDI_EvalOp_TLSOff, thread_var->tls_off); + loc_kind = RDI_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) { - 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); + RDI_TypeNode *type_node = &ctx->rdbg->type_nodes[type_idx]; + type_key = tg_key_ext(tg_kind_from_rdi_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) { - RADDBGI_NameMap *name_map = raddbgi_name_map_from_kind(ctx->rdbg, RADDBGI_NameMapKind_Procedures); + RDI_NameMap *name_map = rdi_name_map_from_kind(ctx->rdbg, RDI_NameMapKind_Procedures); if(name_map != 0 && ctx->rdbg->procedures != 0 && ctx->rdbg->scopes != 0 && ctx->rdbg->scope_voffs) { - 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); + RDI_ParsedNameMap parsed_name_map = {0}; + rdi_name_map_parse(ctx->rdbg, name_map, &parsed_name_map); + RDI_NameMapNode *node = rdi_name_map_lookup(ctx->rdbg, &parsed_name_map, token_string.str, token_string.size); U32 matches_count = 0; - U32 *matches = raddbgi_matches_from_map_node(ctx->rdbg, node, &matches_count); + U32 *matches = rdi_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 = raddbgi_name_map_lookup(ctx->rdbg, &parsed_name_map, n->string.str, n->string.size); + node = rdi_name_map_lookup(ctx->rdbg, &parsed_name_map, n->string.str, n->string.size); matches_count = 0; - matches = raddbgi_matches_from_map_node(ctx->rdbg, node, &matches_count); + matches = rdi_matches_from_map_node(ctx->rdbg, node, &matches_count); } if(matches_count != 0) { U32 match_idx = matches[0]; - RADDBGI_Procedure *procedure = &ctx->rdbg->procedures[match_idx]; - RADDBGI_Scope *scope = &ctx->rdbg->scopes[procedure->root_scope_idx]; + RDI_Procedure *procedure = &ctx->rdbg->procedures[match_idx]; + RDI_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, RADDBGI_EvalOp_ModuleOff, voff); - loc_kind = RADDBGI_LocationKind_ValBytecodeStream; + eval_oplist_push_op(arena, &oplist, RDI_EvalOp_ModuleOff, voff); + loc_kind = RDI_LocationKind_ValBytecodeStream; loc_bytecode = eval_bytecode_from_oplist(arena, &oplist); U32 type_idx = procedure->type_idx; if(type_idx < ctx->rdbg->type_nodes_count) { - 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); + RDI_TypeNode *type_node = &ctx->rdbg->type_nodes[type_idx]; + type_key = tg_key_ext(tg_kind_from_rdi_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 RADDBGI_LocationKind_AddrBytecodeStream: + case RDI_LocationKind_AddrBytecodeStream: { atom = eval_expr_leaf_bytecode(arena, token_string.str, type_key, loc_bytecode, EVAL_EvalMode_Addr); }break; - case RADDBGI_LocationKind_ValBytecodeStream: + case RDI_LocationKind_ValBytecodeStream: { atom = eval_expr_leaf_bytecode(arena, token_string.str, type_key, loc_bytecode, EVAL_EvalMode_Value); }break; - case RADDBGI_LocationKind_AddrRegisterPlusU16: + case RDI_LocationKind_AddrRegisterPlusU16: { EVAL_OpList oplist = {0}; U64 byte_size = 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); + U64 regread_param = RDI_EncodeRegReadParam(loc_reg_u16.register_code, byte_size, 0); + eval_oplist_push_op(arena, &oplist, RDI_EvalOp_RegRead, regread_param); + eval_oplist_push_op(arena, &oplist, RDI_EvalOp_ConstU16, loc_reg_u16.offset); + eval_oplist_push_op(arena, &oplist, RDI_EvalOp_Add, 0); atom = eval_expr_leaf_op_list(arena, token_string.str, type_key, &oplist, EVAL_EvalMode_Addr); }break; - case RADDBGI_LocationKind_AddrAddrRegisterPlusU16: + case RDI_LocationKind_AddrAddrRegisterPlusU16: { EVAL_OpList oplist = {0}; U64 byte_size = 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); + U64 regread_param = RDI_EncodeRegReadParam(loc_reg_u16.register_code, byte_size, 0); + eval_oplist_push_op(arena, &oplist, RDI_EvalOp_RegRead, regread_param); + eval_oplist_push_op(arena, &oplist, RDI_EvalOp_ConstU16, loc_reg_u16.offset); + eval_oplist_push_op(arena, &oplist, RDI_EvalOp_Add, 0); + eval_oplist_push_op(arena, &oplist, RDI_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 RADDBGI_LocationKind_ValRegister: + case RDI_LocationKind_ValRegister: { - REGS_RegCode regs_reg_code = regs_reg_code_from_arch_raddbgi_code(ctx->arch, loc_reg.register_code); + REGS_RegCode regs_reg_code = regs_reg_code_from_arch_rdi_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 = RADDBGI_EncodeRegReadParam(loc_reg.register_code, byte_size, byte_pos); - eval_oplist_push_op(arena, &oplist, RADDBGI_EvalOp_RegRead, regread_param); + U64 regread_param = RDI_EncodeRegReadParam(loc_reg.register_code, byte_size, byte_pos); + eval_oplist_push_op(arena, &oplist, RDI_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 2b1c6fe8..b534800e 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; - RADDBGI_Parsed *rdbg; + RDI_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_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); +internal EVAL_String2NumMap *eval_push_locals_map_from_rdi_voff(Arena *arena, RDI_Parsed *rdbg, U64 voff); +internal EVAL_String2NumMap *eval_push_member_map_from_rdi_voff(Arena *arena, RDI_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(RADDBGI_Parsed *rdbg, String8 name); +internal TG_Key eval_leaf_type_from_name(RDI_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/lib_raddbg_markup/raddbg_markup.h b/src/lib_raddbg_markup/raddbg_markup.h index 696143b2..bd0b0cc4 100644 --- a/src/lib_raddbg_markup/raddbg_markup.h +++ b/src/lib_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 RADDBGI_MARKUP_H -#define RADDBGI_MARKUP_H +#ifndef RDI_MARKUP_H +#define RDI_MARKUP_H //////////////////////////////// //~ Usage Macros @@ -75,4 +75,4 @@ raddbg_log__impl(char *fmt, ...) #endif // defined(_WIN32) -#endif // RADDBGI_MARKUP_H +#endif // RDI_MARKUP_H diff --git a/src/lib_raddbgi_format/raddbgi_format.c b/src/lib_raddbgi_format/raddbgi_format.c index 50aa193d..8d5ea8b8 100644 --- a/src/lib_raddbgi_format/raddbgi_format.c +++ b/src/lib_raddbgi_format/raddbgi_format.c @@ -4,24 +4,24 @@ //////////////////////////////// // Functions -RADDBGI_PROC RADDBGI_U64 -raddbgi_hash(RADDBGI_U8 *ptr, RADDBGI_U64 size){ - RADDBGI_U64 result = 5381; - RADDBGI_U8 *opl = ptr + size; +RDI_PROC RDI_U64 +rdi_hash(RDI_U8 *ptr, RDI_U64 size){ + RDI_U64 result = 5381; + RDI_U8 *opl = ptr + size; for (; ptr < opl; ptr += 1){ result = ((result << 5) + result) + *ptr; } return(result); } -RADDBGI_PROC RADDBGI_U32 -raddbgi_size_from_basic_type_kind(RADDBGI_TypeKind kind){ - RADDBGI_U32 result = 0; +RDI_PROC RDI_U32 +rdi_size_from_basic_type_kind(RDI_TypeKind kind){ + RDI_U32 result = 0; switch (kind){ #define X(N,C) #define XZ(N,C,Z) case C: result = Z; break; #define Y(A,N) - RADDBGI_TypeKindXList(X,XZ,Y) + RDI_TypeKindXList(X,XZ,Y) #undef X #undef XZ #undef Y @@ -29,12 +29,12 @@ raddbgi_size_from_basic_type_kind(RADDBGI_TypeKind kind){ return(result); } -RADDBGI_PROC RADDBGI_U32 -raddbgi_addr_size_from_arch(RADDBGI_Arch arch){ - RADDBGI_U32 result = 0; +RDI_PROC RDI_U32 +rdi_addr_size_from_arch(RDI_Arch arch){ + RDI_U32 result = 0; switch (arch){ #define X(N,C,Z) case C: result = Z; break; - RADDBGI_ArchXList(X) + RDI_ArchXList(X) #undef X } return(result); @@ -42,14 +42,14 @@ raddbgi_addr_size_from_arch(RADDBGI_Arch arch){ //- eval helpers -RADDBGI_PROC RADDBGI_EvalConversionKind -raddbgi_eval_conversion_rule(RADDBGI_EvalTypeGroup in, RADDBGI_EvalTypeGroup out){ - RADDBGI_EvalConversionKind result = 0; +RDI_PROC RDI_EvalConversionKind +rdi_eval_conversion_rule(RDI_EvalTypeGroup in, RDI_EvalTypeGroup out){ + RDI_EvalConversionKind result = 0; switch (in + (out << 8)){ -#define Y(i,o) case ((RADDBGI_EvalTypeGroup_##i) + ((RADDBGI_EvalTypeGroup_##o) << 8)): +#define Y(i,o) case ((RDI_EvalTypeGroup_##i) + ((RDI_EvalTypeGroup_##o) << 8)): #define Xb(c) -#define Xe(c) result = RADDBGI_EvalConversionKind_##c; break; - RADDBGI_EvalConversionKindFromTypeGroupPairMap(Y,Xb,Xe) +#define Xe(c) result = RDI_EvalConversionKind_##c; break; + RDI_EvalConversionKindFromTypeGroupPairMap(Y,Xb,Xe) #undef Xe #undef Xb #undef Y @@ -57,38 +57,38 @@ raddbgi_eval_conversion_rule(RADDBGI_EvalTypeGroup in, RADDBGI_EvalTypeGroup out return(result); } -RADDBGI_PROC RADDBGI_U8* -raddbgi_eval_conversion_message(RADDBGI_EvalConversionKind conversion_kind, RADDBGI_U64 *lenout){ - RADDBGI_U8 *result = 0; +RDI_PROC RDI_U8* +rdi_eval_conversion_message(RDI_EvalConversionKind conversion_kind, RDI_U64 *lenout){ + RDI_U8 *result = 0; switch (conversion_kind){ #define X(N,msg) \ -case RADDBGI_EvalConversionKind_##N: result = (RADDBGI_U8*)msg; *lenout = sizeof(msg) - 1; break; - RADDBGI_EvalConversionKindXList(X) +case RDI_EvalConversionKind_##N: result = (RDI_U8*)msg; *lenout = sizeof(msg) - 1; break; + RDI_EvalConversionKindXList(X) #undef X } return(result); } -RADDBGI_PROC RADDBGI_S32 -raddbgi_eval_opcode_type_compatible(RADDBGI_EvalOp op, RADDBGI_EvalTypeGroup group){ - RADDBGI_S32 result = 0; +RDI_PROC RDI_S32 +rdi_eval_opcode_type_compatible(RDI_EvalOp op, RDI_EvalTypeGroup group){ + RDI_S32 result = 0; switch (op){ - 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: + case RDI_EvalOp_Neg: case RDI_EvalOp_Add: case RDI_EvalOp_Sub: + case RDI_EvalOp_Mul: case RDI_EvalOp_Div: + case RDI_EvalOp_EqEq:case RDI_EvalOp_NtEq: + case RDI_EvalOp_LsEq:case RDI_EvalOp_GrEq: + case RDI_EvalOp_Less:case RDI_EvalOp_Grtr: { - if (group != RADDBGI_EvalTypeGroup_Other){ + if (group != RDI_EvalTypeGroup_Other){ result = 1; } }break; - 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: + case RDI_EvalOp_Mod:case RDI_EvalOp_LShift:case RDI_EvalOp_RShift: + case RDI_EvalOp_BitNot:case RDI_EvalOp_BitAnd:case RDI_EvalOp_BitXor: + case RDI_EvalOp_BitOr:case RDI_EvalOp_LogNot:case RDI_EvalOp_LogAnd: + case RDI_EvalOp_LogOr: { - if (group == RADDBGI_EvalTypeGroup_S || group == RADDBGI_EvalTypeGroup_U){ + if (group == RDI_EvalTypeGroup_S || group == RDI_EvalTypeGroup_U){ result = 1; } }break; diff --git a/src/lib_raddbgi_format/raddbgi_format.h b/src/lib_raddbgi_format/raddbgi_format.h index a237173f..6f89ccca 100644 --- a/src/lib_raddbgi_format/raddbgi_format.h +++ b/src/lib_raddbgi_format/raddbgi_format.h @@ -1,60 +1,66 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) +//////////////////////////////////////////////////////////////// +// RAD Debug Info, (R)AD(D)BG(I) Format Library +// +// Defines standard RADDBGI debug information format types and +// functions. + #ifndef RADDBGI_FORMAT_H #define RADDBGI_FORMAT_H //////////////////////////////////////////////////////////////// // Overridable procedure decoration -#if !defined(RADDBGI_PROC) -# define RADDBGI_PROC static +#if !defined(RDI_PROC) +# define RDI_PROC static #endif //////////////////////////////////////////////////////////////// // Overridable integer types -#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 +#if !defined(RDI_U8) +# define RDI_U8 RDI_U8 +# define RDI_U16 RDI_U16 +# define RDI_U32 RDI_U32 +# define RDI_U64 RDI_U64 +# define RDI_S8 RDI_S8 +# define RDI_S16 RDI_S16 +# define RDI_S32 RDI_S32 +# define RDI_S64 RDI_S64 #include -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; +typedef uint8_t RDI_U8; +typedef uint16_t RDI_U16; +typedef uint32_t RDI_U32; +typedef uint64_t RDI_U64; +typedef int8_t RDI_S8; +typedef int16_t RDI_S16; +typedef int32_t RDI_S32; +typedef int64_t RDI_S64; #endif //////////////////////////////////////////////////////////////// // Architecture Constants -#define RADDBGI_ArchXList(X)\ +#define RDI_ArchXList(X)\ X(NULL, 0, 0)\ X(X86, 1, 4)\ X(X64, 2, 8) -typedef RADDBGI_U32 RADDBGI_Arch; -typedef enum RADDBGI_ArchEnum{ -#define X(N,C,Z) RADDBGI_Arch_##N = C, - RADDBGI_ArchXList(X) +typedef RDI_U32 RDI_Arch; +typedef enum RDI_ArchEnum{ +#define X(N,C,Z) RDI_Arch_##N = C, + RDI_ArchXList(X) #undef X -} RADDBGI_ArchEnum; +} RDI_ArchEnum; -typedef RADDBGI_U8 RADDBGI_RegisterCode; +typedef RDI_U8 RDI_RegisterCode; // x86 registers -#define RADDBGI_RegisterCode_X86_XList(X) \ +#define RDI_RegisterCode_X86_XList(X) \ X(nil, 0) \ X(eax, 1) \ X(ecx, 2) \ @@ -118,14 +124,14 @@ X(ymm6, 59) \ X(ymm7, 60) \ X(COUNT, 61) -typedef enum RADDBGI_RegisterCode_X86_Enum{ -#define X(N,C) RADDBGI_RegisterCode_X86_##N = C, - RADDBGI_RegisterCode_X86_XList(X) +typedef enum RDI_RegisterCode_X86_Enum{ +#define X(N,C) RDI_RegisterCode_X86_##N = C, + RDI_RegisterCode_X86_XList(X) #undef X -} RADDBGI_RegisterCode_X86_Enum; +} RDI_RegisterCode_X86_Enum; // x64 registers -#define RADDBGI_RegisterCode_X64_XList(X) \ +#define RDI_RegisterCode_X64_XList(X) \ X(nil, 0) \ X(rax, 1) \ X(rcx, 2) \ @@ -205,48 +211,48 @@ X(fdp, 75) \ X(mxcsr_mask, 76) \ X(COUNT, 77) -typedef enum RADDBGI_RegisterCode_X64_Enum{ -#define X(N,C) RADDBGI_RegisterCode_X64_##N = C, - RADDBGI_RegisterCode_X64_XList(X) +typedef enum RDI_RegisterCode_X64_Enum{ +#define X(N,C) RDI_RegisterCode_X64_##N = C, + RDI_RegisterCode_X64_XList(X) #undef X -} RADDBGI_RegisterCode_X64_Enum; +} RDI_RegisterCode_X64_Enum; //////////////////////////////////////////////////////////////// // Format types // "raddbg\0\0" -#define RADDBGI_MAGIC_CONSTANT 0x0000676264646172 -#define RADDBGI_ENCODING_VERSION 1 +#define RDI_MAGIC_CONSTANT 0x0000676264646172 +#define RDI_ENCODING_VERSION 1 -#define RADDBGI_LanguageXList(X) \ +#define RDI_LanguageXList(X) \ X(NULL, 0) \ X(C, 1) \ X(CPlusPlus, 2) -typedef RADDBGI_U32 RADDBGI_Language; -typedef enum RADDBGI_LanguageEnum{ -#define X(N,C) RADDBGI_Language_##N = C, - RADDBGI_LanguageXList(X) +typedef RDI_U32 RDI_Language; +typedef enum RDI_LanguageEnum{ +#define X(N,C) RDI_Language_##N = C, + RDI_LanguageXList(X) #undef X -} RADDBGI_LanguageEnum; +} RDI_LanguageEnum; -typedef struct RADDBGI_Header{ +typedef struct RDI_Header{ // identification - RADDBGI_U64 magic; - RADDBGI_U32 encoding_version; + RDI_U64 magic; + RDI_U32 encoding_version; // data sections - RADDBGI_U32 data_section_off; - RADDBGI_U32 data_section_count; -} RADDBGI_Header; + RDI_U32 data_section_off; + RDI_U32 data_section_count; +} RDI_Header; //- data sections -#define RADDBGI_DataSectionTag_SECONDARY 0x80000000 +#define RDI_DataSectionTag_SECONDARY 0x80000000 -#define RADDBGI_DataSectionTagXList(X,Y) \ +#define RDI_DataSectionTagXList(X,Y) \ X(NULL, 0x0000)\ X(TopLevelInfo, 0x0001)\ X(StringData, 0x0002)\ @@ -273,131 +279,131 @@ X(LocationBlocks, 0x0016)\ X(LocationData, 0x0017)\ X(NameMaps, 0x0018)\ Y(PRIMARY_COUNT)\ -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) +X(SKIP, RDI_DataSectionTag_SECONDARY|0x0000)\ +X(LineInfoVoffs, RDI_DataSectionTag_SECONDARY|0x0001)\ +X(LineInfoData, RDI_DataSectionTag_SECONDARY|0x0002)\ +X(LineInfoColumns, RDI_DataSectionTag_SECONDARY|0x0003)\ +X(LineMapNumbers, RDI_DataSectionTag_SECONDARY|0x0004)\ +X(LineMapRanges, RDI_DataSectionTag_SECONDARY|0x0005)\ +X(LineMapVoffs, RDI_DataSectionTag_SECONDARY|0x0006)\ +X(NameMapBuckets, RDI_DataSectionTag_SECONDARY|0x0007)\ +X(NameMapNodes, RDI_DataSectionTag_SECONDARY|0x0008) -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) +typedef RDI_U32 RDI_DataSectionTag; +typedef enum RDI_DataSectionTagEnum{ +#define X(N,C) RDI_DataSectionTag_##N = C, +#define Y(N) RDI_DataSectionTag_##N, + RDI_DataSectionTagXList(X,Y) #undef X #undef Y -} RADDBGI_DataSectionTagEnum; +} RDI_DataSectionTagEnum; -#define RADDBGI_DataSectionEncodingXList(X) \ +#define RDI_DataSectionEncodingXList(X) \ X(Unpacked, 0) -typedef RADDBGI_U32 RADDBGI_DataSectionEncoding; -typedef enum RADDBGI_DataSectionEncodingEnum{ -#define X(N,C) RADDBGI_DataSectionEncoding_##N = C, - RADDBGI_DataSectionEncodingXList(X) +typedef RDI_U32 RDI_DataSectionEncoding; +typedef enum RDI_DataSectionEncodingEnum{ +#define X(N,C) RDI_DataSectionEncoding_##N = C, + RDI_DataSectionEncodingXList(X) #undef X -} RADDBGI_DataSectionEncodingEnum; +} RDI_DataSectionEncodingEnum; -typedef struct RADDBGI_DataSection{ - RADDBGI_DataSectionTag tag; - RADDBGI_DataSectionEncoding encoding; - RADDBGI_U64 off; - RADDBGI_U64 encoded_size; - RADDBGI_U64 unpacked_size; -} RADDBGI_DataSection; +typedef struct RDI_DataSection{ + RDI_DataSectionTag tag; + RDI_DataSectionEncoding encoding; + RDI_U64 off; + RDI_U64 encoded_size; + RDI_U64 unpacked_size; +} RDI_DataSection; //- common types -typedef struct RADDBGI_VMapEntry{ - RADDBGI_U64 voff; - RADDBGI_U64 idx; -} RADDBGI_VMapEntry; +typedef struct RDI_VMapEntry{ + RDI_U64 voff; + RDI_U64 idx; +} RDI_VMapEntry; //- top level info -typedef struct RADDBGI_TopLevelInfo{ - RADDBGI_Arch architecture; - RADDBGI_U32 exe_name_string_idx; - RADDBGI_U64 exe_hash; - RADDBGI_U64 voff_max; -} RADDBGI_TopLevelInfo; +typedef struct RDI_TopLevelInfo{ + RDI_Arch architecture; + RDI_U32 exe_name_string_idx; + RDI_U64 exe_hash; + RDI_U64 voff_max; +} RDI_TopLevelInfo; //- binary sections -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 RDI_U32 RDI_BinarySectionFlags; +typedef enum RDI_BinarySectionFlagsEnum{ + RDI_BinarySectionFlag_Read = (1 << 0), + RDI_BinarySectionFlag_Write = (1 << 1), + RDI_BinarySectionFlag_Execute = (1 << 2) +} RDI_BinarySectionFlagsEnum; -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; +typedef struct RDI_BinarySection{ + RDI_U32 name_string_idx; + RDI_BinarySectionFlags flags; + RDI_U64 voff_first; + RDI_U64 voff_opl; + RDI_U64 foff_first; + RDI_U64 foff_opl; +} RDI_BinarySection; //- file & file system info -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 RDI_FilePathNode{ + RDI_U32 name_string_idx; + RDI_U32 parent_path_node; + RDI_U32 first_child; + RDI_U32 next_sibling; + RDI_U32 source_file_idx; +} RDI_FilePathNode; -typedef struct RADDBGI_SourceFile{ - RADDBGI_U32 file_path_node_idx; +typedef struct RDI_SourceFile{ + RDI_U32 file_path_node_idx; - RADDBGI_U32 normal_full_path_string_idx; + RDI_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)) - 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; + RDI_U32 line_map_count; + RDI_U32 line_map_nums_data_idx; // U32[line_map_count] (sorted - not closed ranges) + RDI_U32 line_map_range_data_idx; // U32[line_map_count + 1] (pairs form ranges) + RDI_U32 line_map_voff_data_idx; // U64[...] (idx by line_map_range_data) +} RDI_SourceFile; //- units & line info -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; +typedef struct RDI_Unit{ + RDI_U32 unit_name_string_idx; + RDI_U32 compiler_name_string_idx; + RDI_U32 source_file_path_node; + RDI_U32 object_file_path_node; + RDI_U32 archive_file_path_node; + RDI_U32 build_path_node; + RDI_Language language; // usage of line info to go from voff to file & line number: // (line_info_voffs * voff) -> (nil + index) - // (line_info_data * index) -> (RADDBGI_Line = (file_idx * line_number)) + // (line_info_data * index) -> (RDI_Line = (file_idx * line_number)) - 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; + RDI_U32 line_info_voffs_data_idx; // U64[line_info_count + 1] (sorted ranges) + RDI_U32 line_info_data_idx; // RDI_Line[line_info_count] + RDI_U32 line_info_col_data_idx; // RDI_Col[line_info_count] + RDI_U32 line_info_count; +} RDI_Unit; -typedef struct RADDBGI_Line{ - RADDBGI_U32 file_idx; - RADDBGI_U32 line_num; -} RADDBGI_Line; +typedef struct RDI_Line{ + RDI_U32 file_idx; + RDI_U32 line_num; +} RDI_Line; -typedef struct RADDBGI_Column{ - RADDBGI_U16 col_first; - RADDBGI_U16 col_opl; -} RADDBGI_Column; +typedef struct RDI_Column{ + RDI_U16 col_first; + RDI_U16 col_opl; +} RDI_Column; //- type info @@ -405,7 +411,7 @@ typedef struct RADDBGI_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 RADDBGI_TypeKindXList(X,XZ,Y)\ +#define RDI_TypeKindXList(X,XZ,Y)\ X(NULL, 0x0000) \ \ XZ(Void, 0x0001, 0) Y(FirstBuiltIn, Void) \ @@ -466,23 +472,23 @@ Y(LastUserDefined, IncompleteEnum) \ X(Bitfield, 0xF000) \ X(Variadic, 0xF001) -typedef RADDBGI_U16 RADDBGI_TypeKind; -typedef enum RADDBGI_TypeKindEnum{ +typedef RDI_U16 RDI_TypeKind; +typedef enum RDI_TypeKindEnum{ -#define X(name,code) RADDBGI_TypeKind_##name = code, +#define X(name,code) RDI_TypeKind_##name = code, #define XZ(name,code,size) X(name,code) -#define Y(alias_name,name) RADDBGI_TypeKind_##alias_name = RADDBGI_TypeKind_##name, - RADDBGI_TypeKindXList(X,XZ,Y) +#define Y(alias_name,name) RDI_TypeKind_##alias_name = RDI_TypeKind_##name, + RDI_TypeKindXList(X,XZ,Y) #undef X #undef XZ #undef Y -} RADDBGI_TypeKindEnum; +} RDI_TypeKindEnum; -typedef RADDBGI_U16 RADDBGI_TypeModifierFlags; +typedef RDI_U16 RDI_TypeModifierFlags; enum{ - RADDBGI_TypeModifierFlag_Const = (1 << 0), - RADDBGI_TypeModifierFlag_Volatile = (1 << 1), + RDI_TypeModifierFlag_Const = (1 << 0), + RDI_TypeModifierFlag_Volatile = (1 << 1), }; // IMPORTANT NOTE: All type nodes in a valid raddbg are *topologically sorted*. @@ -493,65 +499,65 @@ enum{ // This restriction does not apply to the members of a type that are // attached through a "UDT" though. -typedef struct RADDBGI_TypeNode{ - RADDBGI_TypeKind kind; - // when kind is 'Modifier' -> RADDBGI_TypeModifierFlags - RADDBGI_U16 flags; +typedef struct RDI_TypeNode{ + RDI_TypeKind kind; + // when kind is 'Modifier' -> RDI_TypeModifierFlags + RDI_U16 flags; - RADDBGI_U32 byte_size; + RDI_U32 byte_size; union{ // kind is 'built-in' struct{ - RADDBGI_U32 name_string_idx; + RDI_U32 name_string_idx; } built_in; // kind is 'constructed' struct{ - RADDBGI_U32 direct_type_idx; - RADDBGI_U32 count; + RDI_U32 direct_type_idx; + RDI_U32 count; union{ // when kind is 'Function' or 'Method' - RADDBGI_U32 param_idx_run_first; + RDI_U32 param_idx_run_first; // when kind is 'MemberPtr' - RADDBGI_U32 owner_type_idx; + RDI_U32 owner_type_idx; }; } constructed; // kind is 'user defined' struct{ - RADDBGI_U32 name_string_idx; - RADDBGI_U32 direct_type_idx; - RADDBGI_U32 udt_idx; + RDI_U32 name_string_idx; + RDI_U32 direct_type_idx; + RDI_U32 udt_idx; } user_defined; // (kind = Bitfield) struct{ - RADDBGI_U32 off; - RADDBGI_U32 size; + RDI_U32 off; + RDI_U32 size; } bitfield; }; -} RADDBGI_TypeNode; +} RDI_TypeNode; -typedef RADDBGI_U32 RADDBGI_UserDefinedTypeFlags; +typedef RDI_U32 RDI_UserDefinedTypeFlags; enum{ - RADDBGI_UserDefinedTypeFlag_EnumMembers = (1 << 0), + RDI_UserDefinedTypeFlag_EnumMembers = (1 << 0), }; -typedef struct RADDBGI_UDT{ - RADDBGI_U32 self_type_idx; - RADDBGI_UserDefinedTypeFlags flags; +typedef struct RDI_UDT{ + RDI_U32 self_type_idx; + RDI_UserDefinedTypeFlags flags; // when EnumMembers flag is set, indexes into enum "enum_members" instead of "members" - RADDBGI_U32 member_first; - RADDBGI_U32 member_count; + RDI_U32 member_first; + RDI_U32 member_count; - RADDBGI_U32 file_idx; - RADDBGI_U32 line; - RADDBGI_U32 col; -} RADDBGI_UDT; + RDI_U32 file_idx; + RDI_U32 line; + RDI_U32 col; +} RDI_UDT; -#define RADDBGI_MemberKindXList(X) \ +#define RDI_MemberKindXList(X) \ X(NULL, 0x0000) \ X(DataField, 0x0001) \ X(StaticData, 0x0002) \ @@ -563,12 +569,12 @@ X(Base, 0x0201) \ X(VirtualBase, 0x0202) \ X(NestedType, 0x0300) -typedef RADDBGI_U16 RADDBGI_MemberKind; -typedef enum RADDBGI_MemberKindEnum{ -#define X(N,C) RADDBGI_MemberKind_##N = C, - RADDBGI_MemberKindXList(X) +typedef RDI_U16 RDI_MemberKind; +typedef enum RDI_MemberKindEnum{ +#define X(N,C) RDI_MemberKind_##N = C, + RDI_MemberKindXList(X) #undef X -} RADDBGI_MemberKindEnum; +} RDI_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 +584,141 @@ typedef enum RADDBGI_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 RADDBGI_Member{ - RADDBGI_MemberKind kind; - RADDBGI_U16 __unused__; +typedef struct RDI_Member{ + RDI_MemberKind kind; + RDI_U16 __unused__; - RADDBGI_U32 name_string_idx; - RADDBGI_U32 type_idx; - RADDBGI_U32 off; -} RADDBGI_Member; + RDI_U32 name_string_idx; + RDI_U32 type_idx; + RDI_U32 off; +} RDI_Member; -typedef struct RADDBGI_EnumMember{ - RADDBGI_U32 name_string_idx; - RADDBGI_U32 __unused__; - RADDBGI_U64 val; -} RADDBGI_EnumMember; +typedef struct RDI_EnumMember{ + RDI_U32 name_string_idx; + RDI_U32 __unused__; + RDI_U64 val; +} RDI_EnumMember; //- symbol info -typedef RADDBGI_U32 RADDBGI_LinkFlags; +typedef RDI_U32 RDI_LinkFlags; enum{ - RADDBGI_LinkFlag_External = (1 << 0), + RDI_LinkFlag_External = (1 << 0), // NOTE: Scope flags are mutually exclusive. // A symbol is either global scoped, type scoped, or procedure scoped. - RADDBGI_LinkFlag_TypeScoped = (1 << 1), - RADDBGI_LinkFlag_ProcScoped = (1 << 2), + RDI_LinkFlag_TypeScoped = (1 << 1), + RDI_LinkFlag_ProcScoped = (1 << 2), }; -typedef struct RADDBGI_GlobalVariable{ - RADDBGI_U32 name_string_idx; +typedef struct RDI_GlobalVariable{ + RDI_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. - RADDBGI_LinkFlags link_flags; - RADDBGI_U64 voff; - RADDBGI_U32 type_idx; + RDI_LinkFlags link_flags; + RDI_U64 voff; + RDI_U32 type_idx; // container_idx: UDT for "TypeScoped", Procedure for "ProcScoped" - RADDBGI_U32 container_idx; -} RADDBGI_GlobalVariable; + RDI_U32 container_idx; +} RDI_GlobalVariable; -typedef struct RADDBGI_ThreadVariable{ - RADDBGI_U32 name_string_idx; +typedef struct RDI_ThreadVariable{ + RDI_U32 name_string_idx; // NOTE: See the note in GlobalVariable regarding scoping. The same concept applies here. - RADDBGI_LinkFlags link_flags; - RADDBGI_U32 tls_off; - RADDBGI_U32 type_idx; + RDI_LinkFlags link_flags; + RDI_U32 tls_off; + RDI_U32 type_idx; // container_idx: UDT for "TypeScoped", Procedure for "ProcScoped" - RADDBGI_U32 container_idx; -} RADDBGI_ThreadVariable; + RDI_U32 container_idx; +} RDI_ThreadVariable; -typedef struct RADDBGI_Procedure{ - RADDBGI_U32 name_string_idx; - RADDBGI_U32 link_name_string_idx; +typedef struct RDI_Procedure{ + RDI_U32 name_string_idx; + RDI_U32 link_name_string_idx; // NOTE: See the note in GlobalVariable regarding scoping. The same concept applies here. - RADDBGI_LinkFlags link_flags; - RADDBGI_U32 type_idx; - RADDBGI_U32 root_scope_idx; + RDI_LinkFlags link_flags; + RDI_U32 type_idx; + RDI_U32 root_scope_idx; // container_idx: UDT for "TypeScoped", Procedure for "ProcScoped" - RADDBGI_U32 container_idx; -} RADDBGI_Procedure; + RDI_U32 container_idx; +} RDI_Procedure; -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; +typedef struct RDI_Scope{ + RDI_U32 proc_idx; + RDI_U32 parent_scope_idx; + RDI_U32 first_child_scope_idx; + RDI_U32 next_sibling_scope_idx; - RADDBGI_U32 voff_range_first; - RADDBGI_U32 voff_range_opl; + RDI_U32 voff_range_first; + RDI_U32 voff_range_opl; // indexes into "locals" - RADDBGI_U32 local_first; - RADDBGI_U32 local_count; + RDI_U32 local_first; + RDI_U32 local_count; - RADDBGI_U32 static_local_idx_run_first; - RADDBGI_U32 static_local_count; + RDI_U32 static_local_idx_run_first; + RDI_U32 static_local_count; // TODO(allen): attach less common scope-relevant info -} RADDBGI_Scope; +} RDI_Scope; -typedef RADDBGI_U32 RADDBGI_LocalKind; +typedef RDI_U32 RDI_LocalKind; typedef enum{ - RADDBGI_LocalKind_NULL, - RADDBGI_LocalKind_Parameter, - RADDBGI_LocalKind_Variable, - RADDBGI_LocalKind_COUNT -} RADDBGI_LocalKindEnum; + RDI_LocalKind_NULL, + RDI_LocalKind_Parameter, + RDI_LocalKind_Variable, + RDI_LocalKind_COUNT +} RDI_LocalKindEnum; -typedef struct RADDBGI_Local{ - RADDBGI_LocalKind kind; - RADDBGI_U32 name_string_idx; - RADDBGI_U64 type_idx; +typedef struct RDI_Local{ + RDI_LocalKind kind; + RDI_U32 name_string_idx; + RDI_U64 type_idx; // indexes into "location_blocks" - RADDBGI_U32 location_first; - RADDBGI_U32 location_opl; -} RADDBGI_Local; + RDI_U32 location_first; + RDI_U32 location_opl; +} RDI_Local; -typedef struct RADDBGI_LocationBlock{ - RADDBGI_U32 scope_off_first; - RADDBGI_U32 scope_off_opl; - RADDBGI_U32 location_data_off; -} RADDBGI_LocationBlock; +typedef struct RDI_LocationBlock{ + RDI_U32 scope_off_first; + RDI_U32 scope_off_opl; + RDI_U32 location_data_off; +} RDI_LocationBlock; -typedef RADDBGI_U8 RADDBGI_LocationKind; +typedef RDI_U8 RDI_LocationKind; typedef enum{ - RADDBGI_LocationKind_NULL, - RADDBGI_LocationKind_AddrBytecodeStream, - RADDBGI_LocationKind_ValBytecodeStream, - RADDBGI_LocationKind_AddrRegisterPlusU16, - RADDBGI_LocationKind_AddrAddrRegisterPlusU16, - RADDBGI_LocationKind_ValRegister, - RADDBGI_LocationKind_COUNT -} RADDBGI_LocationKindEnum; + RDI_LocationKind_NULL, + RDI_LocationKind_AddrBytecodeStream, + RDI_LocationKind_ValBytecodeStream, + RDI_LocationKind_AddrRegisterPlusU16, + RDI_LocationKind_AddrAddrRegisterPlusU16, + RDI_LocationKind_ValRegister, + RDI_LocationKind_COUNT +} RDI_LocationKindEnum; -typedef struct RADDBGI_LocationBytecodeStream{ - RADDBGI_LocationKind kind; - // [... 0] null terminated byte sequence RADDBGI_EvalBytecodeStream -} RADDBGI_LocationBytecodeStream; +typedef struct RDI_LocationBytecodeStream{ + RDI_LocationKind kind; + // [... 0] null terminated byte sequence RDI_EvalBytecodeStream +} RDI_LocationBytecodeStream; -typedef struct RADDBGI_LocationRegisterPlusU16{ - RADDBGI_LocationKind kind; - RADDBGI_RegisterCode register_code; - RADDBGI_U16 offset; -} RADDBGI_LocationRegisterPlusU16; +typedef struct RDI_LocationRegisterPlusU16{ + RDI_LocationKind kind; + RDI_RegisterCode register_code; + RDI_U16 offset; +} RDI_LocationRegisterPlusU16; -typedef struct RADDBGI_LocationRegister{ - RADDBGI_LocationKind kind; - RADDBGI_RegisterCode register_code; -} RADDBGI_LocationRegister; +typedef struct RDI_LocationRegister{ + RDI_LocationKind kind; + RDI_RegisterCode register_code; +} RDI_LocationRegister; //- name map types -#define RADDBGI_NameMapXList(X)\ +#define RDI_NameMapXList(X)\ X(NULL, 0)\ X(GlobalVariables, 1)\ X(ThreadVariables, 2)\ @@ -721,42 +727,42 @@ X(Types, 4)\ X(LinkNameProcedures, 5)\ X(NormalSourcePaths, 6) -typedef RADDBGI_U32 RADDBGI_NameMapKind; -typedef enum RADDBGI_NameMapKindEnum{ -#define X(N,C) RADDBGI_NameMapKind_##N = C, - RADDBGI_NameMapXList(X) +typedef RDI_U32 RDI_NameMapKind; +typedef enum RDI_NameMapKindEnum{ +#define X(N,C) RDI_NameMapKind_##N = C, + RDI_NameMapXList(X) #undef X - RADDBGI_NameMapKind_COUNT -} RADDBGI_NameMapKindEnum; + RDI_NameMapKind_COUNT +} RDI_NameMapKindEnum; // TODO(allen): documentation here for the hashing and probing strategy for this table -typedef struct RADDBGI_NameMap{ - RADDBGI_NameMapKind kind; - RADDBGI_U32 bucket_data_idx; - RADDBGI_U32 node_data_idx; -} RADDBGI_NameMap; +typedef struct RDI_NameMap{ + RDI_NameMapKind kind; + RDI_U32 bucket_data_idx; + RDI_U32 node_data_idx; +} RDI_NameMap; -typedef struct RADDBGI_NameMapBucket{ - RADDBGI_U32 first_node; - RADDBGI_U32 node_count; -} RADDBGI_NameMapBucket; +typedef struct RDI_NameMapBucket{ + RDI_U32 first_node; + RDI_U32 node_count; +} RDI_NameMapBucket; -typedef struct RADDBGI_NameMapNode{ - RADDBGI_U32 string_idx; - RADDBGI_U32 match_count; +typedef struct RDI_NameMapNode{ + RDI_U32 string_idx; + RDI_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 - RADDBGI_U32 match_idx_or_idx_run_first; -} RADDBGI_NameMapNode; + RDI_U32 match_idx_or_idx_run_first; +} RDI_NameMapNode; //////////////////////////////// // Eval Bytecode // (Name, decodeN, popN, pushN) -#define RADDBGI_EvalOpXList(X)\ +#define RDI_EvalOpXList(X)\ X(Stop, 0, 0, 0)\ X(Noop, 0, 0, 0)\ X(Cond, 1, 1, 0)\ @@ -803,7 +809,7 @@ X(Pop, 0, 1, 0)\ X(Insert, 1, 0, 0) // (Name) -#define RADDBGI_EvalTypeGroupXList(X)\ +#define RDI_EvalTypeGroupXList(X)\ X(Other)\ X(U)\ X(S)\ @@ -811,7 +817,7 @@ X(F32)\ X(F64) // (Name, error-message) -#define RADDBGI_EvalConversionKindXList(X)\ +#define RDI_EvalConversionKindXList(X)\ X(Noop, "")\ X(Legal, "")\ X(OtherToOther, "cannot convert between these types")\ @@ -819,7 +825,7 @@ X(ToOther, "cannot convert to this type")\ X(FromOther, "cannot convert this type") // Xb(EvalTypeGroup) Y(TypeKind) Xe(EvalTypeGroup) -#define RADDBGI_EvalTypeGroupFromKindMap(Y,Xb,Xe)\ +#define RDI_EvalTypeGroupFromKindMap(Y,Xb,Xe)\ \ Xb(U) Y(U8) Y(U16) Y(U32) Y(U64) Y(Bool) Y(Ptr) Y(Enum)\ Xe(U)\ @@ -834,7 +840,7 @@ Xb(F64) Y(F64)\ Xe(F64) // Xb(EvalConversionKind) Y(EvalTypeGroup, EvalTypeGroup) Xe(EvalConversionKind) -#define RADDBGI_EvalConversionKindFromTypeGroupPairMap(Y,Xb,Xe)\ +#define RDI_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,65 +861,65 @@ Xb(FromOther) Y(Other, U) Y(Other, S) Y(Other, F32) Y(Other, F64)\ Xe(FromOther) // eval interpretation macros -#define RADDBGI_EncodeRegReadParam(reg,bytesize,bytepos) ((reg)|((bytesize)<<8)|((bytepos)<<16)) +#define RDI_EncodeRegReadParam(reg,bytesize,bytepos) ((reg)|((bytesize)<<8)|((bytepos)<<16)) // eval enums -typedef RADDBGI_U8 RADDBGI_EvalOp; +typedef RDI_U8 RDI_EvalOp; -typedef enum RADDBGI_EvalOpEnum{ -#define X(N,dec,pop,push) RADDBGI_EvalOp_##N, - RADDBGI_EvalOpXList(X) +typedef enum RDI_EvalOpEnum{ +#define X(N,dec,pop,push) RDI_EvalOp_##N, + RDI_EvalOpXList(X) #undef X - RADDBGI_EvalOp_COUNT -} RADDBGI_EvalOpEnum; + RDI_EvalOp_COUNT +} RDI_EvalOpEnum; -typedef RADDBGI_U8 RADDBGI_EvalTypeGroup; +typedef RDI_U8 RDI_EvalTypeGroup; -typedef enum RADDBGI_EvalTypeGroupEnum{ -#define X(N) RADDBGI_EvalTypeGroup_##N, - RADDBGI_EvalTypeGroupXList(X) +typedef enum RDI_EvalTypeGroupEnum{ +#define X(N) RDI_EvalTypeGroup_##N, + RDI_EvalTypeGroupXList(X) #undef X - RADDBGI_EvalTypeGroup_COUNT, -} RADDBGI_EvalTypeGroupEnum; + RDI_EvalTypeGroup_COUNT, +} RDI_EvalTypeGroupEnum; -typedef RADDBGI_U8 RADDBGI_EvalConversionKind; +typedef RDI_U8 RDI_EvalConversionKind; -typedef enum RADDBGI_EvalConversionKindEnum{ -#define X(N,msg) RADDBGI_EvalConversionKind_##N, - RADDBGI_EvalConversionKindXList(X) +typedef enum RDI_EvalConversionKindEnum{ +#define X(N,msg) RDI_EvalConversionKind_##N, + RDI_EvalConversionKindXList(X) #undef X - RADDBGI_EvalConversionKind_COUNT, -} RADDBGI_EvalConversionKindEnum; + RDI_EvalConversionKind_COUNT, +} RDI_EvalConversionKindEnum; //- eval data tables -#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) +#define RDI_EVAL_CTRLBITS(decodeN,popN,pushN) ((decodeN) | ((popN) << 4) | ((pushN) << 6)) +#define RDI_DECODEN_FROM_CTRLBITS(ctrlbits) ((ctrlbits) & 0xf) +#define RDI_POPN_FROM_CTRLBITS(ctrlbits) (((ctrlbits) >> 4) & 0x3) +#define RDI_PUSHN_FROM_CTRLBITS(ctrlbits) (((ctrlbits) >> 6) & 0x3) -static RADDBGI_U8 raddbgi_eval_opcode_ctrlbits[] = { -#define X(Name, decodeN, popN, pushN) RADDBGI_EVAL_CTRLBITS(decodeN,popN,pushN), - RADDBGI_EvalOpXList(X) +static RDI_U8 rdi_eval_opcode_ctrlbits[] = { +#define X(Name, decodeN, popN, pushN) RDI_EVAL_CTRLBITS(decodeN,popN,pushN), + RDI_EvalOpXList(X) #undef X }; //////////////////////////////// // Functions -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); +RDI_PROC RDI_U64 rdi_hash(RDI_U8 *ptr, RDI_U64 size); +RDI_PROC RDI_U32 rdi_size_from_basic_type_kind(RDI_TypeKind kind); +RDI_PROC RDI_U32 rdi_addr_size_from_arch(RDI_Arch arch); //- eval helpers -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); +RDI_PROC RDI_EvalConversionKind rdi_eval_conversion_rule(RDI_EvalTypeGroup in, RDI_EvalTypeGroup out); +RDI_PROC RDI_U8* rdi_eval_conversion_message(RDI_EvalConversionKind conversion_kind, RDI_U64 *lennout); +RDI_PROC RDI_S32 rdi_eval_opcode_type_compatible(RDI_EvalOp op, RDI_EvalTypeGroup group); #endif // RADDBGI_FORMAT_H diff --git a/src/lib_raddbgi_format/raddbgi_format_parse.c b/src/lib_raddbgi_format/raddbgi_format_parse.c index 9e294146..cbd6a880 100644 --- a/src/lib_raddbgi_format/raddbgi_format_parse.c +++ b/src/lib_raddbgi_format/raddbgi_format_parse.c @@ -4,105 +4,105 @@ //////////////////////////////// //~ RADDBG Parse API -RADDBGI_PROC RADDBGI_ParseStatus -raddbgi_parse(RADDBGI_U8 *data, RADDBGI_U64 size, RADDBGI_Parsed *out){ - RADDBGI_ParseStatus result = RADDBGI_ParseStatus_Good; +RDI_PROC RDI_ParseStatus +rdi_parse(RDI_U8 *data, RDI_U64 size, RDI_Parsed *out){ + RDI_ParseStatus result = RDI_ParseStatus_Good; // out header - RADDBGI_Header *hdr = 0; + RDI_Header *hdr = 0; { if (sizeof(*hdr) <= size){ - hdr = (RADDBGI_Header*)data; + hdr = (RDI_Header*)data; } // (errors) - if (hdr == 0 || hdr->magic != RADDBGI_MAGIC_CONSTANT){ + if (hdr == 0 || hdr->magic != RDI_MAGIC_CONSTANT){ hdr = 0; - result = RADDBGI_ParseStatus_HeaderDoesNotMatch; + result = RDI_ParseStatus_HeaderDoesNotMatch; } if (hdr != 0 && hdr->encoding_version != 1){ hdr = 0; - result = RADDBGI_ParseStatus_UnsupportedVersionNumber; + result = RDI_ParseStatus_UnsupportedVersionNumber; } } // out data sections - RADDBGI_DataSection *dsecs = 0; - RADDBGI_U32 dsec_count = 0; + RDI_DataSection *dsecs = 0; + RDI_U32 dsec_count = 0; if (hdr != 0){ - RADDBGI_U64 opl = (RADDBGI_U64)hdr->data_section_off + (RADDBGI_U64)hdr->data_section_count*sizeof(*dsecs); + RDI_U64 opl = (RDI_U64)hdr->data_section_off + (RDI_U64)hdr->data_section_count*sizeof(*dsecs); if (opl <= size){ - dsecs = (RADDBGI_DataSection*)(data + hdr->data_section_off); + dsecs = (RDI_DataSection*)(data + hdr->data_section_off); dsec_count = hdr->data_section_count; } // (errors) if (dsecs == 0){ - result = RADDBGI_ParseStatus_InvalidDataSecionLayout; + result = RDI_ParseStatus_InvalidDataSecionLayout; } } // extract primary data section indexes - 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){ + RDI_U32 dsec_idx[RDI_DataSectionTag_PRIMARY_COUNT] = {0}; + if (result == RDI_ParseStatus_Good){ + RDI_DataSection *sec_ptr = dsecs; + for (RDI_U32 i = 0; i < dsec_count; i += 1, sec_ptr += 1){ + if (sec_ptr->tag < RDI_DataSectionTag_PRIMARY_COUNT){ dsec_idx[sec_ptr->tag] = i; } } } // fill out data block (part 1) - if (result == RADDBGI_ParseStatus_Good){ + if (result == RDI_ParseStatus_Good){ out->raw_data = data; out->raw_data_size = size; out->dsecs = dsecs; out->dsec_count = dsec_count; - for (RADDBGI_U32 i = 0; i < RADDBGI_DataSectionTag_PRIMARY_COUNT; i += 1){ + for (RDI_U32 i = 0; i < RDI_DataSectionTag_PRIMARY_COUNT; i += 1){ out->dsec_idx[i] = dsec_idx[i]; } } // out string table - 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); + RDI_U8 *string_data = 0; + RDI_U64 string_opl = 0; + RDI_U32 *string_offs = 0; + RDI_U64 string_count = 0; + if (result == RDI_ParseStatus_Good){ + rdi_parse__extract_primary(out, string_data, &string_opl, + RDI_DataSectionTag_StringData); - RADDBGI_U64 table_entry_count = 0; - raddbgi_parse__extract_primary(out, string_offs, &table_entry_count, - RADDBGI_DataSectionTag_StringTable); + RDI_U64 table_entry_count = 0; + rdi_parse__extract_primary(out, string_offs, &table_entry_count, + RDI_DataSectionTag_StringTable); if (table_entry_count > 0){ string_count = table_entry_count - 1; } // (errors) if (string_data == 0){ - result = RADDBGI_ParseStatus_MissingStringDataSection; + result = RDI_ParseStatus_MissingStringDataSection; } else if (string_offs == 0){ - result = RADDBGI_ParseStatus_MissingStringTableSection; + result = RDI_ParseStatus_MissingStringTableSection; } } // out index runs - 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); + RDI_U32 *idx_run_data = 0; + RDI_U64 idx_run_count = 0; + if (result == RDI_ParseStatus_Good){ + rdi_parse__extract_primary(out, idx_run_data, &idx_run_count, + RDI_DataSectionTag_IndexRuns); // (errors) if (idx_run_data == 0){ - result = RADDBGI_ParseStatus_MissingIndexRunSection; + result = RDI_ParseStatus_MissingIndexRunSection; } } - if (result == RADDBGI_ParseStatus_Good){ + if (result == RDI_ParseStatus_Good){ // fill out primary data structures (part 2) out->string_data = string_data; out->string_offs = string_offs; @@ -112,81 +112,81 @@ raddbgi_parse(RADDBGI_U8 *data, RADDBGI_U64 size, RADDBGI_Parsed *out){ out->idx_run_count = idx_run_count; { - RADDBGI_TopLevelInfo *tli = 0; - RADDBGI_U64 dummy = 0; - raddbgi_parse__extract_primary(out, tli, &dummy, RADDBGI_DataSectionTag_TopLevelInfo); + RDI_TopLevelInfo *tli = 0; + RDI_U64 dummy = 0; + rdi_parse__extract_primary(out, tli, &dummy, RDI_DataSectionTag_TopLevelInfo); if (dummy != 1){ tli = 0; } out->top_level_info = tli; } - raddbgi_parse__extract_primary(out, out->binary_sections, &out->binary_sections_count, - RADDBGI_DataSectionTag_BinarySections); + rdi_parse__extract_primary(out, out->binary_sections, &out->binary_sections_count, + RDI_DataSectionTag_BinarySections); - raddbgi_parse__extract_primary(out, out->file_paths, &out->file_paths_count, - RADDBGI_DataSectionTag_FilePathNodes); + rdi_parse__extract_primary(out, out->file_paths, &out->file_paths_count, + RDI_DataSectionTag_FilePathNodes); - raddbgi_parse__extract_primary(out, out->source_files, &out->source_files_count, - RADDBGI_DataSectionTag_SourceFiles); + rdi_parse__extract_primary(out, out->source_files, &out->source_files_count, + RDI_DataSectionTag_SourceFiles); - raddbgi_parse__extract_primary(out, out->units, &out->units_count, - RADDBGI_DataSectionTag_Units); + rdi_parse__extract_primary(out, out->units, &out->units_count, + RDI_DataSectionTag_Units); - raddbgi_parse__extract_primary(out, out->unit_vmap, &out->unit_vmap_count, - RADDBGI_DataSectionTag_UnitVmap); + rdi_parse__extract_primary(out, out->unit_vmap, &out->unit_vmap_count, + RDI_DataSectionTag_UnitVmap); - raddbgi_parse__extract_primary(out, out->unit_vmap, &out->unit_vmap_count, - RADDBGI_DataSectionTag_UnitVmap); + rdi_parse__extract_primary(out, out->unit_vmap, &out->unit_vmap_count, + RDI_DataSectionTag_UnitVmap); - raddbgi_parse__extract_primary(out, out->type_nodes, &out->type_nodes_count, - RADDBGI_DataSectionTag_TypeNodes); + rdi_parse__extract_primary(out, out->type_nodes, &out->type_nodes_count, + RDI_DataSectionTag_TypeNodes); - raddbgi_parse__extract_primary(out, out->udts, &out->udts_count, - RADDBGI_DataSectionTag_UDTs); + rdi_parse__extract_primary(out, out->udts, &out->udts_count, + RDI_DataSectionTag_UDTs); - raddbgi_parse__extract_primary(out, out->members, &out->members_count, - RADDBGI_DataSectionTag_Members); + rdi_parse__extract_primary(out, out->members, &out->members_count, + RDI_DataSectionTag_Members); - raddbgi_parse__extract_primary(out, out->enum_members, &out->enum_members_count, - RADDBGI_DataSectionTag_EnumMembers); + rdi_parse__extract_primary(out, out->enum_members, &out->enum_members_count, + RDI_DataSectionTag_EnumMembers); - raddbgi_parse__extract_primary(out, out->global_variables, &out->global_variables_count, - RADDBGI_DataSectionTag_GlobalVariables); + rdi_parse__extract_primary(out, out->global_variables, &out->global_variables_count, + RDI_DataSectionTag_GlobalVariables); - raddbgi_parse__extract_primary(out, out->global_vmap, &out->global_vmap_count, - RADDBGI_DataSectionTag_GlobalVmap); + rdi_parse__extract_primary(out, out->global_vmap, &out->global_vmap_count, + RDI_DataSectionTag_GlobalVmap); - raddbgi_parse__extract_primary(out, out->thread_variables, &out->thread_variables_count, - RADDBGI_DataSectionTag_ThreadVariables); + rdi_parse__extract_primary(out, out->thread_variables, &out->thread_variables_count, + RDI_DataSectionTag_ThreadVariables); - raddbgi_parse__extract_primary(out, out->procedures, &out->procedures_count, - RADDBGI_DataSectionTag_Procedures); + rdi_parse__extract_primary(out, out->procedures, &out->procedures_count, + RDI_DataSectionTag_Procedures); - raddbgi_parse__extract_primary(out, out->scopes, &out->scopes_count, - RADDBGI_DataSectionTag_Scopes); + rdi_parse__extract_primary(out, out->scopes, &out->scopes_count, + RDI_DataSectionTag_Scopes); - raddbgi_parse__extract_primary(out, out->scope_voffs, &out->scope_voffs_count, - RADDBGI_DataSectionTag_ScopeVoffData); + rdi_parse__extract_primary(out, out->scope_voffs, &out->scope_voffs_count, + RDI_DataSectionTag_ScopeVoffData); - raddbgi_parse__extract_primary(out, out->scope_vmap, &out->scope_vmap_count, - RADDBGI_DataSectionTag_ScopeVmap); + rdi_parse__extract_primary(out, out->scope_vmap, &out->scope_vmap_count, + RDI_DataSectionTag_ScopeVmap); - raddbgi_parse__extract_primary(out, out->locals, &out->locals_count, - RADDBGI_DataSectionTag_Locals); + rdi_parse__extract_primary(out, out->locals, &out->locals_count, + RDI_DataSectionTag_Locals); - raddbgi_parse__extract_primary(out, out->location_blocks, &out->location_blocks_count, - RADDBGI_DataSectionTag_LocationBlocks); + rdi_parse__extract_primary(out, out->location_blocks, &out->location_blocks_count, + RDI_DataSectionTag_LocationBlocks); - raddbgi_parse__extract_primary(out, out->location_data, &out->location_data_size, - RADDBGI_DataSectionTag_LocationData); + rdi_parse__extract_primary(out, out->location_data, &out->location_data_size, + RDI_DataSectionTag_LocationData); { - raddbgi_parse__extract_primary(out, out->name_maps, &out->name_maps_count, - RADDBGI_DataSectionTag_NameMaps); + rdi_parse__extract_primary(out, out->name_maps, &out->name_maps_count, + RDI_DataSectionTag_NameMaps); - RADDBGI_NameMap *name_map_ptr = out->name_maps; - RADDBGI_NameMap *name_map_opl = out->name_maps + out->name_maps_count; + RDI_NameMap *name_map_ptr = out->name_maps; + RDI_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 @@ raddbgi_parse(RADDBGI_U8 *data, RADDBGI_U64 size, RADDBGI_Parsed *out){ } } -#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; } +#if !defined(RDI_DISABLE_NILS) + if(out->binary_sections == 0) { out->binary_sections = &rdi_binary_section_nil; out->binary_sections_count = 1; } + if(out->file_paths == 0) { out->file_paths = &rdi_file_path_node_nil; out->file_paths_count = 1; } + if(out->source_files == 0) { out->source_files = &rdi_source_file_nil; out->source_files_count = 1; } + if(out->units == 0) { out->units = &rdi_unit_nil; out->units_count = 1; } + if(out->unit_vmap == 0) { out->unit_vmap = &rdi_vmap_entry_nil; out->unit_vmap_count = 1; } + if(out->type_nodes == 0) { out->type_nodes = &rdi_type_node_nil; out->type_nodes_count = 1; } + if(out->udts == 0) { out->udts = &rdi_udt_nil; out->udts_count = 1; } + if(out->members == 0) { out->members = &rdi_member_nil; out->members_count = 1; } + if(out->enum_members == 0) { out->enum_members = &rdi_enum_member_nil; out->enum_members_count = 1; } + if(out->global_variables == 0) { out->global_variables = &rdi_global_variable_nil; out->global_variables_count = 1; } + if(out->global_vmap == 0) { out->global_vmap = &rdi_vmap_entry_nil; out->global_vmap_count = 1; } + if(out->thread_variables == 0) { out->thread_variables = &rdi_thread_variable_nil; out->thread_variables_count = 1; } + if(out->procedures == 0) { out->procedures = &rdi_procedure_nil; out->procedures_count = 1; } + if(out->scopes == 0) { out->scopes = &rdi_scope_nil; out->scopes_count = 1; } + if(out->scope_voffs == 0) { out->scope_voffs = &rdi_voff_nil; out->scope_voffs_count = 1; } + if(out->scope_vmap == 0) { out->scope_vmap = &rdi_vmap_entry_nil; out->scope_vmap_count = 1; } + if(out->locals == 0) { out->locals = &rdi_local_nil; out->locals_count = 1; } + if(out->location_blocks == 0) { out->location_blocks = &rdi_location_block_nil; out->location_blocks_count = 1; } #endif } @@ -220,15 +220,15 @@ raddbgi_parse(RADDBGI_U8 *data, RADDBGI_U64 size, RADDBGI_Parsed *out){ return(result); } -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; +RDI_PROC RDI_U8* +rdi_string_from_idx(RDI_Parsed *parsed, RDI_U32 idx, RDI_U64 *len_out){ + RDI_U8 *result = 0; + RDI_U64 len_result = 0; if (idx < parsed->string_count){ - 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); + RDI_U32 off_raw = parsed->string_offs[idx]; + RDI_U32 opl_raw = parsed->string_offs[idx + 1]; + RDI_U32 opl = rdi_parse__min(opl_raw, parsed->string_data_size); + RDI_U32 off = rdi_parse__min(off_raw, opl); result = parsed->string_data + off; len_result = opl - off; } @@ -236,15 +236,15 @@ raddbgi_string_from_idx(RADDBGI_Parsed *parsed, RADDBGI_U32 idx, RADDBGI_U64 *le return(result); } -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); +RDI_PROC RDI_U32* +rdi_idx_run_from_first_count(RDI_Parsed *parsed, + RDI_U32 raw_first, RDI_U32 raw_count, + RDI_U32 *n_out){ + RDI_U32 raw_opl = raw_first + raw_count; + RDI_U32 opl = rdi_parse__min(raw_opl, parsed->idx_run_count); + RDI_U32 first = rdi_parse__min(raw_first, opl); - RADDBGI_U32 *result = 0; + RDI_U32 *result = 0; if (first < parsed->idx_run_count){ result = parsed->idx_run_data + first; } @@ -254,29 +254,29 @@ raddbgi_idx_run_from_first_count(RADDBGI_Parsed *parsed, //- line info -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); +RDI_PROC void +rdi_line_info_from_unit(RDI_Parsed *p, RDI_Unit *unit, RDI_ParsedLineInfo *out){ + RDI_U64 line_info_voff_count = 0; + RDI_U64 *voffs = (RDI_U64*) + rdi_data_from_dsec(p, unit->line_info_voffs_data_idx, sizeof(RDI_U64), + RDI_DataSectionTag_LineInfoVoffs, + &line_info_voff_count); - 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); + RDI_U64 line_info_count_raw = 0; + RDI_Line *lines = (RDI_Line*) + rdi_data_from_dsec(p, unit->line_info_data_idx, sizeof(RDI_Line), + RDI_DataSectionTag_LineInfoData, + &line_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); + RDI_U64 column_info_count_raw = 0; + RDI_Column *cols = (RDI_Column*) + rdi_data_from_dsec(p, unit->line_info_col_data_idx, sizeof(RDI_Column), + RDI_DataSectionTag_LineInfoColumns, + &column_info_count_raw); - 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); + RDI_U32 line_info_count_a = (line_info_voff_count > 0)?line_info_voff_count - 1:0; + RDI_U32 line_info_count = rdi_parse__min(line_info_count_a, line_info_count_raw); + RDI_U32 column_info_count = rdi_parse__min(column_info_count_raw, line_info_count); out->voffs = voffs; out->lines = lines; @@ -285,17 +285,17 @@ raddbgi_line_info_from_unit(RADDBGI_Parsed *p, RADDBGI_Unit *unit, RADDBGI_Parse out->col_count = column_info_count; } -RADDBGI_PROC RADDBGI_U64 -raddbgi_line_info_idx_from_voff(RADDBGI_ParsedLineInfo *line_info, RADDBGI_U64 voff) +RDI_PROC RDI_U64 +rdi_line_info_idx_from_voff(RDI_ParsedLineInfo *line_info, RDI_U64 voff) { - RADDBGI_U64 result = 0; + RDI_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) - RADDBGI_U32 first = 0; - RADDBGI_U32 opl = line_info->count; + RDI_U32 first = 0; + RDI_U32 opl = line_info->count; for (;;){ - RADDBGI_U32 mid = (first + opl)/2; + RDI_U32 mid = (first + opl)/2; if (line_info->voffs[mid] < voff){ first = mid; } @@ -310,35 +310,35 @@ raddbgi_line_info_idx_from_voff(RADDBGI_ParsedLineInfo *line_info, RADDBGI_U64 v break; } } - result = (RADDBGI_U64)first; + result = (RDI_U64)first; } return(result); } -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); +RDI_PROC void +rdi_line_map_from_source_file(RDI_Parsed *p, RDI_SourceFile *srcfile, + RDI_ParsedLineMap *out){ + RDI_U64 num_count = 0; + RDI_U32 *nums = (RDI_U32*) + rdi_data_from_dsec(p, srcfile->line_map_nums_data_idx, sizeof(RDI_U32), + RDI_DataSectionTag_LineMapNumbers, + &num_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); + RDI_U64 range_count = 0; + RDI_U32 *ranges = (RDI_U32*) + rdi_data_from_dsec(p, srcfile->line_map_range_data_idx, sizeof(RDI_U32), + RDI_DataSectionTag_LineMapRanges, + &range_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); + RDI_U64 voff_count = 0; + RDI_U64 *voffs = (RDI_U64*) + rdi_data_from_dsec(p, srcfile->line_map_voff_data_idx, sizeof(RDI_U64), + RDI_DataSectionTag_LineMapVoffs, + &voff_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); + RDI_U32 count_a = (range_count > 0)?(range_count - 1):0; + RDI_U32 count_b = rdi_parse__min(count_a, num_count); + RDI_U32 count = rdi_parse__min(count_b, srcfile->line_map_count); out->nums = nums; out->ranges = ranges; @@ -347,20 +347,20 @@ raddbgi_line_map_from_source_file(RADDBGI_Parsed *p, RADDBGI_SourceFile *srcfile out->voff_count = voff_count; } -RADDBGI_PROC RADDBGI_U64* -raddbgi_line_voffs_from_num(RADDBGI_ParsedLineMap *map, RADDBGI_U32 linenum, RADDBGI_U32 *n_out){ - RADDBGI_U64 *result = 0; +RDI_PROC RDI_U64* +rdi_line_voffs_from_num(RDI_ParsedLineMap *map, RDI_U32 linenum, RDI_U32 *n_out){ + RDI_U64 *result = 0; *n_out = 0; - RADDBGI_U32 closest_i = 0; + RDI_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]) - RADDBGI_U32 *nums = map->nums; - RADDBGI_U32 first = 0; - RADDBGI_U32 opl = map->count; + RDI_U32 *nums = map->nums; + RDI_U32 first = 0; + RDI_U32 opl = map->count; for (;;){ - RADDBGI_U32 mid = (first + opl)/2; + RDI_U32 mid = (first + opl)/2; if (nums[mid] < linenum){ first = mid; } @@ -386,8 +386,8 @@ raddbgi_line_voffs_from_num(RADDBGI_ParsedLineMap *map, RADDBGI_U32 linenum, RAD // set result if possible if (closest_i < map->count){ - RADDBGI_U32 first = map->ranges[closest_i]; - RADDBGI_U32 opl = map->ranges[closest_i + 1]; + RDI_U32 first = map->ranges[closest_i]; + RDI_U32 opl = map->ranges[closest_i + 1]; if (opl < map->voff_count){ result = map->voffs + first; *n_out = opl - first; @@ -400,16 +400,16 @@ raddbgi_line_voffs_from_num(RADDBGI_ParsedLineMap *map, RADDBGI_U32 linenum, RAD //- vmaps -RADDBGI_PROC RADDBGI_U64 -raddbgi_vmap_idx_from_voff(RADDBGI_VMapEntry *vmap, RADDBGI_U32 vmap_count, RADDBGI_U64 voff){ - RADDBGI_U64 result = 0; +RDI_PROC RDI_U64 +rdi_vmap_idx_from_voff(RDI_VMapEntry *vmap, RDI_U32 vmap_count, RDI_U64 voff){ + RDI_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) - RADDBGI_U32 first = 0; - RADDBGI_U32 opl = vmap_count; + RDI_U32 first = 0; + RDI_U32 opl = vmap_count; for (;;){ - RADDBGI_U32 mid = (first + opl)/2; + RDI_U32 mid = (first + opl)/2; if (vmap[mid].voff < voff){ first = mid; } @@ -424,60 +424,60 @@ raddbgi_vmap_idx_from_voff(RADDBGI_VMapEntry *vmap, RADDBGI_U32 vmap_count, RADD break; } } - result = (RADDBGI_U64)vmap[first].idx; + result = (RDI_U64)vmap[first].idx; } return(result); } //- name maps -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){ +RDI_PROC RDI_NameMap* +rdi_name_map_from_kind(RDI_Parsed *p, RDI_NameMapKind kind){ + RDI_NameMap *result = 0; + if (0 < kind && kind < RDI_NameMapKind_COUNT){ result = p->name_maps_by_kind[kind]; } return(result); } -RADDBGI_PROC void -raddbgi_name_map_parse(RADDBGI_Parsed *p, RADDBGI_NameMap *mapptr, RADDBGI_ParsedNameMap *out){ +RDI_PROC void +rdi_name_map_parse(RDI_Parsed *p, RDI_NameMap *mapptr, RDI_ParsedNameMap *out){ out->buckets = 0; out->bucket_count = 0; if (mapptr != 0){ - 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); + out->buckets = (RDI_NameMapBucket*) + rdi_data_from_dsec(p, mapptr->bucket_data_idx, sizeof(RDI_NameMapBucket), + RDI_DataSectionTag_NameMapBuckets, &out->bucket_count); + out->nodes = (RDI_NameMapNode*) + rdi_data_from_dsec(p, mapptr->node_data_idx, sizeof(RDI_NameMapNode), + RDI_DataSectionTag_NameMapNodes, &out->node_count); } } -RADDBGI_PROC RADDBGI_NameMapNode* -raddbgi_name_map_lookup(RADDBGI_Parsed *p, RADDBGI_ParsedNameMap *map, - RADDBGI_U8 *str, RADDBGI_U64 len){ - RADDBGI_NameMapNode *result = 0; +RDI_PROC RDI_NameMapNode* +rdi_name_map_lookup(RDI_Parsed *p, RDI_ParsedNameMap *map, + RDI_U8 *str, RDI_U64 len){ + RDI_NameMapNode *result = 0; if (map->bucket_count > 0){ - 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; + RDI_NameMapBucket *buckets = map->buckets; + RDI_U64 bucket_count = map->bucket_count; + RDI_U64 hash = rdi_hash(str, len); + RDI_U64 bucket_index = hash%bucket_count; + RDI_NameMapBucket *bucket = map->buckets + bucket_index; - RADDBGI_NameMapNode *node = map->nodes + bucket->first_node; - RADDBGI_NameMapNode *node_opl = node + bucket->node_count; + RDI_NameMapNode *node = map->nodes + bucket->first_node; + RDI_NameMapNode *node_opl = node + bucket->node_count; for (;node < node_opl; node += 1){ // extract a string from this node - RADDBGI_U64 nlen = 0; - RADDBGI_U8 *nstr = raddbgi_string_from_idx(p, node->string_idx, &nlen); + RDI_U64 nlen = 0; + RDI_U8 *nstr = rdi_string_from_idx(p, node->string_idx, &nlen); // compare this to the needle string - RADDBGI_S32 match = 0; + RDI_S32 match = 0; if (nlen == len){ - RADDBGI_U8 *a = str; - RADDBGI_U8 *aopl = str + len; - RADDBGI_U8 *b = nstr; + RDI_U8 *a = str; + RDI_U8 *aopl = str + len; + RDI_U8 *b = nstr; for (;a < aopl && *a == *b; a += 1, b += 1); match = (a == aopl); } @@ -493,10 +493,10 @@ raddbgi_name_map_lookup(RADDBGI_Parsed *p, RADDBGI_ParsedNameMap *map, return(result); } -RADDBGI_PROC RADDBGI_U32* -raddbgi_matches_from_map_node(RADDBGI_Parsed *p, RADDBGI_NameMapNode *node, - RADDBGI_U32 *n_out){ - RADDBGI_U32 *result = 0; +RDI_PROC RDI_U32* +rdi_matches_from_map_node(RDI_Parsed *p, RDI_NameMapNode *node, + RDI_U32 *n_out){ + RDI_U32 *result = 0; *n_out = 0; if (node != 0){ if (node->match_count == 1){ @@ -504,8 +504,8 @@ raddbgi_matches_from_map_node(RADDBGI_Parsed *p, RADDBGI_NameMapNode *node, *n_out = 1; } else{ - result = raddbgi_idx_run_from_first_count(p, node->match_idx_or_idx_run_first, - node->match_count, n_out); + result = rdi_idx_run_from_first_count(p, node->match_idx_or_idx_run_first, + node->match_count, n_out); } } return(result); @@ -513,14 +513,14 @@ raddbgi_matches_from_map_node(RADDBGI_Parsed *p, RADDBGI_NameMapNode *node, //- common helpers -RADDBGI_PROC RADDBGI_U64 -raddbgi_first_voff_from_proc(RADDBGI_Parsed *p, RADDBGI_U32 proc_id){ - RADDBGI_U64 result = 0; +RDI_PROC RDI_U64 +rdi_first_voff_from_proc(RDI_Parsed *p, RDI_U32 proc_id){ + RDI_U64 result = 0; if (0 < proc_id && proc_id < p->procedures_count){ - RADDBGI_Procedure *proc = p->procedures + proc_id; - RADDBGI_U32 scope_id = proc->root_scope_idx; + RDI_Procedure *proc = p->procedures + proc_id; + RDI_U32 scope_id = proc->root_scope_idx; if (0 < scope_id && scope_id < p->scopes_count){ - RADDBGI_Scope *scope = p->scopes + scope_id; + RDI_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 @@ raddbgi_first_voff_from_proc(RADDBGI_Parsed *p, RADDBGI_U32 proc_id){ //////////////////////////////// //~ RADDBG Parsing Helpers -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){ +RDI_PROC void* +rdi_data_from_dsec(RDI_Parsed *parsed, RDI_U32 idx, RDI_U32 item_size, + RDI_DataSectionTag expected_tag, + RDI_U64 *count_out){ void *result = 0; - RADDBGI_U32 count_result = 0; + RDI_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){ - RADDBGI_DataSection *ds = parsed->dsecs + idx; + RDI_DataSection *ds = parsed->dsecs + idx; if (ds->tag == expected_tag){ - RADDBGI_U64 opl = ds->off + ds->encoded_size; + RDI_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/lib_raddbgi_format/raddbgi_format_parse.h b/src/lib_raddbgi_format/raddbgi_format_parse.h index e0c3fa9c..97377f93 100644 --- a/src/lib_raddbgi_format/raddbgi_format_parse.h +++ b/src/lib_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 RADDBGI_PARSE_H -#define RADDBGI_PARSE_H +#ifndef RDI_PARSE_H +#define RDI_PARSE_H //////////////////////////////// //~ RADDBG Parsing Helpers -typedef struct RADDBGI_Parsed{ +typedef struct RDI_Parsed{ // raw data & data sections (part 1) - RADDBGI_U8 *raw_data; - RADDBGI_U64 raw_data_size; - RADDBGI_DataSection *dsecs; - RADDBGI_U64 dsec_count; - RADDBGI_U32 dsec_idx[RADDBGI_DataSectionTag_PRIMARY_COUNT]; + RDI_U8 *raw_data; + RDI_U64 raw_data_size; + RDI_DataSection *dsecs; + RDI_U64 dsec_count; + RDI_U32 dsec_idx[RDI_DataSectionTag_PRIMARY_COUNT]; // primary data structures (part 2) // handled by helper APIs - 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; + RDI_U8* string_data; + RDI_U64 string_data_size; + RDI_U32* string_offs; + RDI_U64 string_count; + RDI_U32* idx_run_data; + RDI_U32 idx_run_count; // directly readable by users // (any of these may be empty and null even in a successful parse) - RADDBGI_TopLevelInfo* top_level_info; + RDI_TopLevelInfo* top_level_info; - 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; + RDI_BinarySection* binary_sections; + RDI_U64 binary_sections_count; + RDI_FilePathNode* file_paths; + RDI_U64 file_paths_count; + RDI_SourceFile* source_files; + RDI_U64 source_files_count; + RDI_Unit* units; + RDI_U64 units_count; + RDI_VMapEntry* unit_vmap; + RDI_U64 unit_vmap_count; + RDI_TypeNode* type_nodes; + RDI_U64 type_nodes_count; + RDI_UDT* udts; + RDI_U64 udts_count; + RDI_Member* members; + RDI_U64 members_count; + RDI_EnumMember* enum_members; + RDI_U64 enum_members_count; + RDI_GlobalVariable* global_variables; + RDI_U64 global_variables_count; + RDI_VMapEntry* global_vmap; + RDI_U64 global_vmap_count; + RDI_ThreadVariable* thread_variables; + RDI_U64 thread_variables_count; + RDI_Procedure* procedures; + RDI_U64 procedures_count; + RDI_Scope* scopes; + RDI_U64 scopes_count; + RDI_U64* scope_voffs; + RDI_U64 scope_voffs_count; + RDI_VMapEntry* scope_vmap; + RDI_U64 scope_vmap_count; + RDI_Local* locals; + RDI_U64 locals_count; + RDI_LocationBlock* location_blocks; + RDI_U64 location_blocks_count; + RDI_U8* location_data; + RDI_U64 location_data_size; + RDI_NameMap* name_maps; + RDI_U64 name_maps_count; // other helpers - RADDBGI_NameMap* name_maps_by_kind[RADDBGI_NameMapKind_COUNT]; + RDI_NameMap* name_maps_by_kind[RDI_NameMapKind_COUNT]; -} RADDBGI_Parsed; +} RDI_Parsed; typedef enum{ - 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; + RDI_ParseStatus_Good = 0, + RDI_ParseStatus_HeaderDoesNotMatch = 1, + RDI_ParseStatus_UnsupportedVersionNumber = 2, + RDI_ParseStatus_InvalidDataSecionLayout = 3, + RDI_ParseStatus_MissingStringDataSection = 4, + RDI_ParseStatus_MissingStringTableSection = 5, + RDI_ParseStatus_MissingIndexRunSection = 6, +} RDI_ParseStatus; -typedef struct RADDBGI_ParsedLineInfo{ +typedef struct RDI_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) - RADDBGI_U64* voffs; // [count + 1] sorted - RADDBGI_Line* lines; // [count] - RADDBGI_Column* cols; // [col_count] - RADDBGI_U64 count; - RADDBGI_U64 col_count; -} RADDBGI_ParsedLineInfo; + RDI_U64* voffs; // [count + 1] sorted + RDI_Line* lines; // [count] + RDI_Column* cols; // [col_count] + RDI_U64 count; + RDI_U64 col_count; +} RDI_ParsedLineInfo; -typedef struct RADDBGI_ParsedLineMap{ +typedef struct RDI_ParsedLineMap{ // NOTE: Mapping LINE_NUMBER -> VOFFs // // * nums[i] gives a line number @@ -109,111 +109,111 @@ typedef struct RADDBGI_ParsedLineMap{ // * let k span over the range [ ranges[i], ranges[i + 1] ) // * voffs[k] gives the associated voffs - RADDBGI_U32* nums; // [count] sorted - RADDBGI_U32* ranges; // [count + 1] - RADDBGI_U64* voffs; // [voff_count] - RADDBGI_U64 count; - RADDBGI_U64 voff_count; -} RADDBGI_ParsedLineMap; + RDI_U32* nums; // [count] sorted + RDI_U32* ranges; // [count + 1] + RDI_U64* voffs; // [voff_count] + RDI_U64 count; + RDI_U64 voff_count; +} RDI_ParsedLineMap; -typedef struct RADDBGI_ParsedNameMap{ - RADDBGI_NameMapBucket *buckets; - RADDBGI_NameMapNode *nodes; - RADDBGI_U64 bucket_count; - RADDBGI_U64 node_count; -} RADDBGI_ParsedNameMap; +typedef struct RDI_ParsedNameMap{ + RDI_NameMapBucket *buckets; + RDI_NameMapNode *nodes; + RDI_U64 bucket_count; + RDI_U64 node_count; +} RDI_ParsedNameMap; //////////////////////////////// //~ Global Nils -#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 RADDBGI_U64 raddbgi_voff_nil = 0; -static RADDBGI_LocationBlock raddbgi_location_block_nil = {0}; -static RADDBGI_Local raddbgi_local_nil = {0}; +#if !defined(RDI_DISABLE_NILS) +static RDI_BinarySection rdi_binary_section_nil = {0}; +static RDI_FilePathNode rdi_file_path_node_nil = {0}; +static RDI_SourceFile rdi_source_file_nil = {0}; +static RDI_Unit rdi_unit_nil = {0}; +static RDI_VMapEntry rdi_vmap_entry_nil = {0}; +static RDI_TypeNode rdi_type_node_nil = {0}; +static RDI_UDT rdi_udt_nil = {0}; +static RDI_Member rdi_member_nil = {0}; +static RDI_EnumMember rdi_enum_member_nil = {0}; +static RDI_GlobalVariable rdi_global_variable_nil = {0}; +static RDI_ThreadVariable rdi_thread_variable_nil = {0}; +static RDI_Procedure rdi_procedure_nil = {0}; +static RDI_Scope rdi_scope_nil = {0}; +static RDI_U64 rdi_voff_nil = 0; +static RDI_LocationBlock rdi_location_block_nil = {0}; +static RDI_Local rdi_local_nil = {0}; #endif //////////////////////////////// //~ RADDBG Parse API -RADDBGI_PROC RADDBGI_ParseStatus -raddbgi_parse(RADDBGI_U8 *data, RADDBGI_U64 size, RADDBGI_Parsed *out); +RDI_PROC RDI_ParseStatus +rdi_parse(RDI_U8 *data, RDI_U64 size, RDI_Parsed *out); -RADDBGI_PROC RADDBGI_U8* -raddbgi_string_from_idx(RADDBGI_Parsed *parsed, RADDBGI_U32 idx, RADDBGI_U64 *len_out); +RDI_PROC RDI_U8* +rdi_string_from_idx(RDI_Parsed *parsed, RDI_U32 idx, RDI_U64 *len_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); +RDI_PROC RDI_U32* +rdi_idx_run_from_first_count(RDI_Parsed *parsed, RDI_U32 first, RDI_U32 raw_count, + RDI_U32 *n_out); //- table lookups -#define raddbgi_element_from_idx(parsed, name, idx) ((0 <= (idx) && (idx) < (parsed)->name##_count) ? &(parsed)->name[idx] : (parsed)->name ? &(parsed)->name[0] : 0) +#define rdi_element_from_idx(parsed, name, idx) ((0 <= (idx) && (idx) < (parsed)->name##_count) ? &(parsed)->name[idx] : (parsed)->name ? &(parsed)->name[0] : 0) //- line info -RADDBGI_PROC void -raddbgi_line_info_from_unit(RADDBGI_Parsed *p, RADDBGI_Unit *unit, RADDBGI_ParsedLineInfo *out); +RDI_PROC void +rdi_line_info_from_unit(RDI_Parsed *p, RDI_Unit *unit, RDI_ParsedLineInfo *out); -RADDBGI_PROC RADDBGI_U64 -raddbgi_line_info_idx_from_voff(RADDBGI_ParsedLineInfo *line_info, RADDBGI_U64 voff); +RDI_PROC RDI_U64 +rdi_line_info_idx_from_voff(RDI_ParsedLineInfo *line_info, RDI_U64 voff); -RADDBGI_PROC void -raddbgi_line_map_from_source_file(RADDBGI_Parsed *p, RADDBGI_SourceFile *srcfile, - RADDBGI_ParsedLineMap *out); +RDI_PROC void +rdi_line_map_from_source_file(RDI_Parsed *p, RDI_SourceFile *srcfile, + RDI_ParsedLineMap *out); -RADDBGI_PROC RADDBGI_U64* -raddbgi_line_voffs_from_num(RADDBGI_ParsedLineMap *map, RADDBGI_U32 linenum, RADDBGI_U32 *n_out); +RDI_PROC RDI_U64* +rdi_line_voffs_from_num(RDI_ParsedLineMap *map, RDI_U32 linenum, RDI_U32 *n_out); //- vmaps -RADDBGI_PROC RADDBGI_U64 -raddbgi_vmap_idx_from_voff(RADDBGI_VMapEntry *vmap, RADDBGI_U32 vmap_count, RADDBGI_U64 voff); +RDI_PROC RDI_U64 +rdi_vmap_idx_from_voff(RDI_VMapEntry *vmap, RDI_U32 vmap_count, RDI_U64 voff); //- name maps -RADDBGI_PROC RADDBGI_NameMap* -raddbgi_name_map_from_kind(RADDBGI_Parsed *p, RADDBGI_NameMapKind kind); +RDI_PROC RDI_NameMap* +rdi_name_map_from_kind(RDI_Parsed *p, RDI_NameMapKind kind); -RADDBGI_PROC void -raddbgi_name_map_parse(RADDBGI_Parsed* p, RADDBGI_NameMap *mapptr, RADDBGI_ParsedNameMap *out); +RDI_PROC void +rdi_name_map_parse(RDI_Parsed* p, RDI_NameMap *mapptr, RDI_ParsedNameMap *out); -RADDBGI_PROC RADDBGI_NameMapNode* -raddbgi_name_map_lookup(RADDBGI_Parsed *p, RADDBGI_ParsedNameMap *map, - RADDBGI_U8 *str, RADDBGI_U64 len); +RDI_PROC RDI_NameMapNode* +rdi_name_map_lookup(RDI_Parsed *p, RDI_ParsedNameMap *map, + RDI_U8 *str, RDI_U64 len); -RADDBGI_PROC RADDBGI_U32* -raddbgi_matches_from_map_node(RADDBGI_Parsed *p, RADDBGI_NameMapNode *node, RADDBGI_U32 *n_out); +RDI_PROC RDI_U32* +rdi_matches_from_map_node(RDI_Parsed *p, RDI_NameMapNode *node, RDI_U32 *n_out); //- common helpers -RADDBGI_PROC RADDBGI_U64 -raddbgi_first_voff_from_proc(RADDBGI_Parsed *p, RADDBGI_U32 proc_id); +RDI_PROC RDI_U64 +rdi_first_voff_from_proc(RDI_Parsed *p, RDI_U32 proc_id); //////////////////////////////// //~ RADDBG Parsing Helpers -#define raddbgi_parse__extract_primary(p,outptr,outn,pritag) \ +#define rdi_parse__extract_primary(p,outptr,outn,pritag) \ ( (*(void**)&(outptr)) = \ -raddbgi_data_from_dsec((p),(p)->dsec_idx[pritag],sizeof(*(outptr)),(pritag),(outn)) ) +rdi_data_from_dsec((p),(p)->dsec_idx[pritag],sizeof(*(outptr)),(pritag),(outn)) ) -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); +RDI_PROC void* +rdi_data_from_dsec(RDI_Parsed *p, RDI_U32 idx, RDI_U32 item_size, + RDI_DataSectionTag expected_tag, RDI_U64 *n_out); -#define raddbgi_parse__min(a,b) (((a)<(b))?(a):(b)) +#define rdi_parse__min(a,b) (((a)<(b))?(a):(b)) -#endif // RADDBGI_PARSE_H +#endif // RDI_PARSE_H diff --git a/src/lib_raddbgi_make/raddbgi_make.c b/src/lib_raddbgi_make/raddbgi_make.c index e55f79b3..3e5cde69 100644 --- a/src/lib_raddbgi_make/raddbgi_make.c +++ b/src/lib_raddbgi_make/raddbgi_make.c @@ -13,24 +13,24 @@ //- rjf: memory set #if !defined(RDIM_MEMSET_OVERRIDE) -RADDBGI_PROC void * -rdim_memset_fallback(void *dst, RADDBGI_U8 c, RADDBGI_U64 size) +RDI_PROC void * +rdim_memset_fallback(void *dst, RDI_U8 c, RDI_U64 size) { - for(RADDBGI_U64 idx = 0; idx < size; idx += 1) + for(RDI_U64 idx = 0; idx < size; idx += 1) { - ((RADDBGI_U8 *)dst)[idx] = c; + ((RDI_U8 *)dst)[idx] = c; } return dst; } #endif #if !defined(RDIM_MEMCPY_OVERRIDE) -RADDBGI_PROC void * -rdim_memcpy_fallback(void *dst, void *src, RADDBGI_U64 size) +RDI_PROC void * +rdim_memcpy_fallback(void *dst, void *src, RDI_U64 size) { - for(RADDBGI_U64 idx = 0; idx < size; idx += 1) + for(RDI_U64 idx = 0; idx < size; idx += 1) { - ((RADDBGI_U8 *)dst)[idx] = ((RADDBGI_U8 *)src)[idx]; + ((RDI_U8 *)dst)[idx] = ((RDI_U8 *)src)[idx]; } return dst; } @@ -40,33 +40,33 @@ rdim_memcpy_fallback(void *dst, void *src, RADDBGI_U64 size) #if !defined (RDIM_ARENA_OVERRIDE) -RADDBGI_PROC RDIM_Arena * +RDI_PROC RDIM_Arena * rdim_arena_alloc_fallback(void) { RDIM_Arena *arena = 0; return arena; } -RADDBGI_PROC void +RDI_PROC void rdim_arena_release_fallback(RDIM_Arena *arena) { } -RADDBGI_PROC RADDBGI_U64 +RDI_PROC RDI_U64 rdim_arena_pos_fallback(RDIM_Arena *arena) { return 0; } -RADDBGI_PROC void * -rdim_arena_push_fallback(RDIM_Arena *arena, RADDBGI_U64 size) +RDI_PROC void * +rdim_arena_push_fallback(RDIM_Arena *arena, RDI_U64 size) { return 0; } -RADDBGI_PROC void -rdim_arena_pop_to_fallback(RDIM_Arena *arena, RADDBGI_U64 pos) +RDI_PROC void +rdim_arena_pop_to_fallback(RDIM_Arena *arena, RDI_U64 pos) { } @@ -78,8 +78,8 @@ rdim_arena_pop_to_fallback(RDIM_Arena *arena, RADDBGI_U64 pos) #if !defined (RDIM_SCRATCH_OVERRIDE) static RDIM_THREAD_LOCAL RDIM_Arena *rdim_thread_scratches[2]; -RADDBGI_PROC RDIM_Temp -rdim_scratch_begin_fallback(RDIM_Arena **conflicts, RADDBGI_U64 conflicts_count) +RDI_PROC RDIM_Temp +rdim_scratch_begin_fallback(RDIM_Arena **conflicts, RDI_U64 conflicts_count) { if(rdim_thread_scratches[0] == 0) { @@ -87,12 +87,12 @@ rdim_scratch_begin_fallback(RDIM_Arena **conflicts, RADDBGI_U64 conflicts_count) rdim_thread_scratches[1] = rdim_arena_alloc(); } RDIM_Arena *arena = 0; - for(RADDBGI_U64 scratch_idx = 0; + for(RDI_U64 scratch_idx = 0; scratch_idx < sizeof(rdim_thread_scratches)/sizeof(rdim_thread_scratches[0]); scratch_idx += 1) { - RADDBGI_S32 scratch_conflicts = 0; - for(RADDBGI_U64 conflict_idx = 0; conflict_idx < conflicts_count; conflict_idx += 1) + RDI_S32 scratch_conflicts = 0; + for(RDI_U64 conflict_idx = 0; conflict_idx < conflicts_count; conflict_idx += 1) { if(conflicts[conflict_idx] == rdim_thread_scratches[scratch_idx]) { @@ -111,7 +111,7 @@ rdim_scratch_begin_fallback(RDIM_Arena **conflicts, RADDBGI_U64 conflicts_count) return temp; } -RADDBGI_PROC void +RDI_PROC void rdim_scratch_end_fallback(RDIM_Temp temp) { rdim_arena_pop_to(temp.arena, temp.pos); @@ -121,8 +121,8 @@ rdim_scratch_end_fallback(RDIM_Temp temp) //- rjf: strings -RADDBGI_PROC RDIM_String8 -rdim_str8(RADDBGI_U8 *str, RADDBGI_U64 size) +RDI_PROC RDIM_String8 +rdim_str8(RDI_U8 *str, RDI_U64 size) { RDIM_String8 result; result.RDIM_String8_BaseMember = str; @@ -130,18 +130,18 @@ rdim_str8(RADDBGI_U8 *str, RADDBGI_U64 size) return result; } -RADDBGI_PROC RDIM_String8 +RDI_PROC RDIM_String8 rdim_str8_copy(RDIM_Arena *arena, RDIM_String8 src) { RDIM_String8 dst; dst.RDIM_String8_SizeMember = src.RDIM_String8_SizeMember; - dst.RDIM_String8_BaseMember = rdim_push_array_no_zero(arena, RADDBGI_U8, dst.RDIM_String8_SizeMember+1); + dst.RDIM_String8_BaseMember = rdim_push_array_no_zero(arena, RDI_U8, dst.RDIM_String8_SizeMember+1); rdim_memcpy(dst.RDIM_String8_BaseMember, src.RDIM_String8_BaseMember, src.RDIM_String8_SizeMember); dst.RDIM_String8_BaseMember[dst.RDIM_String8_SizeMember] = 0; return dst; } -RADDBGI_PROC RDIM_String8 +RDI_PROC RDIM_String8 rdim_str8f(RDIM_Arena *arena, char *fmt, ...) { va_list args; @@ -151,33 +151,33 @@ rdim_str8f(RDIM_Arena *arena, char *fmt, ...) return(result); } -RADDBGI_PROC RDIM_String8 +RDI_PROC RDIM_String8 rdim_str8fv(RDIM_Arena *arena, char *fmt, va_list args) { va_list args2; va_copy(args2, args); - RADDBGI_U32 needed_bytes = rdim_vsnprintf(0, 0, fmt, args) + 1; + RDI_U32 needed_bytes = rdim_vsnprintf(0, 0, fmt, args) + 1; RDIM_String8 result = {0}; - result.RDIM_String8_BaseMember = rdim_push_array_no_zero(arena, RADDBGI_U8, needed_bytes); + result.RDIM_String8_BaseMember = rdim_push_array_no_zero(arena, RDI_U8, needed_bytes); result.RDIM_String8_SizeMember = rdim_vsnprintf((char*)result.str, needed_bytes, fmt, args2); result.RDIM_String8_BaseMember[result.RDIM_String8_SizeMember] = 0; va_end(args2); return(result); } -RADDBGI_PROC RADDBGI_S32 +RDI_PROC RDI_S32 rdim_str8_match(RDIM_String8 a, RDIM_String8 b, RDIM_StringMatchFlags flags) { - RADDBGI_S32 result = 0; + RDI_S32 result = 0; if(a.RDIM_String8_SizeMember == b.RDIM_String8_SizeMember) { - RADDBGI_S32 case_insensitive = (flags & RDIM_StringMatchFlag_CaseInsensitive); - RADDBGI_U64 size = a.RDIM_String8_SizeMember; + RDI_S32 case_insensitive = (flags & RDIM_StringMatchFlag_CaseInsensitive); + RDI_U64 size = a.RDIM_String8_SizeMember; result = 1; - for(RADDBGI_U64 idx = 0; idx < size; idx += 1) + for(RDI_U64 idx = 0; idx < size; idx += 1) { - RADDBGI_U8 at = a.RDIM_String8_BaseMember[idx]; - RADDBGI_U8 bt = b.RDIM_String8_BaseMember[idx]; + RDI_U8 at = a.RDIM_String8_BaseMember[idx]; + RDI_U8 bt = b.RDIM_String8_BaseMember[idx]; if(case_insensitive) { at = ('a' <= at && at <= 'z') ? at-('a'-'A') : at; @@ -195,7 +195,7 @@ rdim_str8_match(RDIM_String8 a, RDIM_String8 b, RDIM_StringMatchFlags flags) //- rjf: string lists -RADDBGI_PROC void +RDI_PROC void rdim_str8_list_push(RDIM_Arena *arena, RDIM_String8List *list, RDIM_String8 string) { RDIM_String8Node *n = rdim_push_array(arena, RDIM_String8Node, 1); @@ -205,26 +205,26 @@ rdim_str8_list_push(RDIM_Arena *arena, RDIM_String8List *list, RDIM_String8 stri list->RDIM_String8List_TotalSizeMember += string.RDIM_String8_SizeMember; } -RADDBGI_PROC RDIM_String8 +RDI_PROC RDIM_String8 rdim_str8_list_join(RDIM_Arena *arena, RDIM_String8List *list, RDIM_String8 sep) { RDIM_String8 result; rdim_memzero_struct(&result); - RADDBGI_U64 sep_count = (list->RDIM_String8List_NodeCountMember > 1) ? (list->RDIM_String8List_NodeCountMember-1) : 0; + RDI_U64 sep_count = (list->RDIM_String8List_NodeCountMember > 1) ? (list->RDIM_String8List_NodeCountMember-1) : 0; result.RDIM_String8_SizeMember = list->RDIM_String8List_TotalSizeMember+sep_count*sep.RDIM_String8_SizeMember; - result.RDIM_String8_BaseMember = rdim_push_array_no_zero(arena, RADDBGI_U8, result.RDIM_String8_SizeMember+1); - RADDBGI_U64 off = 0; + result.RDIM_String8_BaseMember = rdim_push_array_no_zero(arena, RDI_U8, result.RDIM_String8_SizeMember+1); + RDI_U64 off = 0; for(RDIM_String8Node *node = list->RDIM_String8List_FirstMember; node != 0; node = node->RDIM_String8Node_NextPtrMember) { - rdim_memcpy((RADDBGI_U8*)result.RDIM_String8_BaseMember+off, + rdim_memcpy((RDI_U8*)result.RDIM_String8_BaseMember+off, node->RDIM_String8Node_StringMember.RDIM_String8_BaseMember, node->RDIM_String8Node_StringMember.RDIM_String8_SizeMember); off += node->RDIM_String8Node_StringMember.RDIM_String8_SizeMember; if(sep.RDIM_String8_SizeMember != 0 && node->RDIM_String8Node_NextPtrMember != 0) { - rdim_memcpy((RADDBGI_U8*)result.RDIM_String8_BaseMember+off, + rdim_memcpy((RDI_U8*)result.RDIM_String8_BaseMember+off, sep.RDIM_String8_BaseMember, sep.RDIM_String8_SizeMember); off += sep.RDIM_String8_SizeMember; @@ -236,7 +236,7 @@ rdim_str8_list_join(RDIM_Arena *arena, RDIM_String8List *list, RDIM_String8 sep) //- rjf: type lists -RADDBGI_PROC void +RDI_PROC void rdim_type_list_push(RDIM_Arena *arena, RDIM_TypeList *list, RDIM_Type *type) { RDIM_TypeNode *node = rdim_push_array(arena, RDIM_TypeNode, 1); @@ -247,11 +247,11 @@ rdim_type_list_push(RDIM_Arena *arena, RDIM_TypeList *list, RDIM_Type *type) //- rjf: bytecode lists -RADDBGI_PROC void -rdim_bytecode_push_op(RDIM_Arena *arena, RDIM_EvalBytecode *bytecode, RADDBGI_EvalOp op, RADDBGI_U64 p) +RDI_PROC void +rdim_bytecode_push_op(RDIM_Arena *arena, RDIM_EvalBytecode *bytecode, RDI_EvalOp op, RDI_U64 p) { - RADDBGI_U8 ctrlbits = raddbgi_eval_opcode_ctrlbits[op]; - RADDBGI_U32 p_size = RADDBGI_DECODEN_FROM_CTRLBITS(ctrlbits); + RDI_U8 ctrlbits = rdi_eval_opcode_ctrlbits[op]; + RDI_U32 p_size = RDI_DECODEN_FROM_CTRLBITS(ctrlbits); RDIM_EvalBytecodeOp *node = rdim_push_array(arena, RDIM_EvalBytecodeOp, 1); node->op = op; @@ -263,52 +263,52 @@ rdim_bytecode_push_op(RDIM_Arena *arena, RDIM_EvalBytecode *bytecode, RADDBGI_Ev bytecode->encoded_size += 1 + p_size; } -RADDBGI_PROC void -rdim_bytecode_push_uconst(RDIM_Arena *arena, RDIM_EvalBytecode *bytecode, RADDBGI_U64 x) +RDI_PROC void +rdim_bytecode_push_uconst(RDIM_Arena *arena, RDIM_EvalBytecode *bytecode, RDI_U64 x) { if(x <= 0xFF) { - rdim_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_ConstU8, x); + rdim_bytecode_push_op(arena, bytecode, RDI_EvalOp_ConstU8, x); } else if(x <= 0xFFFF) { - rdim_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_ConstU16, x); + rdim_bytecode_push_op(arena, bytecode, RDI_EvalOp_ConstU16, x); } else if(x <= 0xFFFFFFFF) { - rdim_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_ConstU32, x); + rdim_bytecode_push_op(arena, bytecode, RDI_EvalOp_ConstU32, x); } else { - rdim_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_ConstU64, x); + rdim_bytecode_push_op(arena, bytecode, RDI_EvalOp_ConstU64, x); } } -RADDBGI_PROC void -rdim_bytecode_push_sconst(RDIM_Arena *arena, RDIM_EvalBytecode *bytecode, RADDBGI_S64 x) +RDI_PROC void +rdim_bytecode_push_sconst(RDIM_Arena *arena, RDIM_EvalBytecode *bytecode, RDI_S64 x) { if(-0x80 <= x && x <= 0x7F) { - rdim_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_ConstU8, (RADDBGI_U64)x); - rdim_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_TruncSigned, 8); + rdim_bytecode_push_op(arena, bytecode, RDI_EvalOp_ConstU8, (RDI_U64)x); + rdim_bytecode_push_op(arena, bytecode, RDI_EvalOp_TruncSigned, 8); } else if(-0x8000 <= x && x <= 0x7FFF) { - rdim_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_ConstU16, (RADDBGI_U64)x); - rdim_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_TruncSigned, 16); + rdim_bytecode_push_op(arena, bytecode, RDI_EvalOp_ConstU16, (RDI_U64)x); + rdim_bytecode_push_op(arena, bytecode, RDI_EvalOp_TruncSigned, 16); } else if(-0x80000000ll <= x && x <= 0x7FFFFFFFll) { - rdim_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_ConstU32, (RADDBGI_U64)x); - rdim_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_TruncSigned, 32); + rdim_bytecode_push_op(arena, bytecode, RDI_EvalOp_ConstU32, (RDI_U64)x); + rdim_bytecode_push_op(arena, bytecode, RDI_EvalOp_TruncSigned, 32); } else { - rdim_bytecode_push_op(arena, bytecode, RADDBGI_EvalOp_ConstU64, (RADDBGI_U64)x); + rdim_bytecode_push_op(arena, bytecode, RDI_EvalOp_ConstU64, (RDI_U64)x); } } -RADDBGI_PROC void +RDI_PROC void rdim_bytecode_concat_in_place(RDIM_EvalBytecode *left_dst, RDIM_EvalBytecode *right_destroyed) { if(right_destroyed->first_op != 0) @@ -329,8 +329,8 @@ rdim_bytecode_concat_in_place(RDIM_EvalBytecode *left_dst, RDIM_EvalBytecode *ri //- rjf: sortable range sorting -RADDBGI_PROC RDIM_SortKey* -rdim_sort_key_array(RDIM_Arena *arena, RDIM_SortKey *keys, RADDBGI_U64 count) +RDI_PROC RDIM_SortKey* +rdim_sort_key_array(RDIM_Arena *arena, RDIM_SortKey *keys, RDI_U64 count) { // This sort is designed to take advantage of lots of pre-existing sorted ranges. // Most line info is already sorted or close to already sorted. @@ -349,14 +349,14 @@ rdim_sort_key_array(RDIM_Arena *arena, RDIM_SortKey *keys, RADDBGI_U64 count) { RDIM_OrderedRange *ranges_first = 0; RDIM_OrderedRange *ranges_last = 0; - RADDBGI_U64 range_count = 0; + RDI_U64 range_count = 0; { - RADDBGI_U64 pos = 0; + RDI_U64 pos = 0; for(;pos < count;) { // identify ordered range - RADDBGI_U64 first = pos; - RADDBGI_U64 opl = pos + 1; + RDI_U64 first = pos; + RDI_U64 opl = pos + 1; for(; opl < count && keys[opl - 1].key <= keys[opl].key; opl += 1); // generate an ordered range node @@ -409,7 +409,7 @@ rdim_sort_key_array(RDIM_Arena *arena, RDIM_SortKey *keys, RADDBGI_U64 count) // if there is not a second range, save this range for next time and end this pass if(src_ranges == 0) { - RADDBGI_U64 first = range1->first; + RDI_U64 first = range1->first; rdim_memcpy(dst + first, src + first, sizeof(*src)*(range1->opl - first)); SLLQueuePush(dst_ranges, dst_ranges_last, range1); break; @@ -422,11 +422,11 @@ rdim_sort_key_array(RDIM_Arena *arena, RDIM_SortKey *keys, RADDBGI_U64 count) rdim_assert(range1->opl == range2->first); // merge these ranges - RADDBGI_U64 jd = range1->first; - RADDBGI_U64 j1 = range1->first; - RADDBGI_U64 j1_opl = range1->opl; - RADDBGI_U64 j2 = range2->first; - RADDBGI_U64 j2_opl = range2->opl; + RDI_U64 jd = range1->first; + RDI_U64 j1 = range1->first; + RDI_U64 j1_opl = range1->opl; + RDI_U64 j2 = range2->first; + RDI_U64 j2_opl = range2->opl; for(;;) { if(src[j1].key <= src[j2].key) @@ -480,7 +480,7 @@ rdim_sort_key_array(RDIM_Arena *arena, RDIM_SortKey *keys, RADDBGI_U64 count) #if 0 // assert sortedness - for(RADDBGI_U64 i = 1; i < count; i += 1){ + for(RDI_U64 i = 1; i < count; i += 1){ rdim_assert(result[i - 1].key <= result[i].key); } #endif @@ -494,21 +494,21 @@ rdim_sort_key_array(RDIM_Arena *arena, RDIM_SortKey *keys, RADDBGI_U64 count) //- rjf: u64 -> ptr map -RADDBGI_PROC void -rdim_u64toptr_map_init(RDIM_Arena *arena, RDIM_U64ToPtrMap *map, RADDBGI_U64 bucket_count) +RDI_PROC void +rdim_u64toptr_map_init(RDIM_Arena *arena, RDIM_U64ToPtrMap *map, RDI_U64 bucket_count) { rdim_assert(IsPow2OrZero(bucket_count) && bucket_count > 0); map->buckets = rdim_push_array(arena, RDIM_U64ToPtrNode*, bucket_count); map->buckets_count = bucket_count; } -RADDBGI_PROC void -rdim_u64toptr_map_lookup(RDIM_U64ToPtrMap *map, RADDBGI_U64 key, RADDBGI_U64 hash, RDIM_U64ToPtrLookup *lookup_out) +RDI_PROC void +rdim_u64toptr_map_lookup(RDIM_U64ToPtrMap *map, RDI_U64 key, RDI_U64 hash, RDIM_U64ToPtrLookup *lookup_out) { - RADDBGI_U64 bucket_idx = hash&(map->buckets_count - 1); + RDI_U64 bucket_idx = hash&(map->buckets_count - 1); RDIM_U64ToPtrNode *check_node = map->buckets[bucket_idx]; for(;check_node != 0; check_node = check_node->next){ - for(RADDBGI_U32 k = 0; k < ArrayCount(check_node->key); k += 1){ + for(RDI_U32 k = 0; k < ArrayCount(check_node->key); k += 1){ if(check_node->ptr[k] == 0){ lookup_out->fill_node = check_node; lookup_out->fill_k = k; @@ -522,19 +522,19 @@ rdim_u64toptr_map_lookup(RDIM_U64ToPtrMap *map, RADDBGI_U64 key, RADDBGI_U64 has } } -RADDBGI_PROC void -rdim_u64toptr_map_insert(RDIM_Arena *arena, RDIM_U64ToPtrMap *map, RADDBGI_U64 key, RADDBGI_U64 hash, RDIM_U64ToPtrLookup *lookup, void *ptr) +RDI_PROC void +rdim_u64toptr_map_insert(RDIM_Arena *arena, RDIM_U64ToPtrMap *map, RDI_U64 key, RDI_U64 hash, RDIM_U64ToPtrLookup *lookup, void *ptr) { if(lookup->fill_node != 0) { RDIM_U64ToPtrNode *node = lookup->fill_node; - RADDBGI_U32 k = lookup->fill_k; + RDI_U32 k = lookup->fill_k; node->key[k] = key; node->ptr[k] = ptr; } else { - RADDBGI_U64 bucket_idx = hash&(map->buckets_count - 1); + RDI_U64 bucket_idx = hash&(map->buckets_count - 1); RDIM_U64ToPtrNode *node = rdim_push_array(arena, RDIM_U64ToPtrNode, 1); SLLStackPush(map->buckets[bucket_idx], node); @@ -551,18 +551,18 @@ rdim_u64toptr_map_insert(RDIM_Arena *arena, RDIM_U64ToPtrMap *map, RADDBGI_U64 k //- rjf: string8 -> ptr map -RADDBGI_PROC void -rdim_str8toptr_map_init(RDIM_Arena *arena, RDIM_Str8ToPtrMap *map, RADDBGI_U64 bucket_count) +RDI_PROC void +rdim_str8toptr_map_init(RDIM_Arena *arena, RDIM_Str8ToPtrMap *map, RDI_U64 bucket_count) { map->buckets_count = bucket_count; map->buckets = rdim_push_array(arena, RDIM_Str8ToPtrNode*, map->buckets_count); } -RADDBGI_PROC void* -rdim_str8toptr_map_lookup(RDIM_Str8ToPtrMap *map, RDIM_String8 key, RADDBGI_U64 hash) +RDI_PROC void* +rdim_str8toptr_map_lookup(RDIM_Str8ToPtrMap *map, RDIM_String8 key, RDI_U64 hash) { void *result = 0; - RADDBGI_U64 bucket_idx = hash%map->buckets_count; + RDI_U64 bucket_idx = hash%map->buckets_count; for(RDIM_Str8ToPtrNode *node = map->buckets[bucket_idx]; node != 0; node = node->next) @@ -576,10 +576,10 @@ rdim_str8toptr_map_lookup(RDIM_Str8ToPtrMap *map, RDIM_String8 key, RADDBGI_U64 return result; } -RADDBGI_PROC void -rdim_str8toptr_map_insert(RDIM_Arena *arena, RDIM_Str8ToPtrMap *map, RDIM_String8 key, RADDBGI_U64 hash, void *ptr) +RDI_PROC void +rdim_str8toptr_map_insert(RDIM_Arena *arena, RDIM_Str8ToPtrMap *map, RDIM_String8 key, RDI_U64 hash, void *ptr) { - RADDBGI_U64 bucket_idx = hash%map->buckets_count; + RDI_U64 bucket_idx = hash%map->buckets_count; RDIM_Str8ToPtrNode *node = rdim_push_array(arena, RDIM_Str8ToPtrNode, 1); SLLStackPush(map->buckets[bucket_idx], node); @@ -595,7 +595,7 @@ rdim_str8toptr_map_insert(RDIM_Arena *arena, RDIM_Str8ToPtrMap *map, RDIM_String //- rjf: root creation -RADDBGI_PROC RDIM_Root* +RDI_PROC RDIM_Root* rdim_root_alloc(RDIM_RootParams *params) { RDIM_Arena *arena = rdim_arena_alloc(); @@ -611,7 +611,7 @@ rdim_root_alloc(RDIM_RootParams *params) { result->nil_type = rdim_type_new(result); result->variadic_type = rdim_type_new(result); - result->variadic_type->kind = RADDBGI_TypeKind_Variadic; + result->variadic_type->kind = RDI_TypeKind_Variadic; // references to "handled nil type" should be emitted as // references to nil - but should not generate error @@ -648,7 +648,7 @@ rdim_root_alloc(RDIM_RootParams *params) return result; } -RADDBGI_PROC void +RDI_PROC void rdim_root_release(RDIM_Root *root) { arena_release(root->arena); @@ -656,7 +656,7 @@ rdim_root_release(RDIM_Root *root) //- rjf: error accumulation -RADDBGI_PROC void +RDI_PROC void rdim_push_error(RDIM_Root *root, RDIM_String8 string) { RDIM_Error *error = rdim_push_array(root->arena, RDIM_Error, 1); @@ -665,7 +665,7 @@ rdim_push_error(RDIM_Root *root, RDIM_String8 string) error->msg = string; } -RADDBGI_PROC void +RDI_PROC void rdim_push_errorf(RDIM_Root *root, char *fmt, ...) { va_list args; @@ -675,7 +675,7 @@ rdim_push_errorf(RDIM_Root *root, char *fmt, ...) va_end(args); } -RADDBGI_PROC RDIM_Error* +RDI_PROC RDIM_Error* rdim_first_error_from_root(RDIM_Root *root) { return root->errors.first; @@ -683,7 +683,7 @@ rdim_first_error_from_root(RDIM_Root *root) //- rjf: top-level info specification -RADDBGI_PROC void +RDI_PROC void rdim_set_top_level_info(RDIM_Root *root, RDIM_TopLevelInfo *tli) { rdim_requiref(root, !root->top_level_info_is_set, return, "Top level information set multiple times."); @@ -693,8 +693,8 @@ rdim_set_top_level_info(RDIM_Root *root, RDIM_TopLevelInfo *tli) //- rjf: binary section building -RADDBGI_PROC void -rdim_add_binary_section(RDIM_Root *root, RDIM_String8 name, RADDBGI_BinarySectionFlags flags, RADDBGI_U64 voff_first, RADDBGI_U64 voff_opl, RADDBGI_U64 foff_first, RADDBGI_U64 foff_opl) +RDI_PROC void +rdim_add_binary_section(RDIM_Root *root, RDIM_String8 name, RDI_BinarySectionFlags flags, RDI_U64 voff_first, RDI_U64 voff_opl, RDI_U64 foff_first, RDI_U64 foff_opl) { RDIM_BinarySection *sec = rdim_push_array(root->arena, RDIM_BinarySection, 1); SLLQueuePush(root->binary_section_first, root->binary_section_last, sec); @@ -709,8 +709,8 @@ rdim_add_binary_section(RDIM_Root *root, RDIM_String8 name, RADDBGI_BinarySectio //- rjf: unit info building -RADDBGI_PROC RDIM_Unit* -rdim_unit_handle_from_user_id(RDIM_Root *root, RADDBGI_U64 unit_user_id, RADDBGI_U64 unit_user_id_hash) +RDI_PROC RDIM_Unit* +rdim_unit_handle_from_user_id(RDIM_Root *root, RDI_U64 unit_user_id, RDI_U64 unit_user_id_hash) { RDIM_U64ToPtrLookup lookup = {0}; rdim_u64toptr_map_lookup(&root->unit_map, unit_user_id, unit_user_id_hash, &lookup); @@ -730,7 +730,7 @@ rdim_unit_handle_from_user_id(RDIM_Root *root, RADDBGI_U64 unit_user_id, RADDBGI return result; } -RADDBGI_PROC void +RDI_PROC void rdim_unit_set_info(RDIM_Root *root, RDIM_Unit *unit, RDIM_UnitInfo *info) { rdim_requiref(root, !unit->info_is_set, return, "Unit information set multiple times."); @@ -744,7 +744,7 @@ rdim_unit_set_info(RDIM_Root *root, RDIM_Unit *unit, RDIM_UnitInfo *info) unit->language = info->language; } -RADDBGI_PROC void +RDI_PROC void rdim_unit_add_line_sequence(RDIM_Root *root, RDIM_Unit *unit, RDIM_LineSequence *line_sequence) { RDIM_LineSequenceNode *node = rdim_push_array(root->arena, RDIM_LineSequenceNode, 1); @@ -753,23 +753,23 @@ rdim_unit_add_line_sequence(RDIM_Root *root, RDIM_Unit *unit, RDIM_LineSequence node->line_seq.file_name = rdim_str8_copy(root->arena, line_sequence->file_name); - node->line_seq.voffs = rdim_push_array(root->arena, RADDBGI_U64, line_sequence->line_count + 1); - rdim_memcpy(node->line_seq.voffs, line_sequence->voffs, sizeof(RADDBGI_U64)*(line_sequence->line_count + 1)); + node->line_seq.voffs = rdim_push_array(root->arena, RDI_U64, line_sequence->line_count + 1); + rdim_memcpy(node->line_seq.voffs, line_sequence->voffs, sizeof(RDI_U64)*(line_sequence->line_count + 1)); - node->line_seq.line_nums = rdim_push_array(root->arena, RADDBGI_U32, line_sequence->line_count); - rdim_memcpy(node->line_seq.line_nums, line_sequence->line_nums, sizeof(RADDBGI_U32)*line_sequence->line_count); + node->line_seq.line_nums = rdim_push_array(root->arena, RDI_U32, line_sequence->line_count); + rdim_memcpy(node->line_seq.line_nums, line_sequence->line_nums, sizeof(RDI_U32)*line_sequence->line_count); if(line_sequence->col_nums != 0) { - node->line_seq.col_nums = rdim_push_array(root->arena, RADDBGI_U16, line_sequence->line_count); - rdim_memcpy(node->line_seq.col_nums, line_sequence->col_nums, sizeof(RADDBGI_U16)*line_sequence->line_count); + node->line_seq.col_nums = rdim_push_array(root->arena, RDI_U16, line_sequence->line_count); + rdim_memcpy(node->line_seq.col_nums, line_sequence->col_nums, sizeof(RDI_U16)*line_sequence->line_count); } node->line_seq.line_count = line_sequence->line_count; } -RADDBGI_PROC void -rdim_unit_vmap_add_range(RDIM_Root *root, RDIM_Unit *unit, RADDBGI_U64 first, RADDBGI_U64 opl) +RDI_PROC void +rdim_unit_vmap_add_range(RDIM_Root *root, RDIM_Unit *unit, RDI_U64 first, RDI_U64 opl) { RDIM_UnitVMapRange *node = rdim_push_array(root->arena, RDIM_UnitVMapRange, 1); SLLQueuePush(root->unit_vmap_range_first, root->unit_vmap_range_last, node); @@ -781,8 +781,8 @@ rdim_unit_vmap_add_range(RDIM_Root *root, RDIM_Unit *unit, RADDBGI_U64 first, RA //- rjf: type info lookups/reservations -RADDBGI_PROC RDIM_Type* -rdim_type_from_id(RDIM_Root *root, RADDBGI_U64 type_user_id, RADDBGI_U64 type_user_id_hash) +RDI_PROC RDIM_Type* +rdim_type_from_id(RDIM_Root *root, RDI_U64 type_user_id, RDI_U64 type_user_id_hash) { RDIM_U64ToPtrLookup lookup = {0}; rdim_u64toptr_map_lookup(&root->type_from_id_map, type_user_id, type_user_id_hash, &lookup); @@ -790,8 +790,8 @@ rdim_type_from_id(RDIM_Root *root, RADDBGI_U64 type_user_id, RADDBGI_U64 type_us return result; } -RADDBGI_PROC RDIM_Reservation* -rdim_type_reserve_id(RDIM_Root *root, RADDBGI_U64 type_user_id, RADDBGI_U64 type_user_id_hash) +RDI_PROC RDIM_Reservation* +rdim_type_reserve_id(RDIM_Root *root, RDI_U64 type_user_id, RDI_U64 type_user_id_hash) { RDIM_Reservation *result = 0; RDIM_U64ToPtrLookup lookup = {0}; @@ -805,7 +805,7 @@ rdim_type_reserve_id(RDIM_Root *root, RADDBGI_U64 type_user_id, RADDBGI_U64 type return result; } -RADDBGI_PROC void +RDI_PROC void rdim_type_fill_id(RDIM_Root *root, RDIM_Reservation *res, RDIM_Type *type) { if(res != 0 && type != 0) @@ -816,26 +816,26 @@ rdim_type_fill_id(RDIM_Root *root, RDIM_Reservation *res, RDIM_Type *type) //- rjf: nil/singleton types -RADDBGI_PROC RADDBGI_S32 +RDI_PROC RDI_S32 rdim_type_is_unhandled_nil(RDIM_Root *root, RDIM_Type *type) { - RADDBGI_S32 result = (type->kind == RADDBGI_TypeKind_NULL && type != &root->handled_nil_type); + RDI_S32 result = (type->kind == RDI_TypeKind_NULL && type != &root->handled_nil_type); return result; } -RADDBGI_PROC RDIM_Type* +RDI_PROC RDIM_Type* rdim_type_handled_nil(RDIM_Root *root) { return &root->handled_nil_type; } -RADDBGI_PROC RDIM_Type* +RDI_PROC RDIM_Type* rdim_type_nil(RDIM_Root *root) { return root->nil_type; } -RADDBGI_PROC RDIM_Type* +RDI_PROC RDIM_Type* rdim_type_variadic(RDIM_Root *root) { return root->variadic_type; @@ -843,7 +843,7 @@ rdim_type_variadic(RDIM_Root *root) //- rjf: base type info constructors -RADDBGI_PROC RDIM_Type* +RDI_PROC RDIM_Type* rdim_type_new(RDIM_Root *root) { RDIM_Type *result = rdim_push_array(root->arena, RDIM_Type, 1); @@ -853,7 +853,7 @@ rdim_type_new(RDIM_Root *root) return result; } -RADDBGI_PROC RDIM_TypeUDT* +RDI_PROC RDIM_TypeUDT* rdim_type_udt_from_any_type(RDIM_Root *root, RDIM_Type *type) { if(type->udt == 0) @@ -869,12 +869,12 @@ rdim_type_udt_from_any_type(RDIM_Root *root, RDIM_Type *type) return result; } -RADDBGI_PROC RDIM_TypeUDT* +RDI_PROC RDIM_TypeUDT* rdim_type_udt_from_record_type(RDIM_Root *root, RDIM_Type *type) { - rdim_requiref(root, (type->kind == RADDBGI_TypeKind_Struct || - type->kind == RADDBGI_TypeKind_Class || - type->kind == RADDBGI_TypeKind_Union), + rdim_requiref(root, (type->kind == RDI_TypeKind_Struct || + type->kind == RDI_TypeKind_Class || + type->kind == RDI_TypeKind_Union), return 0, "Tried to use non-user-defined-type-kind to create user-defined-type."); RDIM_TypeUDT *result = 0; @@ -884,18 +884,18 @@ rdim_type_udt_from_record_type(RDIM_Root *root, RDIM_Type *type) //- rjf: basic/operator type construction helpers -RADDBGI_PROC RDIM_Type* -rdim_type_basic(RDIM_Root *root, RADDBGI_TypeKind type_kind, RDIM_String8 name) +RDI_PROC RDIM_Type* +rdim_type_basic(RDIM_Root *root, RDI_TypeKind type_kind, RDIM_String8 name) { - rdim_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."); + rdim_requiref(root, (RDI_TypeKind_FirstBuiltIn <= type_kind && type_kind <= RDI_TypeKind_LastBuiltIn), return root->nil_type, "Non-basic type kind passed to construct basic type."); RDIM_Type *result = root->nil_type; RDIM_Temp scratch = rdim_scratch_begin(0, 0); // setup construct buffer - RADDBGI_U64 buf_size = sizeof(RDIM_TypeConstructKind) + sizeof(type_kind) + name.size; - RADDBGI_U8 *buf = rdim_push_array(rdim_temp_arena(scratch), RADDBGI_U8, buf_size); + RDI_U64 buf_size = sizeof(RDIM_TypeConstructKind) + sizeof(type_kind) + name.size; + RDI_U8 *buf = rdim_push_array(rdim_temp_arena(scratch), RDI_U8, buf_size); { - RADDBGI_U8 *ptr = buf; + RDI_U8 *ptr = buf; // "basic" *(RDIM_TypeConstructKind*)ptr = RDIM_TypeConstructKind_Basic; ptr += sizeof(RDIM_TypeConstructKind); @@ -909,13 +909,13 @@ rdim_type_basic(RDIM_Root *root, RADDBGI_TypeKind type_kind, RDIM_String8 name) // check for duplicate construct RDIM_String8 blob = rdim_str8(buf, buf_size); - RADDBGI_U64 blob_hash = raddbgi_hash(buf, buf_size); + RDI_U64 blob_hash = rdi_hash(buf, buf_size); void *lookup_ptr = rdim_str8toptr_map_lookup(&root->construct_map, blob, blob_hash); result = (RDIM_Type*)lookup_ptr; if(result == 0) { // calculate size - RADDBGI_U32 byte_size = raddbgi_size_from_basic_type_kind(type_kind); + RDI_U32 byte_size = rdi_size_from_basic_type_kind(type_kind); if(byte_size == 0xFFFFFFFF) { byte_size = root->addr_size; @@ -932,7 +932,7 @@ rdim_type_basic(RDIM_Root *root, RADDBGI_TypeKind type_kind, RDIM_String8 name) // save in name map { - RDIM_NameMap *map = rdim_name_map_for_kind(root, RADDBGI_NameMapKind_Types); + RDIM_NameMap *map = rdim_name_map_for_kind(root, RDI_NameMapKind_Types); rdim_name_map_add_pair(root, map, result->name, result->idx); } } @@ -942,17 +942,17 @@ rdim_type_basic(RDIM_Root *root, RADDBGI_TypeKind type_kind, RDIM_String8 name) return result; } -RADDBGI_PROC RDIM_Type* -rdim_type_modifier(RDIM_Root *root, RDIM_Type *direct_type, RADDBGI_TypeModifierFlags flags) +RDI_PROC RDIM_Type* +rdim_type_modifier(RDIM_Root *root, RDIM_Type *direct_type, RDI_TypeModifierFlags flags) { RDIM_Type *result = root->nil_type; RDIM_Temp scratch = rdim_scratch_begin(0, 0); // setup construct buffer - RADDBGI_U64 buf_size = sizeof(RDIM_TypeConstructKind) + sizeof(flags) + sizeof(direct_type->idx); - RADDBGI_U8 *buf = rdim_push_array(rdim_temp_arena(scratch), RADDBGI_U8, buf_size); + RDI_U64 buf_size = sizeof(RDIM_TypeConstructKind) + sizeof(flags) + sizeof(direct_type->idx); + RDI_U8 *buf = rdim_push_array(rdim_temp_arena(scratch), RDI_U8, buf_size); { - RADDBGI_U8 *ptr = buf; + RDI_U8 *ptr = buf; // "modifier" *(RDIM_TypeConstructKind*)ptr = RDIM_TypeConstructKind_Modifier; ptr += sizeof(RDIM_TypeConstructKind); @@ -966,14 +966,14 @@ rdim_type_modifier(RDIM_Root *root, RDIM_Type *direct_type, RADDBGI_TypeModifier // check for duplicate construct RDIM_String8 blob = rdim_str8(buf, buf_size); - RADDBGI_U64 blob_hash = raddbgi_hash(buf, buf_size); + RDI_U64 blob_hash = rdi_hash(buf, buf_size); void *lookup_ptr = rdim_str8toptr_map_lookup(&root->construct_map, blob, blob_hash); result = (RDIM_Type*)lookup_ptr; if(result == 0){ // setup new node result = rdim_type_new(root); - result->kind = RADDBGI_TypeKind_Modifier; + result->kind = RDI_TypeKind_Modifier; result->flags = flags; result->byte_size = direct_type->byte_size; result->direct_type = direct_type; @@ -987,17 +987,17 @@ rdim_type_modifier(RDIM_Root *root, RDIM_Type *direct_type, RADDBGI_TypeModifier return result; } -RADDBGI_PROC RDIM_Type* -rdim_type_bitfield(RDIM_Root *root, RDIM_Type *direct_type, RADDBGI_U32 bit_off, RADDBGI_U32 bit_count) +RDI_PROC RDIM_Type* +rdim_type_bitfield(RDIM_Root *root, RDIM_Type *direct_type, RDI_U32 bit_off, RDI_U32 bit_count) { RDIM_Type *result = root->nil_type; RDIM_Temp scratch = rdim_scratch_begin(0, 0); // setup construct buffer - RADDBGI_U64 buf_size = sizeof(RDIM_TypeConstructKind) + sizeof(direct_type->idx) + sizeof(RADDBGI_U32)*2; - RADDBGI_U8 *buf = rdim_push_array(rdim_temp_arena(scratch), RADDBGI_U8, buf_size); + RDI_U64 buf_size = sizeof(RDIM_TypeConstructKind) + sizeof(direct_type->idx) + sizeof(RDI_U32)*2; + RDI_U8 *buf = rdim_push_array(rdim_temp_arena(scratch), RDI_U8, buf_size); { - RADDBGI_U8 *ptr = buf; + RDI_U8 *ptr = buf; // "bitfield" *(RDIM_TypeConstructKind*)ptr = RDIM_TypeConstructKind_Bitfield; ptr += sizeof(RDIM_TypeConstructKind); @@ -1014,14 +1014,14 @@ rdim_type_bitfield(RDIM_Root *root, RDIM_Type *direct_type, RADDBGI_U32 bit_off, // check for duplicate construct RDIM_String8 blob = rdim_str8(buf, buf_size); - RADDBGI_U64 blob_hash = raddbgi_hash(buf, buf_size); + RDI_U64 blob_hash = rdi_hash(buf, buf_size); void *lookup_ptr = rdim_str8toptr_map_lookup(&root->construct_map, blob, blob_hash); result = (RDIM_Type*)lookup_ptr; if(result == 0) { // setup new node result = rdim_type_new(root); - result->kind = RADDBGI_TypeKind_Bitfield; + result->kind = RDI_TypeKind_Bitfield; result->byte_size = direct_type->byte_size; result->off = bit_off; result->count = bit_count; @@ -1036,22 +1036,22 @@ rdim_type_bitfield(RDIM_Root *root, RDIM_Type *direct_type, RADDBGI_U32 bit_off, return result; } -RADDBGI_PROC RDIM_Type* -rdim_type_pointer(RDIM_Root *root, RDIM_Type *direct_type, RADDBGI_TypeKind ptr_type_kind) +RDI_PROC RDIM_Type* +rdim_type_pointer(RDIM_Root *root, RDIM_Type *direct_type, RDI_TypeKind ptr_type_kind) { - rdim_requiref(root, (ptr_type_kind == RADDBGI_TypeKind_Ptr || - ptr_type_kind == RADDBGI_TypeKind_LRef || - ptr_type_kind == RADDBGI_TypeKind_RRef), + rdim_requiref(root, (ptr_type_kind == RDI_TypeKind_Ptr || + ptr_type_kind == RDI_TypeKind_LRef || + ptr_type_kind == RDI_TypeKind_RRef), return root->nil_type, "Non-pointer type kind used to construct pointer type."); RDIM_Type *result = root->nil_type; RDIM_Temp scratch = rdim_scratch_begin(0, 0); // setup construct buffer - RADDBGI_U64 buf_size = sizeof(RDIM_TypeConstructKind) + sizeof(ptr_type_kind) + sizeof(direct_type->idx); - RADDBGI_U8 *buf = rdim_push_array(rdim_temp_arena(scratch), RADDBGI_U8, buf_size); + RDI_U64 buf_size = sizeof(RDIM_TypeConstructKind) + sizeof(ptr_type_kind) + sizeof(direct_type->idx); + RDI_U8 *buf = rdim_push_array(rdim_temp_arena(scratch), RDI_U8, buf_size); { - RADDBGI_U8 *ptr = buf; + RDI_U8 *ptr = buf; // "pointer" *(RDIM_TypeConstructKind*)ptr = RDIM_TypeConstructKind_Pointer; ptr += sizeof(RDIM_TypeConstructKind); @@ -1065,7 +1065,7 @@ rdim_type_pointer(RDIM_Root *root, RDIM_Type *direct_type, RADDBGI_TypeKind ptr_ // check for duplicate construct RDIM_String8 blob = rdim_str8(buf, buf_size); - RADDBGI_U64 blob_hash = raddbgi_hash(buf, buf_size); + RDI_U64 blob_hash = rdi_hash(buf, buf_size); void *lookup_ptr = rdim_str8toptr_map_lookup(&root->construct_map, blob, blob_hash); result = (RDIM_Type*)lookup_ptr; if(result == 0) @@ -1085,18 +1085,18 @@ rdim_type_pointer(RDIM_Root *root, RDIM_Type *direct_type, RADDBGI_TypeKind ptr_ return result; } -RADDBGI_PROC RDIM_Type* -rdim_type_array(RDIM_Root *root, RDIM_Type *direct_type, RADDBGI_U64 count) +RDI_PROC RDIM_Type* +rdim_type_array(RDIM_Root *root, RDIM_Type *direct_type, RDI_U64 count) { RDIM_Type *result = root->nil_type; RDIM_Temp scratch = rdim_scratch_begin(0, 0); // setup construct buffer - RADDBGI_U64 buf_size = + RDI_U64 buf_size = sizeof(RDIM_TypeConstructKind) + sizeof(direct_type->idx) + sizeof(count); - RADDBGI_U8 *buf = rdim_push_array(rdim_temp_arena(scratch), RADDBGI_U8, buf_size); + RDI_U8 *buf = rdim_push_array(rdim_temp_arena(scratch), RDI_U8, buf_size); { - RADDBGI_U8 *ptr = buf; + RDI_U8 *ptr = buf; // "array" *(RDIM_TypeConstructKind*)ptr = RDIM_TypeConstructKind_Array; ptr += sizeof(RDIM_TypeConstructKind); @@ -1110,14 +1110,14 @@ rdim_type_array(RDIM_Root *root, RDIM_Type *direct_type, RADDBGI_U64 count) // check for duplicate construct RDIM_String8 blob = rdim_str8(buf, buf_size); - RADDBGI_U64 blob_hash = raddbgi_hash(buf, buf_size); + RDI_U64 blob_hash = rdi_hash(buf, buf_size); void *lookup_ptr = rdim_str8toptr_map_lookup(&root->construct_map, blob, blob_hash); result = (RDIM_Type*)lookup_ptr; if(result == 0) { // setup new node result = rdim_type_new(root); - result->kind = RADDBGI_TypeKind_Array; + result->kind = RDI_TypeKind_Array; result->count = count; result->direct_type = direct_type; result->byte_size = direct_type->byte_size*count; @@ -1131,17 +1131,17 @@ rdim_type_array(RDIM_Root *root, RDIM_Type *direct_type, RADDBGI_U64 count) return result; } -RADDBGI_PROC RDIM_Type* +RDI_PROC RDIM_Type* rdim_type_proc(RDIM_Root *root, RDIM_Type *return_type, struct RDIM_TypeList *params) { RDIM_Type *result = root->nil_type; RDIM_Temp scratch = rdim_scratch_begin(0, 0); // setup construct buffer - RADDBGI_U64 buf_size = sizeof(RDIM_TypeConstructKind) + sizeof(return_type->idx)*(1 + params->count); - RADDBGI_U8 *buf = rdim_push_array(rdim_temp_arena(scratch), RADDBGI_U8, buf_size); + RDI_U64 buf_size = sizeof(RDIM_TypeConstructKind) + sizeof(return_type->idx)*(1 + params->count); + RDI_U8 *buf = rdim_push_array(rdim_temp_arena(scratch), RDI_U8, buf_size); { - RADDBGI_U8 *ptr = buf; + RDI_U8 *ptr = buf; // "procedure" *(RDIM_TypeConstructKind*)ptr = RDIM_TypeConstructKind_Procedure; ptr += sizeof(RDIM_TypeConstructKind); @@ -1160,7 +1160,7 @@ rdim_type_proc(RDIM_Root *root, RDIM_Type *return_type, struct RDIM_TypeList *pa // check for duplicate construct RDIM_String8 blob = rdim_str8(buf, buf_size); - RADDBGI_U64 blob_hash = raddbgi_hash(buf, buf_size); + RDI_U64 blob_hash = rdi_hash(buf, buf_size); void *lookup_ptr = rdim_str8toptr_map_lookup(&root->construct_map, blob, blob_hash); result = (RDIM_Type*)lookup_ptr; if(result == 0) @@ -1180,7 +1180,7 @@ rdim_type_proc(RDIM_Root *root, RDIM_Type *return_type, struct RDIM_TypeList *pa // setup new node result = rdim_type_new(root); - result->kind = RADDBGI_TypeKind_Function; + result->kind = RDI_TypeKind_Function; result->byte_size = root->addr_size; result->count = params->count; result->direct_type = return_type; @@ -1195,18 +1195,18 @@ rdim_type_proc(RDIM_Root *root, RDIM_Type *return_type, struct RDIM_TypeList *pa return result; } -RADDBGI_PROC RDIM_Type* +RDI_PROC RDIM_Type* rdim_type_method(RDIM_Root *root, RDIM_Type *this_type, RDIM_Type *return_type, struct RDIM_TypeList *params) { RDIM_Type *result = root->nil_type; RDIM_Temp scratch = rdim_scratch_begin(0, 0); // setup construct buffer - RADDBGI_U64 buf_size = + RDI_U64 buf_size = sizeof(RDIM_TypeConstructKind) + sizeof(return_type->idx)*(2 + params->count); - RADDBGI_U8 *buf = rdim_push_array(rdim_temp_arena(scratch), RADDBGI_U8, buf_size); + RDI_U8 *buf = rdim_push_array(rdim_temp_arena(scratch), RDI_U8, buf_size); { - RADDBGI_U8 *ptr = buf; + RDI_U8 *ptr = buf; // "method" *(RDIM_TypeConstructKind*)ptr = RDIM_TypeConstructKind_Method; ptr += sizeof(RDIM_TypeConstructKind); @@ -1228,7 +1228,7 @@ rdim_type_method(RDIM_Root *root, RDIM_Type *this_type, RDIM_Type *return_type, // check for duplicate construct RDIM_String8 blob = rdim_str8(buf, buf_size); - RADDBGI_U64 blob_hash = raddbgi_hash(buf, buf_size); + RDI_U64 blob_hash = rdi_hash(buf, buf_size); void *lookup_ptr = rdim_str8toptr_map_lookup(&root->construct_map, blob, blob_hash); result = (RDIM_Type*)lookup_ptr; if(result == 0) @@ -1252,7 +1252,7 @@ rdim_type_method(RDIM_Root *root, RDIM_Type *this_type, RDIM_Type *return_type, // setup new node result = rdim_type_new(root); - result->kind = RADDBGI_TypeKind_Method; + result->kind = RDI_TypeKind_Method; result->byte_size = root->addr_size; result->count = params->count; result->direct_type = return_type; @@ -1269,12 +1269,12 @@ rdim_type_method(RDIM_Root *root, RDIM_Type *this_type, RDIM_Type *return_type, //- rjf: udt type constructors -RADDBGI_PROC RDIM_Type* -rdim_type_udt(RDIM_Root *root, RADDBGI_TypeKind record_type_kind, RDIM_String8 name, RADDBGI_U64 size) +RDI_PROC RDIM_Type* +rdim_type_udt(RDIM_Root *root, RDI_TypeKind record_type_kind, RDIM_String8 name, RDI_U64 size) { - rdim_requiref(root, (record_type_kind == RADDBGI_TypeKind_Struct || - record_type_kind == RADDBGI_TypeKind_Class || - record_type_kind == RADDBGI_TypeKind_Union), + rdim_requiref(root, (record_type_kind == RDI_TypeKind_Struct || + record_type_kind == RDI_TypeKind_Class || + record_type_kind == RDI_TypeKind_Union), return root->nil_type, "Non-user-defined-type-kind used to create user-defined type."); @@ -1286,58 +1286,58 @@ rdim_type_udt(RDIM_Root *root, RADDBGI_TypeKind record_type_kind, RDIM_String8 n // rjf: save in name map { - RDIM_NameMap *map = rdim_name_map_for_kind(root, RADDBGI_NameMapKind_Types); + RDIM_NameMap *map = rdim_name_map_for_kind(root, RDI_NameMapKind_Types); rdim_name_map_add_pair(root, map, result->name, result->idx); } return result; } -RADDBGI_PROC RDIM_Type* +RDI_PROC RDIM_Type* rdim_type_enum(RDIM_Root *root, RDIM_Type *direct_type, RDIM_String8 name) { // rjf: make type RDIM_Type *result = rdim_type_new(root); - result->kind = RADDBGI_TypeKind_Enum; + result->kind = RDI_TypeKind_Enum; result->byte_size = direct_type->byte_size; result->name = rdim_str8_copy(root->arena, name); result->direct_type = direct_type; // rjf: save in name map { - RDIM_NameMap *map = rdim_name_map_for_kind(root, RADDBGI_NameMapKind_Types); + RDIM_NameMap *map = rdim_name_map_for_kind(root, RDI_NameMapKind_Types); rdim_name_map_add_pair(root, map, result->name, result->idx); } return result; } -RADDBGI_PROC RDIM_Type* +RDI_PROC RDIM_Type* rdim_type_alias(RDIM_Root *root, RDIM_Type *direct_type, RDIM_String8 name) { // rjf: make type RDIM_Type *result = rdim_type_new(root); - result->kind = RADDBGI_TypeKind_Alias; + result->kind = RDI_TypeKind_Alias; result->byte_size = direct_type->byte_size; result->name = rdim_str8_copy(root->arena, name); result->direct_type = direct_type; // rjf: save in name map { - RDIM_NameMap *map = rdim_name_map_for_kind(root, RADDBGI_NameMapKind_Types); + RDIM_NameMap *map = rdim_name_map_for_kind(root, RDI_NameMapKind_Types); rdim_name_map_add_pair(root, map, result->name, result->idx); } return result; } -RADDBGI_PROC RDIM_Type* -rdim_type_incomplete(RDIM_Root *root, RADDBGI_TypeKind type_kind, RDIM_String8 name) +RDI_PROC RDIM_Type* +rdim_type_incomplete(RDIM_Root *root, RDI_TypeKind type_kind, RDIM_String8 name) { - rdim_requiref(root, (type_kind == RADDBGI_TypeKind_IncompleteStruct || - type_kind == RADDBGI_TypeKind_IncompleteClass || - type_kind == RADDBGI_TypeKind_IncompleteUnion || - type_kind == RADDBGI_TypeKind_IncompleteEnum), + rdim_requiref(root, (type_kind == RDI_TypeKind_IncompleteStruct || + type_kind == RDI_TypeKind_IncompleteClass || + type_kind == RDI_TypeKind_IncompleteUnion || + type_kind == RDI_TypeKind_IncompleteEnum), return root->nil_type, "Non-incomplete-type-kind used to create incomplete type."); @@ -1348,7 +1348,7 @@ rdim_type_incomplete(RDIM_Root *root, RADDBGI_TypeKind type_kind, RDIM_String8 n // save in name map { - RDIM_NameMap *map = rdim_name_map_for_kind(root, RADDBGI_NameMapKind_Types); + RDIM_NameMap *map = rdim_name_map_for_kind(root, RDI_NameMapKind_Types); rdim_name_map_add_pair(root, map, result->name, result->idx); } @@ -1357,8 +1357,8 @@ rdim_type_incomplete(RDIM_Root *root, RADDBGI_TypeKind type_kind, RDIM_String8 n //- rjf: type member building -RADDBGI_PROC void -rdim_type_add_member_data_field(RDIM_Root *root, RDIM_Type *record_type, RDIM_String8 name, RDIM_Type *mem_type, RADDBGI_U32 off) +RDI_PROC void +rdim_type_add_member_data_field(RDIM_Root *root, RDIM_Type *record_type, RDIM_String8 name, RDIM_Type *mem_type, RDI_U32 off) { RDIM_TypeUDT *udt = rdim_type_udt_from_record_type(root, record_type); if(udt != 0) @@ -1367,14 +1367,14 @@ rdim_type_add_member_data_field(RDIM_Root *root, RDIM_Type *record_type, RDIM_St SLLQueuePush(udt->first_member, udt->last_member, member); udt->member_count += 1; root->total_member_count += 1; - member->kind = RADDBGI_MemberKind_DataField; + member->kind = RDI_MemberKind_DataField; member->name = rdim_str8_copy(root->arena, name); member->type = mem_type; member->off = off; } } -RADDBGI_PROC void +RDI_PROC void rdim_type_add_member_static_data(RDIM_Root *root, RDIM_Type *record_type, RDIM_String8 name, RDIM_Type *mem_type) { RDIM_TypeUDT *udt = rdim_type_udt_from_record_type(root, record_type); @@ -1384,13 +1384,13 @@ rdim_type_add_member_static_data(RDIM_Root *root, RDIM_Type *record_type, RDIM_S SLLQueuePush(udt->first_member, udt->last_member, member); udt->member_count += 1; root->total_member_count += 1; - member->kind = RADDBGI_MemberKind_StaticData; + member->kind = RDI_MemberKind_StaticData; member->name = rdim_str8_copy(root->arena, name); member->type = mem_type; } } -RADDBGI_PROC void +RDI_PROC void rdim_type_add_member_method(RDIM_Root *root, RDIM_Type *record_type, RDIM_String8 name, RDIM_Type *mem_type) { RDIM_TypeUDT *udt = rdim_type_udt_from_record_type(root, record_type); @@ -1400,13 +1400,13 @@ rdim_type_add_member_method(RDIM_Root *root, RDIM_Type *record_type, RDIM_String SLLQueuePush(udt->first_member, udt->last_member, member); udt->member_count += 1; root->total_member_count += 1; - member->kind = RADDBGI_MemberKind_Method; + member->kind = RDI_MemberKind_Method; member->name = rdim_str8_copy(root->arena, name); member->type = mem_type; } } -RADDBGI_PROC void +RDI_PROC void rdim_type_add_member_static_method(RDIM_Root *root, RDIM_Type *record_type, RDIM_String8 name, RDIM_Type *mem_type) { RDIM_TypeUDT *udt = rdim_type_udt_from_record_type(root, record_type); @@ -1418,13 +1418,13 @@ rdim_type_add_member_static_method(RDIM_Root *root, RDIM_Type *record_type, RDIM root->total_member_count += 1; - member->kind = RADDBGI_MemberKind_StaticMethod; + member->kind = RDI_MemberKind_StaticMethod; member->name = rdim_str8_copy(root->arena, name); member->type = mem_type; } } -RADDBGI_PROC void +RDI_PROC void rdim_type_add_member_virtual_method(RDIM_Root *root, RDIM_Type *record_type, RDIM_String8 name, RDIM_Type *mem_type) { RDIM_TypeUDT *udt = rdim_type_udt_from_record_type(root, record_type); @@ -1434,14 +1434,14 @@ rdim_type_add_member_virtual_method(RDIM_Root *root, RDIM_Type *record_type, RDI SLLQueuePush(udt->first_member, udt->last_member, member); udt->member_count += 1; root->total_member_count += 1; - member->kind = RADDBGI_MemberKind_VirtualMethod; + member->kind = RDI_MemberKind_VirtualMethod; member->name = rdim_str8_copy(root->arena, name); member->type = mem_type; } } -RADDBGI_PROC void -rdim_type_add_member_base(RDIM_Root *root, RDIM_Type *record_type, RDIM_Type *base_type, RADDBGI_U32 off) +RDI_PROC void +rdim_type_add_member_base(RDIM_Root *root, RDIM_Type *record_type, RDIM_Type *base_type, RDI_U32 off) { RDIM_TypeUDT *udt = rdim_type_udt_from_record_type(root, record_type); if(udt != 0) @@ -1450,14 +1450,14 @@ rdim_type_add_member_base(RDIM_Root *root, RDIM_Type *record_type, RDIM_Type *ba SLLQueuePush(udt->first_member, udt->last_member, member); udt->member_count += 1; root->total_member_count += 1; - member->kind = RADDBGI_MemberKind_Base; + member->kind = RDI_MemberKind_Base; member->type = base_type; member->off = off; } } -RADDBGI_PROC void -rdim_type_add_member_virtual_base(RDIM_Root *root, RDIM_Type *record_type, RDIM_Type *base_type, RADDBGI_U32 vptr_off, RADDBGI_U32 vtable_off) +RDI_PROC void +rdim_type_add_member_virtual_base(RDIM_Root *root, RDIM_Type *record_type, RDIM_Type *base_type, RDI_U32 vptr_off, RDI_U32 vtable_off) { RDIM_TypeUDT *udt = rdim_type_udt_from_record_type(root, record_type); if(udt != 0) @@ -1466,13 +1466,13 @@ rdim_type_add_member_virtual_base(RDIM_Root *root, RDIM_Type *record_type, RDIM_ SLLQueuePush(udt->first_member, udt->last_member, member); udt->member_count += 1; root->total_member_count += 1; - member->kind = RADDBGI_MemberKind_VirtualBase; + member->kind = RDI_MemberKind_VirtualBase; member->type = base_type; // TODO(allen): what to do with the two offsets in this case? } } -RADDBGI_PROC void +RDI_PROC void rdim_type_add_member_nested_type(RDIM_Root *root, RDIM_Type *record_type, RDIM_Type *nested_type) { RDIM_TypeUDT *udt = rdim_type_udt_from_record_type(root, record_type); @@ -1482,15 +1482,15 @@ rdim_type_add_member_nested_type(RDIM_Root *root, RDIM_Type *record_type, RDIM_T SLLQueuePush(udt->first_member, udt->last_member, member); udt->member_count += 1; root->total_member_count += 1; - member->kind = RADDBGI_MemberKind_NestedType; + member->kind = RDI_MemberKind_NestedType; member->type = nested_type; } } -RADDBGI_PROC void -rdim_type_add_enum_val(RDIM_Root *root, RDIM_Type *enum_type, RDIM_String8 name, RADDBGI_U64 val) +RDI_PROC void +rdim_type_add_enum_val(RDIM_Root *root, RDIM_Type *enum_type, RDIM_String8 name, RDI_U64 val) { - rdim_requiref(root, (enum_type->kind == RADDBGI_TypeKind_Enum), return, "Tried to add enum value to non-enum type."); + rdim_requiref(root, (enum_type->kind == RDI_TypeKind_Enum), return, "Tried to add enum value to non-enum type."); RDIM_TypeUDT *udt = rdim_type_udt_from_any_type(root, enum_type); if(udt != 0) { @@ -1504,10 +1504,10 @@ rdim_type_add_enum_val(RDIM_Root *root, RDIM_Type *enum_type, RDIM_String8 name, } //- rjf: type source coordinate specifications -RADDBGI_PROC void -rdim_type_set_source_coordinates(RDIM_Root *root, RDIM_Type *defined_type, RDIM_String8 source_path, RADDBGI_U32 line, RADDBGI_U32 col) +RDI_PROC void +rdim_type_set_source_coordinates(RDIM_Root *root, RDIM_Type *defined_type, RDIM_String8 source_path, RDI_U32 line, RDI_U32 col) { - rdim_requiref(root, (RADDBGI_TypeKind_FirstUserDefined <= defined_type->kind && defined_type->kind <= RADDBGI_TypeKind_LastUserDefined), + rdim_requiref(root, (RDI_TypeKind_FirstUserDefined <= defined_type->kind && defined_type->kind <= RDI_TypeKind_LastUserDefined), return, "Tried to add source coordinates to non-user-defined type."); RDIM_TypeUDT *udt = rdim_type_udt_from_any_type(root, defined_type); if(udt != 0) @@ -1520,8 +1520,8 @@ rdim_type_set_source_coordinates(RDIM_Root *root, RDIM_Type *defined_type, RDIM_ //- rjf: symbol info building -RADDBGI_PROC RDIM_Symbol* -rdim_symbol_handle_from_user_id(RDIM_Root *root, RADDBGI_U64 symbol_user_id, RADDBGI_U64 symbol_user_id_hash) +RDI_PROC RDIM_Symbol* +rdim_symbol_handle_from_user_id(RDIM_Root *root, RDI_U64 symbol_user_id, RDI_U64 symbol_user_id_hash) { RDIM_U64ToPtrLookup lookup = {0}; rdim_u64toptr_map_lookup(&root->symbol_map, symbol_user_id, symbol_user_id_hash, &lookup); @@ -1540,7 +1540,7 @@ rdim_symbol_handle_from_user_id(RDIM_Root *root, RADDBGI_U64 symbol_user_id, RAD return result; } -RADDBGI_PROC void +RDI_PROC void rdim_symbol_set_info(RDIM_Root *root, RDIM_Symbol *symbol, RDIM_SymbolInfo *info) { // rjf: unpack @@ -1591,15 +1591,15 @@ rdim_symbol_set_info(RDIM_Root *root, RDIM_Symbol *symbol, RDIM_SymbolInfo *info default:{}break; case RDIM_SymbolKind_GlobalVariable: { - map = rdim_name_map_for_kind(root, RADDBGI_NameMapKind_GlobalVariables); + map = rdim_name_map_for_kind(root, RDI_NameMapKind_GlobalVariables); }break; case RDIM_SymbolKind_ThreadVariable: { - map = rdim_name_map_for_kind(root, RADDBGI_NameMapKind_ThreadVariables); + map = rdim_name_map_for_kind(root, RDI_NameMapKind_ThreadVariables); }break; case RDIM_SymbolKind_Procedure: { - map = rdim_name_map_for_kind(root, RADDBGI_NameMapKind_Procedures); + map = rdim_name_map_for_kind(root, RDI_NameMapKind_Procedures); }break; } if(map != 0) @@ -1611,15 +1611,15 @@ rdim_symbol_set_info(RDIM_Root *root, RDIM_Symbol *symbol, RDIM_SymbolInfo *info // save link name map if(kind == RDIM_SymbolKind_Procedure && symbol->link_name.size > 0) { - RDIM_NameMap *map = rdim_name_map_for_kind(root, RADDBGI_NameMapKind_LinkNameProcedures); + RDIM_NameMap *map = rdim_name_map_for_kind(root, RDI_NameMapKind_LinkNameProcedures); rdim_name_map_add_pair(root, map, symbol->link_name, symbol->idx); } } //- rjf: scope info building -RADDBGI_PROC RDIM_Scope * -rdim_scope_handle_from_user_id(RDIM_Root *root, RADDBGI_U64 scope_user_id, RADDBGI_U64 scope_user_id_hash) +RDI_PROC RDIM_Scope * +rdim_scope_handle_from_user_id(RDIM_Root *root, RDI_U64 scope_user_id, RDI_U64 scope_user_id_hash) { RDIM_Scope *result = 0; RDIM_U64ToPtrLookup lookup = {0}; @@ -1639,7 +1639,7 @@ rdim_scope_handle_from_user_id(RDIM_Root *root, RADDBGI_U64 scope_user_id, RADDB return result; } -RADDBGI_PROC void +RDI_PROC void rdim_scope_set_parent(RDIM_Root *root, RDIM_Scope *scope, RDIM_Scope *parent) { rdim_requiref(root, scope->parent_scope == 0, return, "Scope parent set multiple times."); @@ -1649,8 +1649,8 @@ rdim_scope_set_parent(RDIM_Root *root, RDIM_Scope *scope, RDIM_Scope *parent) RDIM_SLLQueuePush_N(parent->first_child, parent->last_child, scope, next_sibling); } -RADDBGI_PROC void -rdim_scope_add_voff_range(RDIM_Root *root, RDIM_Scope *scope, RADDBGI_U64 voff_first, RADDBGI_U64 voff_opl) +RDI_PROC void +rdim_scope_add_voff_range(RDIM_Root *root, RDIM_Scope *scope, RDI_U64 voff_first, RDI_U64 voff_opl) { RDIM_VOffRange *range = rdim_push_array(root->arena, RDIM_VOffRange, 1); SLLQueuePush(scope->first_range, scope->last_range, range); @@ -1661,7 +1661,7 @@ rdim_scope_add_voff_range(RDIM_Root *root, RDIM_Scope *scope, RADDBGI_U64 voff_f root->scope_voff_count += 2; } -RADDBGI_PROC void +RDI_PROC void rdim_scope_recursive_set_symbol(RDIM_Scope *scope, RDIM_Symbol *symbol) { scope->symbol = symbol; @@ -1675,8 +1675,8 @@ rdim_scope_recursive_set_symbol(RDIM_Scope *scope, RDIM_Symbol *symbol) //- rjf: local info building -RADDBGI_PROC RDIM_Local* -rdim_local_handle_from_user_id(RDIM_Root *root, RADDBGI_U64 local_user_id, RADDBGI_U64 local_user_id_hash) +RDI_PROC RDIM_Local* +rdim_local_handle_from_user_id(RDIM_Root *root, RDI_U64 local_user_id, RDI_U64 local_user_id_hash) { RDIM_Local *result = 0; RDIM_U64ToPtrLookup lookup = {0}; @@ -1693,12 +1693,12 @@ rdim_local_handle_from_user_id(RDIM_Root *root, RADDBGI_U64 local_user_id, RADDB return result; } -RADDBGI_PROC void +RDI_PROC void rdim_local_set_basic_info(RDIM_Root *root, RDIM_Local *local, RDIM_LocalInfo *info) { - rdim_requiref(root, local->kind == RADDBGI_LocalKind_NULL, return, "Local information set multiple times."); + rdim_requiref(root, local->kind == RDI_LocalKind_NULL, return, "Local information set multiple times."); rdim_requiref(root, info->scope != 0, return, "Tried to set invalid scope as local's containing scope."); - rdim_requiref(root, RADDBGI_LocalKind_NULL < info->kind && info->kind < RADDBGI_LocalKind_COUNT, return, "Invalid local kind."); + rdim_requiref(root, RDI_LocalKind_NULL < info->kind && info->kind < RDI_LocalKind_COUNT, return, "Invalid local kind."); rdim_requiref(root, info->type != 0, return, "Tried to set invalid type as local's type."); RDIM_Scope *scope = info->scope; SLLQueuePush(scope->first_local, scope->last_local, local); @@ -1709,7 +1709,7 @@ rdim_local_set_basic_info(RDIM_Root *root, RDIM_Local *local, RDIM_LocalInfo *in local->type = info->type; } -RADDBGI_PROC RDIM_LocationSet* +RDI_PROC RDIM_LocationSet* rdim_location_set_from_local(RDIM_Root *root, RDIM_Local *local) { RDIM_LocationSet *result = local->locset; @@ -1723,8 +1723,8 @@ rdim_location_set_from_local(RDIM_Root *root, RDIM_Local *local) //- rjf: location info building -RADDBGI_PROC void -rdim_location_set_add_case(RDIM_Root *root, RDIM_LocationSet *locset, RADDBGI_U64 voff_first, RADDBGI_U64 voff_opl, RDIM_Location *location) +RDI_PROC void +rdim_location_set_add_case(RDIM_Root *root, RDIM_LocationSet *locset, RDI_U64 voff_first, RDI_U64 voff_opl, RDIM_Location *location) { RDIM_LocationCase *location_case = rdim_push_array(root->arena, RDIM_LocationCase, 1); SLLQueuePush(locset->first_location_case, locset->last_location_case, location_case); @@ -1735,60 +1735,60 @@ rdim_location_set_add_case(RDIM_Root *root, RDIM_LocationSet *locset, RADDBGI_U6 location_case->location = location; } -RADDBGI_PROC RDIM_Location* +RDI_PROC RDIM_Location* rdim_location_addr_bytecode_stream(RDIM_Root *root, struct RDIM_EvalBytecode *bytecode) { RDIM_Location *result = rdim_push_array(root->arena, RDIM_Location, 1); - result->kind = RADDBGI_LocationKind_AddrBytecodeStream; + result->kind = RDI_LocationKind_AddrBytecodeStream; result->bytecode = *bytecode; return result; } -RADDBGI_PROC RDIM_Location* +RDI_PROC RDIM_Location* rdim_location_val_bytecode_stream(RDIM_Root *root, struct RDIM_EvalBytecode *bytecode) { RDIM_Location *result = rdim_push_array(root->arena, RDIM_Location, 1); - result->kind = RADDBGI_LocationKind_ValBytecodeStream; + result->kind = RDI_LocationKind_ValBytecodeStream; result->bytecode = *bytecode; return result; } -RADDBGI_PROC RDIM_Location* -rdim_location_addr_reg_plus_u16(RDIM_Root *root, RADDBGI_U8 reg_code, RADDBGI_U16 offset) +RDI_PROC RDIM_Location* +rdim_location_addr_reg_plus_u16(RDIM_Root *root, RDI_U8 reg_code, RDI_U16 offset) { RDIM_Location *result = rdim_push_array(root->arena, RDIM_Location, 1); - result->kind = RADDBGI_LocationKind_AddrRegisterPlusU16; + result->kind = RDI_LocationKind_AddrRegisterPlusU16; result->register_code = reg_code; result->offset = offset; return result; } -RADDBGI_PROC RDIM_Location* -rdim_location_addr_addr_reg_plus_u16(RDIM_Root *root, RADDBGI_U8 reg_code, RADDBGI_U16 offset) +RDI_PROC RDIM_Location* +rdim_location_addr_addr_reg_plus_u16(RDIM_Root *root, RDI_U8 reg_code, RDI_U16 offset) { RDIM_Location *result = rdim_push_array(root->arena, RDIM_Location, 1); - result->kind = RADDBGI_LocationKind_AddrAddrRegisterPlusU16; + result->kind = RDI_LocationKind_AddrAddrRegisterPlusU16; result->register_code = reg_code; result->offset = offset; return result; } -RADDBGI_PROC RDIM_Location* -rdim_location_val_reg(RDIM_Root *root, RADDBGI_U8 reg_code) +RDI_PROC RDIM_Location* +rdim_location_val_reg(RDIM_Root *root, RDI_U8 reg_code) { RDIM_Location *result = rdim_push_array(root->arena, RDIM_Location, 1); - result->kind = RADDBGI_LocationKind_ValRegister; + result->kind = RDI_LocationKind_ValRegister; result->register_code = reg_code; return result; } //- rjf: name map building -RADDBGI_PROC RDIM_NameMap* -rdim_name_map_for_kind(RDIM_Root *root, RADDBGI_NameMapKind kind) +RDI_PROC RDIM_NameMap* +rdim_name_map_for_kind(RDIM_Root *root, RDI_NameMapKind kind) { RDIM_NameMap *result = 0; - if(kind < RADDBGI_NameMapKind_COUNT) + if(kind < RDI_NameMapKind_COUNT) { if(root->name_maps[kind] == 0) { @@ -1801,12 +1801,12 @@ rdim_name_map_for_kind(RDIM_Root *root, RADDBGI_NameMapKind kind) return result; } -RADDBGI_PROC void -rdim_name_map_add_pair(RDIM_Root *root, RDIM_NameMap *map, RDIM_String8 string, RADDBGI_U32 idx) +RDI_PROC void +rdim_name_map_add_pair(RDIM_Root *root, RDIM_NameMap *map, RDIM_String8 string, RDI_U32 idx) { // hash - RADDBGI_U64 hash = raddbgi_hash(string.str, string.size); - RADDBGI_U64 bucket_idx = hash%map->buckets_count; + RDI_U64 hash = rdi_hash(string.str, string.size); + RDI_U64 bucket_idx = hash%map->buckets_count; // find existing name node RDIM_NameMapNode *match = 0; @@ -1833,12 +1833,12 @@ rdim_name_map_add_pair(RDIM_Root *root, RDIM_NameMap *map, RDIM_String8 string, } // find existing idx - RADDBGI_S32 existing_idx = 0; + RDI_S32 existing_idx = 0; for(RDIM_NameMapIdxNode *node = match->idx_first; node != 0; node = node->next) { - for(RADDBGI_U32 i = 0; i < ArrayCount(node->idx); i += 1) + for(RDI_U32 i = 0; i < ArrayCount(node->idx); i += 1) { if(node->idx[i] == 0) { @@ -1856,7 +1856,7 @@ rdim_name_map_add_pair(RDIM_Root *root, RDIM_NameMap *map, RDIM_String8 string, if(!existing_idx) { RDIM_NameMapIdxNode *idx_node = match->idx_last; - RADDBGI_U32 insert_i = match->idx_count%ArrayCount(idx_node->idx); + RDI_U32 insert_i = match->idx_count%ArrayCount(idx_node->idx); if(insert_i == 0) { idx_node = rdim_push_array(root->arena, RDIM_NameMapIdxNode, 1); @@ -1873,7 +1873,7 @@ rdim_name_map_add_pair(RDIM_Root *root, RDIM_NameMap *map, RDIM_String8 string, //- rjf: bake context construction -RADDBGI_PROC RDIM_BakeCtx* +RDI_PROC RDIM_BakeCtx* rdim_bake_ctx_begin(RDIM_BakeParams *params) { RDIM_Arena *arena = rdim_arena_alloc(); @@ -1902,7 +1902,7 @@ rdim_bake_ctx_begin(RDIM_BakeParams *params) return result; } -RADDBGI_PROC void +RDI_PROC void rdim_bake_ctx_release(RDIM_BakeCtx *bake_ctx) { arena_release(bake_ctx->arena); @@ -1910,13 +1910,13 @@ rdim_bake_ctx_release(RDIM_BakeCtx *bake_ctx) //- rjf: string baking -RADDBGI_PROC RADDBGI_U32 +RDI_PROC RDI_U32 rdim_string(RDIM_BakeCtx *bctx, RDIM_String8 str) { RDIM_Arena *arena = bctx->arena; RDIM_Strings *strs = &bctx->strs; - RADDBGI_U64 hash = raddbgi_hash(str.str, str.size); - RADDBGI_U64 bucket_idx = hash%strs->buckets_count; + RDI_U64 hash = rdi_hash(str.str, str.size); + RDI_U64 bucket_idx = hash%strs->buckets_count; // look for a match RDIM_StringNode *match = 0; @@ -1947,18 +1947,18 @@ rdim_string(RDIM_BakeCtx *bctx, RDIM_String8 str) // extract idx to return rdim_assert(match != 0); - RADDBGI_U32 result = match->idx; + RDI_U32 result = match->idx; return result; } //- rjf: idx run baking -RADDBGI_PROC RADDBGI_U64 -rdim_idx_run_hash(RADDBGI_U32 *idx_run, RADDBGI_U32 count) +RDI_PROC RDI_U64 +rdim_idx_run_hash(RDI_U32 *idx_run, RDI_U32 count) { - RADDBGI_U64 hash = 5381; - RADDBGI_U32 *ptr = idx_run; - RADDBGI_U32 *opl = idx_run + count; + RDI_U64 hash = 5381; + RDI_U32 *ptr = idx_run; + RDI_U32 *opl = idx_run + count; for(;ptr < opl; ptr += 1) { hash = ((hash << 5) + hash) + (*ptr); @@ -1966,14 +1966,14 @@ rdim_idx_run_hash(RADDBGI_U32 *idx_run, RADDBGI_U32 count) return(hash); } -RADDBGI_PROC RADDBGI_U32 -rdim_idx_run(RDIM_BakeCtx *bctx, RADDBGI_U32 *idx_run, RADDBGI_U32 count) +RDI_PROC RDI_U32 +rdim_idx_run(RDIM_BakeCtx *bctx, RDI_U32 *idx_run, RDI_U32 count) { RDIM_Arena *arena = bctx->arena; RDIM_IdxRuns *idxs = &bctx->idxs; - RADDBGI_U64 hash = rdim_idx_run_hash(idx_run, count); - RADDBGI_U64 bucket_idx = hash%idxs->buckets_count; + RDI_U64 hash = rdim_idx_run_hash(idx_run, count); + RDI_U64 bucket_idx = hash%idxs->buckets_count; // look for a match RDIM_IdxRunNode *match = 0; @@ -1983,9 +1983,9 @@ rdim_idx_run(RDIM_BakeCtx *bctx, RADDBGI_U32 *idx_run, RADDBGI_U32 count) { if(node->hash == hash) { - RADDBGI_S32 is_match = 1; - RADDBGI_U32 *node_idx = node->idx_run; - for(RADDBGI_U32 i = 0; i < count; i += 1) + RDI_S32 is_match = 1; + RDI_U32 *node_idx = node->idx_run; + for(RDI_U32 i = 0; i < count; i += 1) { if(node_idx[i] != idx_run[i]) { @@ -2005,8 +2005,8 @@ rdim_idx_run(RDIM_BakeCtx *bctx, RADDBGI_U32 *idx_run, RADDBGI_U32 count) if(match == 0) { RDIM_IdxRunNode *node = rdim_push_array_no_zero(arena, RDIM_IdxRunNode, 1); - RADDBGI_U32 *idx_run_copy = rdim_push_array_no_zero(arena, RADDBGI_U32, count); - for(RADDBGI_U32 i = 0; i < count; i += 1) + RDI_U32 *idx_run_copy = rdim_push_array_no_zero(arena, RDI_U32, count); + for(RDI_U32 i = 0; i < count; i += 1) { idx_run_copy[i] = idx_run[i]; } @@ -2024,16 +2024,16 @@ rdim_idx_run(RDIM_BakeCtx *bctx, RADDBGI_U32 *idx_run, RADDBGI_U32 count) // extract idx to return rdim_assert(match != 0); - RADDBGI_U32 result = match->first_idx; + RDI_U32 result = match->first_idx; return result; } //- rjf: data section baking -RADDBGI_PROC RADDBGI_U32 -rdim_dsection(RDIM_Arena *arena, RDIM_DSections *dss, void *data, RADDBGI_U64 size, RADDBGI_DataSectionTag tag) +RDI_PROC RDI_U32 +rdim_dsection(RDIM_Arena *arena, RDIM_DSections *dss, void *data, RDI_U64 size, RDI_DataSectionTag tag) { - RADDBGI_U32 result = dss->count; + RDI_U32 result = dss->count; RDIM_DSectionNode *node = rdim_push_array(arena, RDIM_DSectionNode, 1); SLLQueuePush(dss->first, dss->last, node); node->data = data; @@ -2045,7 +2045,7 @@ rdim_dsection(RDIM_Arena *arena, RDIM_DSections *dss, void *data, RADDBGI_U64 si //- rjf: paths baking -RADDBGI_PROC RDIM_String8 +RDI_PROC RDIM_String8 rdim_normal_string_from_path_node(RDIM_Arena *arena, RDIM_PathNode *node) { RDIM_Temp scratch = rdim_scratch_begin(&arena, 1); @@ -2056,11 +2056,11 @@ rdim_normal_string_from_path_node(RDIM_Arena *arena, RDIM_PathNode *node) } RDIM_String8 result = rdim_str8_list_join(arena, &list, rdim_str8_lit("/")); { - RADDBGI_U8 *ptr = result.str; - RADDBGI_U8 *opl = result.str + result.size; + RDI_U8 *ptr = result.str; + RDI_U8 *opl = result.str + result.size; for(; ptr < opl; ptr += 1) { - RADDBGI_U8 c = *ptr; + RDI_U8 c = *ptr; if('A' <= c && c <= 'Z') { c += 'a' - 'A'; } *ptr = c; } @@ -2069,7 +2069,7 @@ rdim_normal_string_from_path_node(RDIM_Arena *arena, RDIM_PathNode *node) return result; } -RADDBGI_PROC void +RDI_PROC void rdim_normal_string_from_path_node_build(RDIM_Arena *arena, RDIM_PathNode *node, RDIM_String8List *out) { // TODO(rjf): why is this recursive... @@ -2083,7 +2083,7 @@ rdim_normal_string_from_path_node_build(RDIM_Arena *arena, RDIM_PathNode *node, } } -RADDBGI_PROC RDIM_PathNode* +RDI_PROC RDIM_PathNode* rdim_paths_new_node(RDIM_BakeCtx *bctx) { RDIM_PathTree *tree = bctx->tree; @@ -2094,7 +2094,7 @@ rdim_paths_new_node(RDIM_BakeCtx *bctx) return result; } -RADDBGI_PROC RDIM_PathNode* +RDI_PROC RDIM_PathNode* rdim_paths_sub_path(RDIM_BakeCtx *bctx, RDIM_PathNode *dir, RDIM_String8 sub_dir) { // look for existing match @@ -2128,26 +2128,26 @@ rdim_paths_sub_path(RDIM_BakeCtx *bctx, RDIM_PathNode *dir, RDIM_String8 sub_dir return result; } -RADDBGI_PROC RDIM_PathNode* +RDI_PROC RDIM_PathNode* rdim_paths_node_from_path(RDIM_BakeCtx *bctx, RDIM_String8 path) { RDIM_PathNode *node_cursor = &bctx->tree->root; - RADDBGI_U8 *ptr = path.str; - RADDBGI_U8 *opl = path.str + path.size; + RDI_U8 *ptr = path.str; + RDI_U8 *opl = path.str + path.size; for(;ptr < opl;){ // skip past slashes for(;ptr < opl && (*ptr == '/' || *ptr == '\\'); ptr += 1); // save beginning of non-slash range - RADDBGI_U8 *range_first = ptr; + RDI_U8 *range_first = ptr; // skip past non-slashes for(;ptr < opl && !(*ptr == '/' || *ptr == '\\'); ptr += 1); // if range is non-empty advance the node cursor if(range_first < ptr){ - RDIM_String8 sub_dir = rdim_str8(range_first, (RADDBGI_U64)(ptr-range_first)); + RDIM_String8 sub_dir = rdim_str8(range_first, (RDI_U64)(ptr-range_first)); node_cursor = rdim_paths_sub_path(bctx, node_cursor, sub_dir); } } @@ -2156,15 +2156,15 @@ rdim_paths_node_from_path(RDIM_BakeCtx *bctx, RDIM_String8 path) return result; } -RADDBGI_PROC RADDBGI_U32 +RDI_PROC RDI_U32 rdim_paths_idx_from_path(RDIM_BakeCtx *bctx, RDIM_String8 path) { RDIM_PathNode *node = rdim_paths_node_from_path(bctx, path); - RADDBGI_U32 result = node->idx; + RDI_U32 result = node->idx; return result; } -RADDBGI_PROC RDIM_SrcNode* +RDI_PROC RDIM_SrcNode* rdim_paths_new_src_node(RDIM_BakeCtx *bctx) { RDIM_PathTree *tree = bctx->tree; @@ -2175,7 +2175,7 @@ rdim_paths_new_src_node(RDIM_BakeCtx *bctx) return result; } -RADDBGI_PROC RDIM_SrcNode* +RDI_PROC RDIM_SrcNode* rdim_paths_src_node_from_path_node(RDIM_BakeCtx *bctx, RDIM_PathNode *path_node) { RDIM_SrcNode *result = path_node->src_file; @@ -2191,7 +2191,7 @@ rdim_paths_src_node_from_path_node(RDIM_BakeCtx *bctx, RDIM_PathNode *path_node) //- rjf: per-unit line info baking -RADDBGI_PROC RDIM_UnitLinesCombined* +RDI_PROC RDIM_UnitLinesCombined* rdim_unit_combine_lines(RDIM_Arena *arena, RDIM_BakeCtx *bctx, RDIM_LineSequenceNode *first_seq) { RDIM_Temp scratch = rdim_scratch_begin(&arena, 1); @@ -2199,8 +2199,8 @@ rdim_unit_combine_lines(RDIM_Arena *arena, RDIM_BakeCtx *bctx, RDIM_LineSequence // gather up all line info into two arrays // keys: sortable array; pairs voffs with line info records; null records are sequence enders // recs: contains all the source coordinates for a range of voffs - RADDBGI_U64 line_count = 0; - RADDBGI_U64 seq_count = 0; + RDI_U64 line_count = 0; + RDI_U64 seq_count = 0; for(RDIM_LineSequenceNode *node = first_seq; node != 0; node = node->next) @@ -2209,7 +2209,7 @@ rdim_unit_combine_lines(RDIM_Arena *arena, RDIM_BakeCtx *bctx, RDIM_LineSequence line_count += node->line_seq.line_count; } - RADDBGI_U64 key_count = line_count + seq_count; + RDI_U64 key_count = line_count + seq_count; RDIM_SortKey *line_keys = rdim_push_array_no_zero(scratch.arena, RDIM_SortKey, key_count); RDIM_LineRec *line_recs = rdim_push_array_no_zero(scratch.arena, RDIM_LineRec, line_count); @@ -2224,10 +2224,10 @@ rdim_unit_combine_lines(RDIM_Arena *arena, RDIM_BakeCtx *bctx, RDIM_LineSequence RDIM_PathNode *src_path = rdim_paths_node_from_path(bctx, node->line_seq.file_name); RDIM_SrcNode *src_file = rdim_paths_src_node_from_path_node(bctx, src_path); - RADDBGI_U32 file_id = src_file->idx; + RDI_U32 file_id = src_file->idx; - RADDBGI_U64 node_line_count = node->line_seq.line_count; - for(RADDBGI_U64 i = 0; i < node_line_count; i += 1){ + RDI_U64 node_line_count = node->line_seq.line_count; + for(RDI_U64 i = 0; i < node_line_count; i += 1){ key_ptr->key = node->line_seq.voffs[i]; key_ptr->val = rec_ptr; key_ptr += 1; @@ -2258,14 +2258,14 @@ rdim_unit_combine_lines(RDIM_Arena *arena, RDIM_BakeCtx *bctx, RDIM_LineSequence // null record first, and no more than one null record and one non-null record // arrange output - RADDBGI_U64 *arranged_voffs = rdim_push_array_no_zero(arena, RADDBGI_U64, key_count + 1); - RADDBGI_Line *arranged_lines = rdim_push_array_no_zero(arena, RADDBGI_Line, key_count); + RDI_U64 *arranged_voffs = rdim_push_array_no_zero(arena, RDI_U64, key_count + 1); + RDI_Line *arranged_lines = rdim_push_array_no_zero(arena, RDI_Line, key_count); - for(RADDBGI_U64 i = 0; i < key_count; i += 1){ + for(RDI_U64 i = 0; i < key_count; i += 1){ arranged_voffs[i] = sorted_line_keys[i].key; } arranged_voffs[key_count] = ~0ull; - for(RADDBGI_U64 i = 0; i < key_count; i += 1){ + for(RDI_U64 i = 0; i < key_count; i += 1){ RDIM_LineRec *rec = (RDIM_LineRec*)sorted_line_keys[i].val; if(rec != 0){ arranged_lines[i].file_idx = rec->file_id; @@ -2289,7 +2289,7 @@ rdim_unit_combine_lines(RDIM_Arena *arena, RDIM_BakeCtx *bctx, RDIM_LineSequence //- rjf: per-src line info baking -RADDBGI_PROC RDIM_SrcLinesCombined* +RDI_PROC RDIM_SrcLinesCombined* rdim_source_combine_lines(RDIM_Arena *arena, RDIM_LineMapFragment *first) { RDIM_Temp scratch = rdim_scratch_begin(&arena, 1); @@ -2297,11 +2297,11 @@ rdim_source_combine_lines(RDIM_Arena *arena, RDIM_LineMapFragment *first) // gather line number map RDIM_SrcLineMapBucket *first_bucket = 0; RDIM_SrcLineMapBucket *last_bucket = 0; - RADDBGI_U64 line_hash_slots_count = 1024; + RDI_U64 line_hash_slots_count = 1024; RDIM_SrcLineMapBucket **line_hash_slots = rdim_push_array(scratch.arena, RDIM_SrcLineMapBucket *, line_hash_slots_count); - RADDBGI_U64 line_count = 0; - RADDBGI_U64 voff_count = 0; - RADDBGI_U64 max_line_num = 0; + RDI_U64 line_count = 0; + RDI_U64 voff_count = 0; + RDI_U64 max_line_num = 0; { for(RDIM_LineMapFragment *map_fragment = first; map_fragment != 0; @@ -2309,13 +2309,13 @@ rdim_source_combine_lines(RDIM_Arena *arena, RDIM_LineMapFragment *first) { RDIM_LineSequence *sequence = &map_fragment->sequence->line_seq; - RADDBGI_U64 *seq_voffs = sequence->voffs; - RADDBGI_U32 *seq_line_nums = sequence->line_nums; - RADDBGI_U64 seq_line_count = sequence->line_count; - for(RADDBGI_U64 i = 0; i < seq_line_count; i += 1){ - RADDBGI_U32 line_num = seq_line_nums[i]; - RADDBGI_U64 voff = seq_voffs[i]; - RADDBGI_U64 line_hash_slot_idx = line_num%line_hash_slots_count; + RDI_U64 *seq_voffs = sequence->voffs; + RDI_U32 *seq_line_nums = sequence->line_nums; + RDI_U64 seq_line_count = sequence->line_count; + for(RDI_U64 i = 0; i < seq_line_count; i += 1){ + RDI_U32 line_num = seq_line_nums[i]; + RDI_U64 voff = seq_voffs[i]; + RDI_U64 line_hash_slot_idx = line_num%line_hash_slots_count; // update unique voff counter & max line number voff_count += 1; @@ -2370,14 +2370,14 @@ rdim_source_combine_lines(RDIM_Arena *arena, RDIM_LineMapFragment *first) RDIM_SortKey *sorted_keys = rdim_sort_key_array(scratch.arena, keys, line_count); // bake result - RADDBGI_U32 *line_nums = rdim_push_array_no_zero(arena, RADDBGI_U32, line_count); - RADDBGI_U32 *line_ranges = rdim_push_array_no_zero(arena, RADDBGI_U32, line_count + 1); - RADDBGI_U64 *voffs = rdim_push_array_no_zero(arena, RADDBGI_U64, voff_count); + RDI_U32 *line_nums = rdim_push_array_no_zero(arena, RDI_U32, line_count); + RDI_U32 *line_ranges = rdim_push_array_no_zero(arena, RDI_U32, line_count + 1); + RDI_U64 *voffs = rdim_push_array_no_zero(arena, RDI_U64, voff_count); { - RADDBGI_U64 *voff_ptr = voffs; - for(RADDBGI_U32 i = 0; i < line_count; i += 1){ + RDI_U64 *voff_ptr = voffs; + for(RDI_U32 i = 0; i < line_count; i += 1){ line_nums[i] = sorted_keys[i].key; - line_ranges[i] = (RADDBGI_U32)(voff_ptr - voffs); + line_ranges[i] = (RDI_U32)(voff_ptr - voffs); RDIM_SrcLineMapBucket *bucket = (RDIM_SrcLineMapBucket*)sorted_keys[i].val; for(RDIM_SrcLineMapVoffBlock *node = bucket->first_voff_block; node != 0; @@ -2401,8 +2401,8 @@ rdim_source_combine_lines(RDIM_Arena *arena, RDIM_LineMapFragment *first) } //- rjf: vmap baking -RADDBGI_PROC RDIM_VMap* -rdim_vmap_from_markers(RDIM_Arena *arena, RDIM_VMapMarker *markers, RDIM_SortKey *keys, RADDBGI_U64 marker_count) +RDI_PROC RDIM_VMap* +rdim_vmap_from_markers(RDIM_Arena *arena, RDIM_VMapMarker *markers, RDIM_SortKey *keys, RDI_U64 marker_count) { RDIM_Temp scratch = rdim_scratch_begin(&arena, 1); @@ -2410,18 +2410,18 @@ rdim_vmap_from_markers(RDIM_Arena *arena, RDIM_VMapMarker *markers, RDIM_SortKey RDIM_SortKey *sorted_keys = rdim_sort_key_array(scratch.arena, keys, marker_count); // determine if an extra vmap entry for zero is needed - RADDBGI_U32 extra_vmap_entry = 0; + RDI_U32 extra_vmap_entry = 0; if(marker_count > 0 && sorted_keys[0].key != 0){ extra_vmap_entry = 1; } // fill output vmap entries - RADDBGI_U32 vmap_count_raw = marker_count - 1 + extra_vmap_entry; - RADDBGI_VMapEntry *vmap = rdim_push_array_no_zero(arena, RADDBGI_VMapEntry, vmap_count_raw + 1); - RADDBGI_U32 vmap_entry_count_pass_1 = 0; + RDI_U32 vmap_count_raw = marker_count - 1 + extra_vmap_entry; + RDI_VMapEntry *vmap = rdim_push_array_no_zero(arena, RDI_VMapEntry, vmap_count_raw + 1); + RDI_U32 vmap_entry_count_pass_1 = 0; { - RADDBGI_VMapEntry *vmap_ptr = vmap; + RDI_VMapEntry *vmap_ptr = vmap; if(extra_vmap_entry){ vmap_ptr->voff = 0; @@ -2436,18 +2436,18 @@ rdim_vmap_from_markers(RDIM_Arena *arena, RDIM_VMapMarker *markers, RDIM_SortKey RDIM_SortKey *key_opl = sorted_keys + marker_count; for(;key_ptr < key_opl;){ // get initial map state from tracker stack - RADDBGI_U32 initial_idx = (RADDBGI_U32)0xffffffff; + RDI_U32 initial_idx = (RDI_U32)0xffffffff; if(tracker_stack != 0){ initial_idx = tracker_stack->idx; } // update tracker stack // * we must process _all_ of the changes that apply at this voff before moving on - RADDBGI_U64 voff = key_ptr->key; + RDI_U64 voff = key_ptr->key; for(;key_ptr < key_opl && key_ptr->key == voff; key_ptr += 1){ RDIM_VMapMarker *marker = (RDIM_VMapMarker*)key_ptr->val; - RADDBGI_U32 idx = marker->idx; + RDI_U32 idx = marker->idx; // push to stack if(marker->begin_range){ @@ -2483,7 +2483,7 @@ rdim_vmap_from_markers(RDIM_Arena *arena, RDIM_VMapMarker *markers, RDIM_SortKey } // get final map state from tracker stack - RADDBGI_U32 final_idx = 0; + RDI_U32 final_idx = 0; if(tracker_stack != 0){ final_idx = tracker_stack->idx; } @@ -2496,7 +2496,7 @@ rdim_vmap_from_markers(RDIM_Arena *arena, RDIM_VMapMarker *markers, RDIM_SortKey } } - vmap_entry_count_pass_1 = (RADDBGI_U32)(vmap_ptr - vmap); + vmap_entry_count_pass_1 = (RDI_U32)(vmap_ptr - vmap); } // replace zero unit indexes that follow a non-zero @@ -2504,12 +2504,12 @@ rdim_vmap_from_markers(RDIM_Arena *arena, RDIM_VMapMarker *markers, RDIM_SortKey if(0) { // (the last entry is not replaced because it acts as a terminator) - RADDBGI_U32 last = vmap_entry_count_pass_1 - 1; + RDI_U32 last = vmap_entry_count_pass_1 - 1; - RADDBGI_VMapEntry *vmap_ptr = vmap; - RADDBGI_U64 real_idx = 0; + RDI_VMapEntry *vmap_ptr = vmap; + RDI_U64 real_idx = 0; - for(RADDBGI_U32 i = 0; i < last; i += 1, vmap_ptr += 1){ + for(RDI_U32 i = 0; i < last; i += 1, vmap_ptr += 1){ // is this a zero after a real index? if(vmap_ptr->idx == 0){ vmap_ptr->idx = real_idx; @@ -2523,22 +2523,22 @@ rdim_vmap_from_markers(RDIM_Arena *arena, RDIM_VMapMarker *markers, RDIM_SortKey } // combine duplicate neighbors - RADDBGI_U32 vmap_entry_count = 0; + RDI_U32 vmap_entry_count = 0; { - RADDBGI_VMapEntry *vmap_ptr = vmap; - RADDBGI_VMapEntry *vmap_opl = vmap + vmap_entry_count_pass_1; - RADDBGI_VMapEntry *vmap_out = vmap; + RDI_VMapEntry *vmap_ptr = vmap; + RDI_VMapEntry *vmap_opl = vmap + vmap_entry_count_pass_1; + RDI_VMapEntry *vmap_out = vmap; for(;vmap_ptr < vmap_opl;){ - RADDBGI_VMapEntry *vmap_range_first = vmap_ptr; - RADDBGI_U64 idx = vmap_ptr->idx; + RDI_VMapEntry *vmap_range_first = vmap_ptr; + RDI_U64 idx = vmap_ptr->idx; vmap_ptr += 1; for(;vmap_ptr < vmap_opl && vmap_ptr->idx == idx;) vmap_ptr += 1; rdim_memcpy_struct(vmap_out, vmap_range_first); vmap_out += 1; } - vmap_entry_count = (RADDBGI_U32)(vmap_out - vmap); + vmap_entry_count = (RDI_U32)(vmap_out - vmap); } // fill result @@ -2551,13 +2551,13 @@ rdim_vmap_from_markers(RDIM_Arena *arena, RDIM_VMapMarker *markers, RDIM_SortKey return result; } -RADDBGI_PROC RDIM_VMap* -rdim_vmap_from_unit_ranges(RDIM_Arena *arena, RDIM_UnitVMapRange *first, RADDBGI_U64 count) +RDI_PROC RDIM_VMap* +rdim_vmap_from_unit_ranges(RDIM_Arena *arena, RDIM_UnitVMapRange *first, RDI_U64 count) { RDIM_Temp scratch = rdim_scratch_begin(&arena, 1); // count necessary markers - RADDBGI_U64 marker_count = count*2; + RDI_U64 marker_count = count*2; // fill markers RDIM_SortKey *keys = rdim_push_array_no_zero(scratch.arena, RDIM_SortKey, marker_count); @@ -2570,7 +2570,7 @@ rdim_vmap_from_unit_ranges(RDIM_Arena *arena, RDIM_UnitVMapRange *first, RADDBGI range != 0; range = range->next){ if(range->first < range->opl){ - RADDBGI_U32 unit_idx = range->unit->idx; + RDI_U32 unit_idx = range->unit->idx; key_ptr->key = range->first; key_ptr->val = marker_ptr; @@ -2597,33 +2597,33 @@ rdim_vmap_from_unit_ranges(RDIM_Arena *arena, RDIM_UnitVMapRange *first, RADDBGI //- rjf: type info baking -RADDBGI_PROC RADDBGI_U32* -rdim_idx_run_from_types(RDIM_Arena *arena, RDIM_Type **types, RADDBGI_U32 count) +RDI_PROC RDI_U32* +rdim_idx_run_from_types(RDIM_Arena *arena, RDIM_Type **types, RDI_U32 count) { - RADDBGI_U32 *result = rdim_push_array(arena, RADDBGI_U32, count); - for(RADDBGI_U32 i = 0; i < count; i += 1){ + RDI_U32 *result = rdim_push_array(arena, RDI_U32, count); + for(RDI_U32 i = 0; i < count; i += 1){ result[i] = types[i]->idx; } return result; } -RADDBGI_PROC RDIM_TypeData* +RDI_PROC RDIM_TypeData* rdim_type_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) { RDIM_Temp scratch = rdim_scratch_begin(&arena, 1); // fill type nodes - RADDBGI_U32 type_count = root->type_count; - RADDBGI_TypeNode *type_nodes = rdim_push_array_no_zero(arena, RADDBGI_TypeNode, type_count); + RDI_U32 type_count = root->type_count; + RDI_TypeNode *type_nodes = rdim_push_array_no_zero(arena, RDI_TypeNode, type_count); { - RADDBGI_TypeNode *ptr = type_nodes; - RADDBGI_TypeNode *opl = ptr + type_count; + RDI_TypeNode *ptr = type_nodes; + RDI_TypeNode *opl = ptr + type_count; RDIM_Type *loose_type = root->first_type; for(;loose_type != 0 && ptr < opl; loose_type = loose_type->next_order, ptr += 1){ - RADDBGI_TypeKind kind = loose_type->kind; + RDI_TypeKind kind = loose_type->kind; // shared ptr->kind = kind; @@ -2631,34 +2631,34 @@ rdim_type_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) ptr->byte_size = loose_type->byte_size; // built-in - if(RADDBGI_TypeKind_FirstBuiltIn <= kind && kind <= RADDBGI_TypeKind_LastBuiltIn){ + if(RDI_TypeKind_FirstBuiltIn <= kind && kind <= RDI_TypeKind_LastBuiltIn){ ptr->built_in.name_string_idx = rdim_string(bctx, loose_type->name); } // constructed - else if(RADDBGI_TypeKind_FirstConstructed <= kind && kind <= RADDBGI_TypeKind_LastConstructed){ + else if(RDI_TypeKind_FirstConstructed <= kind && kind <= RDI_TypeKind_LastConstructed){ ptr->constructed.direct_type_idx = loose_type->direct_type->idx; switch (kind){ - case RADDBGI_TypeKind_Array: + case RDI_TypeKind_Array: { ptr->constructed.count = loose_type->count; }break; - case RADDBGI_TypeKind_Function: + case RDI_TypeKind_Function: { // parameters - RADDBGI_U32 count = loose_type->count; - RADDBGI_U32 *idx_run = rdim_idx_run_from_types(scratch.arena, loose_type->param_types, count); + RDI_U32 count = loose_type->count; + RDI_U32 *idx_run = rdim_idx_run_from_types(scratch.arena, loose_type->param_types, count); ptr->constructed.param_idx_run_first = rdim_idx_run(bctx, idx_run, count); ptr->constructed.count = count; }break; - case RADDBGI_TypeKind_Method: + case RDI_TypeKind_Method: { // parameters - RADDBGI_U32 count = loose_type->count; - RADDBGI_U32 *idx_run = rdim_idx_run_from_types(scratch.arena, loose_type->param_types, count); + RDI_U32 count = loose_type->count; + RDI_U32 *idx_run = rdim_idx_run_from_types(scratch.arena, loose_type->param_types, count); ptr->constructed.param_idx_run_first = rdim_idx_run(bctx, idx_run, count); ptr->constructed.count = count; }break; @@ -2666,7 +2666,7 @@ rdim_type_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) } // user-defined - else if(RADDBGI_TypeKind_FirstUserDefined <= kind && kind <= RADDBGI_TypeKind_LastUserDefined){ + else if(RDI_TypeKind_FirstUserDefined <= kind && kind <= RDI_TypeKind_LastUserDefined){ ptr->user_defined.name_string_idx = rdim_string(bctx, loose_type->name); if(loose_type->udt != 0){ ptr->user_defined.udt_idx = loose_type->udt->idx; @@ -2677,7 +2677,7 @@ rdim_type_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) } // bitfield - else if(kind == RADDBGI_TypeKind_Bitfield){ + else if(kind == RDI_TypeKind_Bitfield){ ptr->bitfield.off = loose_type->off; ptr->bitfield.size = loose_type->count; } @@ -2692,24 +2692,24 @@ rdim_type_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) // fill udts - RADDBGI_U32 udt_count = root->type_udt_count; - RADDBGI_UDT *udts = rdim_push_array_no_zero(arena, RADDBGI_UDT, udt_count); + RDI_U32 udt_count = root->type_udt_count; + RDI_UDT *udts = rdim_push_array_no_zero(arena, RDI_UDT, udt_count); - RADDBGI_U32 member_count = root->total_member_count; - RADDBGI_Member *members = rdim_push_array_no_zero(arena, RADDBGI_Member, member_count); + RDI_U32 member_count = root->total_member_count; + RDI_Member *members = rdim_push_array_no_zero(arena, RDI_Member, member_count); - RADDBGI_U32 enum_member_count = root->total_enum_val_count; - RADDBGI_EnumMember *enum_members = rdim_push_array_no_zero(arena, RADDBGI_EnumMember, enum_member_count); + RDI_U32 enum_member_count = root->total_enum_val_count; + RDI_EnumMember *enum_members = rdim_push_array_no_zero(arena, RDI_EnumMember, enum_member_count); { - RADDBGI_UDT *ptr = udts; - RADDBGI_UDT *opl = ptr + udt_count; + RDI_UDT *ptr = udts; + RDI_UDT *opl = ptr + udt_count; - RADDBGI_Member *member_ptr = members; - RADDBGI_Member *member_opl = members + member_count; + RDI_Member *member_ptr = members; + RDI_Member *member_opl = members + member_count; - RADDBGI_EnumMember *enum_member_ptr = enum_members; - RADDBGI_EnumMember *enum_member_opl = enum_members + enum_member_count; + RDI_EnumMember *enum_member_ptr = enum_members; + RDI_EnumMember *enum_member_opl = enum_members + enum_member_count; RDIM_TypeUDT *loose_udt = root->first_udt; for(;loose_udt != 0 && ptr < opl; @@ -2721,14 +2721,14 @@ rdim_type_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) // enum members if(loose_udt->enum_val_count != 0){ - ptr->flags |= RADDBGI_UserDefinedTypeFlag_EnumMembers; + ptr->flags |= RDI_UserDefinedTypeFlag_EnumMembers; - ptr->member_first = (RADDBGI_U32)(enum_member_ptr - enum_members); + ptr->member_first = (RDI_U32)(enum_member_ptr - enum_members); ptr->member_count = loose_udt->enum_val_count; - RADDBGI_U32 local_enum_val_count = loose_udt->enum_val_count; + RDI_U32 local_enum_val_count = loose_udt->enum_val_count; RDIM_TypeEnumVal *loose_enum_val = loose_udt->first_enum_val; - for(RADDBGI_U32 i = 0; + for(RDI_U32 i = 0; i < local_enum_val_count; i += 1, enum_member_ptr += 1, loose_enum_val = loose_enum_val->next){ enum_member_ptr->name_string_idx = rdim_string(bctx, loose_enum_val->name); @@ -2738,12 +2738,12 @@ rdim_type_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) // struct/class/union members else{ - ptr->member_first = (RADDBGI_U32)(member_ptr - members); + ptr->member_first = (RDI_U32)(member_ptr - members); ptr->member_count = loose_udt->member_count; - RADDBGI_U32 local_member_count = loose_udt->member_count; + RDI_U32 local_member_count = loose_udt->member_count; RDIM_TypeMember *loose_member = loose_udt->first_member; - for(RADDBGI_U32 i = 0; + for(RDI_U32 i = 0; i < local_member_count; i += 1, member_ptr += 1, loose_member = loose_member->next){ member_ptr->kind = loose_member->kind; @@ -2753,7 +2753,7 @@ rdim_type_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) member_ptr->type_idx = loose_member->type->idx; // TODO(allen): - if(loose_member->kind == RADDBGI_MemberKind_Method){ + if(loose_member->kind == RDI_MemberKind_Method){ //loose_member_ptr->unit_idx = ; //loose_member_ptr->proc_symbol_idx = ; } @@ -2761,7 +2761,7 @@ rdim_type_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) } - RADDBGI_U32 file_idx = 0; + RDI_U32 file_idx = 0; if(loose_udt->source_path.size > 0){ RDIM_PathNode *path_node = rdim_paths_node_from_path(bctx, loose_udt->source_path); RDIM_SrcNode *src_node = rdim_paths_src_node_from_path_node(bctx, path_node); @@ -2798,30 +2798,30 @@ rdim_type_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) //- rjf: symbol data baking -RADDBGI_PROC RDIM_SymbolData* +RDI_PROC RDIM_SymbolData* rdim_symbol_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) { RDIM_Temp scratch = rdim_scratch_begin(&arena, 1); // count symbol kinds - RADDBGI_U32 globalvar_count = 1 + root->symbol_kind_counts[RDIM_SymbolKind_GlobalVariable]; - RADDBGI_U32 threadvar_count = 1 + root->symbol_kind_counts[RDIM_SymbolKind_ThreadVariable]; - RADDBGI_U32 procedure_count = 1 + root->symbol_kind_counts[RDIM_SymbolKind_Procedure]; + RDI_U32 globalvar_count = 1 + root->symbol_kind_counts[RDIM_SymbolKind_GlobalVariable]; + RDI_U32 threadvar_count = 1 + root->symbol_kind_counts[RDIM_SymbolKind_ThreadVariable]; + RDI_U32 procedure_count = 1 + root->symbol_kind_counts[RDIM_SymbolKind_Procedure]; // allocate symbol arrays - RADDBGI_GlobalVariable *global_variables = - rdim_push_array(arena, RADDBGI_GlobalVariable, globalvar_count); + RDI_GlobalVariable *global_variables = + rdim_push_array(arena, RDI_GlobalVariable, globalvar_count); - RADDBGI_ThreadVariable *thread_variables = - rdim_push_array(arena, RADDBGI_ThreadVariable, threadvar_count); + RDI_ThreadVariable *thread_variables = + rdim_push_array(arena, RDI_ThreadVariable, threadvar_count); - RADDBGI_Procedure *procedures = rdim_push_array(arena, RADDBGI_Procedure, procedure_count); + RDI_Procedure *procedures = rdim_push_array(arena, RDI_Procedure, procedure_count); // fill symbol arrays { - RADDBGI_GlobalVariable *global_ptr = global_variables; - RADDBGI_ThreadVariable *thread_local_ptr = thread_variables; - RADDBGI_Procedure *procedure_ptr = procedures; + RDI_GlobalVariable *global_ptr = global_variables; + RDI_ThreadVariable *thread_local_ptr = thread_variables; + RDI_Procedure *procedure_ptr = procedures; // nils global_ptr += 1; @@ -2832,23 +2832,23 @@ rdim_symbol_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) for(RDIM_Symbol *node = root->first_symbol; node != 0; node = node->next_order){ - RADDBGI_U32 name_string_idx = rdim_string(bctx, node->name); - RADDBGI_U32 link_name_string_idx = rdim_string(bctx, node->link_name); - RADDBGI_U32 type_idx = node->type->idx; + RDI_U32 name_string_idx = rdim_string(bctx, node->name); + RDI_U32 link_name_string_idx = rdim_string(bctx, node->link_name); + RDI_U32 type_idx = node->type->idx; - RADDBGI_LinkFlags link_flags = 0; - RADDBGI_U32 container_idx = 0; + RDI_LinkFlags link_flags = 0; + RDI_U32 container_idx = 0; { if(node->is_extern){ - link_flags |= RADDBGI_LinkFlag_External; + link_flags |= RDI_LinkFlag_External; } if(node->container_symbol != 0){ container_idx = node->container_symbol->idx; - link_flags |= RADDBGI_LinkFlag_ProcScoped; + link_flags |= RDI_LinkFlag_ProcScoped; } else if(node->container_type != 0 && node->container_type->udt != 0){ container_idx = node->container_type->udt->idx; - link_flags |= RADDBGI_LinkFlag_TypeScoped; + link_flags |= RDI_LinkFlag_TypeScoped; } } @@ -2869,7 +2869,7 @@ rdim_symbol_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) { thread_local_ptr->name_string_idx = name_string_idx; thread_local_ptr->link_flags = link_flags; - thread_local_ptr->tls_off = (RADDBGI_U32)node->offset; + thread_local_ptr->tls_off = (RDI_U32)node->offset; thread_local_ptr->type_idx = type_idx; thread_local_ptr->container_idx = container_idx; thread_local_ptr += 1; @@ -2897,7 +2897,7 @@ rdim_symbol_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) RDIM_VMap *global_vmap = 0; { // count necessary markers - RADDBGI_U32 marker_count = globalvar_count*2; + RDI_U32 marker_count = globalvar_count*2; // fill markers RDIM_SortKey *keys = rdim_push_array_no_zero(scratch.arena, RDIM_SortKey, marker_count); @@ -2911,10 +2911,10 @@ rdim_symbol_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) node != 0; node = node->next_order){ if(node->kind == RDIM_SymbolKind_GlobalVariable){ - RADDBGI_U32 global_idx = node->idx; + RDI_U32 global_idx = node->idx; - RADDBGI_U64 first = node->offset; - RADDBGI_U64 opl = first + node->type->byte_size; + RDI_U64 first = node->offset; + RDI_U64 opl = first + node->type->byte_size; key_ptr->key = first; key_ptr->val = marker_ptr; @@ -2934,10 +2934,10 @@ rdim_symbol_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) // nil global { - RADDBGI_U32 global_idx = 0; + RDI_U32 global_idx = 0; - RADDBGI_U64 first = 0; - RADDBGI_U64 opl = (RADDBGI_U64)0xffffffffffffffffull; + RDI_U64 first = 0; + RDI_U64 opl = (RDI_U64)0xffffffffffffffffull; key_ptr->key = first; key_ptr->val = marker_ptr; @@ -2971,35 +2971,35 @@ rdim_symbol_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) root->first_scope->next_sibling == 0 && root->first_scope->range_count == 0); - RADDBGI_U32 scope_count = root->scope_count; - RADDBGI_Scope *scopes = rdim_push_array(arena, RADDBGI_Scope, scope_count); + RDI_U32 scope_count = root->scope_count; + RDI_Scope *scopes = rdim_push_array(arena, RDI_Scope, scope_count); - RADDBGI_U32 scope_voff_count = root->scope_voff_count; - RADDBGI_U64 *scope_voffs = rdim_push_array(arena, RADDBGI_U64, scope_voff_count); + RDI_U32 scope_voff_count = root->scope_voff_count; + RDI_U64 *scope_voffs = rdim_push_array(arena, RDI_U64, scope_voff_count); - RADDBGI_U32 local_count = root->local_count; - RADDBGI_Local *locals = rdim_push_array(arena, RADDBGI_Local, local_count); + RDI_U32 local_count = root->local_count; + RDI_Local *locals = rdim_push_array(arena, RDI_Local, local_count); - RADDBGI_U32 location_block_count = root->location_count; - RADDBGI_LocationBlock *location_blocks = - rdim_push_array(arena, RADDBGI_LocationBlock, location_block_count); + RDI_U32 location_block_count = root->location_count; + RDI_LocationBlock *location_blocks = + rdim_push_array(arena, RDI_LocationBlock, location_block_count); RDIM_String8List location_data = {0}; // iterate scopes, locals, and locations // fill scope voffs, locals, and location information { - RADDBGI_Scope *scope_ptr = scopes; - RADDBGI_U64 *scope_voff_ptr = scope_voffs; - RADDBGI_Local *local_ptr = locals; - RADDBGI_LocationBlock *location_block_ptr = location_blocks; + RDI_Scope *scope_ptr = scopes; + RDI_U64 *scope_voff_ptr = scope_voffs; + RDI_Local *local_ptr = locals; + RDI_LocationBlock *location_block_ptr = location_blocks; for(RDIM_Scope *node = root->first_scope; node != 0; node = node->next_order, scope_ptr += 1){ // emit voffs - RADDBGI_U32 voff_first = (RADDBGI_U32)(scope_voff_ptr - scope_voffs); + RDI_U32 voff_first = (RDI_U32)(scope_voff_ptr - scope_voffs); for(RDIM_VOffRange *range = node->first_range; range != 0; range = range->next){ @@ -3008,11 +3008,11 @@ rdim_symbol_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) *scope_voff_ptr = range->voff_opl; scope_voff_ptr += 1; } - RADDBGI_U32 voff_opl = (RADDBGI_U32)(scope_voff_ptr - scope_voffs); + RDI_U32 voff_opl = (RDI_U32)(scope_voff_ptr - scope_voffs); // emit locals - RADDBGI_U32 scope_local_count = node->local_count; - RADDBGI_U32 scope_local_first = (RADDBGI_U32)(local_ptr - locals); + RDI_U32 scope_local_count = node->local_count; + RDI_U32 scope_local_first = (RDI_U32)(local_ptr - locals); for(RDIM_Local *slocal = node->first_local; slocal != 0; slocal = slocal->next, local_ptr += 1){ @@ -3022,8 +3022,8 @@ rdim_symbol_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) RDIM_LocationSet *locset = slocal->locset; if(locset != 0){ - RADDBGI_U32 location_first = (RADDBGI_U32)(location_block_ptr - location_blocks); - RADDBGI_U32 location_opl = location_first + locset->location_case_count; + RDI_U32 location_first = (RDI_U32)(location_block_ptr - location_blocks); + RDI_U32 location_opl = location_first + locset->location_case_count; local_ptr->location_first = location_first; local_ptr->location_opl = location_opl; @@ -3037,7 +3037,7 @@ rdim_symbol_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) RDIM_Location *location = location_case->location; if(location == 0){ - RADDBGI_U64 data = 0; + RDI_U64 data = 0; str8_serial_push_align(scratch.arena, &location_data, 8); str8_serial_push_data(scratch.arena, &location_data, &data, 1); } @@ -3045,44 +3045,44 @@ rdim_symbol_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) switch (location->kind){ default: { - RADDBGI_U64 data = 0; + RDI_U64 data = 0; str8_serial_push_align(scratch.arena, &location_data, 8); str8_serial_push_data(scratch.arena, &location_data, &data, 1); }break; - case RADDBGI_LocationKind_AddrBytecodeStream: - case RADDBGI_LocationKind_ValBytecodeStream: + case RDI_LocationKind_AddrBytecodeStream: + case RDI_LocationKind_ValBytecodeStream: { rdim_str8_list_push(scratch.arena, &location_data, rdim_str8_copy(scratch.arena, rdim_str8_struct(&location->kind))); for(RDIM_EvalBytecodeOp *op_node = location->bytecode.first_op; op_node != 0; op_node = op_node->next){ - RADDBGI_U8 op_data[9]; + RDI_U8 op_data[9]; op_data[0] = op_node->op; rdim_memcpy(op_data + 1, &op_node->p, op_node->p_size); RDIM_String8 op_data_str = rdim_str8(op_data, 1 + op_node->p_size); rdim_str8_list_push(scratch.arena, &location_data, rdim_str8_copy(scratch.arena, op_data_str)); } { - RADDBGI_U64 data = 0; - RDIM_String8 data_str = rdim_str8((RADDBGI_U8 *)&data, 1); + RDI_U64 data = 0; + RDIM_String8 data_str = rdim_str8((RDI_U8 *)&data, 1); rdim_str8_list_push(scratch.arena, &location_data, rdim_str8_copy(scratch.arena, data_str)); } }break; - case RADDBGI_LocationKind_AddrRegisterPlusU16: - case RADDBGI_LocationKind_AddrAddrRegisterPlusU16: + case RDI_LocationKind_AddrRegisterPlusU16: + case RDI_LocationKind_AddrAddrRegisterPlusU16: { - RADDBGI_LocationRegisterPlusU16 loc = {0}; + RDI_LocationRegisterPlusU16 loc = {0}; loc.kind = location->kind; loc.register_code = location->register_code; loc.offset = location->offset; rdim_str8_list_push(scratch.arena, &location_data, rdim_str8_copy(scratch.arena, rdim_str8_struct(&loc))); }break; - case RADDBGI_LocationKind_ValRegister: + case RDI_LocationKind_ValRegister: { - RADDBGI_LocationRegister loc = {0}; + RDI_LocationRegister loc = {0}; loc.kind = location->kind; loc.register_code = location->register_code; rdim_str8_list_push(scratch.arena, &location_data, rdim_str8_copy(scratch.arena, rdim_str8_struct(&loc))); @@ -3123,7 +3123,7 @@ rdim_symbol_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) RDIM_VMap *scope_vmap = 0; { // count necessary markers - RADDBGI_U32 marker_count = scope_voff_count; + RDI_U32 marker_count = scope_voff_count; // fill markers RDIM_SortKey *keys = rdim_push_array_no_zero(scratch.arena, RDIM_SortKey, marker_count); @@ -3135,7 +3135,7 @@ rdim_symbol_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) for(RDIM_Scope *node = root->first_scope; node != 0; node = node->next_order){ - RADDBGI_U32 scope_idx = node->idx; + RDI_U32 scope_idx = node->idx; for(RDIM_VOffRange *range = node->first_range; range != 0; @@ -3186,21 +3186,21 @@ rdim_symbol_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx) //- rjf: name map baking -RADDBGI_PROC RDIM_NameMapBaked* +RDI_PROC RDIM_NameMapBaked* rdim_name_map_bake(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx, RDIM_NameMap *map) { RDIM_Temp scratch = rdim_scratch_begin(&arena, 1); - RADDBGI_U32 bucket_count = map->name_count; - RADDBGI_U32 node_count = map->name_count; + RDI_U32 bucket_count = map->name_count; + RDI_U32 node_count = map->name_count; // setup the final bucket layouts RDIM_NameMapSemiBucket *sbuckets = rdim_push_array(scratch.arena, RDIM_NameMapSemiBucket, bucket_count); for(RDIM_NameMapNode *node = map->first; node != 0; node = node->order_next){ - RADDBGI_U64 hash = raddbgi_hash(node->string.str, node->string.size); - RADDBGI_U64 bi = hash%bucket_count; + RDI_U64 hash = rdi_hash(node->string.str, node->string.size); + RDI_U64 bi = hash%bucket_count; RDIM_NameMapSemiNode *snode = rdim_push_array(scratch.arena, RDIM_NameMapSemiNode, 1); SLLQueuePush(sbuckets[bi].first, sbuckets[bi].last, snode); snode->node = node; @@ -3208,15 +3208,15 @@ rdim_name_map_bake(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx, RDIM_ } // allocate tables - RADDBGI_NameMapBucket *buckets = rdim_push_array(arena, RADDBGI_NameMapBucket, bucket_count); - RADDBGI_NameMapNode *nodes = rdim_push_array_no_zero(arena, RADDBGI_NameMapNode, node_count); + RDI_NameMapBucket *buckets = rdim_push_array(arena, RDI_NameMapBucket, bucket_count); + RDI_NameMapNode *nodes = rdim_push_array_no_zero(arena, RDI_NameMapNode, node_count); // convert to serialized buckets & nodes { - RADDBGI_NameMapBucket *bucket_ptr = buckets; - RADDBGI_NameMapNode *node_ptr = nodes; - for(RADDBGI_U32 i = 0; i < bucket_count; i += 1, bucket_ptr += 1){ - bucket_ptr->first_node = (RADDBGI_U32)(node_ptr - nodes); + RDI_NameMapBucket *bucket_ptr = buckets; + RDI_NameMapNode *node_ptr = nodes; + for(RDI_U32 i = 0; i < bucket_count; i += 1, bucket_ptr += 1){ + bucket_ptr->first_node = (RDI_U32)(node_ptr - nodes); bucket_ptr->node_count = sbuckets[i].count; for(RDIM_NameMapSemiNode *snode = sbuckets[i].first; @@ -3225,20 +3225,20 @@ rdim_name_map_bake(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx, RDIM_ RDIM_NameMapNode *node = snode->node; // cons name and index(es) - RADDBGI_U32 string_idx = rdim_string(bctx, node->string); - RADDBGI_U32 match_count = node->idx_count; - RADDBGI_U32 idx = 0; + RDI_U32 string_idx = rdim_string(bctx, node->string); + RDI_U32 match_count = node->idx_count; + RDI_U32 idx = 0; if(match_count == 1){ idx = node->idx_first->idx[0]; } else{ - RADDBGI_U64 temp_pos = rdim_arena_pos(scratch.arena); - RADDBGI_U32 *idx_run = rdim_push_array_no_zero(scratch.arena, RADDBGI_U32, match_count); - RADDBGI_U32 *idx_ptr = idx_run; + RDI_U64 temp_pos = rdim_arena_pos(scratch.arena); + RDI_U32 *idx_run = rdim_push_array_no_zero(scratch.arena, RDI_U32, match_count); + RDI_U32 *idx_ptr = idx_run; for(RDIM_NameMapIdxNode *idxnode = node->idx_first; idxnode != 0; idxnode = idxnode->next){ - for(RADDBGI_U32 i = 0; i < ArrayCount(idxnode->idx); i += 1){ + for(RDI_U32 i = 0; i < ArrayCount(idxnode->idx); i += 1){ if(idxnode->idx[i] == 0){ goto dblbreak; } @@ -3274,14 +3274,14 @@ rdim_name_map_bake(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx, RDIM_ //- rjf: top-level baking entry point -RADDBGI_PROC void +RDI_PROC void rdim_bake_file(RDIM_Arena *arena, RDIM_Root *root, RDIM_String8List *out) { str8_serial_begin(arena, out); // setup cons helpers RDIM_DSections dss = {0}; - rdim_dsection(arena, &dss, 0, 0, RADDBGI_DataSectionTag_NULL); + rdim_dsection(arena, &dss, 0, 0, RDI_DataSectionTag_NULL); RDIM_BakeParams bctx_params = {0}; { @@ -3294,7 +3294,7 @@ rdim_bake_file(RDIM_Arena *arena, RDIM_Root *root, RDIM_String8List *out) // MAIN PART: allocating and filling out sections of the file // top level info - RADDBGI_TopLevelInfo *tli = rdim_push_array(arena, RADDBGI_TopLevelInfo, 1); + RDI_TopLevelInfo *tli = rdim_push_array(arena, RDI_TopLevelInfo, 1); { RDIM_TopLevelInfo *rdim_tli = &root->top_level_info; tli->architecture = rdim_tli->architecture; @@ -3302,13 +3302,13 @@ rdim_bake_file(RDIM_Arena *arena, RDIM_Root *root, RDIM_String8List *out) tli->exe_hash = rdim_tli->exe_hash; tli->voff_max = rdim_tli->voff_max; } - rdim_dsection(arena, &dss, tli, sizeof(*tli), RADDBGI_DataSectionTag_TopLevelInfo); + rdim_dsection(arena, &dss, tli, sizeof(*tli), RDI_DataSectionTag_TopLevelInfo); // binary sections array { - RADDBGI_U32 count = root->binary_section_count; - RADDBGI_BinarySection *sections = rdim_push_array(arena, RADDBGI_BinarySection, count); - RADDBGI_BinarySection *dsec = sections; + RDI_U32 count = root->binary_section_count; + RDI_BinarySection *sections = rdim_push_array(arena, RDI_BinarySection, count); + RDI_BinarySection *dsec = sections; for(RDIM_BinarySection *ssec = root->binary_section_first; ssec != 0; ssec = ssec->next, dsec += 1){ @@ -3319,7 +3319,7 @@ rdim_bake_file(RDIM_Arena *arena, RDIM_Root *root, RDIM_String8List *out) dsec->foff_first = ssec->foff_first; dsec->foff_opl = ssec->foff_opl; } - rdim_dsection(arena, &dss, sections, sizeof(*sections)*count, RADDBGI_DataSectionTag_BinarySections); + rdim_dsection(arena, &dss, sections, sizeof(*sections)*count, RDI_DataSectionTag_BinarySections); } // units array @@ -3327,20 +3327,20 @@ rdim_bake_file(RDIM_Arena *arena, RDIM_Root *root, RDIM_String8List *out) // * top-level unit information // * combining line info for whole unit { - RADDBGI_U32 count = root->unit_count; - RADDBGI_Unit *units = rdim_push_array(arena, RADDBGI_Unit, count); - RADDBGI_Unit *dunit = units; + RDI_U32 count = root->unit_count; + RDI_Unit *units = rdim_push_array(arena, RDI_Unit, count); + RDI_Unit *dunit = units; for(RDIM_Unit *sunit = root->unit_first; sunit != 0; sunit = sunit->next_order, dunit += 1){ // strings & paths - RADDBGI_U32 unit_name = rdim_string(bctx, sunit->unit_name); - RADDBGI_U32 cmp_name = rdim_string(bctx, sunit->compiler_name); + RDI_U32 unit_name = rdim_string(bctx, sunit->unit_name); + RDI_U32 cmp_name = rdim_string(bctx, sunit->compiler_name); - RADDBGI_U32 src_path = rdim_paths_idx_from_path(bctx, sunit->source_file); - RADDBGI_U32 obj_path = rdim_paths_idx_from_path(bctx, sunit->object_file); - RADDBGI_U32 archive_path = rdim_paths_idx_from_path(bctx, sunit->archive_file); - RADDBGI_U32 build_path = rdim_paths_idx_from_path(bctx, sunit->build_path); + RDI_U32 src_path = rdim_paths_idx_from_path(bctx, sunit->source_file); + RDI_U32 obj_path = rdim_paths_idx_from_path(bctx, sunit->object_file); + RDI_U32 archive_path = rdim_paths_idx_from_path(bctx, sunit->archive_file); + RDI_U32 build_path = rdim_paths_idx_from_path(bctx, sunit->build_path); dunit->unit_name_string_idx = unit_name; dunit->compiler_name_string_idx = cmp_name; @@ -3354,24 +3354,24 @@ rdim_bake_file(RDIM_Arena *arena, RDIM_Root *root, RDIM_String8List *out) RDIM_LineSequenceNode *first_seq = sunit->line_seq_first; RDIM_UnitLinesCombined *lines = rdim_unit_combine_lines(arena, bctx, first_seq); - RADDBGI_U32 line_count = lines->line_count; + RDI_U32 line_count = lines->line_count; if(line_count > 0){ dunit->line_info_voffs_data_idx = - rdim_dsection(arena, &dss, lines->voffs, sizeof(RADDBGI_U64)*(line_count + 1), - RADDBGI_DataSectionTag_LineInfoVoffs); + rdim_dsection(arena, &dss, lines->voffs, sizeof(RDI_U64)*(line_count + 1), + RDI_DataSectionTag_LineInfoVoffs); dunit->line_info_data_idx = - rdim_dsection(arena, &dss, lines->lines, sizeof(RADDBGI_Line)*line_count, - RADDBGI_DataSectionTag_LineInfoData); + rdim_dsection(arena, &dss, lines->lines, sizeof(RDI_Line)*line_count, + RDI_DataSectionTag_LineInfoData); if(lines->cols != 0){ dunit->line_info_col_data_idx = - rdim_dsection(arena, &dss, lines->cols, sizeof(RADDBGI_Column)*line_count, - RADDBGI_DataSectionTag_LineInfoColumns); + rdim_dsection(arena, &dss, lines->cols, sizeof(RDI_Column)*line_count, + RDI_DataSectionTag_LineInfoColumns); } dunit->line_info_count = line_count; } } - rdim_dsection(arena, &dss, units, sizeof(*units)*count, RADDBGI_DataSectionTag_Units); + rdim_dsection(arena, &dss, units, sizeof(*units)*count, RDI_DataSectionTag_Units); } // source file line info baking @@ -3382,28 +3382,28 @@ rdim_bake_file(RDIM_Arena *arena, RDIM_Root *root, RDIM_String8List *out) src_node = src_node->next){ RDIM_LineMapFragment *first_fragment = src_node->first_fragment; RDIM_SrcLinesCombined *lines = rdim_source_combine_lines(arena, first_fragment); - RADDBGI_U32 line_count = lines->line_count; + RDI_U32 line_count = lines->line_count; if(line_count > 0){ src_node->line_map_count = line_count; src_node->line_map_nums_data_idx = rdim_dsection(arena, &dss, lines->line_nums, sizeof(*lines->line_nums)*line_count, - RADDBGI_DataSectionTag_LineMapNumbers); + RDI_DataSectionTag_LineMapNumbers); src_node->line_map_range_data_idx = rdim_dsection(arena, &dss, lines->line_ranges, sizeof(*lines->line_ranges)*(line_count + 1), - RADDBGI_DataSectionTag_LineMapRanges); + RDI_DataSectionTag_LineMapRanges); src_node->line_map_voff_data_idx = rdim_dsection(arena, &dss, lines->voffs, sizeof(*lines->voffs)*lines->voff_count, - RADDBGI_DataSectionTag_LineMapVoffs); + RDI_DataSectionTag_LineMapVoffs); } } // source file name mapping { - RDIM_NameMap* map = rdim_name_map_for_kind(root, RADDBGI_NameMapKind_NormalSourcePaths); + RDIM_NameMap* map = rdim_name_map_for_kind(root, RDI_NameMapKind_NormalSourcePaths); for(RDIM_SrcNode *src_node = bctx->tree->src_first; src_node != 0; src_node = src_node->next){ @@ -3419,87 +3419,87 @@ rdim_bake_file(RDIM_Arena *arena, RDIM_Root *root, RDIM_String8List *out) root->unit_vmap_range_first, root->unit_vmap_range_count); - RADDBGI_U64 vmap_size = sizeof(*vmap->vmap)*(vmap->count + 1); - rdim_dsection(arena, &dss, vmap->vmap, vmap_size, RADDBGI_DataSectionTag_UnitVmap); + RDI_U64 vmap_size = sizeof(*vmap->vmap)*(vmap->count + 1); + rdim_dsection(arena, &dss, vmap->vmap, vmap_size, RDI_DataSectionTag_UnitVmap); } // type info baking { RDIM_TypeData *types = rdim_type_data_combine(arena, root, bctx); - RADDBGI_U64 type_nodes_size = sizeof(*types->type_nodes)*types->type_node_count; - rdim_dsection(arena, &dss, types->type_nodes, type_nodes_size, RADDBGI_DataSectionTag_TypeNodes); + RDI_U64 type_nodes_size = sizeof(*types->type_nodes)*types->type_node_count; + rdim_dsection(arena, &dss, types->type_nodes, type_nodes_size, RDI_DataSectionTag_TypeNodes); - RADDBGI_U64 udt_size = sizeof(*types->udts)*types->udt_count; - rdim_dsection(arena, &dss, types->udts, udt_size, RADDBGI_DataSectionTag_UDTs); + RDI_U64 udt_size = sizeof(*types->udts)*types->udt_count; + rdim_dsection(arena, &dss, types->udts, udt_size, RDI_DataSectionTag_UDTs); - RADDBGI_U64 member_size = sizeof(*types->members)*types->member_count; - rdim_dsection(arena, &dss, types->members, member_size, RADDBGI_DataSectionTag_Members); + RDI_U64 member_size = sizeof(*types->members)*types->member_count; + rdim_dsection(arena, &dss, types->members, member_size, RDI_DataSectionTag_Members); - RADDBGI_U64 enum_member_size = sizeof(*types->enum_members)*types->enum_member_count; - rdim_dsection(arena, &dss, types->enum_members, enum_member_size, RADDBGI_DataSectionTag_EnumMembers); + RDI_U64 enum_member_size = sizeof(*types->enum_members)*types->enum_member_count; + rdim_dsection(arena, &dss, types->enum_members, enum_member_size, RDI_DataSectionTag_EnumMembers); } // symbol info baking { RDIM_SymbolData *symbol_data = rdim_symbol_data_combine(arena, root, bctx); - RADDBGI_U64 global_variables_size = + RDI_U64 global_variables_size = sizeof(*symbol_data->global_variables)*symbol_data->global_variable_count; rdim_dsection(arena, &dss, symbol_data->global_variables, global_variables_size, - RADDBGI_DataSectionTag_GlobalVariables); + RDI_DataSectionTag_GlobalVariables); RDIM_VMap *global_vmap = symbol_data->global_vmap; - RADDBGI_U64 global_vmap_size = sizeof(*global_vmap->vmap)*(global_vmap->count + 1); + RDI_U64 global_vmap_size = sizeof(*global_vmap->vmap)*(global_vmap->count + 1); rdim_dsection(arena, &dss, global_vmap->vmap, global_vmap_size, - RADDBGI_DataSectionTag_GlobalVmap); + RDI_DataSectionTag_GlobalVmap); - RADDBGI_U64 thread_variables_size = + RDI_U64 thread_variables_size = sizeof(*symbol_data->thread_variables)*symbol_data->thread_variable_count; rdim_dsection(arena, &dss, symbol_data->thread_variables, thread_variables_size, - RADDBGI_DataSectionTag_ThreadVariables); + RDI_DataSectionTag_ThreadVariables); - RADDBGI_U64 procedures_size = sizeof(*symbol_data->procedures)*symbol_data->procedure_count; + RDI_U64 procedures_size = sizeof(*symbol_data->procedures)*symbol_data->procedure_count; rdim_dsection(arena, &dss, symbol_data->procedures, procedures_size, - RADDBGI_DataSectionTag_Procedures); + RDI_DataSectionTag_Procedures); - RADDBGI_U64 scopes_size = sizeof(*symbol_data->scopes)*symbol_data->scope_count; - rdim_dsection(arena, &dss, symbol_data->scopes, scopes_size, RADDBGI_DataSectionTag_Scopes); + RDI_U64 scopes_size = sizeof(*symbol_data->scopes)*symbol_data->scope_count; + rdim_dsection(arena, &dss, symbol_data->scopes, scopes_size, RDI_DataSectionTag_Scopes); - RADDBGI_U64 scope_voffs_size = sizeof(*symbol_data->scope_voffs)*symbol_data->scope_voff_count; + RDI_U64 scope_voffs_size = sizeof(*symbol_data->scope_voffs)*symbol_data->scope_voff_count; rdim_dsection(arena, &dss, symbol_data->scope_voffs, scope_voffs_size, - RADDBGI_DataSectionTag_ScopeVoffData); + RDI_DataSectionTag_ScopeVoffData); RDIM_VMap *scope_vmap = symbol_data->scope_vmap; - RADDBGI_U64 scope_vmap_size = sizeof(*scope_vmap->vmap)*(scope_vmap->count + 1); - rdim_dsection(arena, &dss, scope_vmap->vmap, scope_vmap_size, RADDBGI_DataSectionTag_ScopeVmap); + RDI_U64 scope_vmap_size = sizeof(*scope_vmap->vmap)*(scope_vmap->count + 1); + rdim_dsection(arena, &dss, scope_vmap->vmap, scope_vmap_size, RDI_DataSectionTag_ScopeVmap); - RADDBGI_U64 local_size = sizeof(*symbol_data->locals)*symbol_data->local_count; - rdim_dsection(arena, &dss, symbol_data->locals, local_size, RADDBGI_DataSectionTag_Locals); + RDI_U64 local_size = sizeof(*symbol_data->locals)*symbol_data->local_count; + rdim_dsection(arena, &dss, symbol_data->locals, local_size, RDI_DataSectionTag_Locals); - RADDBGI_U64 location_blocks_size = + RDI_U64 location_blocks_size = sizeof(*symbol_data->location_blocks)*symbol_data->location_block_count; rdim_dsection(arena, &dss, symbol_data->location_blocks, location_blocks_size, - RADDBGI_DataSectionTag_LocationBlocks); + RDI_DataSectionTag_LocationBlocks); - RADDBGI_U64 location_data_size = symbol_data->location_data_size; + RDI_U64 location_data_size = symbol_data->location_data_size; rdim_dsection(arena, &dss, symbol_data->location_data, location_data_size, - RADDBGI_DataSectionTag_LocationData); + RDI_DataSectionTag_LocationData); } // name map baking { - RADDBGI_U32 name_map_count = 0; - for(RADDBGI_U32 i = 0; i < RADDBGI_NameMapKind_COUNT; i += 1){ + RDI_U32 name_map_count = 0; + for(RDI_U32 i = 0; i < RDI_NameMapKind_COUNT; i += 1){ if(root->name_maps[i] != 0){ name_map_count += 1; } } - RADDBGI_NameMap *name_maps = rdim_push_array(arena, RADDBGI_NameMap, name_map_count); + RDI_NameMap *name_maps = rdim_push_array(arena, RDI_NameMap, name_map_count); - RADDBGI_NameMap *name_map_ptr = name_maps; - for(RADDBGI_U32 i = 0; i < RADDBGI_NameMapKind_COUNT; i += 1){ + RDI_NameMap *name_map_ptr = name_maps; + for(RDI_U32 i = 0; i < RDI_NameMapKind_COUNT; i += 1){ RDIM_NameMap *map = root->name_maps[i]; if(map != 0){ RDIM_NameMapBaked *baked = rdim_name_map_bake(arena, root, bctx, map); @@ -3507,16 +3507,16 @@ rdim_bake_file(RDIM_Arena *arena, RDIM_Root *root, RDIM_String8List *out) name_map_ptr->kind = i; name_map_ptr->bucket_data_idx = rdim_dsection(arena, &dss, baked->buckets, sizeof(*baked->buckets)*baked->bucket_count, - RADDBGI_DataSectionTag_NameMapBuckets); + RDI_DataSectionTag_NameMapBuckets); name_map_ptr->node_data_idx = rdim_dsection(arena, &dss, baked->nodes, sizeof(*baked->nodes)*baked->node_count, - RADDBGI_DataSectionTag_NameMapNodes); + RDI_DataSectionTag_NameMapNodes); name_map_ptr += 1; } } rdim_dsection(arena, &dss, name_maps, sizeof(*name_maps)*name_map_count, - RADDBGI_DataSectionTag_NameMaps); + RDI_DataSectionTag_NameMaps); } //////////////////////////////// @@ -3524,10 +3524,10 @@ rdim_bake_file(RDIM_Arena *arena, RDIM_Root *root, RDIM_String8List *out) // generate data sections for file paths { - RADDBGI_U32 count = bctx->tree->count; - RADDBGI_FilePathNode *nodes = rdim_push_array(arena, RADDBGI_FilePathNode, count); + RDI_U32 count = bctx->tree->count; + RDI_FilePathNode *nodes = rdim_push_array(arena, RDI_FilePathNode, count); - RADDBGI_FilePathNode *out_node = nodes; + RDI_FilePathNode *out_node = nodes; for(RDIM_PathNode *node = bctx->tree->first; node != 0; node = node->next_order, out_node += 1){ @@ -3546,15 +3546,15 @@ rdim_bake_file(RDIM_Arena *arena, RDIM_Root *root, RDIM_String8List *out) } } - rdim_dsection(arena, &dss, nodes, sizeof(*nodes)*count, RADDBGI_DataSectionTag_FilePathNodes); + rdim_dsection(arena, &dss, nodes, sizeof(*nodes)*count, RDI_DataSectionTag_FilePathNodes); } // generate data sections for files { - RADDBGI_U32 count = bctx->tree->src_count; - RADDBGI_SourceFile *src_files = rdim_push_array(arena, RADDBGI_SourceFile, count); + RDI_U32 count = bctx->tree->src_count; + RDI_SourceFile *src_files = rdim_push_array(arena, RDI_SourceFile, count); - RADDBGI_SourceFile *out_src_file = src_files; + RDI_SourceFile *out_src_file = src_files; for(RDIM_SrcNode *node = bctx->tree->src_first; node != 0; node = node->next, out_src_file += 1){ @@ -3566,16 +3566,16 @@ rdim_bake_file(RDIM_Arena *arena, RDIM_Root *root, RDIM_String8List *out) out_src_file->line_map_voff_data_idx = node->line_map_voff_data_idx; } - rdim_dsection(arena, &dss, src_files, sizeof(*src_files)*count, RADDBGI_DataSectionTag_SourceFiles); + rdim_dsection(arena, &dss, src_files, sizeof(*src_files)*count, RDI_DataSectionTag_SourceFiles); } // generate data sections for strings { - RADDBGI_U32 *str_offs = rdim_push_array_no_zero(arena, RADDBGI_U32, bctx->strs.count + 1); + RDI_U32 *str_offs = rdim_push_array_no_zero(arena, RDI_U32, bctx->strs.count + 1); - RADDBGI_U32 off_cursor = 0; + RDI_U32 off_cursor = 0; { - RADDBGI_U32 *off_ptr = str_offs; + RDI_U32 *off_ptr = str_offs; *off_ptr = 0; off_ptr += 1; for(RDIM_StringNode *node = bctx->strs.order_first; @@ -3587,9 +3587,9 @@ rdim_bake_file(RDIM_Arena *arena, RDIM_Root *root, RDIM_String8List *out) } } - RADDBGI_U8 *buf = rdim_push_array(arena, RADDBGI_U8, off_cursor); + RDI_U8 *buf = rdim_push_array(arena, RDI_U8, off_cursor); { - RADDBGI_U8 *ptr = buf; + RDI_U8 *ptr = buf; for(RDIM_StringNode *node = bctx->strs.order_first; node != 0; node = node->order_next){ @@ -3599,17 +3599,17 @@ rdim_bake_file(RDIM_Arena *arena, RDIM_Root *root, RDIM_String8List *out) } rdim_dsection(arena, &dss, str_offs, sizeof(*str_offs)*(bctx->strs.count + 1), - RADDBGI_DataSectionTag_StringTable); - rdim_dsection(arena, &dss, buf, off_cursor, RADDBGI_DataSectionTag_StringData); + RDI_DataSectionTag_StringTable); + rdim_dsection(arena, &dss, buf, off_cursor, RDI_DataSectionTag_StringData); } // generate data sections for index runs { - RADDBGI_U32 *idx_data = rdim_push_array_no_zero(arena, RADDBGI_U32, bctx->idxs.idx_count); + RDI_U32 *idx_data = rdim_push_array_no_zero(arena, RDI_U32, bctx->idxs.idx_count); { - RADDBGI_U32 *out_ptr = idx_data; - RADDBGI_U32 *opl = out_ptr + bctx->idxs.idx_count; + RDI_U32 *out_ptr = idx_data; + RDI_U32 *opl = out_ptr + bctx->idxs.idx_count; RDIM_IdxRunNode *node = bctx->idxs.order_first; for(;node != 0 && out_ptr < opl; node = node->order_next){ @@ -3620,28 +3620,28 @@ rdim_bake_file(RDIM_Arena *arena, RDIM_Root *root, RDIM_String8List *out) } rdim_dsection(arena, &dss, idx_data, sizeof(*idx_data)*bctx->idxs.idx_count, - RADDBGI_DataSectionTag_IndexRuns); + RDI_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 - RADDBGI_Header *header = rdim_push_array(arena, RADDBGI_Header, 1); - RADDBGI_DataSection *dstable = rdim_push_array(arena, RADDBGI_DataSection, dss.count); + RDI_Header *header = rdim_push_array(arena, RDI_Header, 1); + RDI_DataSection *dstable = rdim_push_array(arena, RDI_DataSection, dss.count); str8_serial_push_align(arena, out, 8); - RADDBGI_U64 header_off = out->total_size; + RDI_U64 header_off = out->total_size; str8_list_push(arena, out, str8_struct(header)); str8_serial_push_align(arena, out, 8); - RADDBGI_U64 data_section_off = out->total_size; - str8_list_push(arena, out, str8((RADDBGI_U8 *)dstable, sizeof(*dstable)*dss.count)); + RDI_U64 data_section_off = out->total_size; + str8_list_push(arena, out, str8((RDI_U8 *)dstable, sizeof(*dstable)*dss.count)); { - header->magic = RADDBGI_MAGIC_CONSTANT; - header->encoding_version = RADDBGI_ENCODING_VERSION; + header->magic = RDI_MAGIC_CONSTANT; + header->encoding_version = RDI_ENCODING_VERSION; header->data_section_off = data_section_off; header->data_section_count = dss.count; } { - RADDBGI_U64 test_dss_count = 0; + RDI_U64 test_dss_count = 0; for(RDIM_DSectionNode *node = dss.first; node != 0; node = node->next){ @@ -3649,19 +3649,19 @@ rdim_bake_file(RDIM_Arena *arena, RDIM_Root *root, RDIM_String8List *out) } rdim_assert(test_dss_count == dss.count); - RADDBGI_DataSection *ptr = dstable; + RDI_DataSection *ptr = dstable; for(RDIM_DSectionNode *node = dss.first; node != 0; node = node->next, ptr += 1){ - RADDBGI_U64 data_section_offset = 0; + RDI_U64 data_section_offset = 0; if(node->size != 0) { str8_serial_push_align(arena, out, 8); data_section_offset = out->total_size; - str8_list_push(arena, out, str8((RADDBGI_U8 *)node->data, node->size)); + str8_list_push(arena, out, str8((RDI_U8 *)node->data, node->size)); } ptr->tag = node->tag; - ptr->encoding = RADDBGI_DataSectionEncoding_Unpacked; + ptr->encoding = RDI_DataSectionEncoding_Unpacked; ptr->off = data_section_offset; ptr->encoded_size = node->size; ptr->unpacked_size = node->size; diff --git a/src/lib_raddbgi_make/raddbgi_make.h b/src/lib_raddbgi_make/raddbgi_make.h index f8be19d1..d2c2fba9 100644 --- a/src/lib_raddbgi_make/raddbgi_make.h +++ b/src/lib_raddbgi_make/raddbgi_make.h @@ -1,6 +1,13 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) +//////////////////////////////////////////////////////////////// +// RAD Debug Info Make, (R)AD(D)BG(I) (M)ake Library +// +// Library for building loose data structures which contain +// RADDBGI debug information, and baking that down into the +// proper flattened RADDBGI format. + #ifndef RADDBGI_MAKE_H #define RADDBGI_MAKE_H @@ -68,8 +75,8 @@ typedef struct RDIM_String8 RDIM_String8; struct RDIM_String8 { - RADDBGI_U8 *str; - RADDBGI_U64 size; + RDI_U8 *str; + RDI_U64 size; }; #endif @@ -96,12 +103,12 @@ struct RDIM_String8List { RDIM_String8Node *first; RDIM_String8Node *last; - RADDBGI_U64 node_count; - RADDBGI_U64 total_size; + RDI_U64 node_count; + RDI_U64 total_size; }; #endif -typedef RADDBGI_U32 RDIM_StringMatchFlags; +typedef RDI_U32 RDIM_StringMatchFlags; enum { RDIM_StringMatchFlag_CaseInsensitive = (1<<0), @@ -127,12 +134,12 @@ struct RDIM_Arena { RDIM_Arena *prev; RDIM_Arena *current; - RADDBGI_U64 base_pos; - RADDBGI_U64 pos; - RADDBGI_U64 cmt; - RADDBGI_U64 res; - RADDBGI_U64 align; - RADDBGI_S8 grow; + RDI_U64 base_pos; + RDI_U64 pos; + RDI_U64 cmt; + RDI_U64 res; + RDI_U64 align; + RDI_S8 grow; }; #endif @@ -167,7 +174,7 @@ typedef struct RDIM_Temp RDIM_Temp; struct RDIM_Temp { RDIM_Arena *arena; - RADDBGI_U64 pos; + RDI_U64 pos; }; #define rdim_temp_arena(t) ((t).arena) #endif @@ -284,7 +291,7 @@ struct RDIM_ErrorList { RDIM_Error *first; RDIM_Error *last; - RADDBGI_U64 count; + RDI_U64 count; }; //////////////////////////////// @@ -296,8 +303,8 @@ typedef struct RDIM_U64ToPtrNode RDIM_U64ToPtrNode; struct RDIM_U64ToPtrNode { RDIM_U64ToPtrNode *next; - RADDBGI_U64 _padding_; - RADDBGI_U64 key[1]; + RDI_U64 _padding_; + RDI_U64 key[1]; void *ptr[1]; }; @@ -305,9 +312,9 @@ typedef struct RDIM_U64ToPtrMap RDIM_U64ToPtrMap; struct RDIM_U64ToPtrMap { RDIM_U64ToPtrNode **buckets; - RADDBGI_U64 buckets_count; - RADDBGI_U64 bucket_collision_count; - RADDBGI_U64 pair_count; + RDI_U64 buckets_count; + RDI_U64 bucket_collision_count; + RDI_U64 pair_count; }; typedef struct RDIM_U64ToPtrLookup RDIM_U64ToPtrLookup; @@ -315,7 +322,7 @@ struct RDIM_U64ToPtrLookup { void *match; RDIM_U64ToPtrNode *fill_node; - RADDBGI_U32 fill_k; + RDI_U32 fill_k; }; //- rjf: string8 -> pointer map @@ -325,7 +332,7 @@ struct RDIM_Str8ToPtrNode { struct RDIM_Str8ToPtrNode *next; RDIM_String8 key; - RADDBGI_U64 hash; + RDI_U64 hash; void *ptr; }; @@ -333,9 +340,9 @@ typedef struct RDIM_Str8ToPtrMap RDIM_Str8ToPtrMap; struct RDIM_Str8ToPtrMap { RDIM_Str8ToPtrNode **buckets; - RADDBGI_U64 buckets_count; - RADDBGI_U64 bucket_collision_count; - RADDBGI_U64 pair_count; + RDI_U64 buckets_count; + RDI_U64 bucket_collision_count; + RDI_U64 pair_count; }; //- rjf: sortable range data structure @@ -343,7 +350,7 @@ struct RDIM_Str8ToPtrMap typedef struct RDIM_SortKey RDIM_SortKey; struct RDIM_SortKey { - RADDBGI_U64 key; + RDI_U64 key; void *val; }; @@ -351,8 +358,8 @@ typedef struct RDIM_OrderedRange RDIM_OrderedRange; struct RDIM_OrderedRange { RDIM_OrderedRange *next; - RADDBGI_U64 first; - RADDBGI_U64 opl; + RDI_U64 first; + RDI_U64 opl; }; //////////////////////////////// @@ -363,11 +370,11 @@ struct RDIM_BinarySection { RDIM_BinarySection *next; RDIM_String8 name; - RADDBGI_BinarySectionFlags flags; - RADDBGI_U64 voff_first; - RADDBGI_U64 voff_opl; - RADDBGI_U64 foff_first; - RADDBGI_U64 foff_opl; + RDI_BinarySectionFlags flags; + RDI_U64 voff_first; + RDI_U64 voff_opl; + RDI_U64 foff_first; + RDI_U64 foff_opl; }; //////////////////////////////// @@ -377,10 +384,10 @@ typedef struct RDIM_LineSequence RDIM_LineSequence; struct RDIM_LineSequence { RDIM_String8 file_name; - RADDBGI_U64 *voffs; // [line_count + 1] (sorted) - RADDBGI_U32 *line_nums; // [line_count] - RADDBGI_U16 *col_nums; // [2*line_count] - RADDBGI_U64 line_count; + RDI_U64 *voffs; // [line_count + 1] (sorted) + RDI_U32 *line_nums; // [line_count] + RDI_U16 *col_nums; // [2*line_count] + RDI_U64 line_count; }; typedef struct RDIM_LineSequenceNode RDIM_LineSequenceNode; @@ -399,25 +406,25 @@ struct RDIM_UnitInfo RDIM_String8 object_file; RDIM_String8 archive_file; RDIM_String8 build_path; - RADDBGI_Language language; + RDI_Language language; }; typedef struct RDIM_Unit RDIM_Unit; struct RDIM_Unit { RDIM_Unit *next_order; - RADDBGI_U32 idx; - RADDBGI_S32 info_is_set; + RDI_U32 idx; + RDI_S32 info_is_set; RDIM_String8 unit_name; RDIM_String8 compiler_name; RDIM_String8 source_file; RDIM_String8 object_file; RDIM_String8 archive_file; RDIM_String8 build_path; - RADDBGI_Language language; + RDI_Language language; RDIM_LineSequenceNode *line_seq_first; RDIM_LineSequenceNode *line_seq_last; - RADDBGI_U64 line_seq_count; + RDI_U64 line_seq_count; }; typedef struct RDIM_UnitVMapRange RDIM_UnitVMapRange; @@ -425,14 +432,14 @@ struct RDIM_UnitVMapRange { RDIM_UnitVMapRange *next; RDIM_Unit *unit; - RADDBGI_U64 first; - RADDBGI_U64 opl; + RDI_U64 first; + RDI_U64 opl; }; //////////////////////////////// //~ rjf: Type Info Types -typedef RADDBGI_U8 RDIM_TypeConstructKind; +typedef RDI_U8 RDIM_TypeConstructKind; enum { RDIM_TypeConstructKind_Basic, @@ -450,10 +457,10 @@ typedef struct RDIM_TypeMember RDIM_TypeMember; struct RDIM_TypeMember { RDIM_TypeMember *next; - RADDBGI_MemberKind kind; + RDI_MemberKind kind; RDIM_String8 name; struct RDIM_Type *type; - RADDBGI_U32 off; + RDI_U32 off; }; typedef struct RDIM_TypeEnumVal RDIM_TypeEnumVal; @@ -461,19 +468,19 @@ struct RDIM_TypeEnumVal { RDIM_TypeEnumVal *next; RDIM_String8 name; - RADDBGI_U64 val; + RDI_U64 val; }; typedef struct RDIM_Type RDIM_Type; struct RDIM_Type { RDIM_Type *next_order; - RADDBGI_TypeKind kind; - RADDBGI_U32 idx; - RADDBGI_U32 byte_size; - RADDBGI_U32 flags; - RADDBGI_U32 off; - RADDBGI_U32 count; + RDI_TypeKind kind; + RDI_U32 idx; + RDI_U32 byte_size; + RDI_U32 flags; + RDI_U32 off; + RDI_U32 count; RDIM_String8 name; RDIM_Type *direct_type; RDIM_Type **param_types; @@ -484,17 +491,17 @@ typedef struct RDIM_TypeUDT RDIM_TypeUDT; struct RDIM_TypeUDT { RDIM_TypeUDT *next_order; - RADDBGI_U32 idx; + RDI_U32 idx; RDIM_Type *self_type; RDIM_TypeMember *first_member; RDIM_TypeMember *last_member; - RADDBGI_U64 member_count; + RDI_U64 member_count; RDIM_TypeEnumVal *first_enum_val; RDIM_TypeEnumVal *last_enum_val; - RADDBGI_U64 enum_val_count; + RDI_U64 enum_val_count; RDIM_String8 source_path; - RADDBGI_U32 line; - RADDBGI_U32 col; + RDI_U32 line; + RDI_U32 col; }; typedef struct RDIM_TypeNode RDIM_TypeNode; @@ -509,7 +516,7 @@ struct RDIM_TypeList { RDIM_TypeNode *first; RDIM_TypeNode *last; - RADDBGI_U64 count; + RDI_U64 count; }; //////////////////////////////// @@ -532,8 +539,8 @@ struct RDIM_SymbolInfo RDIM_String8 name; RDIM_String8 link_name; RDIM_Type *type; - RADDBGI_S32 is_extern; - RADDBGI_U64 offset; + RDI_S32 is_extern; + RDI_U64 offset; // TODO(allen): should this actually be "container scope"? struct RDIM_Symbol *container_symbol; RDIM_Type *container_type; @@ -544,14 +551,14 @@ typedef struct RDIM_Symbol RDIM_Symbol; struct RDIM_Symbol { RDIM_Symbol *next_order; - RADDBGI_U32 idx; + RDI_U32 idx; RDIM_SymbolKind kind; RDIM_String8 name; RDIM_String8 link_name; RDIM_Type *type; - RADDBGI_S32 is_extern; - RADDBGI_S8 offset_is_set; - RADDBGI_U64 offset; + RDI_S32 is_extern; + RDI_S8 offset_is_set; + RDI_U64 offset; RDIM_Symbol *container_symbol; RDIM_Type *container_type; struct RDIM_Scope *root_scope; @@ -563,7 +570,7 @@ struct RDIM_Symbol typedef struct RDIM_LocalInfo RDIM_LocalInfo; struct RDIM_LocalInfo { - RADDBGI_LocalKind kind; + RDI_LocalKind kind; struct RDIM_Scope *scope; RDIM_String8 name; RDIM_Type *type; @@ -573,7 +580,7 @@ typedef struct RDIM_Local RDIM_Local; struct RDIM_Local { RDIM_Local *next; - RADDBGI_LocalKind kind; + RDI_LocalKind kind; RDIM_String8 name; RDIM_Type *type; struct RDIM_LocationSet *locset; @@ -583,8 +590,8 @@ typedef struct RDIM_VOffRange RDIM_VOffRange; struct RDIM_VOffRange { RDIM_VOffRange *next; - RADDBGI_U64 voff_first; - RADDBGI_U64 voff_opl; + RDI_U64 voff_first; + RDI_U64 voff_opl; }; typedef struct RDIM_Scope RDIM_Scope; @@ -596,14 +603,14 @@ struct RDIM_Scope RDIM_Scope *first_child; RDIM_Scope *last_child; RDIM_Scope *next_sibling; - RADDBGI_U64 voff_base; + RDI_U64 voff_base; RDIM_VOffRange *first_range; RDIM_VOffRange *last_range; - RADDBGI_U32 range_count; - RADDBGI_U32 idx; + RDI_U32 range_count; + RDI_U32 idx; RDIM_Local *first_local; RDIM_Local *last_local; - RADDBGI_U32 local_count; + RDI_U32 local_count; }; //////////////////////////////// @@ -613,9 +620,9 @@ typedef struct RDIM_EvalBytecodeOp RDIM_EvalBytecodeOp; struct RDIM_EvalBytecodeOp { RDIM_EvalBytecodeOp *next; - RADDBGI_EvalOp op; - RADDBGI_U32 p_size; - RADDBGI_U64 p; + RDI_EvalOp op; + RDI_U32 p_size; + RDI_U64 p; }; typedef struct RDIM_EvalBytecode RDIM_EvalBytecode; @@ -623,16 +630,16 @@ struct RDIM_EvalBytecode { RDIM_EvalBytecodeOp *first_op; RDIM_EvalBytecodeOp *last_op; - RADDBGI_U32 op_count; - RADDBGI_U32 encoded_size; + RDI_U32 op_count; + RDI_U32 encoded_size; }; typedef struct RDIM_Location RDIM_Location; struct RDIM_Location { - RADDBGI_LocationKind kind; - RADDBGI_U8 register_code; - RADDBGI_U16 offset; + RDI_LocationKind kind; + RDI_U8 register_code; + RDI_U16 offset; RDIM_EvalBytecode bytecode; }; @@ -640,8 +647,8 @@ typedef struct RDIM_LocationCase RDIM_LocationCase; struct RDIM_LocationCase { RDIM_LocationCase *next; - RADDBGI_U64 voff_first; - RADDBGI_U64 voff_opl; + RDI_U64 voff_first; + RDI_U64 voff_opl; RDIM_Location *location; }; @@ -650,7 +657,7 @@ struct RDIM_LocationSet { RDIM_LocationCase *first_location_case; RDIM_LocationCase *last_location_case; - RADDBGI_U64 location_case_count; + RDI_U64 location_case_count; }; //////////////////////////////// @@ -660,7 +667,7 @@ typedef struct RDIM_NameMapIdxNode RDIM_NameMapIdxNode; struct RDIM_NameMapIdxNode { RDIM_NameMapIdxNode *next; - RADDBGI_U32 idx[8]; + RDI_U32 idx[8]; }; typedef struct RDIM_NameMapNode RDIM_NameMapNode; @@ -671,18 +678,18 @@ struct RDIM_NameMapNode RDIM_String8 string; RDIM_NameMapIdxNode *idx_first; RDIM_NameMapIdxNode *idx_last; - RADDBGI_U64 idx_count; + RDI_U64 idx_count; }; typedef struct RDIM_NameMap RDIM_NameMap; struct RDIM_NameMap { RDIM_NameMapNode **buckets; - RADDBGI_U64 buckets_count; - RADDBGI_U64 bucket_collision_count; + RDI_U64 buckets_count; + RDI_U64 bucket_collision_count; RDIM_NameMapNode *first; RDIM_NameMapNode *last; - RADDBGI_U64 name_count; + RDI_U64 name_count; }; //////////////////////////////// @@ -691,10 +698,10 @@ struct RDIM_NameMap typedef struct RDIM_TopLevelInfo RDIM_TopLevelInfo; struct RDIM_TopLevelInfo { - RADDBGI_Arch architecture; + RDI_Arch architecture; RDIM_String8 exe_name; - RADDBGI_U64 exe_hash; - RADDBGI_U64 voff_max; + RDI_U64 exe_hash; + RDI_U64 voff_max; }; //////////////////////////////// @@ -703,13 +710,13 @@ struct RDIM_TopLevelInfo typedef struct RDIM_RootParams RDIM_RootParams; struct RDIM_RootParams { - RADDBGI_U64 addr_size; - RADDBGI_U32 bucket_count_units; // optional; default chosen if 0 - RADDBGI_U32 bucket_count_symbols; // optional; default chosen if 0 - RADDBGI_U32 bucket_count_scopes; // optional; default chosen if 0 - RADDBGI_U32 bucket_count_locals; // optional; default chosen if 0 - RADDBGI_U32 bucket_count_types; // optional; default chosen if 0 - RADDBGI_U64 bucket_count_type_constructs; // optional; default chosen if 0 + RDI_U64 addr_size; + RDI_U32 bucket_count_units; // optional; default chosen if 0 + RDI_U32 bucket_count_symbols; // optional; default chosen if 0 + RDI_U32 bucket_count_scopes; // optional; default chosen if 0 + RDI_U32 bucket_count_locals; // optional; default chosen if 0 + RDI_U32 bucket_count_types; // optional; default chosen if 0 + RDI_U64 bucket_count_type_constructs; // optional; default chosen if 0 }; typedef struct RDIM_Root RDIM_Root; @@ -720,32 +727,32 @@ struct RDIM_Root //////// Contextual Information - RADDBGI_U64 addr_size; + RDI_U64 addr_size; //////// Info Declared By User // top level info - RADDBGI_S32 top_level_info_is_set; + RDI_S32 top_level_info_is_set; RDIM_TopLevelInfo top_level_info; // binary layout RDIM_BinarySection *binary_section_first; RDIM_BinarySection *binary_section_last; - RADDBGI_U64 binary_section_count; + RDI_U64 binary_section_count; // compilation units RDIM_Unit *unit_first; RDIM_Unit *unit_last; - RADDBGI_U64 unit_count; + RDI_U64 unit_count; RDIM_UnitVMapRange *unit_vmap_range_first; RDIM_UnitVMapRange *unit_vmap_range_last; - RADDBGI_U64 unit_vmap_range_count; + RDI_U64 unit_vmap_range_count; // types RDIM_Type *first_type; RDIM_Type *last_type; - RADDBGI_U64 type_count; + RDI_U64 type_count; RDIM_Type *nil_type; RDIM_Type *variadic_type; @@ -754,32 +761,32 @@ struct RDIM_Root RDIM_TypeUDT *first_udt; RDIM_TypeUDT *last_udt; - RADDBGI_U64 type_udt_count; + RDI_U64 type_udt_count; - RADDBGI_U64 total_member_count; - RADDBGI_U64 total_enum_val_count; + RDI_U64 total_member_count; + RDI_U64 total_enum_val_count; // symbols RDIM_Symbol *first_symbol; RDIM_Symbol *last_symbol; union { - RADDBGI_U64 symbol_count; - RADDBGI_U64 symbol_kind_counts[RDIM_SymbolKind_COUNT]; + RDI_U64 symbol_count; + RDI_U64 symbol_kind_counts[RDIM_SymbolKind_COUNT]; }; RDIM_Scope *first_scope; RDIM_Scope *last_scope; - RADDBGI_U64 scope_count; - RADDBGI_U64 scope_voff_count; + RDI_U64 scope_count; + RDI_U64 scope_voff_count; RDIM_Local *first_local; RDIM_Local *last_local; - RADDBGI_U64 local_count; - RADDBGI_U64 location_count; + RDI_U64 local_count; + RDI_U64 location_count; // name maps - RDIM_NameMap *name_maps[RADDBGI_NameMapKind_COUNT]; + RDIM_NameMap *name_maps[RDI_NameMapKind_COUNT]; //////// Handle Relationship Maps @@ -801,8 +808,8 @@ struct RDIM_DSectionNode { RDIM_DSectionNode *next; void *data; - RADDBGI_U64 size; - RADDBGI_DataSectionTag tag; + RDI_U64 size; + RDI_DataSectionTag tag; }; typedef struct RDIM_DSections RDIM_DSections; @@ -810,7 +817,7 @@ struct RDIM_DSections { RDIM_DSectionNode *first; RDIM_DSectionNode *last; - RADDBGI_U32 count; + RDI_U32 count; }; //- rjf: bake string data structure @@ -821,8 +828,8 @@ struct RDIM_StringNode RDIM_StringNode *order_next; RDIM_StringNode *bucket_next; RDIM_String8 str; - RADDBGI_U64 hash; - RADDBGI_U32 idx; + RDI_U64 hash; + RDI_U32 idx; }; typedef struct RDIM_Strings RDIM_Strings; @@ -831,9 +838,9 @@ struct RDIM_Strings RDIM_StringNode *order_first; RDIM_StringNode *order_last; RDIM_StringNode **buckets; - RADDBGI_U64 buckets_count; - RADDBGI_U64 bucket_collision_count; - RADDBGI_U32 count; + RDI_U64 buckets_count; + RDI_U64 bucket_collision_count; + RDI_U32 count; }; //- rjf: index run baking data structure @@ -843,10 +850,10 @@ struct RDIM_IdxRunNode { RDIM_IdxRunNode *order_next; RDIM_IdxRunNode *bucket_next; - RADDBGI_U32 *idx_run; - RADDBGI_U64 hash; - RADDBGI_U32 count; - RADDBGI_U32 first_idx; + RDI_U32 *idx_run; + RDI_U64 hash; + RDI_U32 count; + RDI_U32 first_idx; }; typedef struct RDIM_IdxRuns RDIM_IdxRuns; @@ -855,10 +862,10 @@ struct RDIM_IdxRuns RDIM_IdxRunNode *order_first; RDIM_IdxRunNode *order_last; RDIM_IdxRunNode **buckets; - RADDBGI_U64 buckets_count; - RADDBGI_U64 bucket_collision_count; - RADDBGI_U32 count; - RADDBGI_U32 idx_count; + RDI_U64 buckets_count; + RDI_U64 bucket_collision_count; + RDI_U32 count; + RDI_U32 idx_count; }; //- rjf: source file & file path baking data structures @@ -873,7 +880,7 @@ struct RDIM_PathNode RDIM_PathNode *next_sibling; RDIM_String8 name; struct RDIM_SrcNode *src_file; - RADDBGI_U32 idx; + RDI_U32 idx; }; typedef struct RDIM_LineMapFragment RDIM_LineMapFragment; @@ -888,7 +895,7 @@ struct RDIM_SrcNode { RDIM_SrcNode *next; RDIM_PathNode *path_node; - RADDBGI_U32 idx; + RDI_U32 idx; RDIM_String8 normal_full_path; @@ -897,10 +904,10 @@ struct RDIM_SrcNode RDIM_LineMapFragment *last_fragment; // place to put the final baked version of this file's line map - RADDBGI_U32 line_map_nums_data_idx; - RADDBGI_U32 line_map_range_data_idx; - RADDBGI_U32 line_map_count; - RADDBGI_U32 line_map_voff_data_idx; + RDI_U32 line_map_nums_data_idx; + RDI_U32 line_map_range_data_idx; + RDI_U32 line_map_count; + RDI_U32 line_map_voff_data_idx; }; typedef struct RDIM_PathTree RDIM_PathTree; @@ -908,11 +915,11 @@ struct RDIM_PathTree { RDIM_PathNode *first; RDIM_PathNode *last; - RADDBGI_U32 count; + RDI_U32 count; RDIM_PathNode root; RDIM_SrcNode *src_first; RDIM_SrcNode *src_last; - RADDBGI_U32 src_count; + RDI_U32 src_count; }; //- rjf: line info baking data structures @@ -920,36 +927,36 @@ struct RDIM_PathTree typedef struct RDIM_LineRec RDIM_LineRec; struct RDIM_LineRec { - RADDBGI_U32 file_id; - RADDBGI_U32 line_num; - RADDBGI_U16 col_first; - RADDBGI_U16 col_opl; + RDI_U32 file_id; + RDI_U32 line_num; + RDI_U16 col_first; + RDI_U16 col_opl; }; typedef struct RDIM_UnitLinesCombined RDIM_UnitLinesCombined; struct RDIM_UnitLinesCombined { - RADDBGI_U64 *voffs; - RADDBGI_Line *lines; - RADDBGI_U16 *cols; - RADDBGI_U32 line_count; + RDI_U64 *voffs; + RDI_Line *lines; + RDI_U16 *cols; + RDI_U32 line_count; }; typedef struct RDIM_SrcLinesCombined RDIM_SrcLinesCombined; struct RDIM_SrcLinesCombined { - RADDBGI_U32 *line_nums; - RADDBGI_U32 *line_ranges; - RADDBGI_U64 *voffs; - RADDBGI_U32 line_count; - RADDBGI_U32 voff_count; + RDI_U32 *line_nums; + RDI_U32 *line_ranges; + RDI_U64 *voffs; + RDI_U32 line_count; + RDI_U32 voff_count; }; typedef struct RDIM_SrcLineMapVoffBlock RDIM_SrcLineMapVoffBlock; struct RDIM_SrcLineMapVoffBlock { RDIM_SrcLineMapVoffBlock *next; - RADDBGI_U64 voff; + RDI_U64 voff; }; typedef struct RDIM_SrcLineMapBucket RDIM_SrcLineMapBucket; @@ -957,10 +964,10 @@ struct RDIM_SrcLineMapBucket { RDIM_SrcLineMapBucket *order_next; RDIM_SrcLineMapBucket *hash_next; - RADDBGI_U32 line_num; + RDI_U32 line_num; RDIM_SrcLineMapVoffBlock *first_voff_block; RDIM_SrcLineMapVoffBlock *last_voff_block; - RADDBGI_U64 voff_count; + RDI_U64 voff_count; }; //- rjf: vmap baking data structure @@ -968,22 +975,22 @@ struct RDIM_SrcLineMapBucket typedef struct RDIM_VMap RDIM_VMap; struct RDIM_VMap { - RADDBGI_VMapEntry *vmap; // [count + 1] - RADDBGI_U32 count; + RDI_VMapEntry *vmap; // [count + 1] + RDI_U32 count; }; typedef struct RDIM_VMapMarker RDIM_VMapMarker; struct RDIM_VMapMarker { - RADDBGI_U32 idx; - RADDBGI_U32 begin_range; + RDI_U32 idx; + RDI_U32 begin_range; }; typedef struct RDIM_VMapRangeTracker RDIM_VMapRangeTracker; struct RDIM_VMapRangeTracker { RDIM_VMapRangeTracker *next; - RADDBGI_U32 idx; + RDI_U32 idx; }; //- rjf: type data baking types @@ -991,17 +998,17 @@ struct RDIM_VMapRangeTracker typedef struct RDIM_TypeData RDIM_TypeData; struct RDIM_TypeData { - RADDBGI_TypeNode *type_nodes; - RADDBGI_U32 type_node_count; + RDI_TypeNode *type_nodes; + RDI_U32 type_node_count; - RADDBGI_UDT *udts; - RADDBGI_U32 udt_count; + RDI_UDT *udts; + RDI_U32 udt_count; - RADDBGI_Member *members; - RADDBGI_U32 member_count; + RDI_Member *members; + RDI_U32 member_count; - RADDBGI_EnumMember *enum_members; - RADDBGI_U32 enum_member_count; + RDI_EnumMember *enum_members; + RDI_U32 enum_member_count; }; //- rjf: symbol data baking types @@ -1009,33 +1016,33 @@ struct RDIM_TypeData typedef struct RDIM_SymbolData RDIM_SymbolData; struct RDIM_SymbolData { - RADDBGI_GlobalVariable *global_variables; - RADDBGI_U32 global_variable_count; + RDI_GlobalVariable *global_variables; + RDI_U32 global_variable_count; RDIM_VMap *global_vmap; - RADDBGI_ThreadVariable *thread_variables; - RADDBGI_U32 thread_variable_count; + RDI_ThreadVariable *thread_variables; + RDI_U32 thread_variable_count; - RADDBGI_Procedure *procedures; - RADDBGI_U32 procedure_count; + RDI_Procedure *procedures; + RDI_U32 procedure_count; - RADDBGI_Scope *scopes; - RADDBGI_U32 scope_count; + RDI_Scope *scopes; + RDI_U32 scope_count; - RADDBGI_U64 *scope_voffs; - RADDBGI_U32 scope_voff_count; + RDI_U64 *scope_voffs; + RDI_U32 scope_voff_count; RDIM_VMap *scope_vmap; - RADDBGI_Local *locals; - RADDBGI_U32 local_count; + RDI_Local *locals; + RDI_U32 local_count; - RADDBGI_LocationBlock *location_blocks; - RADDBGI_U32 location_block_count; + RDI_LocationBlock *location_blocks; + RDI_U32 location_block_count; void *location_data; - RADDBGI_U32 location_data_size; + RDI_U32 location_data_size; }; //- rjf: name map baking types @@ -1052,16 +1059,16 @@ struct RDIM_NameMapSemiBucket { RDIM_NameMapSemiNode *first; RDIM_NameMapSemiNode *last; - RADDBGI_U64 count; + RDI_U64 count; }; typedef struct RDIM_NameMapBaked RDIM_NameMapBaked; struct RDIM_NameMapBaked { - RADDBGI_NameMapBucket *buckets; - RADDBGI_NameMapNode *nodes; - RADDBGI_U32 bucket_count; - RADDBGI_U32 node_count; + RDI_NameMapBucket *buckets; + RDI_NameMapNode *nodes; + RDI_U32 bucket_count; + RDI_U32 node_count; }; //- rjf: bundle baking context type @@ -1069,8 +1076,8 @@ struct RDIM_NameMapBaked typedef struct RDIM_BakeParams RDIM_BakeParams; struct RDIM_BakeParams { - RADDBGI_U64 strings_bucket_count; - RADDBGI_U64 idx_runs_bucket_count; + RDI_U64 strings_bucket_count; + RDI_U64 idx_runs_bucket_count; }; typedef struct RDIM_BakeCtx RDIM_BakeCtx; @@ -1087,10 +1094,10 @@ struct RDIM_BakeCtx //- rjf: memory operations #if !defined(RDIM_MEMSET_OVERRIDE) -RADDBGI_PROC void *rdim_memset_fallback(void *dst, RADDBGI_U8 c, RADDBGI_U64 size); +RDI_PROC void *rdim_memset_fallback(void *dst, RDI_U8 c, RDI_U64 size); #endif #if !defined(RDIM_MEMCPY_OVERRIDE) -RADDBGI_PROC void *rdim_memcpy_fallback(void *dst, void *src, RADDBGI_U64 size); +RDI_PROC void *rdim_memcpy_fallback(void *dst, void *src, RDI_U64 size); #endif #define rdim_memzero(ptr, size) rdim_memset((ptr), 0, (size)) #define rdim_memzero_struct(ptr) rdim_memset((ptr), 0, sizeof(*(ptr))) @@ -1098,206 +1105,206 @@ RADDBGI_PROC void *rdim_memcpy_fallback(void *dst, void *src, RADDBGI_U64 size); //- rjf: arenas #if !defined (RDIM_ARENA_OVERRIDE) -RADDBGI_PROC RDIM_Arena *rdim_arena_alloc_fallback(void); -RADDBGI_PROC void rdim_arena_release_fallback(RDIM_Arena *arena); -RADDBGI_PROC RADDBGI_U64 rdim_arena_pos_fallback(RDIM_Arena *arena); -RADDBGI_PROC void *rdim_arena_push_fallback(RDIM_Arena *arena, RADDBGI_U64 size); -RADDBGI_PROC void rdim_arena_pop_to_fallback(RDIM_Arena *arena, RADDBGI_U64 pos); +RDI_PROC RDIM_Arena *rdim_arena_alloc_fallback(void); +RDI_PROC void rdim_arena_release_fallback(RDIM_Arena *arena); +RDI_PROC RDI_U64 rdim_arena_pos_fallback(RDIM_Arena *arena); +RDI_PROC void *rdim_arena_push_fallback(RDIM_Arena *arena, RDI_U64 size); +RDI_PROC void rdim_arena_pop_to_fallback(RDIM_Arena *arena, RDI_U64 pos); #endif #define rdim_push_array_no_zero(a,T,c) (T*)rdim_arena_push((a), sizeof(T)*(c)) #define rdim_push_array(a,T,c) (T*)rdim_memzero(rdim_push_array_no_zero(a,T,c), sizeof(T)*(c)) //- rjf: thread-local scratch arenas #if !defined (RDIM_SCRATCH_OVERRIDE) -RADDBGI_PROC RDIM_Temp rdim_scratch_begin_fallback(RDIM_Arena **conflicts, RADDBGI_U64 conflicts_count); -RADDBGI_PROC void rdim_scratch_end_fallback(RDIM_Temp temp); +RDI_PROC RDIM_Temp rdim_scratch_begin_fallback(RDIM_Arena **conflicts, RDI_U64 conflicts_count); +RDI_PROC void rdim_scratch_end_fallback(RDIM_Temp temp); #endif //- rjf: strings -RADDBGI_PROC RDIM_String8 rdim_str8(RADDBGI_U8 *str, RADDBGI_U64 size); -RADDBGI_PROC RDIM_String8 rdim_str8_copy(RDIM_Arena *arena, RDIM_String8 src); -RADDBGI_PROC RDIM_String8 rdim_str8f(RDIM_Arena *arena, char *fmt, ...); -RADDBGI_PROC RDIM_String8 rdim_str8fv(RDIM_Arena *arena, char *fmt, va_list args); -RADDBGI_PROC RADDBGI_S32 rdim_str8_match(RDIM_String8 a, RDIM_String8 b, RDIM_StringMatchFlags flags); -#define rdim_str8_lit(S) rdim_str8((RADDBGI_U8*)(S), sizeof(S) - 1) -#define rdim_str8_struct(S) rdim_str8((RADDBGI_U8*)(S), sizeof(*(S))) +RDI_PROC RDIM_String8 rdim_str8(RDI_U8 *str, RDI_U64 size); +RDI_PROC RDIM_String8 rdim_str8_copy(RDIM_Arena *arena, RDIM_String8 src); +RDI_PROC RDIM_String8 rdim_str8f(RDIM_Arena *arena, char *fmt, ...); +RDI_PROC RDIM_String8 rdim_str8fv(RDIM_Arena *arena, char *fmt, va_list args); +RDI_PROC RDI_S32 rdim_str8_match(RDIM_String8 a, RDIM_String8 b, RDIM_StringMatchFlags flags); +#define rdim_str8_lit(S) rdim_str8((RDI_U8*)(S), sizeof(S) - 1) +#define rdim_str8_struct(S) rdim_str8((RDI_U8*)(S), sizeof(*(S))) //- rjf: string lists -RADDBGI_PROC void rdim_str8_list_push(RDIM_Arena *arena, RDIM_String8List *list, RDIM_String8 string); -RADDBGI_PROC RDIM_String8 rdim_str8_list_join(RDIM_Arena *arena, RDIM_String8List *list, RDIM_String8 sep); +RDI_PROC void rdim_str8_list_push(RDIM_Arena *arena, RDIM_String8List *list, RDIM_String8 string); +RDI_PROC RDIM_String8 rdim_str8_list_join(RDIM_Arena *arena, RDIM_String8List *list, RDIM_String8 sep); //- rjf: type lists -RADDBGI_PROC void rdim_type_list_push(RDIM_Arena *arena, RDIM_TypeList *list, RDIM_Type *type); +RDI_PROC void rdim_type_list_push(RDIM_Arena *arena, RDIM_TypeList *list, RDIM_Type *type); //- rjf: bytecode lists -RADDBGI_PROC void rdim_bytecode_push_op(RDIM_Arena *arena, RDIM_EvalBytecode *bytecode, RADDBGI_EvalOp op, RADDBGI_U64 p); -RADDBGI_PROC void rdim_bytecode_push_uconst(RDIM_Arena *arena, RDIM_EvalBytecode *bytecode, RADDBGI_U64 x); -RADDBGI_PROC void rdim_bytecode_push_sconst(RDIM_Arena *arena, RDIM_EvalBytecode *bytecode, RADDBGI_S64 x); -RADDBGI_PROC void rdim_bytecode_concat_in_place(RDIM_EvalBytecode *left_dst, RDIM_EvalBytecode *right_destroyed); +RDI_PROC void rdim_bytecode_push_op(RDIM_Arena *arena, RDIM_EvalBytecode *bytecode, RDI_EvalOp op, RDI_U64 p); +RDI_PROC void rdim_bytecode_push_uconst(RDIM_Arena *arena, RDIM_EvalBytecode *bytecode, RDI_U64 x); +RDI_PROC void rdim_bytecode_push_sconst(RDIM_Arena *arena, RDIM_EvalBytecode *bytecode, RDI_S64 x); +RDI_PROC void rdim_bytecode_concat_in_place(RDIM_EvalBytecode *left_dst, RDIM_EvalBytecode *right_destroyed); //- rjf: sortable range sorting -RADDBGI_PROC RDIM_SortKey* rdim_sort_key_array(RDIM_Arena *arena, RDIM_SortKey *keys, RADDBGI_U64 count); +RDI_PROC RDIM_SortKey* rdim_sort_key_array(RDIM_Arena *arena, RDIM_SortKey *keys, RDI_U64 count); //////////////////////////////// //~ rjf: Auxiliary Data Structure Functions //- rjf: u64 -> ptr map -RADDBGI_PROC void rdim_u64toptr_map_init(RDIM_Arena *arena, RDIM_U64ToPtrMap *map, RADDBGI_U64 bucket_count); -RADDBGI_PROC void rdim_u64toptr_map_lookup(RDIM_U64ToPtrMap *map, RADDBGI_U64 key, RADDBGI_U64 hash, RDIM_U64ToPtrLookup *lookup_out); -RADDBGI_PROC void rdim_u64toptr_map_insert(RDIM_Arena *arena, RDIM_U64ToPtrMap *map, RADDBGI_U64 key, RADDBGI_U64 hash, RDIM_U64ToPtrLookup *lookup, void *ptr); +RDI_PROC void rdim_u64toptr_map_init(RDIM_Arena *arena, RDIM_U64ToPtrMap *map, RDI_U64 bucket_count); +RDI_PROC void rdim_u64toptr_map_lookup(RDIM_U64ToPtrMap *map, RDI_U64 key, RDI_U64 hash, RDIM_U64ToPtrLookup *lookup_out); +RDI_PROC void rdim_u64toptr_map_insert(RDIM_Arena *arena, RDIM_U64ToPtrMap *map, RDI_U64 key, RDI_U64 hash, RDIM_U64ToPtrLookup *lookup, void *ptr); //- rjf: string8 -> ptr map -RADDBGI_PROC void rdim_str8toptr_map_init(RDIM_Arena *arena, RDIM_Str8ToPtrMap *map, RADDBGI_U64 bucket_count); -RADDBGI_PROC void*rdim_str8toptr_map_lookup(RDIM_Str8ToPtrMap *map, RDIM_String8 key, RADDBGI_U64 hash); -RADDBGI_PROC void rdim_str8toptr_map_insert(RDIM_Arena *arena, RDIM_Str8ToPtrMap *map, RDIM_String8 key, RADDBGI_U64 hash, void *ptr); +RDI_PROC void rdim_str8toptr_map_init(RDIM_Arena *arena, RDIM_Str8ToPtrMap *map, RDI_U64 bucket_count); +RDI_PROC void*rdim_str8toptr_map_lookup(RDIM_Str8ToPtrMap *map, RDIM_String8 key, RDI_U64 hash); +RDI_PROC void rdim_str8toptr_map_insert(RDIM_Arena *arena, RDIM_Str8ToPtrMap *map, RDIM_String8 key, RDI_U64 hash, void *ptr); //////////////////////////////// //~ rjf: Loose Debug Info Construction (Anything -> Loose) Functions //- rjf: root creation -RADDBGI_PROC RDIM_Root* rdim_root_alloc(RDIM_RootParams *params); -RADDBGI_PROC void rdim_root_release(RDIM_Root *root); +RDI_PROC RDIM_Root* rdim_root_alloc(RDIM_RootParams *params); +RDI_PROC void rdim_root_release(RDIM_Root *root); //- rjf: error accumulation -RADDBGI_PROC void rdim_push_error(RDIM_Root *root, RDIM_String8 string); -RADDBGI_PROC void rdim_push_errorf(RDIM_Root *root, char *fmt, ...); -RADDBGI_PROC RDIM_Error* rdim_first_error_from_root(RDIM_Root *root); +RDI_PROC void rdim_push_error(RDIM_Root *root, RDIM_String8 string); +RDI_PROC void rdim_push_errorf(RDIM_Root *root, char *fmt, ...); +RDI_PROC RDIM_Error* rdim_first_error_from_root(RDIM_Root *root); //- rjf: top-level info specification -RADDBGI_PROC void rdim_set_top_level_info(RDIM_Root *root, RDIM_TopLevelInfo *tli); +RDI_PROC void rdim_set_top_level_info(RDIM_Root *root, RDIM_TopLevelInfo *tli); //- rjf: binary section building -RADDBGI_PROC void rdim_add_binary_section(RDIM_Root *root, - RDIM_String8 name, RADDBGI_BinarySectionFlags flags, - RADDBGI_U64 voff_first, RADDBGI_U64 voff_opl, RADDBGI_U64 foff_first, - RADDBGI_U64 foff_opl); +RDI_PROC void rdim_add_binary_section(RDIM_Root *root, + RDIM_String8 name, RDI_BinarySectionFlags flags, + RDI_U64 voff_first, RDI_U64 voff_opl, RDI_U64 foff_first, + RDI_U64 foff_opl); //- rjf: unit info building -RADDBGI_PROC RDIM_Unit* rdim_unit_handle_from_user_id(RDIM_Root *root, RADDBGI_U64 unit_user_id, RADDBGI_U64 unit_user_id_hash); -RADDBGI_PROC void rdim_unit_set_info(RDIM_Root *root, RDIM_Unit *unit, RDIM_UnitInfo *info); -RADDBGI_PROC void rdim_unit_add_line_sequence(RDIM_Root *root, RDIM_Unit *unit, RDIM_LineSequence *line_sequence); -RADDBGI_PROC void rdim_unit_vmap_add_range(RDIM_Root *root, RDIM_Unit *unit, RADDBGI_U64 first, RADDBGI_U64 opl); +RDI_PROC RDIM_Unit* rdim_unit_handle_from_user_id(RDIM_Root *root, RDI_U64 unit_user_id, RDI_U64 unit_user_id_hash); +RDI_PROC void rdim_unit_set_info(RDIM_Root *root, RDIM_Unit *unit, RDIM_UnitInfo *info); +RDI_PROC void rdim_unit_add_line_sequence(RDIM_Root *root, RDIM_Unit *unit, RDIM_LineSequence *line_sequence); +RDI_PROC void rdim_unit_vmap_add_range(RDIM_Root *root, RDIM_Unit *unit, RDI_U64 first, RDI_U64 opl); //- rjf: type info lookups/reservations -RADDBGI_PROC RDIM_Type* rdim_type_from_id(RDIM_Root *root, RADDBGI_U64 type_user_id, RADDBGI_U64 type_user_id_hash); -RADDBGI_PROC RDIM_Reservation* rdim_type_reserve_id(RDIM_Root *root, RADDBGI_U64 type_user_id, RADDBGI_U64 type_user_id_hash); -RADDBGI_PROC void rdim_type_fill_id(RDIM_Root *root, RDIM_Reservation *res, RDIM_Type *type); +RDI_PROC RDIM_Type* rdim_type_from_id(RDIM_Root *root, RDI_U64 type_user_id, RDI_U64 type_user_id_hash); +RDI_PROC RDIM_Reservation* rdim_type_reserve_id(RDIM_Root *root, RDI_U64 type_user_id, RDI_U64 type_user_id_hash); +RDI_PROC void rdim_type_fill_id(RDIM_Root *root, RDIM_Reservation *res, RDIM_Type *type); //- rjf: nil/singleton types -RADDBGI_PROC RADDBGI_S32 rdim_type_is_unhandled_nil(RDIM_Root *root, RDIM_Type *type); -RADDBGI_PROC RDIM_Type* rdim_type_handled_nil(RDIM_Root *root); -RADDBGI_PROC RDIM_Type* rdim_type_nil(RDIM_Root *root); -RADDBGI_PROC RDIM_Type* rdim_type_variadic(RDIM_Root *root); +RDI_PROC RDI_S32 rdim_type_is_unhandled_nil(RDIM_Root *root, RDIM_Type *type); +RDI_PROC RDIM_Type* rdim_type_handled_nil(RDIM_Root *root); +RDI_PROC RDIM_Type* rdim_type_nil(RDIM_Root *root); +RDI_PROC RDIM_Type* rdim_type_variadic(RDIM_Root *root); //- rjf: base type info constructors -RADDBGI_PROC RDIM_Type* rdim_type_new(RDIM_Root *root); -RADDBGI_PROC RDIM_TypeUDT* rdim_type_udt_from_any_type(RDIM_Root *root, RDIM_Type *type); -RADDBGI_PROC RDIM_TypeUDT* rdim_type_udt_from_record_type(RDIM_Root *root, RDIM_Type *type); +RDI_PROC RDIM_Type* rdim_type_new(RDIM_Root *root); +RDI_PROC RDIM_TypeUDT* rdim_type_udt_from_any_type(RDIM_Root *root, RDIM_Type *type); +RDI_PROC RDIM_TypeUDT* rdim_type_udt_from_record_type(RDIM_Root *root, RDIM_Type *type); //- rjf: basic/operator type construction helpers -RADDBGI_PROC RDIM_Type* rdim_type_basic(RDIM_Root *root, RADDBGI_TypeKind type_kind, RDIM_String8 name); -RADDBGI_PROC RDIM_Type* rdim_type_modifier(RDIM_Root *root, RDIM_Type *direct_type, RADDBGI_TypeModifierFlags flags); -RADDBGI_PROC RDIM_Type* rdim_type_bitfield(RDIM_Root *root, RDIM_Type *direct_type, RADDBGI_U32 bit_off, RADDBGI_U32 bit_count); -RADDBGI_PROC RDIM_Type* rdim_type_pointer(RDIM_Root *root, RDIM_Type *direct_type, RADDBGI_TypeKind ptr_type_kind); -RADDBGI_PROC RDIM_Type* rdim_type_array(RDIM_Root *root, RDIM_Type *direct_type, RADDBGI_U64 count); -RADDBGI_PROC RDIM_Type* rdim_type_proc(RDIM_Root *root, RDIM_Type *return_type, struct RDIM_TypeList *params); -RADDBGI_PROC RDIM_Type* rdim_type_method(RDIM_Root *root, RDIM_Type *this_type, RDIM_Type *return_type, struct RDIM_TypeList *params); +RDI_PROC RDIM_Type* rdim_type_basic(RDIM_Root *root, RDI_TypeKind type_kind, RDIM_String8 name); +RDI_PROC RDIM_Type* rdim_type_modifier(RDIM_Root *root, RDIM_Type *direct_type, RDI_TypeModifierFlags flags); +RDI_PROC RDIM_Type* rdim_type_bitfield(RDIM_Root *root, RDIM_Type *direct_type, RDI_U32 bit_off, RDI_U32 bit_count); +RDI_PROC RDIM_Type* rdim_type_pointer(RDIM_Root *root, RDIM_Type *direct_type, RDI_TypeKind ptr_type_kind); +RDI_PROC RDIM_Type* rdim_type_array(RDIM_Root *root, RDIM_Type *direct_type, RDI_U64 count); +RDI_PROC RDIM_Type* rdim_type_proc(RDIM_Root *root, RDIM_Type *return_type, struct RDIM_TypeList *params); +RDI_PROC RDIM_Type* rdim_type_method(RDIM_Root *root, RDIM_Type *this_type, RDIM_Type *return_type, struct RDIM_TypeList *params); //- rjf: udt type constructors -RADDBGI_PROC RDIM_Type* rdim_type_udt(RDIM_Root *root, RADDBGI_TypeKind record_type_kind, RDIM_String8 name, RADDBGI_U64 size); -RADDBGI_PROC RDIM_Type* rdim_type_enum(RDIM_Root *root, RDIM_Type *direct_type, RDIM_String8 name); -RADDBGI_PROC RDIM_Type* rdim_type_alias(RDIM_Root *root, RDIM_Type *direct_type, RDIM_String8 name); -RADDBGI_PROC RDIM_Type* rdim_type_incomplete(RDIM_Root *root, RADDBGI_TypeKind type_kind, RDIM_String8 name); +RDI_PROC RDIM_Type* rdim_type_udt(RDIM_Root *root, RDI_TypeKind record_type_kind, RDIM_String8 name, RDI_U64 size); +RDI_PROC RDIM_Type* rdim_type_enum(RDIM_Root *root, RDIM_Type *direct_type, RDIM_String8 name); +RDI_PROC RDIM_Type* rdim_type_alias(RDIM_Root *root, RDIM_Type *direct_type, RDIM_String8 name); +RDI_PROC RDIM_Type* rdim_type_incomplete(RDIM_Root *root, RDI_TypeKind type_kind, RDIM_String8 name); //- rjf: type member building -RADDBGI_PROC void rdim_type_add_member_data_field(RDIM_Root *root, RDIM_Type *record_type, RDIM_String8 name, RDIM_Type *mem_type, RADDBGI_U32 off); -RADDBGI_PROC void rdim_type_add_member_static_data(RDIM_Root *root, RDIM_Type *record_type, RDIM_String8 name, RDIM_Type *mem_type); -RADDBGI_PROC void rdim_type_add_member_method(RDIM_Root *root, RDIM_Type *record_type, RDIM_String8 name, RDIM_Type *mem_type); -RADDBGI_PROC void rdim_type_add_member_static_method(RDIM_Root *root, RDIM_Type *record_type, RDIM_String8 name, RDIM_Type *mem_type); -RADDBGI_PROC void rdim_type_add_member_virtual_method(RDIM_Root *root, RDIM_Type *record_type, RDIM_String8 name, RDIM_Type *mem_type); -RADDBGI_PROC void rdim_type_add_member_base(RDIM_Root *root, RDIM_Type *record_type, RDIM_Type *base_type, RADDBGI_U32 off); -RADDBGI_PROC void rdim_type_add_member_virtual_base(RDIM_Root *root, RDIM_Type *record_type, RDIM_Type *base_type, RADDBGI_U32 vptr_off, RADDBGI_U32 vtable_off); -RADDBGI_PROC void rdim_type_add_member_nested_type(RDIM_Root *root, RDIM_Type *record_type, RDIM_Type *nested_type); -RADDBGI_PROC void rdim_type_add_enum_val(RDIM_Root *root, RDIM_Type *enum_type, RDIM_String8 name, RADDBGI_U64 val); +RDI_PROC void rdim_type_add_member_data_field(RDIM_Root *root, RDIM_Type *record_type, RDIM_String8 name, RDIM_Type *mem_type, RDI_U32 off); +RDI_PROC void rdim_type_add_member_static_data(RDIM_Root *root, RDIM_Type *record_type, RDIM_String8 name, RDIM_Type *mem_type); +RDI_PROC void rdim_type_add_member_method(RDIM_Root *root, RDIM_Type *record_type, RDIM_String8 name, RDIM_Type *mem_type); +RDI_PROC void rdim_type_add_member_static_method(RDIM_Root *root, RDIM_Type *record_type, RDIM_String8 name, RDIM_Type *mem_type); +RDI_PROC void rdim_type_add_member_virtual_method(RDIM_Root *root, RDIM_Type *record_type, RDIM_String8 name, RDIM_Type *mem_type); +RDI_PROC void rdim_type_add_member_base(RDIM_Root *root, RDIM_Type *record_type, RDIM_Type *base_type, RDI_U32 off); +RDI_PROC void rdim_type_add_member_virtual_base(RDIM_Root *root, RDIM_Type *record_type, RDIM_Type *base_type, RDI_U32 vptr_off, RDI_U32 vtable_off); +RDI_PROC void rdim_type_add_member_nested_type(RDIM_Root *root, RDIM_Type *record_type, RDIM_Type *nested_type); +RDI_PROC void rdim_type_add_enum_val(RDIM_Root *root, RDIM_Type *enum_type, RDIM_String8 name, RDI_U64 val); //- rjf: type source coordinate specifications -RADDBGI_PROC void rdim_type_set_source_coordinates(RDIM_Root *root, RDIM_Type *defined_type, RDIM_String8 source_path, RADDBGI_U32 line, RADDBGI_U32 col); +RDI_PROC void rdim_type_set_source_coordinates(RDIM_Root *root, RDIM_Type *defined_type, RDIM_String8 source_path, RDI_U32 line, RDI_U32 col); //- rjf: symbol info building -RADDBGI_PROC RDIM_Symbol* rdim_symbol_handle_from_user_id(RDIM_Root *root, RADDBGI_U64 symbol_user_id, RADDBGI_U64 symbol_user_id_hash); -RADDBGI_PROC void rdim_symbol_set_info(RDIM_Root *root, RDIM_Symbol *symbol, RDIM_SymbolInfo *info); +RDI_PROC RDIM_Symbol* rdim_symbol_handle_from_user_id(RDIM_Root *root, RDI_U64 symbol_user_id, RDI_U64 symbol_user_id_hash); +RDI_PROC void rdim_symbol_set_info(RDIM_Root *root, RDIM_Symbol *symbol, RDIM_SymbolInfo *info); //- rjf: scope info building -RADDBGI_PROC RDIM_Scope *rdim_scope_handle_from_user_id(RDIM_Root *root, RADDBGI_U64 scope_user_id, RADDBGI_U64 scope_user_id_hash); -RADDBGI_PROC void rdim_scope_set_parent(RDIM_Root *root, RDIM_Scope *scope, RDIM_Scope *parent); -RADDBGI_PROC void rdim_scope_add_voff_range(RDIM_Root *root, RDIM_Scope *scope, RADDBGI_U64 voff_first, RADDBGI_U64 voff_opl); -RADDBGI_PROC void rdim_scope_recursive_set_symbol(RDIM_Scope *scope, RDIM_Symbol *symbol); +RDI_PROC RDIM_Scope *rdim_scope_handle_from_user_id(RDIM_Root *root, RDI_U64 scope_user_id, RDI_U64 scope_user_id_hash); +RDI_PROC void rdim_scope_set_parent(RDIM_Root *root, RDIM_Scope *scope, RDIM_Scope *parent); +RDI_PROC void rdim_scope_add_voff_range(RDIM_Root *root, RDIM_Scope *scope, RDI_U64 voff_first, RDI_U64 voff_opl); +RDI_PROC void rdim_scope_recursive_set_symbol(RDIM_Scope *scope, RDIM_Symbol *symbol); //- rjf: local info building -RADDBGI_PROC RDIM_Local* rdim_local_handle_from_user_id(RDIM_Root *root, RADDBGI_U64 local_user_id, RADDBGI_U64 local_user_id_hash); -RADDBGI_PROC void rdim_local_set_basic_info(RDIM_Root *root, RDIM_Local *local, RDIM_LocalInfo *info); -RADDBGI_PROC RDIM_LocationSet* rdim_location_set_from_local(RDIM_Root *root, RDIM_Local *local); +RDI_PROC RDIM_Local* rdim_local_handle_from_user_id(RDIM_Root *root, RDI_U64 local_user_id, RDI_U64 local_user_id_hash); +RDI_PROC void rdim_local_set_basic_info(RDIM_Root *root, RDIM_Local *local, RDIM_LocalInfo *info); +RDI_PROC RDIM_LocationSet* rdim_location_set_from_local(RDIM_Root *root, RDIM_Local *local); //- rjf: location info building -RADDBGI_PROC void rdim_location_set_add_case(RDIM_Root *root, RDIM_LocationSet *locset, RADDBGI_U64 voff_first, RADDBGI_U64 voff_opl, RDIM_Location *location); -RADDBGI_PROC RDIM_Location* rdim_location_addr_bytecode_stream(RDIM_Root *root, struct RDIM_EvalBytecode *bytecode); -RADDBGI_PROC RDIM_Location* rdim_location_val_bytecode_stream(RDIM_Root *root, struct RDIM_EvalBytecode *bytecode); -RADDBGI_PROC RDIM_Location* rdim_location_addr_reg_plus_u16(RDIM_Root *root, RADDBGI_U8 reg_code, RADDBGI_U16 offset); -RADDBGI_PROC RDIM_Location* rdim_location_addr_addr_reg_plus_u16(RDIM_Root *root, RADDBGI_U8 reg_code, RADDBGI_U16 offset); -RADDBGI_PROC RDIM_Location* rdim_location_val_reg(RDIM_Root *root, RADDBGI_U8 reg_code); +RDI_PROC void rdim_location_set_add_case(RDIM_Root *root, RDIM_LocationSet *locset, RDI_U64 voff_first, RDI_U64 voff_opl, RDIM_Location *location); +RDI_PROC RDIM_Location* rdim_location_addr_bytecode_stream(RDIM_Root *root, struct RDIM_EvalBytecode *bytecode); +RDI_PROC RDIM_Location* rdim_location_val_bytecode_stream(RDIM_Root *root, struct RDIM_EvalBytecode *bytecode); +RDI_PROC RDIM_Location* rdim_location_addr_reg_plus_u16(RDIM_Root *root, RDI_U8 reg_code, RDI_U16 offset); +RDI_PROC RDIM_Location* rdim_location_addr_addr_reg_plus_u16(RDIM_Root *root, RDI_U8 reg_code, RDI_U16 offset); +RDI_PROC RDIM_Location* rdim_location_val_reg(RDIM_Root *root, RDI_U8 reg_code); //- rjf: name map building -RADDBGI_PROC RDIM_NameMap* rdim_name_map_for_kind(RDIM_Root *root, RADDBGI_NameMapKind kind); -RADDBGI_PROC void rdim_name_map_add_pair(RDIM_Root *root, RDIM_NameMap *map, RDIM_String8 name, RADDBGI_U32 idx); +RDI_PROC RDIM_NameMap* rdim_name_map_for_kind(RDIM_Root *root, RDI_NameMapKind kind); +RDI_PROC void rdim_name_map_add_pair(RDIM_Root *root, RDIM_NameMap *map, RDIM_String8 name, RDI_U32 idx); //////////////////////////////// //~ rjf: Debug Info Baking (Loose -> Tight) Functions //- rjf: bake context construction -RADDBGI_PROC RDIM_BakeCtx* rdim_bake_ctx_begin(RDIM_BakeParams *params); -RADDBGI_PROC void rdim_bake_ctx_release(RDIM_BakeCtx *bake_ctx); +RDI_PROC RDIM_BakeCtx* rdim_bake_ctx_begin(RDIM_BakeParams *params); +RDI_PROC void rdim_bake_ctx_release(RDIM_BakeCtx *bake_ctx); //- rjf: string baking -RADDBGI_PROC RADDBGI_U32 rdim_string(RDIM_BakeCtx *bctx, RDIM_String8 str); +RDI_PROC RDI_U32 rdim_string(RDIM_BakeCtx *bctx, RDIM_String8 str); //- rjf: idx run baking -RADDBGI_PROC RADDBGI_U64 rdim_idx_run_hash(RADDBGI_U32 *idx_run, RADDBGI_U32 count); -RADDBGI_PROC RADDBGI_U32 rdim_idx_run(RDIM_BakeCtx *bctx, RADDBGI_U32 *idx_run, RADDBGI_U32 count); +RDI_PROC RDI_U64 rdim_idx_run_hash(RDI_U32 *idx_run, RDI_U32 count); +RDI_PROC RDI_U32 rdim_idx_run(RDIM_BakeCtx *bctx, RDI_U32 *idx_run, RDI_U32 count); //- rjf: data section baking -RADDBGI_PROC RADDBGI_U32 rdim_dsection(RDIM_Arena *arena, RDIM_DSections *dss, void *data, RADDBGI_U64 size, RADDBGI_DataSectionTag tag); +RDI_PROC RDI_U32 rdim_dsection(RDIM_Arena *arena, RDIM_DSections *dss, void *data, RDI_U64 size, RDI_DataSectionTag tag); //- rjf: paths baking -RADDBGI_PROC RDIM_String8 rdim_normal_string_from_path_node(RDIM_Arena *arena, RDIM_PathNode *node); -RADDBGI_PROC void rdim_normal_string_from_path_node_build(RDIM_Arena *arena, RDIM_PathNode *node, RDIM_String8List *out); -RADDBGI_PROC RDIM_PathNode* rdim_paths_new_node(RDIM_BakeCtx *bctx); -RADDBGI_PROC RDIM_PathNode* rdim_paths_sub_path(RDIM_BakeCtx *bctx, RDIM_PathNode *dir, RDIM_String8 sub_dir); -RADDBGI_PROC RDIM_PathNode* rdim_paths_node_from_path(RDIM_BakeCtx *bctx, RDIM_String8 path); -RADDBGI_PROC RADDBGI_U32 rdim_paths_idx_from_path(RDIM_BakeCtx *bctx, RDIM_String8 path); -RADDBGI_PROC RDIM_SrcNode* rdim_paths_new_src_node(RDIM_BakeCtx *bctx); -RADDBGI_PROC RDIM_SrcNode* rdim_paths_src_node_from_path_node(RDIM_BakeCtx *bctx, RDIM_PathNode *path_node); +RDI_PROC RDIM_String8 rdim_normal_string_from_path_node(RDIM_Arena *arena, RDIM_PathNode *node); +RDI_PROC void rdim_normal_string_from_path_node_build(RDIM_Arena *arena, RDIM_PathNode *node, RDIM_String8List *out); +RDI_PROC RDIM_PathNode* rdim_paths_new_node(RDIM_BakeCtx *bctx); +RDI_PROC RDIM_PathNode* rdim_paths_sub_path(RDIM_BakeCtx *bctx, RDIM_PathNode *dir, RDIM_String8 sub_dir); +RDI_PROC RDIM_PathNode* rdim_paths_node_from_path(RDIM_BakeCtx *bctx, RDIM_String8 path); +RDI_PROC RDI_U32 rdim_paths_idx_from_path(RDIM_BakeCtx *bctx, RDIM_String8 path); +RDI_PROC RDIM_SrcNode* rdim_paths_new_src_node(RDIM_BakeCtx *bctx); +RDI_PROC RDIM_SrcNode* rdim_paths_src_node_from_path_node(RDIM_BakeCtx *bctx, RDIM_PathNode *path_node); //- rjf: per-unit line info baking -RADDBGI_PROC RDIM_UnitLinesCombined* rdim_unit_combine_lines(RDIM_Arena *arena, RDIM_BakeCtx *bctx, RDIM_LineSequenceNode *first_seq); +RDI_PROC RDIM_UnitLinesCombined* rdim_unit_combine_lines(RDIM_Arena *arena, RDIM_BakeCtx *bctx, RDIM_LineSequenceNode *first_seq); //- rjf: per-src line info baking -RADDBGI_PROC RDIM_SrcLinesCombined* rdim_source_combine_lines(RDIM_Arena *arena, RDIM_LineMapFragment *first); +RDI_PROC RDIM_SrcLinesCombined* rdim_source_combine_lines(RDIM_Arena *arena, RDIM_LineMapFragment *first); //- rjf: vmap baking -RADDBGI_PROC RDIM_VMap* rdim_vmap_from_markers(RDIM_Arena *arena, RDIM_VMapMarker *markers, RDIM_SortKey *keys, RADDBGI_U64 marker_count); -RADDBGI_PROC RDIM_VMap* rdim_vmap_from_unit_ranges(RDIM_Arena *arena, RDIM_UnitVMapRange *first, RADDBGI_U64 count); +RDI_PROC RDIM_VMap* rdim_vmap_from_markers(RDIM_Arena *arena, RDIM_VMapMarker *markers, RDIM_SortKey *keys, RDI_U64 marker_count); +RDI_PROC RDIM_VMap* rdim_vmap_from_unit_ranges(RDIM_Arena *arena, RDIM_UnitVMapRange *first, RDI_U64 count); //- rjf: type info baking -RADDBGI_PROC RADDBGI_U32* rdim_idx_run_from_types(RDIM_Arena *arena, RDIM_Type **types, RADDBGI_U32 count); -RADDBGI_PROC RDIM_TypeData* rdim_type_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx); +RDI_PROC RDI_U32* rdim_idx_run_from_types(RDIM_Arena *arena, RDIM_Type **types, RDI_U32 count); +RDI_PROC RDIM_TypeData* rdim_type_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx); //- rjf: symbol data baking -RADDBGI_PROC RDIM_SymbolData* rdim_symbol_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx); +RDI_PROC RDIM_SymbolData* rdim_symbol_data_combine(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx); //- rjf: name map baking -RADDBGI_PROC RDIM_NameMapBaked* rdim_name_map_bake(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx, RDIM_NameMap *map); +RDI_PROC RDIM_NameMapBaked* rdim_name_map_bake(RDIM_Arena *arena, RDIM_Root *root, RDIM_BakeCtx *bctx, RDIM_NameMap *map); //- rjf: top-level baking entry point -RADDBGI_PROC void rdim_bake_file(RDIM_Arena *arena, RDIM_Root *root, RDIM_String8List *out); +RDI_PROC void rdim_bake_file(RDIM_Arena *arena, RDIM_Root *root, RDIM_String8List *out); -#endif // RADDBGI_MAKE_H +#endif // RDI_MAKE_H diff --git a/src/raddbgi_dump/raddbgi_dump.c b/src/raddbgi_dump/raddbgi_dump.c index cb878ede..fbc18af4 100644 --- a/src/raddbgi_dump/raddbgi_dump.c +++ b/src/raddbgi_dump/raddbgi_dump.c @@ -161,12 +161,12 @@ main(int argc, char **argv){ // will we try to parse an input file B32 try_parse_input = (params->errors.node_count == 0); - RADDBGI_ParseStatus parse_status = RADDBGI_ParseStatus_Good; - RADDBGI_Parsed raddbg__ = {0}; - RADDBGI_Parsed *raddbg = 0; + RDI_ParseStatus parse_status = RDI_ParseStatus_Good; + RDI_Parsed raddbg__ = {0}; + RDI_Parsed *raddbg = 0; if (try_parse_input){ - parse_status = raddbgi_parse(params->input_data.str, params->input_data.size, &raddbg__); - if (parse_status == RADDBGI_ParseStatus_Good){ + parse_status = rdi_parse(params->input_data.str, params->input_data.size, &raddbg__); + if (parse_status == RDI_ParseStatus_Good){ raddbg = &raddbg__; } } @@ -183,24 +183,24 @@ main(int argc, char **argv){ // DATA SECTIONS if (raddbg->dsecs != 0 && params->dump_data_sections){ str8_list_pushf(arena, &dump, "# DATA SECTIONS:\n"); - raddbgi_stringize_data_sections(arena, &dump, raddbg, 1); + rdi_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"); - raddbgi_stringize_top_level_info(arena, &dump, raddbg, raddbg->top_level_info, 1); + rdi_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"); - RADDBGI_BinarySection *ptr = raddbg->binary_sections; + RDI_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); - raddbgi_stringize_binary_section(arena, &dump, raddbg, ptr, 2); + rdi_stringize_binary_section(arena, &dump, raddbg, ptr, 2); str8_list_push(arena, &dump, str8_lit("\n")); } str8_list_push(arena, &dump, str8_lit("\n")); @@ -208,17 +208,17 @@ main(int argc, char **argv){ // FILE PATHS if (raddbg->file_paths != 0 && params->dump_file_paths){ - RADDBGI_FilePathBundle file_path_bundle = {0}; + RDI_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"); - RADDBGI_FilePathNode *ptr = raddbg->file_paths; + RDI_FilePathNode *ptr = raddbg->file_paths; for (U32 i = 0; i < raddbg->file_paths_count; i += 1, ptr += 1){ if (ptr->parent_path_node == 0){ - raddbgi_stringize_file_path(arena, &dump, raddbg, &file_path_bundle, ptr, 1); + rdi_stringize_file_path(arena, &dump, raddbg, &file_path_bundle, ptr, 1); } } str8_list_push(arena, &dump, str8_lit("\n")); @@ -227,10 +227,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"); - RADDBGI_SourceFile *ptr = raddbg->source_files; + RDI_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); - raddbgi_stringize_source_file(arena, &dump, raddbg, ptr, 2); + rdi_stringize_source_file(arena, &dump, raddbg, ptr, 2); str8_list_push(arena, &dump, str8_lit("\n")); } str8_list_push(arena, &dump, str8_lit("\n")); @@ -239,10 +239,10 @@ main(int argc, char **argv){ // UNITS if (raddbg->units != 0 && params->dump_units){ str8_list_pushf(arena, &dump, "# UNITS\n"); - RADDBGI_Unit *ptr = raddbg->units; + RDI_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); - raddbgi_stringize_unit(arena, &dump, raddbg, ptr, 2); + rdi_stringize_unit(arena, &dump, raddbg, ptr, 2); str8_list_push(arena, &dump, str8_lit("\n")); } str8_list_push(arena, &dump, str8_lit("\n")); @@ -251,7 +251,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"); - RADDBGI_VMapEntry *ptr = raddbg->unit_vmap; + RDI_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); } @@ -261,10 +261,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"); - RADDBGI_TypeNode *ptr = raddbg->type_nodes; + RDI_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); - raddbgi_stringize_type_node(arena, &dump, raddbg, ptr, 2); + rdi_stringize_type_node(arena, &dump, raddbg, ptr, 2); str8_list_push(arena, &dump, str8_lit("\n")); } str8_list_push(arena, &dump, str8_lit("\n")); @@ -272,7 +272,7 @@ main(int argc, char **argv){ // UDT DATA if (raddbg->udts != 0 && params->dump_udt_data){ - RADDBGI_UDTMemberBundle member_bundle = {0}; + RDI_UDTMemberBundle member_bundle = {0}; { member_bundle.members = raddbg->members; member_bundle.enum_members = raddbg->enum_members; @@ -281,10 +281,10 @@ main(int argc, char **argv){ } str8_list_pushf(arena, &dump, "# UDTS:\n"); - RADDBGI_UDT *ptr = raddbg->udts; + RDI_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); - raddbgi_stringize_udt(arena, &dump, raddbg, &member_bundle, ptr, 2); + rdi_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")); @@ -293,10 +293,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"); - RADDBGI_GlobalVariable *ptr = raddbg->global_variables; + RDI_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); - raddbgi_stringize_global_variable(arena, &dump, raddbg, ptr, 2); + rdi_stringize_global_variable(arena, &dump, raddbg, ptr, 2); str8_list_push(arena, &dump, str8_lit("\n")); } str8_list_push(arena, &dump, str8_lit("\n")); @@ -305,7 +305,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"); - RADDBGI_VMapEntry *ptr = raddbg->global_vmap; + RDI_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); } @@ -315,10 +315,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"); - RADDBGI_ThreadVariable *ptr = raddbg->thread_variables; + RDI_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); - raddbgi_stringize_thread_variable(arena, &dump, raddbg, ptr, 2); + rdi_stringize_thread_variable(arena, &dump, raddbg, ptr, 2); str8_list_push(arena, &dump, str8_lit("\n")); } str8_list_push(arena, &dump, str8_lit("\n")); @@ -327,10 +327,10 @@ main(int argc, char **argv){ // PROCEDURES if (raddbg->procedures != 0 && params->dump_procedures){ str8_list_pushf(arena, &dump, "# PROCEDURES:\n"); - RADDBGI_Procedure *ptr = raddbg->procedures; + RDI_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); - raddbgi_stringize_procedure(arena, &dump, raddbg, ptr, 2); + rdi_stringize_procedure(arena, &dump, raddbg, ptr, 2); str8_list_push(arena, &dump, str8_lit("\n")); } str8_list_push(arena, &dump, str8_lit("\n")); @@ -338,7 +338,7 @@ main(int argc, char **argv){ // SCOPES if (raddbg->scopes != 0 && params->dump_scopes){ - RADDBGI_ScopeBundle scope_bundle = {0}; + RDI_ScopeBundle scope_bundle = {0}; { scope_bundle.scopes = raddbg->scopes; scope_bundle.scope_count = raddbg->scopes_count; @@ -353,10 +353,10 @@ main(int argc, char **argv){ } str8_list_pushf(arena, &dump, "# SCOPES:\n"); - RADDBGI_Scope *ptr = raddbg->scopes; + RDI_Scope *ptr = raddbg->scopes; for (U32 i = 0; i < raddbg->scopes_count; i += 1, ptr += 1){ if (ptr->parent_scope_idx == 0){ - raddbgi_stringize_scope(arena, &dump, raddbg, &scope_bundle, ptr, 1); + rdi_stringize_scope(arena, &dump, raddbg, &scope_bundle, ptr, 1); str8_list_push(arena, &dump, str8_lit("\n")); } } @@ -366,7 +366,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"); - RADDBGI_VMapEntry *ptr = raddbg->scope_vmap; + RDI_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); } @@ -376,33 +376,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"); - RADDBGI_NameMap *ptr = raddbg->name_maps; + RDI_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); - RADDBGI_ParsedNameMap name_map = {0}; - raddbgi_name_map_parse(raddbg, ptr, &name_map); + RDI_ParsedNameMap name_map = {0}; + rdi_name_map_parse(raddbg, ptr, &name_map); - RADDBGI_NameMapBucket *bucket = name_map.buckets; + RDI_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); - RADDBGI_NameMapNode *node = name_map.nodes + bucket->first_node; - RADDBGI_NameMapNode *node_opl = node + bucket->node_count; + RDI_NameMapNode *node = name_map.nodes + bucket->first_node; + RDI_NameMapNode *node_opl = node + bucket->node_count; for (; node < node_opl; node += 1){ String8 string = {0}; - string.str = raddbgi_string_from_idx(raddbg, node->string_idx, &string.size); + string.str = rdi_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{ - 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); + RDI_U32 idx_count = 0; + RDI_U32 *idx_run = + rdi_idx_run_from_first_count(raddbg, node->match_idx_or_idx_run_first, + node->match_count, &idx_count); if (idx_count > 0){ - RADDBGI_U32 last = idx_count - 1; + RDI_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 4b555ddd..c7b43265 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 RADDBGI_DUMP_H -#define RADDBGI_DUMP_H +#ifndef RDI_DUMP_H +#define RDI_DUMP_H //////////////////////////////// //~ Program Parameters Type @@ -42,4 +42,4 @@ typedef struct RADDBGIDUMP_Params{ static RADDBGIDUMP_Params *raddbgidump_params_from_cmd_line(Arena *arena, CmdLine *cmdline); -#endif //RADDBGI_DUMP_H +#endif //RDI_DUMP_H diff --git a/src/raddbgi_dump/raddbgi_stringize.c b/src/raddbgi_dump/raddbgi_stringize.c index a2ef8976..b87898fa 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 -raddbgi_string_from_data_section_tag(RADDBGI_DataSectionTag tag){ +rdi_string_from_data_section_tag(RDI_DataSectionTag tag){ String8 result = {0}; switch (tag){ #define X(N,C) case C: result = str8_lit(#N); break; #define Y(N) - RADDBGI_DataSectionTagXList(X,Y) + RDI_DataSectionTagXList(X,Y) #undef X #undef Y } @@ -18,36 +18,36 @@ raddbgi_string_from_data_section_tag(RADDBGI_DataSectionTag tag){ } static String8 -raddbgi_string_from_arch(RADDBGI_Arch arch){ +rdi_string_from_arch(RDI_Arch arch){ String8 result = {0}; switch (arch){ default: result = str8_lit(""); break; - case RADDBGI_Arch_X86: result = str8_lit("x86"); break; - case RADDBGI_Arch_X64: result = str8_lit("x64"); break; + case RDI_Arch_X86: result = str8_lit("x86"); break; + case RDI_Arch_X64: result = str8_lit("x64"); break; } return(result); } static String8 -raddbgi_string_from_language(RADDBGI_Language language){ +rdi_string_from_language(RDI_Language language){ String8 result = {0}; switch (language){ #define X(name,code) case code: result = str8_lit(#name); break; - RADDBGI_LanguageXList(X) + RDI_LanguageXList(X) #undef X } return(result); } static String8 -raddbgi_string_from_type_kind(RADDBGI_TypeKind type_kind){ +rdi_string_from_type_kind(RDI_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) - RADDBGI_TypeKindXList(X,XZ,Y) + RDI_TypeKindXList(X,XZ,Y) #undef X #undef XZ #undef Y @@ -56,24 +56,24 @@ raddbgi_string_from_type_kind(RADDBGI_TypeKind type_kind){ } static String8 -raddbgi_string_from_member_kind(RADDBGI_MemberKind member_kind){ +rdi_string_from_member_kind(RDI_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; - RADDBGI_MemberKindXList(X) + RDI_MemberKindXList(X) #undef X } return(result); } static String8 -raddbgi_string_from_local_kind(RADDBGI_LocalKind local_kind){ +rdi_string_from_local_kind(RDI_LocalKind local_kind){ String8 result = {0}; switch (local_kind){ default: result = str8_lit(""); break; - case RADDBGI_LocalKind_Parameter: result = str8_lit("Parameter"); break; - case RADDBGI_LocalKind_Variable: result = str8_lit("Variable"); break; + case RDI_LocalKind_Parameter: result = str8_lit("Parameter"); break; + case RDI_LocalKind_Variable: result = str8_lit("Variable"); break; } return(result); } @@ -83,59 +83,59 @@ raddbgi_string_from_local_kind(RADDBGI_LocalKind local_kind){ //~ RADDBG Flags Stringize Functions static void -raddbgi_stringize_binary_section_flags(Arena *arena, String8List *out, - RADDBGI_BinarySectionFlags flags){ +rdi_stringize_binary_section_flags(Arena *arena, String8List *out, + RDI_BinarySectionFlags flags){ if (flags == 0){ str8_list_push(arena, out, str8_lit("0")); } - if (flags & RADDBGI_BinarySectionFlag_Read){ + if (flags & RDI_BinarySectionFlag_Read){ str8_list_push(arena, out, str8_lit("Read ")); } - if (flags & RADDBGI_BinarySectionFlag_Write){ + if (flags & RDI_BinarySectionFlag_Write){ str8_list_push(arena, out, str8_lit("Write ")); } - if (flags & RADDBGI_BinarySectionFlag_Execute){ + if (flags & RDI_BinarySectionFlag_Execute){ str8_list_push(arena, out, str8_lit("Execute ")); } } static void -raddbgi_stringize_type_modifier_flags(Arena *arena, String8List *out, - RADDBGI_TypeModifierFlags flags){ +rdi_stringize_type_modifier_flags(Arena *arena, String8List *out, + RDI_TypeModifierFlags flags){ if (flags == 0){ str8_list_push(arena, out, str8_lit("0")); } - if (flags & RADDBGI_TypeModifierFlag_Const){ + if (flags & RDI_TypeModifierFlag_Const){ str8_list_push(arena, out, str8_lit("Const ")); } - if (flags & RADDBGI_TypeModifierFlag_Volatile){ + if (flags & RDI_TypeModifierFlag_Volatile){ str8_list_push(arena, out, str8_lit("Volatile ")); } } static void -raddbgi_stringize_user_defined_type_flags(Arena *arena, String8List *out, - RADDBGI_UserDefinedTypeFlags flags){ +rdi_stringize_user_defined_type_flags(Arena *arena, String8List *out, + RDI_UserDefinedTypeFlags flags){ if (flags == 0){ str8_list_push(arena, out, str8_lit("0")); } - if (flags & RADDBGI_UserDefinedTypeFlag_EnumMembers){ + if (flags & RDI_UserDefinedTypeFlag_EnumMembers){ str8_list_push(arena, out, str8_lit("EnumMembers ")); } } static void -raddbgi_stringize_link_flags(Arena *arena, String8List *out, RADDBGI_LinkFlags flags){ +rdi_stringize_link_flags(Arena *arena, String8List *out, RDI_LinkFlags flags){ if (flags == 0){ str8_list_push(arena, out, str8_lit("0")); } - if (flags & RADDBGI_LinkFlag_External){ + if (flags & RDI_LinkFlag_External){ str8_list_push(arena, out, str8_lit("External ")); } - if (flags & RADDBGI_LinkFlag_TypeScoped){ + if (flags & RDI_LinkFlag_TypeScoped){ str8_list_push(arena, out, str8_lit("TypeScoped ")); } - if (flags & RADDBGI_LinkFlag_ProcScoped){ + if (flags & RDI_LinkFlag_ProcScoped){ str8_list_push(arena, out, str8_lit("ProcScoped ")); } } @@ -144,82 +144,82 @@ raddbgi_stringize_link_flags(Arena *arena, String8List *out, RADDBGI_LinkFlags f //////////////////////////////// //~ RADDBG Compound Stringize Functions -static char raddbgi_stringize_spaces[] = " "; +static char rdi_stringize_spaces[] = " "; static void -raddbgi_stringize_data_sections(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - U32 indent_level){ +rdi_stringize_data_sections(Arena *arena, String8List *out, RDI_Parsed *parsed, + U32 indent_level){ U64 data_section_count = parsed->dsec_count; - RADDBGI_DataSection *ptr = parsed->dsecs; + RDI_DataSection *ptr = parsed->dsecs; for (U64 i = 0; i < data_section_count; i += 1, ptr += 1){ - String8 tag_str = raddbgi_string_from_data_section_tag(ptr->tag); + String8 tag_str = rdi_string_from_data_section_tag(ptr->tag); str8_list_pushf(arena, out, "%.*sdata_section[%5u] = {0x%08llx, %7u, %7u} %.*s\n", - indent_level, raddbgi_stringize_spaces, + indent_level, rdi_stringize_spaces, i, ptr->off, ptr->encoded_size, ptr->unpacked_size, str8_varg(tag_str)); } } static void -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); +rdi_stringize_top_level_info(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_TopLevelInfo *tli, U32 indent_level){ + String8 arch_str = rdi_string_from_arch(tli->architecture); String8 exe_name = {0}; - exe_name.str = raddbgi_string_from_idx(parsed, tli->exe_name_string_idx, &exe_name.size); + exe_name.str = rdi_string_from_idx(parsed, tli->exe_name_string_idx, &exe_name.size); str8_list_pushf(arena, out, "%.*sarchitecture=%.*s\n", - indent_level, raddbgi_stringize_spaces, str8_varg(arch_str)); + indent_level, rdi_stringize_spaces, str8_varg(arch_str)); str8_list_pushf(arena, out, "%.*sexe_name='%.*s'\n", - indent_level, raddbgi_stringize_spaces, str8_varg(exe_name)); + indent_level, rdi_stringize_spaces, str8_varg(exe_name)); str8_list_pushf(arena, out, "%.*svoff_max=0x%08llx\n", - indent_level, raddbgi_stringize_spaces, tli->voff_max); + indent_level, rdi_stringize_spaces, tli->voff_max); } static void -raddbgi_stringize_binary_section(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - RADDBGI_BinarySection *bin_section, U32 indent_level){ +rdi_stringize_binary_section(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_BinarySection *bin_section, U32 indent_level){ String8 name = {0}; - name.str = raddbgi_string_from_idx(parsed, bin_section->name_string_idx, &name.size); + name.str = rdi_string_from_idx(parsed, bin_section->name_string_idx, &name.size); str8_list_pushf(arena, out, "%.*sname='%.*s'\n", - indent_level, raddbgi_stringize_spaces, str8_varg(name)); + indent_level, rdi_stringize_spaces, str8_varg(name)); - 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, "%.*sflags=", indent_level, rdi_stringize_spaces); + rdi_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, raddbgi_stringize_spaces, bin_section->voff_first); + indent_level, rdi_stringize_spaces, bin_section->voff_first); str8_list_pushf(arena, out, "%.*svoff_opl =0x%08x\n", - indent_level, raddbgi_stringize_spaces, bin_section->voff_opl); + indent_level, rdi_stringize_spaces, bin_section->voff_opl); str8_list_pushf(arena, out, "%.*sfoff_first=0x%08x\n", - indent_level, raddbgi_stringize_spaces, bin_section->foff_first); + indent_level, rdi_stringize_spaces, bin_section->foff_first); str8_list_pushf(arena, out, "%.*sfoff_opl =0x%08x\n", - indent_level, raddbgi_stringize_spaces, bin_section->foff_opl); + indent_level, rdi_stringize_spaces, bin_section->foff_opl); } static void -raddbgi_stringize_file_path(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - RADDBGI_FilePathBundle *bundle, RADDBGI_FilePathNode *file_path, - U32 indent_level){ +rdi_stringize_file_path(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_FilePathBundle *bundle, RDI_FilePathNode *file_path, + U32 indent_level){ String8 name = {0}; - name.str = raddbgi_string_from_idx(parsed, file_path->name_string_idx, &name.size); + name.str = rdi_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, raddbgi_stringize_spaces, + indent_level, rdi_stringize_spaces, this_idx, str8_varg(name)); } else{ str8_list_pushf(arena, out, "%.*s[%u] '%.*s'; source_file=%u\n", - indent_level, raddbgi_stringize_spaces, + indent_level, rdi_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 - RADDBGI_FilePathNode *child_node = 0; + RDI_FilePathNode *child_node = 0; if (child < bundle->file_path_count){ child_node = bundle->file_paths + child; } @@ -228,7 +228,7 @@ raddbgi_stringize_file_path(Arena *arena, String8List *out, RADDBGI_Parsed *pars } // stringize child - raddbgi_stringize_file_path(arena, out, parsed, bundle, child_node, indent_level + 1); + rdi_stringize_file_path(arena, out, parsed, bundle, child_node, indent_level + 1); // increment iterator child = child_node->next_sibling; @@ -236,14 +236,14 @@ raddbgi_stringize_file_path(Arena *arena, String8List *out, RADDBGI_Parsed *pars } static void -raddbgi_stringize_source_file(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - RADDBGI_SourceFile *source_file, U32 indent_level){ +rdi_stringize_source_file(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_SourceFile *source_file, U32 indent_level){ // extract line map data - RADDBGI_ParsedLineMap line_map = {0}; - raddbgi_line_map_from_source_file(parsed, source_file, &line_map); + RDI_ParsedLineMap line_map = {0}; + rdi_line_map_from_source_file(parsed, source_file, &line_map); // stringize line map data - str8_list_pushf(arena, out, "%.*slines:\n", indent_level, raddbgi_stringize_spaces); + str8_list_pushf(arena, out, "%.*slines:\n", indent_level, rdi_stringize_spaces); for (U32 i = 0; i < line_map.count; i += 1){ U32 line_num = line_map.nums[i]; @@ -261,7 +261,7 @@ raddbgi_stringize_source_file(Arena *arena, String8List *out, RADDBGI_Parsed *pa } str8_list_pushf(arena, out, "%.*s %u: ", - indent_level, raddbgi_stringize_spaces, line_num); + indent_level, rdi_stringize_spaces, line_num); U32 first = line_map.ranges[i]; U32 opl_raw = line_map.ranges[i + 1]; @@ -272,7 +272,7 @@ raddbgi_stringize_source_file(Arena *arena, String8List *out, RADDBGI_Parsed *pa } else{ str8_list_pushf(arena, out, "%.*s0x%08x\n", - indent_level + digit_count + 3, raddbgi_stringize_spaces, + indent_level + digit_count + 3, rdi_stringize_spaces, line_map.voffs[j]); } } @@ -280,57 +280,57 @@ raddbgi_stringize_source_file(Arena *arena, String8List *out, RADDBGI_Parsed *pa } static void -raddbgi_stringize_unit(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - RADDBGI_Unit *unit, U32 indent_level){ +rdi_stringize_unit(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_Unit *unit, U32 indent_level){ String8 unit_name = {0}; - unit_name.str = raddbgi_string_from_idx(parsed, unit->unit_name_string_idx, &unit_name.size); + unit_name.str = rdi_string_from_idx(parsed, unit->unit_name_string_idx, &unit_name.size); String8 compiler_name = {0}; - compiler_name.str = raddbgi_string_from_idx(parsed, unit->compiler_name_string_idx, - &compiler_name.size); + compiler_name.str = rdi_string_from_idx(parsed, unit->compiler_name_string_idx, + &compiler_name.size); str8_list_pushf(arena, out, "%.*sunit_name='%.*s'\n", - indent_level, raddbgi_stringize_spaces, str8_varg(unit_name)); + indent_level, rdi_stringize_spaces, str8_varg(unit_name)); str8_list_pushf(arena, out, "%.*scompiler_name='%.*s'\n", - indent_level, raddbgi_stringize_spaces, str8_varg(compiler_name)); + indent_level, rdi_stringize_spaces, str8_varg(compiler_name)); str8_list_pushf(arena, out, "%.*ssource_file_path=%u\n", - indent_level, raddbgi_stringize_spaces, unit->source_file_path_node); + indent_level, rdi_stringize_spaces, unit->source_file_path_node); str8_list_pushf(arena, out, "%.*sobject_file_path=%u\n", - indent_level, raddbgi_stringize_spaces, unit->object_file_path_node); + indent_level, rdi_stringize_spaces, unit->object_file_path_node); str8_list_pushf(arena, out, "%.*sarchive_file_path=%u\n", - indent_level, raddbgi_stringize_spaces, unit->archive_file_path_node); + indent_level, rdi_stringize_spaces, unit->archive_file_path_node); str8_list_pushf(arena, out, "%.*sbuild_path=%u\n", - indent_level, raddbgi_stringize_spaces, unit->build_path_node); + indent_level, rdi_stringize_spaces, unit->build_path_node); - String8 language_str = raddbgi_string_from_language(unit->language); + String8 language_str = rdi_string_from_language(unit->language); str8_list_pushf(arena, out, "%.*slanguage=%.*s\n", - indent_level, raddbgi_stringize_spaces, str8_varg(language_str)); + indent_level, rdi_stringize_spaces, str8_varg(language_str)); // extract line info data - RADDBGI_ParsedLineInfo line_info = {0}; - raddbgi_line_info_from_unit(parsed, unit, &line_info); + RDI_ParsedLineInfo line_info = {0}; + rdi_line_info_from_unit(parsed, unit, &line_info); // stringize line info - str8_list_pushf(arena, out, "%.*slines:\n", indent_level, raddbgi_stringize_spaces); + str8_list_pushf(arena, out, "%.*slines:\n", indent_level, rdi_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]; - RADDBGI_Line *line = line_info.lines + i; - RADDBGI_Column *col = 0; + RDI_Line *line = line_info.lines + i; + RDI_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, raddbgi_stringize_spaces, + indent_level, rdi_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, raddbgi_stringize_spaces, + indent_level, rdi_stringize_spaces, first, opl, line->file_idx, line->line_num, col->col_first, col->col_opl); } @@ -338,19 +338,19 @@ raddbgi_stringize_unit(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, } static void -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); +rdi_stringize_type_node(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_TypeNode *type, U32 indent_level){ + RDI_TypeKind kind = type->kind; + String8 type_kind_str = rdi_string_from_type_kind(kind); str8_list_pushf(arena, out, "%.*skind=%.*s\n", - indent_level, raddbgi_stringize_spaces, str8_varg(type_kind_str)); + indent_level, rdi_stringize_spaces, str8_varg(type_kind_str)); switch (type->kind){ - case RADDBGI_TypeKind_Modifier: + case RDI_TypeKind_Modifier: { - str8_list_pushf(arena, out, "%.*sflags=", indent_level, raddbgi_stringize_spaces); - raddbgi_stringize_type_modifier_flags(arena, out, type->flags); + str8_list_pushf(arena, out, "%.*sflags=", indent_level, rdi_stringize_spaces); + rdi_stringize_type_modifier_flags(arena, out, type->flags); str8_list_push(arena, out, str8_lit("\n")); }break; @@ -358,42 +358,42 @@ raddbgi_stringize_type_node(Arena *arena, String8List *out, RADDBGI_Parsed *pars { if (type->flags != 0){ str8_list_pushf(arena, out, "%.*sflags=%x (missing stringizer path)", - indent_level, raddbgi_stringize_spaces, type->flags); + indent_level, rdi_stringize_spaces, type->flags); } }break; } str8_list_pushf(arena, out, "%.*sbyte_size=%u\n", - indent_level, raddbgi_stringize_spaces, type->byte_size); + indent_level, rdi_stringize_spaces, type->byte_size); - if (RADDBGI_TypeKind_FirstBuiltIn <= kind && - kind <= RADDBGI_TypeKind_LastBuiltIn){ + if (RDI_TypeKind_FirstBuiltIn <= kind && + kind <= RDI_TypeKind_LastBuiltIn){ String8 name = {0}; - name.str = raddbgi_string_from_idx(parsed, type->built_in.name_string_idx, &name.size); + name.str = rdi_string_from_idx(parsed, type->built_in.name_string_idx, &name.size); str8_list_pushf(arena, out, "%.*sbuilt_in.name='%.*s'\n", - indent_level, raddbgi_stringize_spaces, str8_varg(name)); + indent_level, rdi_stringize_spaces, str8_varg(name)); } - else if (RADDBGI_TypeKind_FirstConstructed <= kind && - kind <= RADDBGI_TypeKind_LastConstructed){ + else if (RDI_TypeKind_FirstConstructed <= kind && + kind <= RDI_TypeKind_LastConstructed){ str8_list_pushf(arena, out, "%.*sconstructed.direct_type=%u\n", - indent_level, raddbgi_stringize_spaces, type->constructed.direct_type_idx); + indent_level, rdi_stringize_spaces, type->constructed.direct_type_idx); - if (type->kind == RADDBGI_TypeKind_Array){ + if (type->kind == RDI_TypeKind_Array){ str8_list_pushf(arena, out, "%.*sconstructed.array_count=%u\n", - indent_level, raddbgi_stringize_spaces, type->constructed.count); + indent_level, rdi_stringize_spaces, type->constructed.count); } - if (type->kind == RADDBGI_TypeKind_Function || - type->kind == RADDBGI_TypeKind_Method){ + if (type->kind == RDI_TypeKind_Function || + type->kind == RDI_TypeKind_Method){ U32 run_first = type->constructed.param_idx_run_first; U32 run_count_raw = type->constructed.count; U32 run_count = 0; - U32 *run = raddbgi_idx_run_from_first_count(parsed, run_first, run_count_raw, &run_count); + U32 *run = rdi_idx_run_from_first_count(parsed, run_first, run_count_raw, &run_count); U32 this_type_idx = 0; - if (run_count > 0 && type->kind == RADDBGI_TypeKind_Method){ + if (run_count > 0 && type->kind == RDI_TypeKind_Method){ this_type_idx = run[0]; run += 1; run_count -= 1; @@ -401,11 +401,11 @@ raddbgi_stringize_type_node(Arena *arena, String8List *out, RADDBGI_Parsed *pars if (this_type_idx != 0){ str8_list_pushf(arena, out, "%.*sconstructed.this_type=%u\n", - indent_level, raddbgi_stringize_spaces, this_type_idx); + indent_level, rdi_stringize_spaces, this_type_idx); } str8_list_pushf(arena, out, "%.*sconstructed.params={", - indent_level, raddbgi_stringize_spaces); + indent_level, rdi_stringize_spaces); if (run_count > 0){ U32 last = run_count - 1; @@ -419,63 +419,63 @@ raddbgi_stringize_type_node(Arena *arena, String8List *out, RADDBGI_Parsed *pars } } - else if (RADDBGI_TypeKind_FirstUserDefined <= kind && - kind <= RADDBGI_TypeKind_LastUserDefined){ + else if (RDI_TypeKind_FirstUserDefined <= kind && + kind <= RDI_TypeKind_LastUserDefined){ String8 name = {0}; - name.str = raddbgi_string_from_idx(parsed, type->user_defined.name_string_idx, &name.size); + name.str = rdi_string_from_idx(parsed, type->user_defined.name_string_idx, &name.size); str8_list_pushf(arena, out, "%.*suser_defined.name='%.*s'\n", - indent_level, raddbgi_stringize_spaces, str8_varg(name)); + indent_level, rdi_stringize_spaces, str8_varg(name)); str8_list_pushf(arena, out, "%.*suser_defined.direct_type=%u\n", - indent_level, raddbgi_stringize_spaces, + indent_level, rdi_stringize_spaces, type->user_defined.direct_type_idx); str8_list_pushf(arena, out, "%.*suser_defined.udt=%u\n", - indent_level, raddbgi_stringize_spaces, + indent_level, rdi_stringize_spaces, type->user_defined.udt_idx); } - else if (kind == RADDBGI_TypeKind_Bitfield){ + else if (kind == RDI_TypeKind_Bitfield){ str8_list_pushf(arena, out, "%.*sbitfield.off=%u\n", - indent_level, raddbgi_stringize_spaces, type->bitfield.off); + indent_level, rdi_stringize_spaces, type->bitfield.off); str8_list_pushf(arena, out, "%.*sbitfield.size=%u\n", - indent_level, raddbgi_stringize_spaces, type->bitfield.size); + indent_level, rdi_stringize_spaces, type->bitfield.size); } } static void -raddbgi_stringize_udt(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - RADDBGI_UDTMemberBundle *member_bundle, RADDBGI_UDT *udt, - U32 indent_level){ +rdi_stringize_udt(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_UDTMemberBundle *member_bundle, RDI_UDT *udt, + U32 indent_level){ str8_list_pushf(arena, out, "%.*sself_type=%u\n", - indent_level, raddbgi_stringize_spaces, udt->self_type_idx); + indent_level, rdi_stringize_spaces, udt->self_type_idx); - str8_list_pushf(arena, out, "%.*sflags=", indent_level, raddbgi_stringize_spaces); - raddbgi_stringize_user_defined_type_flags(arena, out, udt->flags); + str8_list_pushf(arena, out, "%.*sflags=", indent_level, rdi_stringize_spaces); + rdi_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, raddbgi_stringize_spaces, + indent_level, rdi_stringize_spaces, udt->file_idx, udt->line, udt->col); } // enum members - if (udt->flags & RADDBGI_UserDefinedTypeFlag_EnumMembers){ + if (udt->flags & RDI_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, raddbgi_stringize_spaces); - RADDBGI_EnumMember *enum_member = member_bundle->enum_members + first; + str8_list_pushf(arena, out, "%.*smembers={\n", indent_level, rdi_stringize_spaces); + RDI_EnumMember *enum_member = member_bundle->enum_members + first; for (U32 i = first; i < opl; i += 1, enum_member += 1){ String8 name = {0}; - name.str = raddbgi_string_from_idx(parsed, enum_member->name_string_idx, &name.size); + name.str = rdi_string_from_idx(parsed, enum_member->name_string_idx, &name.size); str8_list_pushf(arena, out, "%.*s '%.*s' %llu\n", - indent_level, raddbgi_stringize_spaces, + indent_level, rdi_stringize_spaces, str8_varg(name), enum_member->val); } - str8_list_pushf(arena, out, "%.*s}\n", indent_level, raddbgi_stringize_spaces); + str8_list_pushf(arena, out, "%.*s}\n", indent_level, rdi_stringize_spaces); } } @@ -487,117 +487,117 @@ raddbgi_stringize_udt(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, U32 first = ClampTop(first_raw, opl); if (first < opl){ - str8_list_pushf(arena, out, "%.*smembers={\n", indent_level, raddbgi_stringize_spaces); - RADDBGI_Member *member = member_bundle->members + first; + str8_list_pushf(arena, out, "%.*smembers={\n", indent_level, rdi_stringize_spaces); + RDI_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, raddbgi_stringize_spaces); + str8_list_pushf(arena, out, "%.*s {\n", indent_level, rdi_stringize_spaces); - String8 kind_str = raddbgi_string_from_member_kind(member->kind); + String8 kind_str = rdi_string_from_member_kind(member->kind); str8_list_pushf(arena, out, "%.*s kind=%.*s\n", - indent_level, raddbgi_stringize_spaces, str8_varg(kind_str)); + indent_level, rdi_stringize_spaces, str8_varg(kind_str)); if (member->name_string_idx != 0){ String8 name = {0}; - name.str = raddbgi_string_from_idx(parsed, member->name_string_idx, &name.size); + name.str = rdi_string_from_idx(parsed, member->name_string_idx, &name.size); str8_list_pushf(arena, out, "%.*s name='%.*s'\n", - indent_level, raddbgi_stringize_spaces, str8_varg(name)); + indent_level, rdi_stringize_spaces, str8_varg(name)); } str8_list_pushf(arena, out, "%.*s type=%u\n", - indent_level, raddbgi_stringize_spaces, member->type_idx); + indent_level, rdi_stringize_spaces, member->type_idx); str8_list_pushf(arena, out, "%.*s off=%u\n", - indent_level, raddbgi_stringize_spaces, member->off); + indent_level, rdi_stringize_spaces, member->off); - str8_list_pushf(arena, out, "%.*s }\n", indent_level, raddbgi_stringize_spaces); + str8_list_pushf(arena, out, "%.*s }\n", indent_level, rdi_stringize_spaces); } - str8_list_pushf(arena, out, "%.*s}\n", indent_level, raddbgi_stringize_spaces); + str8_list_pushf(arena, out, "%.*s}\n", indent_level, rdi_stringize_spaces); } } } static void -raddbgi_stringize_global_variable(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - RADDBGI_GlobalVariable *global_variable, U32 indent_level){ +rdi_stringize_global_variable(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_GlobalVariable *global_variable, U32 indent_level){ String8 name = {0}; - name.str = raddbgi_string_from_idx(parsed, global_variable->name_string_idx, &name.size); + name.str = rdi_string_from_idx(parsed, global_variable->name_string_idx, &name.size); str8_list_pushf(arena, out, "%.*sname='%.*s'\n", - indent_level, raddbgi_stringize_spaces, str8_varg(name)); + indent_level, rdi_stringize_spaces, str8_varg(name)); - str8_list_pushf(arena, out, "%.*slink_flags=", indent_level, raddbgi_stringize_spaces); - raddbgi_stringize_link_flags(arena, out, global_variable->link_flags); + str8_list_pushf(arena, out, "%.*slink_flags=", indent_level, rdi_stringize_spaces); + rdi_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, raddbgi_stringize_spaces, global_variable->voff); + indent_level, rdi_stringize_spaces, global_variable->voff); str8_list_pushf(arena, out, "%.*stype_idx=%u\n", - indent_level, raddbgi_stringize_spaces, global_variable->type_idx); + indent_level, rdi_stringize_spaces, global_variable->type_idx); str8_list_pushf(arena, out, "%.*scontainer_idx=%u\n", - indent_level, raddbgi_stringize_spaces, global_variable->container_idx); + indent_level, rdi_stringize_spaces, global_variable->container_idx); } static void -raddbgi_stringize_thread_variable(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - RADDBGI_ThreadVariable *thread_var, - U32 indent_level){ +rdi_stringize_thread_variable(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_ThreadVariable *thread_var, + U32 indent_level){ String8 name = {0}; - name.str = raddbgi_string_from_idx(parsed, thread_var->name_string_idx, &name.size); + name.str = rdi_string_from_idx(parsed, thread_var->name_string_idx, &name.size); str8_list_pushf(arena, out, "%.*sname='%.*s'\n", - indent_level, raddbgi_stringize_spaces, str8_varg(name)); + indent_level, rdi_stringize_spaces, str8_varg(name)); - str8_list_pushf(arena, out, "%.*slink_flags=", indent_level, raddbgi_stringize_spaces); - raddbgi_stringize_link_flags(arena, out, thread_var->link_flags); + str8_list_pushf(arena, out, "%.*slink_flags=", indent_level, rdi_stringize_spaces); + rdi_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, raddbgi_stringize_spaces, thread_var->tls_off); + indent_level, rdi_stringize_spaces, thread_var->tls_off); str8_list_pushf(arena, out, "%.*stype_idx=%u\n", - indent_level, raddbgi_stringize_spaces, thread_var->type_idx); + indent_level, rdi_stringize_spaces, thread_var->type_idx); str8_list_pushf(arena, out, "%.*scontainer_idx=%u\n", - indent_level, raddbgi_stringize_spaces, thread_var->container_idx); + indent_level, rdi_stringize_spaces, thread_var->container_idx); } static void -raddbgi_stringize_procedure(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - RADDBGI_Procedure *proc, U32 indent_level){ +rdi_stringize_procedure(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_Procedure *proc, U32 indent_level){ String8 name = {0}; - name.str = raddbgi_string_from_idx(parsed, proc->name_string_idx, &name.size); + name.str = rdi_string_from_idx(parsed, proc->name_string_idx, &name.size); str8_list_pushf(arena, out, "%.*sname='%.*s'\n", - indent_level, raddbgi_stringize_spaces, str8_varg(name)); + indent_level, rdi_stringize_spaces, str8_varg(name)); String8 link_name = {0}; - link_name.str = raddbgi_string_from_idx(parsed, proc->link_name_string_idx, &link_name.size); + link_name.str = rdi_string_from_idx(parsed, proc->link_name_string_idx, &link_name.size); str8_list_pushf(arena, out, "%.*slink_name='%.*s'\n", - indent_level, raddbgi_stringize_spaces, str8_varg(link_name)); + indent_level, rdi_stringize_spaces, str8_varg(link_name)); - str8_list_pushf(arena, out, "%.*slink_flags=", indent_level, raddbgi_stringize_spaces); - raddbgi_stringize_link_flags(arena, out, proc->link_flags); + str8_list_pushf(arena, out, "%.*slink_flags=", indent_level, rdi_stringize_spaces); + rdi_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, raddbgi_stringize_spaces, proc->type_idx); + indent_level, rdi_stringize_spaces, proc->type_idx); str8_list_pushf(arena, out, "%.*sroot_scope_idx=%u\n", - indent_level, raddbgi_stringize_spaces, proc->root_scope_idx); + indent_level, rdi_stringize_spaces, proc->root_scope_idx); str8_list_pushf(arena, out, "%.*scontainer_idx=%u\n", - indent_level, raddbgi_stringize_spaces, proc->container_idx); + indent_level, rdi_stringize_spaces, proc->container_idx); } static void -raddbgi_stringize_scope(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - RADDBGI_ScopeBundle *bundle, RADDBGI_Scope *scope, U32 indent_level){ +rdi_stringize_scope(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_ScopeBundle *bundle, RDI_Scope *scope, U32 indent_level){ U32 this_idx = (U32)(scope - bundle->scopes); str8_list_pushf(arena, out, "%.*s[%u]\n", - indent_level, raddbgi_stringize_spaces, this_idx); + indent_level, rdi_stringize_spaces, this_idx); str8_list_pushf(arena, out, "%.*s proc_idx=%u\n", - indent_level, raddbgi_stringize_spaces, scope->proc_idx); + indent_level, rdi_stringize_spaces, scope->proc_idx); // voff ranges { @@ -614,18 +614,18 @@ raddbgi_stringize_scope(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, if (voff_range_opl - voff_range_first > 2){ str8_list_pushf(arena, out, "%.*s voff_ranges={\n", - indent_level, raddbgi_stringize_spaces); + indent_level, rdi_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, raddbgi_stringize_spaces, + indent_level, rdi_stringize_spaces, voff_ptr[0], voff_ptr[1]); } str8_list_pushf(arena, out, "%.*s }\n", - indent_level, raddbgi_stringize_spaces); + indent_level, rdi_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, raddbgi_stringize_spaces, + indent_level, rdi_stringize_spaces, voff_ptr[0], voff_ptr[1]); } } @@ -637,60 +637,60 @@ raddbgi_stringize_scope(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, U32 local_opl = ClampTop(local_opl_raw, bundle->local_count); if (local_first < local_opl){ - RADDBGI_Local *local_ptr = bundle->locals + local_first; + RDI_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, raddbgi_stringize_spaces, i); + indent_level, rdi_stringize_spaces, i); - String8 local_kind_str = raddbgi_string_from_local_kind(local_ptr->kind); + String8 local_kind_str = rdi_string_from_local_kind(local_ptr->kind); str8_list_pushf(arena, out, "%.*s kind=%.*s\n", - indent_level, raddbgi_stringize_spaces, str8_varg(local_kind_str)); + indent_level, rdi_stringize_spaces, str8_varg(local_kind_str)); String8 name = {0}; - name.str = raddbgi_string_from_idx(parsed, local_ptr->name_string_idx, &name.size); + name.str = rdi_string_from_idx(parsed, local_ptr->name_string_idx, &name.size); str8_list_pushf(arena, out, "%.*s name='%.*s'\n", - indent_level, raddbgi_stringize_spaces, str8_varg(name)); + indent_level, rdi_stringize_spaces, str8_varg(name)); str8_list_pushf(arena, out, "%.*s type_idx=%u\n", - indent_level, raddbgi_stringize_spaces, local_ptr->type_idx); + indent_level, rdi_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, raddbgi_stringize_spaces); - RADDBGI_LocationBlock *block_ptr = bundle->location_blocks + location_first; + str8_list_pushf(arena, out, "%.*s locations:\n", indent_level, rdi_stringize_spaces); + RDI_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, raddbgi_stringize_spaces); + str8_list_pushf(arena, out, "%.*s case *always*:\n", indent_level, rdi_stringize_spaces); } else{ str8_list_pushf(arena, out, "%.*s case [0x%08x, 0x%08x):\n", - indent_level, raddbgi_stringize_spaces, + indent_level, rdi_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, raddbgi_stringize_spaces); + indent_level, rdi_stringize_spaces); } else{ - str8_list_pushf(arena, out, "%.*s ", indent_level, raddbgi_stringize_spaces); + str8_list_pushf(arena, out, "%.*s ", indent_level, rdi_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; - RADDBGI_LocationKind kind = (RADDBGI_LocationKind)*loc_base_ptr; + RDI_LocationKind kind = (RDI_LocationKind)*loc_base_ptr; switch (kind){ default: { str8_list_pushf(arena, out, "\n"); }break; - case RADDBGI_LocationKind_AddrBytecodeStream: + case RDI_LocationKind_AddrBytecodeStream: { str8_list_pushf(arena, out, "AddrBytecodeStream\n"); - str8_list_pushf(arena, out, "%.*s ", indent_level, raddbgi_stringize_spaces); + str8_list_pushf(arena, out, "%.*s ", indent_level, rdi_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 @@ raddbgi_stringize_scope(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, str8_list_pushf(arena, out, "\n"); }break; - case RADDBGI_LocationKind_ValBytecodeStream: + case RDI_LocationKind_ValBytecodeStream: { str8_list_pushf(arena, out, "ValBytecodeStream\n"); - str8_list_pushf(arena, out, "%.*s ", indent_level, raddbgi_stringize_spaces); + str8_list_pushf(arena, out, "%.*s ", indent_level, rdi_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 @@ raddbgi_stringize_scope(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, str8_list_pushf(arena, out, "\n"); }break; - case RADDBGI_LocationKind_AddrRegisterPlusU16: + case RDI_LocationKind_AddrRegisterPlusU16: { - if (loc_base_ptr + sizeof(RADDBGI_LocationRegisterPlusU16) > loc_data_opl){ + if (loc_base_ptr + sizeof(RDI_LocationRegisterPlusU16) > loc_data_opl){ str8_list_pushf(arena, out, "AddrRegisterPlusU16( )\n"); } else{ - RADDBGI_LocationRegisterPlusU16 *loc = (RADDBGI_LocationRegisterPlusU16*)loc_base_ptr; + RDI_LocationRegisterPlusU16 *loc = (RDI_LocationRegisterPlusU16*)loc_base_ptr; str8_list_pushf(arena, out, "AddrRegisterPlusU16(reg: %u, off: %u)\n", loc->register_code, loc->offset); } }break; - case RADDBGI_LocationKind_AddrAddrRegisterPlusU16: + case RDI_LocationKind_AddrAddrRegisterPlusU16: { - if (loc_base_ptr + sizeof(RADDBGI_LocationRegisterPlusU16) > loc_data_opl){ + if (loc_base_ptr + sizeof(RDI_LocationRegisterPlusU16) > loc_data_opl){ str8_list_pushf(arena, out, "AddrAddrRegisterPlusU16( )\n"); } else{ - RADDBGI_LocationRegisterPlusU16 *loc = (RADDBGI_LocationRegisterPlusU16*)loc_base_ptr; + RDI_LocationRegisterPlusU16 *loc = (RDI_LocationRegisterPlusU16*)loc_base_ptr; str8_list_pushf(arena, out, "AddrAddrRegisterPlusU16(reg: %u, off: %u)\n", loc->register_code, loc->offset); } }break; - case RADDBGI_LocationKind_ValRegister: + case RDI_LocationKind_ValRegister: { - if (loc_base_ptr + sizeof(RADDBGI_LocationRegister) > loc_data_opl){ + if (loc_base_ptr + sizeof(RDI_LocationRegister) > loc_data_opl){ str8_list_pushf(arena, out, "ValRegister( )\n"); } else{ - RADDBGI_LocationRegister *loc = (RADDBGI_LocationRegister*)loc_base_ptr; + RDI_LocationRegister *loc = (RDI_LocationRegister*)loc_base_ptr; str8_list_pushf(arena, out, "ValRegister(reg: %u)\n", loc->register_code); } }break; @@ -756,7 +756,7 @@ raddbgi_stringize_scope(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, for (U32 child = scope->first_child_scope_idx; child != 0;){ // get scope for child - RADDBGI_Scope *child_scope = 0; + RDI_Scope *child_scope = 0; if (child < bundle->scope_count){ child_scope = bundle->scopes + child; } @@ -765,12 +765,12 @@ raddbgi_stringize_scope(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, } // stringize child - raddbgi_stringize_scope(arena, out, parsed, bundle, child_scope, indent_level + 1); + rdi_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, raddbgi_stringize_spaces, this_idx); + indent_level, rdi_stringize_spaces, this_idx); } diff --git a/src/raddbgi_dump/raddbgi_stringize.h b/src/raddbgi_dump/raddbgi_stringize.h index e74d3a86..51534416 100644 --- a/src/raddbgi_dump/raddbgi_stringize.h +++ b/src/raddbgi_dump/raddbgi_stringize.h @@ -7,108 +7,108 @@ //////////////////////////////// //~ RADDBG Stringize Helper Types -typedef struct RADDBGI_FilePathBundle{ - RADDBGI_FilePathNode *file_paths; +typedef struct RDI_FilePathBundle{ + RDI_FilePathNode *file_paths; U32 file_path_count; -} RADDBGI_FilePathBundle; +} RDI_FilePathBundle; -typedef struct RADDBGI_UDTMemberBundle{ - RADDBGI_Member *members; - RADDBGI_EnumMember *enum_members; +typedef struct RDI_UDTMemberBundle{ + RDI_Member *members; + RDI_EnumMember *enum_members; U32 member_count; U32 enum_member_count; -} RADDBGI_UDTMemberBundle; +} RDI_UDTMemberBundle; -typedef struct RADDBGI_ScopeBundle{ - RADDBGI_Scope *scopes; +typedef struct RDI_ScopeBundle{ + RDI_Scope *scopes; U64 *scope_voffs; - RADDBGI_Local *locals; - RADDBGI_LocationBlock *location_blocks; + RDI_Local *locals; + RDI_LocationBlock *location_blocks; U8 *location_data; U32 scope_count; U32 scope_voff_count; U32 local_count; U32 location_block_count; U32 location_data_size; -} RADDBGI_ScopeBundle; +} RDI_ScopeBundle; //////////////////////////////// //~ RADDBG Common Stringize Functions -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); +static String8 rdi_string_from_data_section_tag(RDI_DataSectionTag tag); +static String8 rdi_string_from_arch(RDI_Arch arch); +static String8 rdi_string_from_language(RDI_Language language); +static String8 rdi_string_from_type_kind(RDI_TypeKind type_kind); +static String8 rdi_string_from_member_kind(RDI_MemberKind member_kind); +static String8 rdi_string_from_local_kind(RDI_LocalKind local_kind); //////////////////////////////// //~ RADDBG Flags Stringize Functions -static void raddbgi_stringize_binary_section_flags(Arena *arena, String8List *out, - RADDBGI_BinarySectionFlags flags); +static void rdi_stringize_binary_section_flags(Arena *arena, String8List *out, + RDI_BinarySectionFlags flags); -static void raddbgi_stringize_type_modifier_flags(Arena *arena, String8List *out, - RADDBGI_TypeModifierFlags flags); +static void rdi_stringize_type_modifier_flags(Arena *arena, String8List *out, + RDI_TypeModifierFlags flags); -static void raddbgi_stringize_user_defined_type_flags(Arena *arena, String8List *out, - RADDBGI_UserDefinedTypeFlags flags); +static void rdi_stringize_user_defined_type_flags(Arena *arena, String8List *out, + RDI_UserDefinedTypeFlags flags); -static void raddbgi_stringize_link_flags(Arena *arena, String8List *out, - RADDBGI_LinkFlags flags); +static void rdi_stringize_link_flags(Arena *arena, String8List *out, + RDI_LinkFlags flags); //////////////////////////////// //~ RADDBG Compound Stringize Functions static void -raddbgi_stringize_data_sections(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - U32 indent_level); - -static void -raddbgi_stringize_top_level_info(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - RADDBGI_TopLevelInfo *tli, U32 indent_level); - -static void -raddbgi_stringize_binary_section(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - RADDBGI_BinarySection *bin_section, U32 indent_level); - -static void -raddbgi_stringize_file_path(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - RADDBGI_FilePathBundle *bundle, RADDBGI_FilePathNode *file_path, +rdi_stringize_data_sections(Arena *arena, String8List *out, RDI_Parsed *parsed, U32 indent_level); static void -raddbgi_stringize_source_file(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - RADDBGI_SourceFile *source_file, U32 indent_level); +rdi_stringize_top_level_info(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_TopLevelInfo *tli, U32 indent_level); static void -raddbgi_stringize_unit(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - RADDBGI_Unit *unit, U32 indent_level); +rdi_stringize_binary_section(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_BinarySection *bin_section, U32 indent_level); static void -raddbgi_stringize_type_node(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - RADDBGI_TypeNode *type, U32 indent_level); +rdi_stringize_file_path(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_FilePathBundle *bundle, RDI_FilePathNode *file_path, + U32 indent_level); static void -raddbgi_stringize_udt(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - RADDBGI_UDTMemberBundle *bundle, RADDBGI_UDT *udt, - U32 indent_level); +rdi_stringize_source_file(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_SourceFile *source_file, U32 indent_level); static void -raddbgi_stringize_global_variable(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - RADDBGI_GlobalVariable *global_variable, U32 indent_level); +rdi_stringize_unit(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_Unit *unit, U32 indent_level); static void -raddbgi_stringize_thread_variable(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - RADDBGI_ThreadVariable *thread_var, - U32 indent_level); +rdi_stringize_type_node(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_TypeNode *type, U32 indent_level); static void -raddbgi_stringize_procedure(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - RADDBGI_Procedure *proc, U32 indent_level); +rdi_stringize_udt(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_UDTMemberBundle *bundle, RDI_UDT *udt, + U32 indent_level); static void -raddbgi_stringize_scope(Arena *arena, String8List *out, RADDBGI_Parsed *parsed, - RADDBGI_ScopeBundle *bundle, RADDBGI_Scope *scope, U32 indent_level); +rdi_stringize_global_variable(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_GlobalVariable *global_variable, U32 indent_level); -#endif //RADDBGI_STRINGIZE_H +static void +rdi_stringize_thread_variable(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_ThreadVariable *thread_var, + U32 indent_level); + +static void +rdi_stringize_procedure(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_Procedure *proc, U32 indent_level); + +static void +rdi_stringize_scope(Arena *arena, String8List *out, RDI_Parsed *parsed, + RDI_ScopeBundle *bundle, RDI_Scope *scope, U32 indent_level); + +#endif // RADDBGI_STRINGIZE_H diff --git a/src/raddbgi_from_pdb/raddbgi_from_pdb.c b/src/raddbgi_from_pdb/raddbgi_from_pdb.c index 643cd794..94d9dcd8 100644 --- a/src/raddbgi_from_pdb/raddbgi_from_pdb.c +++ b/src/raddbgi_from_pdb/raddbgi_from_pdb.c @@ -151,21 +151,21 @@ p2r_params_from_cmd_line(Arena *arena, CmdLine *cmdline) //////////////////////////////// //~ rjf: COFF <-> RADDBGI Canonical Conversions -internal RADDBGI_BinarySectionFlags -raddbgi_binary_section_flags_from_coff_section_flags(COFF_SectionFlags flags) +internal RDI_BinarySectionFlags +rdi_binary_section_flags_from_coff_section_flags(COFF_SectionFlags flags) { - RADDBGI_BinarySectionFlags result = 0; + RDI_BinarySectionFlags result = 0; if(flags & COFF_SectionFlag_MEM_READ) { - result |= RADDBGI_BinarySectionFlag_Read; + result |= RDI_BinarySectionFlag_Read; } if(flags & COFF_SectionFlag_MEM_WRITE) { - result |= RADDBGI_BinarySectionFlag_Write; + result |= RDI_BinarySectionFlag_Write; } if(flags & COFF_SectionFlag_MEM_EXECUTE) { - result |= RADDBGI_BinarySectionFlag_Execute; + result |= RDI_BinarySectionFlag_Execute; } return(result); } @@ -173,14 +173,14 @@ raddbgi_binary_section_flags_from_coff_section_flags(COFF_SectionFlags flags) //////////////////////////////// //~ rjf: CodeView <-> RADDBGI Canonical Conversions -internal RADDBGI_Arch -raddbgi_arch_from_cv_arch(CV_Arch cv_arch) +internal RDI_Arch +rdi_arch_from_cv_arch(CV_Arch cv_arch) { - RADDBGI_Arch result = 0; + RDI_Arch result = 0; switch(cv_arch) { - case CV_Arch_8086: result = RADDBGI_Arch_X86; break; - case CV_Arch_X64: result = RADDBGI_Arch_X64; break; + case CV_Arch_8086: result = RDI_Arch_X86; break; + case CV_Arch_X64: result = RDI_Arch_X64; break; //case CV_Arch_8080: break; //case CV_Arch_80286: break; //case CV_Arch_80386: break; @@ -243,26 +243,26 @@ raddbgi_arch_from_cv_arch(CV_Arch cv_arch) return(result); } -internal RADDBGI_RegisterCode -raddbgi_reg_code_from_cv_reg_code(RADDBGI_Arch arch, CV_Reg reg_code) +internal RDI_RegisterCode +rdi_reg_code_from_cv_reg_code(RDI_Arch arch, CV_Reg reg_code) { - RADDBGI_RegisterCode result = 0; + RDI_RegisterCode result = 0; switch(arch) { - case RADDBGI_Arch_X86: + case RDI_Arch_X86: { switch(reg_code) { -#define X(CVN,C,RDN,BP,BZ) case C: result = RADDBGI_RegisterCode_X86_##RDN; break; +#define X(CVN,C,RDN,BP,BZ) case C: result = RDI_RegisterCode_X86_##RDN; break; CV_Reg_X86_XList(X) #undef X } }break; - case RADDBGI_Arch_X64: + case RDI_Arch_X64: { switch(reg_code) { -#define X(CVN,C,RDN,BP,BZ) case C: result = RADDBGI_RegisterCode_X64_##RDN; break; +#define X(CVN,C,RDN,BP,BZ) case C: result = RDI_RegisterCode_X64_##RDN; break; CV_Reg_X64_XList(X) #undef X } @@ -271,14 +271,14 @@ raddbgi_reg_code_from_cv_reg_code(RADDBGI_Arch arch, CV_Reg reg_code) return(result); } -internal RADDBGI_Language -raddbgi_language_from_cv_language(CV_Language cv_language) +internal RDI_Language +rdi_language_from_cv_language(CV_Language cv_language) { - RADDBGI_Language result = 0; + RDI_Language result = 0; switch(cv_language) { - case CV_Language_C: result = RADDBGI_Language_C; break; - case CV_Language_CXX: result = RADDBGI_Language_CPlusPlus; break; + case CV_Language_C: result = RDI_Language_C; break; + case CV_Language_CXX: result = RDI_Language_CPlusPlus; break; //case CV_Language_FORTRAN: result = ; break; //case CV_Language_MASM: result = ; break; //case CV_Language_PASCAL: result = ; break; @@ -310,7 +310,7 @@ p2r_ctx_alloc(P2R_CtxParams *params, RDIM_Root *out_root) P2R_Ctx *pdb_ctx = push_array(arena, P2R_Ctx, 1); pdb_ctx->arena = arena; pdb_ctx->arch = params->arch; - pdb_ctx->addr_size = raddbgi_addr_size_from_arch(pdb_ctx->arch); + pdb_ctx->addr_size = rdi_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; @@ -1217,165 +1217,165 @@ p2r_type_cons_basic(P2R_Ctx *ctx, CV_TypeId itype) { case CV_BasicType_VOID: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_Void, str8_lit("void")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_Void, str8_lit("void")); }break; case CV_BasicType_HRESULT: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_Handle, str8_lit("HRESULT")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_Handle, str8_lit("HRESULT")); }break; case CV_BasicType_RCHAR: case CV_BasicType_CHAR: case CV_BasicType_CHAR8: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_Char8, str8_lit("char")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_Char8, str8_lit("char")); }break; case CV_BasicType_UCHAR: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_UChar8, str8_lit("UCHAR")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_UChar8, str8_lit("UCHAR")); }break; case CV_BasicType_WCHAR: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_UChar16, str8_lit("WCHAR")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_UChar16, str8_lit("WCHAR")); }break; case CV_BasicType_CHAR16: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_Char16, str8_lit("CHAR16")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_Char16, str8_lit("CHAR16")); }break; case CV_BasicType_CHAR32: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_Char32, str8_lit("CHAR32")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_Char32, str8_lit("CHAR32")); }break; case CV_BasicType_BOOL8: case CV_BasicType_INT8: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_S8, str8_lit("S8")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_S8, str8_lit("S8")); }break; case CV_BasicType_BOOL16: case CV_BasicType_INT16: case CV_BasicType_SHORT: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_S16, str8_lit("S16")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_S16, str8_lit("S16")); }break; case CV_BasicType_BOOL32: case CV_BasicType_INT32: case CV_BasicType_LONG: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_S32, str8_lit("S32")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_S32, str8_lit("S32")); }break; case CV_BasicType_BOOL64: case CV_BasicType_INT64: case CV_BasicType_QUAD: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_S64, str8_lit("S64")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_S64, str8_lit("S64")); }break; case CV_BasicType_INT128: case CV_BasicType_OCT: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_S128, str8_lit("S128")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_S128, str8_lit("S128")); }break; case CV_BasicType_UINT8: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_U8, str8_lit("U8")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_U8, str8_lit("U8")); }break; case CV_BasicType_UINT16: case CV_BasicType_USHORT: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_U16, str8_lit("U16")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_U16, str8_lit("U16")); }break; case CV_BasicType_UINT32: case CV_BasicType_ULONG: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_U32, str8_lit("U32")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_U32, str8_lit("U32")); }break; case CV_BasicType_UINT64: case CV_BasicType_UQUAD: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_U64, str8_lit("U64")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_U64, str8_lit("U64")); }break; case CV_BasicType_UINT128: case CV_BasicType_UOCT: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_U128, str8_lit("U128")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_U128, str8_lit("U128")); }break; case CV_BasicType_FLOAT16: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_F16, str8_lit("F16")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_F16, str8_lit("F16")); }break; case CV_BasicType_FLOAT32: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_F32, str8_lit("F32")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_F32, str8_lit("F32")); }break; case CV_BasicType_FLOAT32PP: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_F32PP, str8_lit("F32PP")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_F32PP, str8_lit("F32PP")); }break; case CV_BasicType_FLOAT48: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_F48, str8_lit("F48")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_F48, str8_lit("F48")); }break; case CV_BasicType_FLOAT64: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_F64, str8_lit("F64")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_F64, str8_lit("F64")); }break; case CV_BasicType_FLOAT80: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_F80, str8_lit("F80")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_F80, str8_lit("F80")); }break; case CV_BasicType_FLOAT128: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_F128, str8_lit("F128")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_F128, str8_lit("F128")); }break; case CV_BasicType_COMPLEX32: { basic_type = - rdim_type_basic(ctx->root, RADDBGI_TypeKind_ComplexF32, str8_lit("ComplexF32")); + rdim_type_basic(ctx->root, RDI_TypeKind_ComplexF32, str8_lit("ComplexF32")); }break; case CV_BasicType_COMPLEX64: { basic_type = - rdim_type_basic(ctx->root, RADDBGI_TypeKind_ComplexF64, str8_lit("ComplexF64")); + rdim_type_basic(ctx->root, RDI_TypeKind_ComplexF64, str8_lit("ComplexF64")); }break; case CV_BasicType_COMPLEX80: { basic_type = - rdim_type_basic(ctx->root, RADDBGI_TypeKind_ComplexF80, str8_lit("ComplexF80")); + rdim_type_basic(ctx->root, RDI_TypeKind_ComplexF80, str8_lit("ComplexF80")); }break; case CV_BasicType_COMPLEX128: { basic_type = - rdim_type_basic(ctx->root, RADDBGI_TypeKind_ComplexF128, str8_lit("ComplexF128")); + rdim_type_basic(ctx->root, RDI_TypeKind_ComplexF128, str8_lit("ComplexF128")); }break; case CV_BasicType_PTR: { - basic_type = rdim_type_basic(ctx->root, RADDBGI_TypeKind_Handle, str8_lit("PTR")); + basic_type = rdim_type_basic(ctx->root, RDI_TypeKind_Handle, str8_lit("PTR")); }break; } @@ -1397,7 +1397,7 @@ p2r_type_cons_basic(P2R_Ctx *ctx, CV_TypeId itype) case CV_BasicPointerKind_16_32BIT: case CV_BasicPointerKind_64BIT: { - constructed_type = rdim_type_pointer(ctx->root, basic_type, RADDBGI_TypeKind_Ptr); + constructed_type = rdim_type_pointer(ctx->root, basic_type, RDI_TypeKind_Ptr); }break; } @@ -1440,14 +1440,14 @@ p2r_type_cons_leaf_record(P2R_Ctx *ctx, CV_TypeId itype) { CV_LeafModifier *modifier = (CV_LeafModifier*)first; - RADDBGI_TypeModifierFlags flags = 0; + RDI_TypeModifierFlags flags = 0; if(modifier->flags & CV_ModifierFlag_Const) { - flags |= RADDBGI_TypeModifierFlag_Const; + flags |= RDI_TypeModifierFlag_Const; } if(modifier->flags & CV_ModifierFlag_Volatile) { - flags |= RADDBGI_TypeModifierFlag_Volatile; + flags |= RDI_TypeModifierFlag_Volatile; } RDIM_Type *direct_type = p2r_type_resolve_and_check(ctx, modifier->itype); @@ -1476,33 +1476,33 @@ p2r_type_cons_leaf_record(P2R_Ctx *ctx, CV_TypeId itype) // TODO(allen): if ptr_mode in {PtrMem, PtrMethod} then output a member pointer instead // extract modifier flags - RADDBGI_TypeModifierFlags modifier_flags = 0; + RDI_TypeModifierFlags modifier_flags = 0; if(pointer->attribs & CV_PointerAttrib_Const) { - modifier_flags |= RADDBGI_TypeModifierFlag_Const; + modifier_flags |= RDI_TypeModifierFlag_Const; } if(pointer->attribs & CV_PointerAttrib_Volatile) { - modifier_flags |= RADDBGI_TypeModifierFlag_Volatile; + modifier_flags |= RDI_TypeModifierFlag_Volatile; } // determine type kind - RADDBGI_TypeKind type_kind = RADDBGI_TypeKind_Ptr; + RDI_TypeKind type_kind = RDI_TypeKind_Ptr; if(pointer->attribs & CV_PointerAttrib_LRef) { - type_kind = RADDBGI_TypeKind_LRef; + type_kind = RDI_TypeKind_LRef; } else if(pointer->attribs & CV_PointerAttrib_RRef) { - type_kind = RADDBGI_TypeKind_RRef; + type_kind = RDI_TypeKind_RRef; } if(ptr_mode == CV_PointerMode_LRef) { - type_kind = RADDBGI_TypeKind_LRef; + type_kind = RDI_TypeKind_LRef; } else if(ptr_mode == CV_PointerMode_RRef) { - type_kind = RADDBGI_TypeKind_RRef; + type_kind = RDI_TypeKind_RRef; } RDIM_Type *direct_type = p2r_type_resolve_and_check(ctx, pointer->itype); @@ -1628,10 +1628,10 @@ p2r_type_cons_leaf_record(P2R_Ctx *ctx, CV_TypeId itype) // incomplete type if(lf_struct->props & CV_TypeProp_FwdRef) { - RADDBGI_TypeKind type_kind = RADDBGI_TypeKind_IncompleteStruct; + RDI_TypeKind type_kind = RDI_TypeKind_IncompleteStruct; if(range->hdr.kind == CV_LeafKind_CLASS) { - type_kind = RADDBGI_TypeKind_IncompleteClass; + type_kind = RDI_TypeKind_IncompleteClass; } result = rdim_type_incomplete(ctx->root, type_kind, name); } @@ -1639,10 +1639,10 @@ p2r_type_cons_leaf_record(P2R_Ctx *ctx, CV_TypeId itype) // complete type else { - RADDBGI_TypeKind type_kind = RADDBGI_TypeKind_Struct; + RDI_TypeKind type_kind = RDI_TypeKind_Struct; if(range->hdr.kind == CV_LeafKind_CLASS) { - type_kind = RADDBGI_TypeKind_Class; + type_kind = RDI_TypeKind_Class; } result = rdim_type_udt(ctx->root, type_kind, name, size_u64); @@ -1679,10 +1679,10 @@ p2r_type_cons_leaf_record(P2R_Ctx *ctx, CV_TypeId itype) // incomplete type if(lf_struct->props & CV_TypeProp_FwdRef) { - RADDBGI_TypeKind type_kind = RADDBGI_TypeKind_IncompleteStruct; + RDI_TypeKind type_kind = RDI_TypeKind_IncompleteStruct; if(range->hdr.kind == CV_LeafKind_CLASS2) { - type_kind = RADDBGI_TypeKind_IncompleteClass; + type_kind = RDI_TypeKind_IncompleteClass; } result = rdim_type_incomplete(ctx->root, type_kind, name); } @@ -1690,10 +1690,10 @@ p2r_type_cons_leaf_record(P2R_Ctx *ctx, CV_TypeId itype) // complete type else { - RADDBGI_TypeKind type_kind = RADDBGI_TypeKind_Struct; + RDI_TypeKind type_kind = RDI_TypeKind_Struct; if(range->hdr.kind == CV_LeafKind_CLASS2) { - type_kind = RADDBGI_TypeKind_Class; + type_kind = RDI_TypeKind_Class; } result = rdim_type_udt(ctx->root, type_kind, name, size_u64); @@ -1730,13 +1730,13 @@ p2r_type_cons_leaf_record(P2R_Ctx *ctx, CV_TypeId itype) if(lf_union->props & CV_TypeProp_FwdRef) { result = - rdim_type_incomplete(ctx->root, RADDBGI_TypeKind_IncompleteUnion, name); + rdim_type_incomplete(ctx->root, RDI_TypeKind_IncompleteUnion, name); } // complete type else { - result = rdim_type_udt(ctx->root, RADDBGI_TypeKind_Union, name, size_u64); + result = rdim_type_udt(ctx->root, RDI_TypeKind_Union, name, size_u64); // remember to revisit this for members { @@ -1765,7 +1765,7 @@ p2r_type_cons_leaf_record(P2R_Ctx *ctx, CV_TypeId itype) // incomplete type if(lf_enum->props & CV_TypeProp_FwdRef) { - result = rdim_type_incomplete(ctx->root, RADDBGI_TypeKind_IncompleteEnum, name); + result = rdim_type_incomplete(ctx->root, RDI_TypeKind_IncompleteEnum, name); } // complete type @@ -2092,7 +2092,7 @@ p2r_symbol_cons(P2R_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id) Temp scratch = scratch_begin(0, 0); String8 data = sym->data; U64 user_id_base = (((U64)sym_unique_id) << 32); - U64 sym_unique_id_hash = raddbgi_hash((U8*)&sym_unique_id, sizeof(sym_unique_id)); + U64 sym_unique_id_hash = rdi_hash((U8*)&sym_unique_id, sizeof(sym_unique_id)); ////////////////////////////// //- rjf: PASS 1: map out data associations @@ -2388,17 +2388,17 @@ p2r_symbol_cons(P2R_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id) U32 var_off = regrel32->reg_off; // need arch for analyzing register stuff - RADDBGI_Arch arch = ctx->arch; + RDI_Arch arch = ctx->arch; U64 addr_size = ctx->addr_size; // determine if this is a parameter - RADDBGI_LocalKind local_kind = RADDBGI_LocalKind_Variable; + RDI_LocalKind local_kind = RDI_LocalKind_Variable; { B32 is_stack_reg = 0; switch (arch) { - 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; + case RDI_Arch_X86: is_stack_reg = (cv_reg == CV_Regx86_ESP); break; + case RDI_Arch_X64: is_stack_reg = (cv_reg == CV_Regx64_RSP); break; } if(is_stack_reg) { @@ -2411,7 +2411,7 @@ p2r_symbol_cons(P2R_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id) } if(var_off > frame_size) { - local_kind = RADDBGI_LocalKind_Parameter; + local_kind = RDI_LocalKind_Parameter; } } } @@ -2435,18 +2435,18 @@ p2r_symbol_cons(P2R_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id) B32 extra_indirection_to_value = 0; switch (arch) { - case RADDBGI_Arch_X86: + case RDI_Arch_X86: { - if(local_kind == RADDBGI_LocalKind_Parameter && + if(local_kind == RDI_LocalKind_Parameter && (type->byte_size > 4 || !IsPow2OrZero(type->byte_size))) { extra_indirection_to_value = 1; } }break; - case RADDBGI_Arch_X64: + case RDI_Arch_X64: { - if(local_kind == RADDBGI_LocalKind_Parameter && + if(local_kind == RDI_LocalKind_Parameter && (type->byte_size > 8 || !IsPow2OrZero(type->byte_size))) { extra_indirection_to_value = 1; @@ -2455,7 +2455,7 @@ p2r_symbol_cons(P2R_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id) } // get raddbg register code - RADDBGI_RegisterCode register_code = raddbgi_reg_code_from_cv_reg_code(arch, cv_reg); + RDI_RegisterCode register_code = rdi_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; @@ -2542,10 +2542,10 @@ p2r_symbol_cons(P2R_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id) else { // local kind - RADDBGI_LocalKind local_kind = RADDBGI_LocalKind_Variable; + RDI_LocalKind local_kind = RDI_LocalKind_Variable; if(slocal->flags & CV_LocalFlag_Param) { - local_kind = RADDBGI_LocalKind_Parameter; + local_kind = RDI_LocalKind_Parameter; } // emit local @@ -2565,7 +2565,7 @@ p2r_symbol_cons(P2R_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id) rdim_local_set_basic_info(ctx->root, local_var, &info); defrange_target = rdim_location_set_from_local(ctx->root, local_var); - defrange_target_is_param = (local_kind == RADDBGI_LocalKind_Parameter); + defrange_target_is_param = (local_kind == RDI_LocalKind_Parameter); } }break; @@ -2576,9 +2576,9 @@ p2r_symbol_cons(P2R_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id) CV_SymDefrangeRegister *defrange_register = (CV_SymDefrangeRegister*)sym_header_struct_base; // TODO(allen): offset & size from cv_reg code - RADDBGI_Arch arch = ctx->arch; + RDI_Arch arch = ctx->arch; CV_Reg cv_reg = defrange_register->reg; - RADDBGI_RegisterCode register_code = raddbgi_reg_code_from_cv_reg_code(arch, cv_reg); + RDI_RegisterCode register_code = rdi_reg_code_from_cv_reg_code(arch, cv_reg); // setup location RDIM_Location *location = rdim_location_val_reg(ctx->root, register_code); @@ -2602,7 +2602,7 @@ p2r_symbol_cons(P2R_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id) // select frame pointer register CV_EncodedFramePtrReg encoded_fp_reg = p2r_cv_encoded_fp_reg_from_proc(ctx, current_procedure, defrange_target_is_param); - RADDBGI_RegisterCode fp_register_code = + RDI_RegisterCode fp_register_code = p2r_reg_code_from_arch_encoded_fp_reg(ctx->arch, encoded_fp_reg); // setup location @@ -2635,9 +2635,9 @@ p2r_symbol_cons(P2R_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id) { // TODO(allen): offset & size from cv_reg code - RADDBGI_Arch arch = ctx->arch; + RDI_Arch arch = ctx->arch; CV_Reg cv_reg = defrange_subfield_register->reg; - RADDBGI_RegisterCode register_code = raddbgi_reg_code_from_cv_reg_code(arch, cv_reg); + RDI_RegisterCode register_code = rdi_reg_code_from_cv_reg_code(arch, cv_reg); // setup location RDIM_Location *location = rdim_location_val_reg(ctx->root, register_code); @@ -2663,7 +2663,7 @@ p2r_symbol_cons(P2R_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id) // select frame pointer register CV_EncodedFramePtrReg encoded_fp_reg = p2r_cv_encoded_fp_reg_from_proc(ctx, current_procedure, defrange_target_is_param); - RADDBGI_RegisterCode fp_register_code = + RDI_RegisterCode fp_register_code = p2r_reg_code_from_arch_encoded_fp_reg(ctx->arch, encoded_fp_reg); // setup location @@ -2687,9 +2687,9 @@ p2r_symbol_cons(P2R_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id) CV_SymDefrangeRegisterRel *defrange_register_rel = (CV_SymDefrangeRegisterRel*)sym_header_struct_base; // TODO(allen): offset & size from cv_reg code - RADDBGI_Arch arch = ctx->arch; + RDI_Arch arch = ctx->arch; CV_Reg cv_reg = defrange_register_rel->reg; - RADDBGI_RegisterCode register_code = raddbgi_reg_code_from_cv_reg_code(arch, cv_reg); + RDI_RegisterCode register_code = rdi_reg_code_from_cv_reg_code(arch, cv_reg); U32 byte_size = ctx->addr_size; U32 byte_pos = 0; @@ -3009,7 +3009,7 @@ p2r_known_global_insert(Arena *arena, P2R_KnownGlobalSet *set, String8 name, U64 internal RDIM_Location* p2r_location_from_addr_reg_off(P2R_Ctx *ctx, - RADDBGI_RegisterCode reg_code, + RDI_RegisterCode reg_code, U32 reg_byte_size, U32 reg_byte_pos, S64 offset, @@ -3032,13 +3032,13 @@ p2r_location_from_addr_reg_off(P2R_Ctx *ctx, Arena *arena = ctx->arena; RDIM_EvalBytecode bytecode = {0}; - U32 regread_param = RADDBGI_EncodeRegReadParam(reg_code, reg_byte_size, reg_byte_pos); - rdim_bytecode_push_op(arena, &bytecode, RADDBGI_EvalOp_RegRead, regread_param); + U32 regread_param = RDI_EncodeRegReadParam(reg_code, reg_byte_size, reg_byte_pos); + rdim_bytecode_push_op(arena, &bytecode, RDI_EvalOp_RegRead, regread_param); rdim_bytecode_push_sconst(arena, &bytecode, offset); - rdim_bytecode_push_op(arena, &bytecode, RADDBGI_EvalOp_Add, 0); + rdim_bytecode_push_op(arena, &bytecode, RDI_EvalOp_Add, 0); if(extra_indirection) { - rdim_bytecode_push_op(arena, &bytecode, RADDBGI_EvalOp_MemRead, ctx->addr_size); + rdim_bytecode_push_op(arena, &bytecode, RDI_EvalOp_MemRead, ctx->addr_size); } result = rdim_location_addr_bytecode_stream(ctx->root, &bytecode); @@ -3067,14 +3067,14 @@ p2r_cv_encoded_fp_reg_from_proc(P2R_Ctx *ctx, RDIM_Symbol *proc, B32 param_base) return(result); } -internal RADDBGI_RegisterCode -p2r_reg_code_from_arch_encoded_fp_reg(RADDBGI_Arch arch, CV_EncodedFramePtrReg encoded_reg) +internal RDI_RegisterCode +p2r_reg_code_from_arch_encoded_fp_reg(RDI_Arch arch, CV_EncodedFramePtrReg encoded_reg) { - RADDBGI_RegisterCode result = 0; + RDI_RegisterCode result = 0; switch (arch) { - case RADDBGI_Arch_X86: + case RDI_Arch_X86: { switch (encoded_reg) { @@ -3085,30 +3085,30 @@ p2r_reg_code_from_arch_encoded_fp_reg(RADDBGI_Arch arch, CV_EncodedFramePtrReg e }break; case CV_EncodedFramePtrReg_FramePtr: { - result = RADDBGI_RegisterCode_X86_ebp; + result = RDI_RegisterCode_X86_ebp; }break; case CV_EncodedFramePtrReg_BasePtr: { - result = RADDBGI_RegisterCode_X86_ebx; + result = RDI_RegisterCode_X86_ebx; }break; } }break; - case RADDBGI_Arch_X64: + case RDI_Arch_X64: { switch (encoded_reg) { case CV_EncodedFramePtrReg_StackPtr: { - result = RADDBGI_RegisterCode_X64_rsp; + result = RDI_RegisterCode_X64_rsp; }break; case CV_EncodedFramePtrReg_FramePtr: { - result = RADDBGI_RegisterCode_X64_rbp; + result = RDI_RegisterCode_X64_rbp; }break; case CV_EncodedFramePtrReg_BasePtr: { - result = RADDBGI_RegisterCode_X64_r13; + result = RDI_RegisterCode_X64_r13; }break; } }break; @@ -3435,7 +3435,7 @@ str8_list_pushf(arena, &out->errors, fmt, __VA_ARGS__);\ U64 exe_hash = 0; if(out->good_parse && params->input_exe_data.size > 0) ProfScope("hash exe") { - exe_hash = raddbgi_hash(params->input_exe_data.str, params->input_exe_data.size); + exe_hash = rdi_hash(params->input_exe_data.str, params->input_exe_data.size); } // output generation @@ -3444,7 +3444,7 @@ str8_list_pushf(arena, &out->errors, fmt, __VA_ARGS__);\ { // determine arch - RADDBGI_Arch architecture = RADDBGI_Arch_NULL; + RDI_Arch architecture = RDI_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 @@ -3462,14 +3462,14 @@ str8_list_pushf(arena, &out->errors, fmt, __VA_ARGS__);\ { if(sym_for_unit[comp_unit_idx] != 0) { - architecture = raddbgi_arch_from_cv_arch(sym_for_unit[comp_unit_idx]->info.arch); + architecture = rdi_arch_from_cv_arch(sym_for_unit[comp_unit_idx]->info.arch); if(architecture != 0) { break; } } } - U64 addr_size = raddbgi_addr_size_from_arch(architecture); + U64 addr_size = rdi_addr_size_from_arch(architecture); // predict symbol counts @@ -3541,8 +3541,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); - RADDBGI_BinarySectionFlags flags = - raddbgi_binary_section_flags_from_coff_section_flags(coff_ptr->flags); + RDI_BinarySectionFlags flags = + rdi_binary_section_flags_from_coff_section_flags(coff_ptr->flags); rdim_add_binary_section(root, name, flags, coff_ptr->voff, coff_ptr->voff + coff_ptr->vsize, coff_ptr->foff, coff_ptr->foff + coff_ptr->fsize); @@ -3589,7 +3589,7 @@ str8_list_pushf(arena, &out->errors, fmt, __VA_ARGS__);\ String8 archive_file = unit->group_name; // extract langauge - RADDBGI_Language lang = raddbgi_language_from_cv_language(sym->info.language); + RDI_Language lang = rdi_language_from_cv_language(sym->info.language); // basic per unit info RDIM_Unit *unit_handle = rdim_unit_handle_from_user_id(root, i, i); diff --git a/src/raddbgi_from_pdb/raddbgi_from_pdb.h b/src/raddbgi_from_pdb/raddbgi_from_pdb.h index a1b4787d..42f382fa 100644 --- a/src/raddbgi_from_pdb/raddbgi_from_pdb.h +++ b/src/raddbgi_from_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 RADDBGI_FROM_PDB_H -#define RADDBGI_FROM_PDB_H +#ifndef RDI_FROM_PDB_H +#define RDI_FROM_PDB_H //////////////////////////////// //~ rjf: Conversion Parameters Type @@ -130,7 +130,7 @@ struct P2R_KnownGlobalSet typedef struct P2R_CtxParams P2R_CtxParams; struct P2R_CtxParams { - RADDBGI_Arch arch; + RDI_Arch arch; PDB_TpiHashParsed *tpi_hash; CV_LeafParsed *tpi_leaf; PDB_CoffSectionArray *sections; @@ -171,7 +171,7 @@ struct P2R_Ctx Arena *arena; // INPUT data - RADDBGI_Arch arch; + RDI_Arch arch; U64 addr_size; PDB_TpiHashParsed *hash; CV_LeafParsed *leaf; @@ -214,14 +214,14 @@ internal P2R_Params *p2r_params_from_cmd_line(Arena *arena, CmdLine *cmdline); //////////////////////////////// //~ rjf: COFF => RADDBGI Canonical Conversions -internal RADDBGI_BinarySectionFlags raddbgi_binary_section_flags_from_coff_section_flags(COFF_SectionFlags flags); +internal RDI_BinarySectionFlags rdi_binary_section_flags_from_coff_section_flags(COFF_SectionFlags flags); //////////////////////////////// //~ rjf: CodeView => RADDBGI Canonical Conversions -internal RADDBGI_Arch raddbgi_arch_from_cv_arch(CV_Arch arch); -internal RADDBGI_RegisterCode raddbgi_reg_code_from_cv_reg_code(RADDBGI_Arch arch, CV_Reg reg_code); -internal RADDBGI_Language raddbgi_language_from_cv_language(CV_Language language); +internal RDI_Arch rdi_arch_from_cv_arch(CV_Arch arch); +internal RDI_RegisterCode rdi_reg_code_from_cv_reg_code(RDI_Arch arch, CV_Reg reg_code); +internal RDI_Language rdi_language_from_cv_language(CV_Language language); //////////////////////////////// //~ rjf: Conversion Implementation Helpers @@ -303,7 +303,7 @@ internal void p2r_known_global_insert(Arena *arena, P2R_KnownGlobalSet *set, // location info helpers internal RDIM_Location* p2r_location_from_addr_reg_off(P2R_Ctx *ctx, - RADDBGI_RegisterCode reg_code, + RDI_RegisterCode reg_code, U32 reg_byte_size, U32 reg_byte_pos, S64 offset, @@ -313,8 +313,8 @@ internal CV_EncodedFramePtrReg p2r_cv_encoded_fp_reg_from_proc(P2R_Ctx *ctx, RDIM_Symbol *proc, B32 param_base); -internal RADDBGI_RegisterCode p2r_reg_code_from_arch_encoded_fp_reg(RADDBGI_Arch arch, - CV_EncodedFramePtrReg encoded_reg); +internal RDI_RegisterCode p2r_reg_code_from_arch_encoded_fp_reg(RDI_Arch arch, + CV_EncodedFramePtrReg encoded_reg); internal void p2r_location_over_lvar_addr_range(P2R_Ctx *ctx, RDIM_LocationSet *locset, @@ -332,4 +332,4 @@ internal String8 p2r_link_name_find(P2R_LinkNameMap *map, U64 voff); internal P2R_Out *p2r_convert(Arena *arena, P2R_Params *params); -#endif // RADDBGI_FROM_PDB_H +#endif // RDI_FROM_PDB_H diff --git a/src/raddbgi_make_local/raddbgi_make_local.h b/src/raddbgi_make_local/raddbgi_make_local.h index c5f7fee0..2f3236da 100644 --- a/src/raddbgi_make_local/raddbgi_make_local.h +++ b/src/raddbgi_make_local/raddbgi_make_local.h @@ -1,8 +1,8 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef RADDBGI_CONS_LOCAL_H -#define RADDBGI_CONS_LOCAL_H +#ifndef RDI_CONS_LOCAL_H +#define RDI_CONS_LOCAL_H // rjf: base layer memory ops #define RDIM_MEMSET_OVERRIDE @@ -11,11 +11,11 @@ #define rdim_memcpy MemoryCopy // rjf: base layer string overrides -#define RADDBGI_STRING8_OVERRIDE +#define RDI_STRING8_OVERRIDE #define RDIM_String8 String8 #define RDIM_String8_BaseMember str #define RDIM_String8_SizeMember size -#define RADDBGI_STRING8LIST_OVERRIDE +#define RDI_STRING8LIST_OVERRIDE #define RDIM_String8Node String8Node #define RDIM_String8Node_NextPtrMember next #define RDIM_String8Node_StringMember string @@ -43,4 +43,4 @@ #include "lib_raddbgi_make/raddbgi_make.h" -#endif // RADDBGI_CONS_LOCAL_H +#endif // RDI_CONS_LOCAL_H diff --git a/src/regs/raddbgi/generated/regs_raddbgi.meta.c b/src/regs/raddbgi/generated/regs_raddbgi.meta.c index bc4c0d55..763da2aa 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 RADDBGI_RegisterCode regs_raddbgi_code_from_arch_reg_code(Architecture arch, REGS_RegCode code) +internal RDI_RegisterCode regs_rdi_code_from_arch_reg_code(Architecture arch, REGS_RegCode code) { -RADDBGI_RegisterCode result = 0; +RDI_RegisterCode result = 0; switch(arch) { default:{}break; @@ -14,82 +14,82 @@ case Architecture_x64: switch(code) { default:{}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; +case REGS_RegCodeX64_rax:{result = RDI_RegisterCode_X64_rax;}break; +case REGS_RegCodeX64_rcx:{result = RDI_RegisterCode_X64_rcx;}break; +case REGS_RegCodeX64_rdx:{result = RDI_RegisterCode_X64_rdx;}break; +case REGS_RegCodeX64_rbx:{result = RDI_RegisterCode_X64_rbx;}break; +case REGS_RegCodeX64_rsp:{result = RDI_RegisterCode_X64_rsp;}break; +case REGS_RegCodeX64_rbp:{result = RDI_RegisterCode_X64_rbp;}break; +case REGS_RegCodeX64_rsi:{result = RDI_RegisterCode_X64_rsi;}break; +case REGS_RegCodeX64_rdi:{result = RDI_RegisterCode_X64_rdi;}break; +case REGS_RegCodeX64_r8:{result = RDI_RegisterCode_X64_r8;}break; +case REGS_RegCodeX64_r9:{result = RDI_RegisterCode_X64_r9;}break; +case REGS_RegCodeX64_r10:{result = RDI_RegisterCode_X64_r10;}break; +case REGS_RegCodeX64_r11:{result = RDI_RegisterCode_X64_r11;}break; +case REGS_RegCodeX64_r12:{result = RDI_RegisterCode_X64_r12;}break; +case REGS_RegCodeX64_r13:{result = RDI_RegisterCode_X64_r13;}break; +case REGS_RegCodeX64_r14:{result = RDI_RegisterCode_X64_r14;}break; +case REGS_RegCodeX64_r15:{result = RDI_RegisterCode_X64_r15;}break; +case REGS_RegCodeX64_fsbase:{result = RDI_RegisterCode_X64_fsbase;}break; +case REGS_RegCodeX64_gsbase:{result = RDI_RegisterCode_X64_gsbase;}break; +case REGS_RegCodeX64_rip:{result = RDI_RegisterCode_X64_rip;}break; +case REGS_RegCodeX64_rflags:{result = RDI_RegisterCode_X64_rflags;}break; +case REGS_RegCodeX64_dr0:{result = RDI_RegisterCode_X64_dr0;}break; +case REGS_RegCodeX64_dr1:{result = RDI_RegisterCode_X64_dr1;}break; +case REGS_RegCodeX64_dr2:{result = RDI_RegisterCode_X64_dr2;}break; +case REGS_RegCodeX64_dr3:{result = RDI_RegisterCode_X64_dr3;}break; +case REGS_RegCodeX64_dr4:{result = RDI_RegisterCode_X64_dr4;}break; +case REGS_RegCodeX64_dr5:{result = RDI_RegisterCode_X64_dr5;}break; +case REGS_RegCodeX64_dr6:{result = RDI_RegisterCode_X64_dr6;}break; +case REGS_RegCodeX64_dr7:{result = RDI_RegisterCode_X64_dr7;}break; +case REGS_RegCodeX64_fpr0:{result = RDI_RegisterCode_X64_fpr0;}break; +case REGS_RegCodeX64_fpr1:{result = RDI_RegisterCode_X64_fpr1;}break; +case REGS_RegCodeX64_fpr2:{result = RDI_RegisterCode_X64_fpr2;}break; +case REGS_RegCodeX64_fpr3:{result = RDI_RegisterCode_X64_fpr3;}break; +case REGS_RegCodeX64_fpr4:{result = RDI_RegisterCode_X64_fpr4;}break; +case REGS_RegCodeX64_fpr5:{result = RDI_RegisterCode_X64_fpr5;}break; +case REGS_RegCodeX64_fpr6:{result = RDI_RegisterCode_X64_fpr6;}break; +case REGS_RegCodeX64_fpr7:{result = RDI_RegisterCode_X64_fpr7;}break; +case REGS_RegCodeX64_st0:{result = RDI_RegisterCode_X64_st0;}break; +case REGS_RegCodeX64_st1:{result = RDI_RegisterCode_X64_st1;}break; +case REGS_RegCodeX64_st2:{result = RDI_RegisterCode_X64_st2;}break; +case REGS_RegCodeX64_st3:{result = RDI_RegisterCode_X64_st3;}break; +case REGS_RegCodeX64_st4:{result = RDI_RegisterCode_X64_st4;}break; +case REGS_RegCodeX64_st5:{result = RDI_RegisterCode_X64_st5;}break; +case REGS_RegCodeX64_st6:{result = RDI_RegisterCode_X64_st6;}break; +case REGS_RegCodeX64_st7:{result = RDI_RegisterCode_X64_st7;}break; +case REGS_RegCodeX64_fcw:{result = RDI_RegisterCode_X64_fcw;}break; +case REGS_RegCodeX64_fsw:{result = RDI_RegisterCode_X64_fsw;}break; +case REGS_RegCodeX64_ftw:{result = RDI_RegisterCode_X64_ftw;}break; +case REGS_RegCodeX64_fop:{result = RDI_RegisterCode_X64_fop;}break; +case REGS_RegCodeX64_fcs:{result = RDI_RegisterCode_X64_fcs;}break; +case REGS_RegCodeX64_fds:{result = RDI_RegisterCode_X64_fds;}break; +case REGS_RegCodeX64_fip:{result = RDI_RegisterCode_X64_fip;}break; +case REGS_RegCodeX64_fdp:{result = RDI_RegisterCode_X64_fdp;}break; +case REGS_RegCodeX64_mxcsr:{result = RDI_RegisterCode_X64_mxcsr;}break; +case REGS_RegCodeX64_mxcsr_mask:{result = RDI_RegisterCode_X64_mxcsr_mask;}break; +case REGS_RegCodeX64_ss:{result = RDI_RegisterCode_X64_ss;}break; +case REGS_RegCodeX64_cs:{result = RDI_RegisterCode_X64_cs;}break; +case REGS_RegCodeX64_ds:{result = RDI_RegisterCode_X64_ds;}break; +case REGS_RegCodeX64_es:{result = RDI_RegisterCode_X64_es;}break; +case REGS_RegCodeX64_fs:{result = RDI_RegisterCode_X64_fs;}break; +case REGS_RegCodeX64_gs:{result = RDI_RegisterCode_X64_gs;}break; +case REGS_RegCodeX64_ymm0:{result = RDI_RegisterCode_X64_ymm0;}break; +case REGS_RegCodeX64_ymm1:{result = RDI_RegisterCode_X64_ymm1;}break; +case REGS_RegCodeX64_ymm2:{result = RDI_RegisterCode_X64_ymm2;}break; +case REGS_RegCodeX64_ymm3:{result = RDI_RegisterCode_X64_ymm3;}break; +case REGS_RegCodeX64_ymm4:{result = RDI_RegisterCode_X64_ymm4;}break; +case REGS_RegCodeX64_ymm5:{result = RDI_RegisterCode_X64_ymm5;}break; +case REGS_RegCodeX64_ymm6:{result = RDI_RegisterCode_X64_ymm6;}break; +case REGS_RegCodeX64_ymm7:{result = RDI_RegisterCode_X64_ymm7;}break; +case REGS_RegCodeX64_ymm8:{result = RDI_RegisterCode_X64_ymm8;}break; +case REGS_RegCodeX64_ymm9:{result = RDI_RegisterCode_X64_ymm9;}break; +case REGS_RegCodeX64_ymm10:{result = RDI_RegisterCode_X64_ymm10;}break; +case REGS_RegCodeX64_ymm11:{result = RDI_RegisterCode_X64_ymm11;}break; +case REGS_RegCodeX64_ymm12:{result = RDI_RegisterCode_X64_ymm12;}break; +case REGS_RegCodeX64_ymm13:{result = RDI_RegisterCode_X64_ymm13;}break; +case REGS_RegCodeX64_ymm14:{result = RDI_RegisterCode_X64_ymm14;}break; +case REGS_RegCodeX64_ymm15:{result = RDI_RegisterCode_X64_ymm15;}break; } }break; case Architecture_x86: @@ -97,72 +97,72 @@ case Architecture_x86: switch(code) { default:{}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; +case REGS_RegCodeX86_eax:{result = RDI_RegisterCode_X86_eax;}break; +case REGS_RegCodeX86_ecx:{result = RDI_RegisterCode_X86_ecx;}break; +case REGS_RegCodeX86_edx:{result = RDI_RegisterCode_X86_edx;}break; +case REGS_RegCodeX86_ebx:{result = RDI_RegisterCode_X86_ebx;}break; +case REGS_RegCodeX86_esp:{result = RDI_RegisterCode_X86_esp;}break; +case REGS_RegCodeX86_ebp:{result = RDI_RegisterCode_X86_ebp;}break; +case REGS_RegCodeX86_esi:{result = RDI_RegisterCode_X86_esi;}break; +case REGS_RegCodeX86_edi:{result = RDI_RegisterCode_X86_edi;}break; +case REGS_RegCodeX86_fsbase:{result = RDI_RegisterCode_X86_fsbase;}break; +case REGS_RegCodeX86_gsbase:{result = RDI_RegisterCode_X86_gsbase;}break; +case REGS_RegCodeX86_eflags:{result = RDI_RegisterCode_X86_eflags;}break; +case REGS_RegCodeX86_eip:{result = RDI_RegisterCode_X86_eip;}break; +case REGS_RegCodeX86_dr0:{result = RDI_RegisterCode_X86_dr0;}break; +case REGS_RegCodeX86_dr1:{result = RDI_RegisterCode_X86_dr1;}break; +case REGS_RegCodeX86_dr2:{result = RDI_RegisterCode_X86_dr2;}break; +case REGS_RegCodeX86_dr3:{result = RDI_RegisterCode_X86_dr3;}break; +case REGS_RegCodeX86_dr4:{result = RDI_RegisterCode_X86_dr4;}break; +case REGS_RegCodeX86_dr5:{result = RDI_RegisterCode_X86_dr5;}break; +case REGS_RegCodeX86_dr6:{result = RDI_RegisterCode_X86_dr6;}break; +case REGS_RegCodeX86_dr7:{result = RDI_RegisterCode_X86_dr7;}break; +case REGS_RegCodeX86_fpr0:{result = RDI_RegisterCode_X86_fpr0;}break; +case REGS_RegCodeX86_fpr1:{result = RDI_RegisterCode_X86_fpr1;}break; +case REGS_RegCodeX86_fpr2:{result = RDI_RegisterCode_X86_fpr2;}break; +case REGS_RegCodeX86_fpr3:{result = RDI_RegisterCode_X86_fpr3;}break; +case REGS_RegCodeX86_fpr4:{result = RDI_RegisterCode_X86_fpr4;}break; +case REGS_RegCodeX86_fpr5:{result = RDI_RegisterCode_X86_fpr5;}break; +case REGS_RegCodeX86_fpr6:{result = RDI_RegisterCode_X86_fpr6;}break; +case REGS_RegCodeX86_fpr7:{result = RDI_RegisterCode_X86_fpr7;}break; +case REGS_RegCodeX86_st0:{result = RDI_RegisterCode_X86_st0;}break; +case REGS_RegCodeX86_st1:{result = RDI_RegisterCode_X86_st1;}break; +case REGS_RegCodeX86_st2:{result = RDI_RegisterCode_X86_st2;}break; +case REGS_RegCodeX86_st3:{result = RDI_RegisterCode_X86_st3;}break; +case REGS_RegCodeX86_st4:{result = RDI_RegisterCode_X86_st4;}break; +case REGS_RegCodeX86_st5:{result = RDI_RegisterCode_X86_st5;}break; +case REGS_RegCodeX86_st6:{result = RDI_RegisterCode_X86_st6;}break; +case REGS_RegCodeX86_st7:{result = RDI_RegisterCode_X86_st7;}break; +case REGS_RegCodeX86_fcw:{result = RDI_RegisterCode_X86_fcw;}break; +case REGS_RegCodeX86_fsw:{result = RDI_RegisterCode_X86_fsw;}break; +case REGS_RegCodeX86_ftw:{result = RDI_RegisterCode_X86_ftw;}break; +case REGS_RegCodeX86_fop:{result = RDI_RegisterCode_X86_fop;}break; +case REGS_RegCodeX86_fcs:{result = RDI_RegisterCode_X86_fcs;}break; +case REGS_RegCodeX86_fds:{result = RDI_RegisterCode_X86_fds;}break; +case REGS_RegCodeX86_fip:{result = RDI_RegisterCode_X86_fip;}break; +case REGS_RegCodeX86_fdp:{result = RDI_RegisterCode_X86_fdp;}break; +case REGS_RegCodeX86_mxcsr:{result = RDI_RegisterCode_X86_mxcsr;}break; +case REGS_RegCodeX86_mxcsr_mask:{result = RDI_RegisterCode_X86_mxcsr_mask;}break; +case REGS_RegCodeX86_ss:{result = RDI_RegisterCode_X86_ss;}break; +case REGS_RegCodeX86_cs:{result = RDI_RegisterCode_X86_cs;}break; +case REGS_RegCodeX86_ds:{result = RDI_RegisterCode_X86_ds;}break; +case REGS_RegCodeX86_es:{result = RDI_RegisterCode_X86_es;}break; +case REGS_RegCodeX86_fs:{result = RDI_RegisterCode_X86_fs;}break; +case REGS_RegCodeX86_gs:{result = RDI_RegisterCode_X86_gs;}break; +case REGS_RegCodeX86_ymm0:{result = RDI_RegisterCode_X86_ymm0;}break; +case REGS_RegCodeX86_ymm1:{result = RDI_RegisterCode_X86_ymm1;}break; +case REGS_RegCodeX86_ymm2:{result = RDI_RegisterCode_X86_ymm2;}break; +case REGS_RegCodeX86_ymm3:{result = RDI_RegisterCode_X86_ymm3;}break; +case REGS_RegCodeX86_ymm4:{result = RDI_RegisterCode_X86_ymm4;}break; +case REGS_RegCodeX86_ymm5:{result = RDI_RegisterCode_X86_ymm5;}break; +case REGS_RegCodeX86_ymm6:{result = RDI_RegisterCode_X86_ymm6;}break; +case REGS_RegCodeX86_ymm7:{result = RDI_RegisterCode_X86_ymm7;}break; } }break; } return result; } -internal REGS_RegCode regs_reg_code_from_arch_raddbgi_code(Architecture arch, RADDBGI_RegisterCode code) +internal REGS_RegCode regs_reg_code_from_arch_rdi_code(Architecture arch, RDI_RegisterCode code) { REGS_RegCode result = 0; switch(arch) @@ -173,82 +173,82 @@ case Architecture_x64: switch(code) { default:{}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; +case RDI_RegisterCode_X64_rax:{result = REGS_RegCodeX64_rax;}break; +case RDI_RegisterCode_X64_rcx:{result = REGS_RegCodeX64_rcx;}break; +case RDI_RegisterCode_X64_rdx:{result = REGS_RegCodeX64_rdx;}break; +case RDI_RegisterCode_X64_rbx:{result = REGS_RegCodeX64_rbx;}break; +case RDI_RegisterCode_X64_rsp:{result = REGS_RegCodeX64_rsp;}break; +case RDI_RegisterCode_X64_rbp:{result = REGS_RegCodeX64_rbp;}break; +case RDI_RegisterCode_X64_rsi:{result = REGS_RegCodeX64_rsi;}break; +case RDI_RegisterCode_X64_rdi:{result = REGS_RegCodeX64_rdi;}break; +case RDI_RegisterCode_X64_r8:{result = REGS_RegCodeX64_r8;}break; +case RDI_RegisterCode_X64_r9:{result = REGS_RegCodeX64_r9;}break; +case RDI_RegisterCode_X64_r10:{result = REGS_RegCodeX64_r10;}break; +case RDI_RegisterCode_X64_r11:{result = REGS_RegCodeX64_r11;}break; +case RDI_RegisterCode_X64_r12:{result = REGS_RegCodeX64_r12;}break; +case RDI_RegisterCode_X64_r13:{result = REGS_RegCodeX64_r13;}break; +case RDI_RegisterCode_X64_r14:{result = REGS_RegCodeX64_r14;}break; +case RDI_RegisterCode_X64_r15:{result = REGS_RegCodeX64_r15;}break; +case RDI_RegisterCode_X64_fsbase:{result = REGS_RegCodeX64_fsbase;}break; +case RDI_RegisterCode_X64_gsbase:{result = REGS_RegCodeX64_gsbase;}break; +case RDI_RegisterCode_X64_rip:{result = REGS_RegCodeX64_rip;}break; +case RDI_RegisterCode_X64_rflags:{result = REGS_RegCodeX64_rflags;}break; +case RDI_RegisterCode_X64_dr0:{result = REGS_RegCodeX64_dr0;}break; +case RDI_RegisterCode_X64_dr1:{result = REGS_RegCodeX64_dr1;}break; +case RDI_RegisterCode_X64_dr2:{result = REGS_RegCodeX64_dr2;}break; +case RDI_RegisterCode_X64_dr3:{result = REGS_RegCodeX64_dr3;}break; +case RDI_RegisterCode_X64_dr4:{result = REGS_RegCodeX64_dr4;}break; +case RDI_RegisterCode_X64_dr5:{result = REGS_RegCodeX64_dr5;}break; +case RDI_RegisterCode_X64_dr6:{result = REGS_RegCodeX64_dr6;}break; +case RDI_RegisterCode_X64_dr7:{result = REGS_RegCodeX64_dr7;}break; +case RDI_RegisterCode_X64_fpr0:{result = REGS_RegCodeX64_fpr0;}break; +case RDI_RegisterCode_X64_fpr1:{result = REGS_RegCodeX64_fpr1;}break; +case RDI_RegisterCode_X64_fpr2:{result = REGS_RegCodeX64_fpr2;}break; +case RDI_RegisterCode_X64_fpr3:{result = REGS_RegCodeX64_fpr3;}break; +case RDI_RegisterCode_X64_fpr4:{result = REGS_RegCodeX64_fpr4;}break; +case RDI_RegisterCode_X64_fpr5:{result = REGS_RegCodeX64_fpr5;}break; +case RDI_RegisterCode_X64_fpr6:{result = REGS_RegCodeX64_fpr6;}break; +case RDI_RegisterCode_X64_fpr7:{result = REGS_RegCodeX64_fpr7;}break; +case RDI_RegisterCode_X64_st0:{result = REGS_RegCodeX64_st0;}break; +case RDI_RegisterCode_X64_st1:{result = REGS_RegCodeX64_st1;}break; +case RDI_RegisterCode_X64_st2:{result = REGS_RegCodeX64_st2;}break; +case RDI_RegisterCode_X64_st3:{result = REGS_RegCodeX64_st3;}break; +case RDI_RegisterCode_X64_st4:{result = REGS_RegCodeX64_st4;}break; +case RDI_RegisterCode_X64_st5:{result = REGS_RegCodeX64_st5;}break; +case RDI_RegisterCode_X64_st6:{result = REGS_RegCodeX64_st6;}break; +case RDI_RegisterCode_X64_st7:{result = REGS_RegCodeX64_st7;}break; +case RDI_RegisterCode_X64_fcw:{result = REGS_RegCodeX64_fcw;}break; +case RDI_RegisterCode_X64_fsw:{result = REGS_RegCodeX64_fsw;}break; +case RDI_RegisterCode_X64_ftw:{result = REGS_RegCodeX64_ftw;}break; +case RDI_RegisterCode_X64_fop:{result = REGS_RegCodeX64_fop;}break; +case RDI_RegisterCode_X64_fcs:{result = REGS_RegCodeX64_fcs;}break; +case RDI_RegisterCode_X64_fds:{result = REGS_RegCodeX64_fds;}break; +case RDI_RegisterCode_X64_fip:{result = REGS_RegCodeX64_fip;}break; +case RDI_RegisterCode_X64_fdp:{result = REGS_RegCodeX64_fdp;}break; +case RDI_RegisterCode_X64_mxcsr:{result = REGS_RegCodeX64_mxcsr;}break; +case RDI_RegisterCode_X64_mxcsr_mask:{result = REGS_RegCodeX64_mxcsr_mask;}break; +case RDI_RegisterCode_X64_ss:{result = REGS_RegCodeX64_ss;}break; +case RDI_RegisterCode_X64_cs:{result = REGS_RegCodeX64_cs;}break; +case RDI_RegisterCode_X64_ds:{result = REGS_RegCodeX64_ds;}break; +case RDI_RegisterCode_X64_es:{result = REGS_RegCodeX64_es;}break; +case RDI_RegisterCode_X64_fs:{result = REGS_RegCodeX64_fs;}break; +case RDI_RegisterCode_X64_gs:{result = REGS_RegCodeX64_gs;}break; +case RDI_RegisterCode_X64_ymm0:{result = REGS_RegCodeX64_ymm0;}break; +case RDI_RegisterCode_X64_ymm1:{result = REGS_RegCodeX64_ymm1;}break; +case RDI_RegisterCode_X64_ymm2:{result = REGS_RegCodeX64_ymm2;}break; +case RDI_RegisterCode_X64_ymm3:{result = REGS_RegCodeX64_ymm3;}break; +case RDI_RegisterCode_X64_ymm4:{result = REGS_RegCodeX64_ymm4;}break; +case RDI_RegisterCode_X64_ymm5:{result = REGS_RegCodeX64_ymm5;}break; +case RDI_RegisterCode_X64_ymm6:{result = REGS_RegCodeX64_ymm6;}break; +case RDI_RegisterCode_X64_ymm7:{result = REGS_RegCodeX64_ymm7;}break; +case RDI_RegisterCode_X64_ymm8:{result = REGS_RegCodeX64_ymm8;}break; +case RDI_RegisterCode_X64_ymm9:{result = REGS_RegCodeX64_ymm9;}break; +case RDI_RegisterCode_X64_ymm10:{result = REGS_RegCodeX64_ymm10;}break; +case RDI_RegisterCode_X64_ymm11:{result = REGS_RegCodeX64_ymm11;}break; +case RDI_RegisterCode_X64_ymm12:{result = REGS_RegCodeX64_ymm12;}break; +case RDI_RegisterCode_X64_ymm13:{result = REGS_RegCodeX64_ymm13;}break; +case RDI_RegisterCode_X64_ymm14:{result = REGS_RegCodeX64_ymm14;}break; +case RDI_RegisterCode_X64_ymm15:{result = REGS_RegCodeX64_ymm15;}break; } }break; case Architecture_x86: @@ -256,66 +256,66 @@ case Architecture_x86: switch(code) { default:{}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; +case RDI_RegisterCode_X86_eax:{result = REGS_RegCodeX86_eax;}break; +case RDI_RegisterCode_X86_ecx:{result = REGS_RegCodeX86_ecx;}break; +case RDI_RegisterCode_X86_edx:{result = REGS_RegCodeX86_edx;}break; +case RDI_RegisterCode_X86_ebx:{result = REGS_RegCodeX86_ebx;}break; +case RDI_RegisterCode_X86_esp:{result = REGS_RegCodeX86_esp;}break; +case RDI_RegisterCode_X86_ebp:{result = REGS_RegCodeX86_ebp;}break; +case RDI_RegisterCode_X86_esi:{result = REGS_RegCodeX86_esi;}break; +case RDI_RegisterCode_X86_edi:{result = REGS_RegCodeX86_edi;}break; +case RDI_RegisterCode_X86_fsbase:{result = REGS_RegCodeX86_fsbase;}break; +case RDI_RegisterCode_X86_gsbase:{result = REGS_RegCodeX86_gsbase;}break; +case RDI_RegisterCode_X86_eflags:{result = REGS_RegCodeX86_eflags;}break; +case RDI_RegisterCode_X86_eip:{result = REGS_RegCodeX86_eip;}break; +case RDI_RegisterCode_X86_dr0:{result = REGS_RegCodeX86_dr0;}break; +case RDI_RegisterCode_X86_dr1:{result = REGS_RegCodeX86_dr1;}break; +case RDI_RegisterCode_X86_dr2:{result = REGS_RegCodeX86_dr2;}break; +case RDI_RegisterCode_X86_dr3:{result = REGS_RegCodeX86_dr3;}break; +case RDI_RegisterCode_X86_dr4:{result = REGS_RegCodeX86_dr4;}break; +case RDI_RegisterCode_X86_dr5:{result = REGS_RegCodeX86_dr5;}break; +case RDI_RegisterCode_X86_dr6:{result = REGS_RegCodeX86_dr6;}break; +case RDI_RegisterCode_X86_dr7:{result = REGS_RegCodeX86_dr7;}break; +case RDI_RegisterCode_X86_fpr0:{result = REGS_RegCodeX86_fpr0;}break; +case RDI_RegisterCode_X86_fpr1:{result = REGS_RegCodeX86_fpr1;}break; +case RDI_RegisterCode_X86_fpr2:{result = REGS_RegCodeX86_fpr2;}break; +case RDI_RegisterCode_X86_fpr3:{result = REGS_RegCodeX86_fpr3;}break; +case RDI_RegisterCode_X86_fpr4:{result = REGS_RegCodeX86_fpr4;}break; +case RDI_RegisterCode_X86_fpr5:{result = REGS_RegCodeX86_fpr5;}break; +case RDI_RegisterCode_X86_fpr6:{result = REGS_RegCodeX86_fpr6;}break; +case RDI_RegisterCode_X86_fpr7:{result = REGS_RegCodeX86_fpr7;}break; +case RDI_RegisterCode_X86_st0:{result = REGS_RegCodeX86_st0;}break; +case RDI_RegisterCode_X86_st1:{result = REGS_RegCodeX86_st1;}break; +case RDI_RegisterCode_X86_st2:{result = REGS_RegCodeX86_st2;}break; +case RDI_RegisterCode_X86_st3:{result = REGS_RegCodeX86_st3;}break; +case RDI_RegisterCode_X86_st4:{result = REGS_RegCodeX86_st4;}break; +case RDI_RegisterCode_X86_st5:{result = REGS_RegCodeX86_st5;}break; +case RDI_RegisterCode_X86_st6:{result = REGS_RegCodeX86_st6;}break; +case RDI_RegisterCode_X86_st7:{result = REGS_RegCodeX86_st7;}break; +case RDI_RegisterCode_X86_fcw:{result = REGS_RegCodeX86_fcw;}break; +case RDI_RegisterCode_X86_fsw:{result = REGS_RegCodeX86_fsw;}break; +case RDI_RegisterCode_X86_ftw:{result = REGS_RegCodeX86_ftw;}break; +case RDI_RegisterCode_X86_fop:{result = REGS_RegCodeX86_fop;}break; +case RDI_RegisterCode_X86_fcs:{result = REGS_RegCodeX86_fcs;}break; +case RDI_RegisterCode_X86_fds:{result = REGS_RegCodeX86_fds;}break; +case RDI_RegisterCode_X86_fip:{result = REGS_RegCodeX86_fip;}break; +case RDI_RegisterCode_X86_fdp:{result = REGS_RegCodeX86_fdp;}break; +case RDI_RegisterCode_X86_mxcsr:{result = REGS_RegCodeX86_mxcsr;}break; +case RDI_RegisterCode_X86_mxcsr_mask:{result = REGS_RegCodeX86_mxcsr_mask;}break; +case RDI_RegisterCode_X86_ss:{result = REGS_RegCodeX86_ss;}break; +case RDI_RegisterCode_X86_cs:{result = REGS_RegCodeX86_cs;}break; +case RDI_RegisterCode_X86_ds:{result = REGS_RegCodeX86_ds;}break; +case RDI_RegisterCode_X86_es:{result = REGS_RegCodeX86_es;}break; +case RDI_RegisterCode_X86_fs:{result = REGS_RegCodeX86_fs;}break; +case RDI_RegisterCode_X86_gs:{result = REGS_RegCodeX86_gs;}break; +case RDI_RegisterCode_X86_ymm0:{result = REGS_RegCodeX86_ymm0;}break; +case RDI_RegisterCode_X86_ymm1:{result = REGS_RegCodeX86_ymm1;}break; +case RDI_RegisterCode_X86_ymm2:{result = REGS_RegCodeX86_ymm2;}break; +case RDI_RegisterCode_X86_ymm3:{result = REGS_RegCodeX86_ymm3;}break; +case RDI_RegisterCode_X86_ymm4:{result = REGS_RegCodeX86_ymm4;}break; +case RDI_RegisterCode_X86_ymm5:{result = REGS_RegCodeX86_ymm5;}break; +case RDI_RegisterCode_X86_ymm6:{result = REGS_RegCodeX86_ymm6;}break; +case RDI_RegisterCode_X86_ymm7:{result = REGS_RegCodeX86_ymm7;}break; } }break; } diff --git a/src/regs/raddbgi/regs_raddbgi.h b/src/regs/raddbgi/regs_raddbgi.h index 03b3a569..4049a5b1 100644 --- a/src/regs/raddbgi/regs_raddbgi.h +++ b/src/regs/raddbgi/regs_raddbgi.h @@ -4,7 +4,7 @@ #ifndef REGS_RADDBGI_H #define REGS_RADDBGI_H -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); +internal RDI_RegisterCode regs_rdi_code_from_arch_reg_code(Architecture arch, REGS_RegCode code); +internal REGS_RegCode regs_reg_code_from_arch_rdi_code(Architecture arch, RDI_RegisterCode reg); #endif //REGS_RADDBGI_H diff --git a/src/regs/raddbgi/regs_raddbgi.mdesk b/src/regs/raddbgi/regs_raddbgi.mdesk index 1059f06f..aad0e4ad 100644 --- a/src/regs/raddbgi/regs_raddbgi.mdesk +++ b/src/regs/raddbgi/regs_raddbgi.mdesk @@ -6,9 +6,9 @@ @gen @c_file { - `internal RADDBGI_RegisterCode regs_raddbgi_code_from_arch_reg_code(Architecture arch, REGS_RegCode code)`; + `internal RDI_RegisterCode regs_rdi_code_from_arch_reg_code(Architecture arch, REGS_RegCode code)`; `{`; - `RADDBGI_RegisterCode result = 0;`; + `RDI_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 = RADDBGI_RegisterCode_X64_$(a.name);}break;`; + @expand(REGS_RegTableX64 a) `case REGS_RegCodeX64_$(a.name):{result = RDI_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 = RADDBGI_RegisterCode_X86_$(a.name);}break;`; + @expand(REGS_RegTableX86 a) `case REGS_RegCodeX86_$(a.name):{result = RDI_RegisterCode_X86_$(a.name);}break;`; `}`; `}break;`; `}`; @@ -35,7 +35,7 @@ @gen @c_file { - `internal REGS_RegCode regs_reg_code_from_arch_raddbgi_code(Architecture arch, RADDBGI_RegisterCode code)`; + `internal REGS_RegCode regs_reg_code_from_arch_rdi_code(Architecture arch, RDI_RegisterCode code)`; `{`; `REGS_RegCode result = 0;`; `switch(arch)`; @@ -46,7 +46,7 @@ `switch(code)` `{`; `default:{}break;`; - @expand(REGS_RegTableX64 a) `case RADDBGI_RegisterCode_X64_$(a.name):{result = REGS_RegCodeX64_$(a.name);}break;`; + @expand(REGS_RegTableX64 a) `case RDI_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 RADDBGI_RegisterCode_X86_$(a.name):{result = REGS_RegCodeX86_$(a.name);}break;`; + @expand(REGS_RegTableX86 a) `case RDI_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 a6aa5b8d..ba16ce58 100644 --- a/src/scratch/look_at_raddbg.c +++ b/src/scratch/look_at_raddbg.c @@ -6,10 +6,10 @@ #include #include -#include "raddbgi_format/raddbgi_format.h" -#include "raddbgi_format/raddbgi_format_parse.h" -#include "raddbgi_format/raddbgi_format.c" -#include "raddbgi_format/raddbgi_format_parse.c" +#include "rdi_format/rdi_format.h" +#include "rdi_format/rdi_format_parse.h" +#include "rdi_format/rdi_format.c" +#include "rdi_format/rdi_format_parse.c" int main(int argument_count, char **arguments) { @@ -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 - RADDBGI_Parsed rdbg = {0}; - RADDBGI_ParseStatus parse_status = raddbgi_parse(data, data_size, &rdbg); + RDI_Parsed rdbg = {0}; + RDI_ParseStatus parse_status = rdi_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) { - RADDBGI_Procedure *procedure = &rdbg.procedures[procedure_idx]; + RDI_Procedure *procedure = &rdbg.procedures[procedure_idx]; uint64_t name_size = 0; - uint8_t *name = raddbgi_string_from_idx(&rdbg, procedure->name_string_idx, &name_size); + uint8_t *name = rdi_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) { - RADDBGI_UDT *udt = &rdbg.udts[udt_idx]; - RADDBGI_TypeNode *type = &rdbg.type_nodes[udt->self_type_idx]; + RDI_UDT *udt = &rdbg.udts[udt_idx]; + RDI_TypeNode *type = &rdbg.type_nodes[udt->self_type_idx]; uint64_t name_size = 0; - uint8_t *name = raddbgi_string_from_idx(&rdbg, type->user_defined.name_string_idx, &name_size); + uint8_t *name = rdi_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 `RADDBGI_Parsed` structure. all data is + // for getting more info, look at the `RDI_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 63c12784..f03b39b6 100644 --- a/src/type_graph/type_graph.c +++ b/src/type_graph/type_graph.c @@ -59,85 +59,85 @@ tg_key_list_copy(Arena *arena, TG_KeyList *src) //~ rjf: RADDBG <-> TG Enum Conversions internal TG_Kind -tg_kind_from_raddbgi_type_kind(RADDBGI_TypeKind kind) +tg_kind_from_rdi_type_kind(RDI_TypeKind kind) { TG_Kind result = TG_Kind_Null; switch(kind) { default:{}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; + case RDI_TypeKind_Void: {result = TG_Kind_Void;}break; + case RDI_TypeKind_Handle: {result = TG_Kind_Handle;}break; + case RDI_TypeKind_Char8: {result = TG_Kind_Char8;}break; + case RDI_TypeKind_Char16: {result = TG_Kind_Char16;}break; + case RDI_TypeKind_Char32: {result = TG_Kind_Char32;}break; + case RDI_TypeKind_UChar8: {result = TG_Kind_UChar8;}break; + case RDI_TypeKind_UChar16: {result = TG_Kind_UChar16;}break; + case RDI_TypeKind_UChar32: {result = TG_Kind_UChar32;}break; + case RDI_TypeKind_U8: {result = TG_Kind_U8;}break; + case RDI_TypeKind_U16: {result = TG_Kind_U16;}break; + case RDI_TypeKind_U32: {result = TG_Kind_U32;}break; + case RDI_TypeKind_U64: {result = TG_Kind_U64;}break; + case RDI_TypeKind_U128: {result = TG_Kind_U128;}break; + case RDI_TypeKind_U256: {result = TG_Kind_U256;}break; + case RDI_TypeKind_U512: {result = TG_Kind_U512;}break; + case RDI_TypeKind_S8: {result = TG_Kind_S8;}break; + case RDI_TypeKind_S16: {result = TG_Kind_S16;}break; + case RDI_TypeKind_S32: {result = TG_Kind_S32;}break; + case RDI_TypeKind_S64: {result = TG_Kind_S64;}break; + case RDI_TypeKind_S128: {result = TG_Kind_S128;}break; + case RDI_TypeKind_S256: {result = TG_Kind_S256;}break; + case RDI_TypeKind_S512: {result = TG_Kind_S512;}break; + case RDI_TypeKind_Bool: {result = TG_Kind_Bool;}break; + case RDI_TypeKind_F16: {result = TG_Kind_F16;}break; + case RDI_TypeKind_F32: {result = TG_Kind_F32;}break; + case RDI_TypeKind_F32PP: {result = TG_Kind_F32PP;}break; + case RDI_TypeKind_F48: {result = TG_Kind_F48;}break; + case RDI_TypeKind_F64: {result = TG_Kind_F64;}break; + case RDI_TypeKind_F80: {result = TG_Kind_F80;}break; + case RDI_TypeKind_F128: {result = TG_Kind_F128;}break; + case RDI_TypeKind_ComplexF32: {result = TG_Kind_ComplexF32;}break; + case RDI_TypeKind_ComplexF64: {result = TG_Kind_ComplexF64;}break; + case RDI_TypeKind_ComplexF80: {result = TG_Kind_ComplexF80;}break; + case RDI_TypeKind_ComplexF128: {result = TG_Kind_ComplexF128;}break; + case RDI_TypeKind_Modifier: {result = TG_Kind_Modifier;}break; + case RDI_TypeKind_Ptr: {result = TG_Kind_Ptr;}break; + case RDI_TypeKind_LRef: {result = TG_Kind_LRef;}break; + case RDI_TypeKind_RRef: {result = TG_Kind_RRef;}break; + case RDI_TypeKind_Array: {result = TG_Kind_Array;}break; + case RDI_TypeKind_Function: {result = TG_Kind_Function;}break; + case RDI_TypeKind_Method: {result = TG_Kind_Method;}break; + case RDI_TypeKind_MemberPtr: {result = TG_Kind_MemberPtr;}break; + case RDI_TypeKind_Struct: {result = TG_Kind_Struct;}break; + case RDI_TypeKind_Class: {result = TG_Kind_Class;}break; + case RDI_TypeKind_Union: {result = TG_Kind_Union;}break; + case RDI_TypeKind_Enum: {result = TG_Kind_Enum;}break; + case RDI_TypeKind_Alias: {result = TG_Kind_Alias;}break; + case RDI_TypeKind_IncompleteStruct: {result = TG_Kind_IncompleteStruct;}break; + case RDI_TypeKind_IncompleteUnion: {result = TG_Kind_IncompleteUnion;}break; + case RDI_TypeKind_IncompleteClass: {result = TG_Kind_IncompleteClass;}break; + case RDI_TypeKind_IncompleteEnum: {result = TG_Kind_IncompleteEnum;}break; + case RDI_TypeKind_Bitfield: {result = TG_Kind_Bitfield;}break; + case RDI_TypeKind_Variadic: {result = TG_Kind_Variadic;}break; } return result; } internal TG_MemberKind -tg_member_kind_from_raddbgi_member_kind(RADDBGI_MemberKind kind) +tg_member_kind_from_rdi_member_kind(RDI_MemberKind kind) { TG_MemberKind result = TG_MemberKind_Null; switch(kind) { default:{}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; + case RDI_MemberKind_DataField: {result = TG_MemberKind_DataField;}break; + case RDI_MemberKind_StaticData: {result = TG_MemberKind_StaticData;}break; + case RDI_MemberKind_Method: {result = TG_MemberKind_Method;}break; + case RDI_MemberKind_StaticMethod: {result = TG_MemberKind_StaticMethod;}break; + case RDI_MemberKind_VirtualMethod: {result = TG_MemberKind_VirtualMethod;}break; + case RDI_MemberKind_VTablePtr: {result = TG_MemberKind_VTablePtr;}break; + case RDI_MemberKind_Base: {result = TG_MemberKind_Base;}break; + case RDI_MemberKind_VirtualBase: {result = TG_MemberKind_VirtualBase;}break; + case RDI_MemberKind_NestedType: {result = TG_MemberKind_NestedType;}break; } return result; } @@ -279,7 +279,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_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key) +tg_type_from_graph_rdi_key(Arena *arena, TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key) { TG_Type *type = &tg_type_nil; U64 reg_byte_count = 0; @@ -324,7 +324,7 @@ tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd }break; case TG_Kind_Array: { - U64 ptee_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, cons_type->direct_type_key); + U64 ptee_size = tg_byte_size_from_graph_rdi_key(graph, rdbg, cons_type->direct_type_key); type->byte_size = ptee_size * type->count; }break; } @@ -338,18 +338,18 @@ tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd U64 type_node_idx = key.u64[0]; if(0 <= type_node_idx && type_node_idx < rdbg->type_nodes_count) { - RADDBGI_TypeNode *rdbg_type = &rdbg->type_nodes[type_node_idx]; - TG_Kind kind = tg_kind_from_raddbgi_type_kind(rdbg_type->kind); + RDI_TypeNode *rdbg_type = &rdbg->type_nodes[type_node_idx]; + TG_Kind kind = tg_kind_from_rdi_type_kind(rdbg_type->kind); //- rjf: record types => unpack name * members & produce - if(RADDBGI_TypeKind_FirstRecord <= rdbg_type->kind && rdbg_type->kind <= RADDBGI_TypeKind_LastRecord) + if(RDI_TypeKind_FirstRecord <= rdbg_type->kind && rdbg_type->kind <= RDI_TypeKind_LastRecord) { // rjf: unpack name String8 name = {0}; - name.str = raddbgi_string_from_idx(rdbg, rdbg_type->user_defined.name_string_idx, &name.size); + name.str = rdi_string_from_idx(rdbg, rdbg_type->user_defined.name_string_idx, &name.size); // rjf: unpack UDT info - RADDBGI_UDT *udt = raddbgi_element_from_idx(rdbg, udts, rdbg_type->user_defined.udt_idx); + RDI_UDT *udt = rdi_element_from_idx(rdbg, udts, rdbg_type->user_defined.udt_idx); // rjf: unpack members TG_Member *members = 0; @@ -363,17 +363,17 @@ tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd member_idx < udt->member_first+udt->member_count; member_idx += 1) { - RADDBGI_Member *src = &rdbg->members[member_idx]; + RDI_Member *src = &rdbg->members[member_idx]; TG_Kind member_type_kind = TG_Kind_Null; if(src->type_idx < rdbg->type_nodes_count) { - RADDBGI_TypeNode *member_type = &rdbg->type_nodes[src->type_idx]; - member_type_kind = tg_kind_from_raddbgi_type_kind(member_type->kind); + RDI_TypeNode *member_type = &rdbg->type_nodes[src->type_idx]; + member_type_kind = tg_kind_from_rdi_type_kind(member_type->kind); } TG_Member *dst = &members[member_idx-udt->member_first]; - dst->kind = tg_member_kind_from_raddbgi_member_kind(src->kind); + dst->kind = tg_member_kind_from_rdi_member_kind(src->kind); dst->type_key = tg_key_ext(member_type_kind, (U64)src->type_idx); - dst->name.str = raddbgi_string_from_idx(rdbg, src->name_string_idx, &dst->name.size); + dst->name.str = rdi_string_from_idx(rdbg, src->name_string_idx, &dst->name.size); dst->off = (U64)src->off; } } @@ -389,18 +389,18 @@ tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd } //- rjf: enum types => unpack name * values & produce - else if(rdbg_type->kind == RADDBGI_TypeKind_Enum) + else if(rdbg_type->kind == RDI_TypeKind_Enum) { // rjf: unpack name String8 name = {0}; - name.str = raddbgi_string_from_idx(rdbg, rdbg_type->user_defined.name_string_idx, &name.size); + name.str = rdi_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) { - 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); + RDI_TypeNode *direct_type_node = &rdbg->type_nodes[rdbg_type->user_defined.direct_type_idx]; + TG_Kind direct_type_kind = tg_kind_from_rdi_type_kind(direct_type_node->kind); direct_type_key = tg_key_ext(direct_type_kind, (U64)rdbg_type->user_defined.direct_type_idx); } @@ -411,7 +411,7 @@ tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd U32 udt_idx = rdbg_type->user_defined.udt_idx; if(0 <= udt_idx && udt_idx < rdbg->udts_count) { - RADDBGI_UDT *udt = &rdbg->udts[udt_idx]; + RDI_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) @@ -420,9 +420,9 @@ tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd member_idx < udt->member_first+udt->member_count; member_idx += 1) { - RADDBGI_EnumMember *src = &rdbg->enum_members[member_idx]; + RDI_EnumMember *src = &rdbg->enum_members[member_idx]; TG_EnumVal *dst = &enum_vals[member_idx-udt->member_first]; - dst->name.str = raddbgi_string_from_idx(rdbg, src->name_string_idx, &dst->name.size); + dst->name.str = rdi_string_from_idx(rdbg, src->name_string_idx, &dst->name.size); dst->val = src->val; } } @@ -440,7 +440,7 @@ tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd } //- rjf: constructed types - if(RADDBGI_TypeKind_FirstConstructed <= rdbg_type->kind && rdbg_type->kind <= RADDBGI_TypeKind_LastConstructed) + if(RDI_TypeKind_FirstConstructed <= rdbg_type->kind && rdbg_type->kind <= RDI_TypeKind_LastConstructed) { // rjf: unpack direct type B32 direct_type_is_good = 0; @@ -448,8 +448,8 @@ tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd U64 direct_type_byte_size = 0; if(rdbg_type->constructed.direct_type_idx < type_node_idx) { - 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); + RDI_TypeNode *direct_type_node = &rdbg->type_nodes[rdbg_type->constructed.direct_type_idx]; + TG_Kind direct_type_kind = tg_kind_from_rdi_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; @@ -458,14 +458,14 @@ tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd // rjf: construct based on kind switch(rdbg_type->kind) { - case RADDBGI_TypeKind_Modifier: + case RDI_TypeKind_Modifier: { TG_Flags flags = 0; - if(rdbg_type->flags & RADDBGI_TypeModifierFlag_Const) + if(rdbg_type->flags & RDI_TypeModifierFlag_Const) { flags |= TG_Flag_Const; } - if(rdbg_type->flags & RADDBGI_TypeModifierFlag_Volatile) + if(rdbg_type->flags & RDI_TypeModifierFlag_Volatile) { flags |= TG_Flag_Volatile; } @@ -475,9 +475,9 @@ tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd type->byte_size = direct_type_byte_size; type->flags = flags; }break; - case RADDBGI_TypeKind_Ptr: - case RADDBGI_TypeKind_LRef: - case RADDBGI_TypeKind_RRef: + case RDI_TypeKind_Ptr: + case RDI_TypeKind_LRef: + case RDI_TypeKind_RRef: { type = push_array(arena, TG_Type, 1); type->kind = kind; @@ -485,7 +485,7 @@ tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd type->byte_size = graph->address_size; }break; - case RADDBGI_TypeKind_Array: + case RDI_TypeKind_Array: { type = push_array(arena, TG_Type, 1); type->kind = kind; @@ -493,12 +493,12 @@ tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd type->count = rdbg_type->constructed.count; type->byte_size = direct_type_byte_size * type->count; }break; - case RADDBGI_TypeKind_Function: + case RDI_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 = raddbgi_idx_run_from_first_count(rdbg, idx_run_first, count, &check_count); + U32 *idx_run = rdi_idx_run_from_first_count(rdbg, idx_run_first, count, &check_count); if(check_count == count) { type = push_array(arena, TG_Type, 1); @@ -512,8 +512,8 @@ tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd U32 param_type_idx = idx_run[idx]; if(param_type_idx < type_node_idx) { - 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); + RDI_TypeNode *param_type_node = &rdbg->type_nodes[param_type_idx]; + TG_Kind param_kind = tg_kind_from_rdi_type_kind(param_type_node->kind); type->param_type_keys[idx] = tg_key_ext(param_kind, (U64)param_type_idx); } else @@ -523,7 +523,7 @@ tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd } } }break; - case RADDBGI_TypeKind_Method: + case RDI_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 @@ -531,7 +531,7 @@ tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd U32 count = rdbg_type->constructed.count; U32 idx_run_first = rdbg_type->constructed.param_idx_run_first; U32 check_count = 0; - U32 *idx_run = raddbgi_idx_run_from_first_count(rdbg, idx_run_first, count, &check_count); + U32 *idx_run = rdi_idx_run_from_first_count(rdbg, idx_run_first, count, &check_count); if(check_count == count) { type = push_array(arena, TG_Type, 1); @@ -545,8 +545,8 @@ tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd U32 param_type_idx = idx_run[idx]; if(param_type_idx < type_node_idx) { - 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); + RDI_TypeNode *param_type_node = &rdbg->type_nodes[param_type_idx]; + TG_Kind param_kind = tg_kind_from_rdi_type_kind(param_type_node->kind); type->param_type_keys[idx] = tg_key_ext(param_kind, (U64)param_type_idx); } else @@ -562,14 +562,14 @@ tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd } } }break; - case RADDBGI_TypeKind_MemberPtr: + case RDI_TypeKind_MemberPtr: { // rjf: unpack owner type TG_Key owner_type_key = zero_struct; if(rdbg_type->constructed.owner_type_idx < type_node_idx) { - 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); + RDI_TypeNode *owner_type_node = &rdbg->type_nodes[rdbg_type->constructed.owner_type_idx]; + TG_Kind owner_type_kind = tg_kind_from_rdi_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); @@ -582,19 +582,19 @@ tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd } //- rjf: alias types - else if(rdbg_type->kind == RADDBGI_TypeKind_Alias) + else if(rdbg_type->kind == RDI_TypeKind_Alias) { // rjf: unpack name String8 name = {0}; - name.str = raddbgi_string_from_idx(rdbg, rdbg_type->user_defined.name_string_idx, &name.size); + name.str = rdi_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) { - 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); + RDI_TypeNode *direct_type_node = &rdbg->type_nodes[rdbg_type->user_defined.direct_type_idx]; + TG_Kind direct_type_kind = tg_kind_from_rdi_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; } @@ -608,11 +608,11 @@ tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd } //- rjf: incomplete types - else if(RADDBGI_TypeKind_FirstIncomplete <= rdbg_type->kind && rdbg_type->kind <= RADDBGI_TypeKind_LastIncomplete) + else if(RDI_TypeKind_FirstIncomplete <= rdbg_type->kind && rdbg_type->kind <= RDI_TypeKind_LastIncomplete) { // rjf: unpack name String8 name = {0}; - name.str = raddbgi_string_from_idx(rdbg, rdbg_type->user_defined.name_string_idx, &name.size); + name.str = rdi_string_from_idx(rdbg, rdbg_type->user_defined.name_string_idx, &name.size); // rjf: produce type = push_array(arena, TG_Type, 1); @@ -795,7 +795,7 @@ tg_type_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rd } internal TG_Key -tg_direct_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key) +tg_direct_from_graph_rdi_key(TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key) { TG_Key result = zero_struct; switch(key.kind) @@ -805,7 +805,7 @@ tg_direct_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key k case TG_KeyKind_Cons: { Temp scratch = scratch_begin(0, 0); - TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_rdi_key(scratch.arena, graph, rdbg, key); result = type->direct_type_key; scratch_end(scratch); }break; @@ -814,16 +814,16 @@ tg_direct_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key k } internal TG_Key -tg_unwrapped_direct_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key) +tg_unwrapped_direct_from_graph_rdi_key(TG_Graph *graph, RDI_Parsed *rdbg, TG_Key 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); + key = tg_unwrapped_from_graph_rdi_key(graph, rdbg, key); + key = tg_direct_from_graph_rdi_key(graph, rdbg, key); + key = tg_unwrapped_from_graph_rdi_key(graph, rdbg, key); return key; } internal TG_Key -tg_owner_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key) +tg_owner_from_graph_rdi_key(TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key) { TG_Key result = zero_struct; switch(key.kind) @@ -833,7 +833,7 @@ tg_owner_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key ke case TG_KeyKind_Cons: { Temp scratch = scratch_begin(0, 0); - TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_rdi_key(scratch.arena, graph, rdbg, key); result = type->owner_type_key; scratch_end(scratch); }break; @@ -842,14 +842,14 @@ tg_owner_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key ke } internal TG_Key -tg_ptee_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key) +tg_ptee_from_graph_rdi_key(TG_Graph *graph, RDI_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_raddbgi_key(graph, rdbg, result); + result = tg_direct_from_graph_rdi_key(graph, rdbg, result); if(kind == TG_Kind_Ptr || kind == TG_Kind_LRef || kind == TG_Kind_RRef) { passed_ptr = 1; @@ -874,7 +874,7 @@ 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) +tg_unwrapped_from_graph_rdi_key(TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key) { TG_Key result = key; for(B32 good = 1; good;) @@ -884,7 +884,7 @@ tg_unwrapped_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Ke kind == TG_Kind_Modifier || kind == TG_Kind_Alias) { - result = tg_direct_from_graph_raddbgi_key(graph, rdbg, result); + result = tg_direct_from_graph_rdi_key(graph, rdbg, result); } else { @@ -895,7 +895,7 @@ tg_unwrapped_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Ke } internal U64 -tg_byte_size_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key) +tg_byte_size_from_graph_rdi_key(TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key) { U64 result = 0; switch(key.kind) @@ -910,7 +910,7 @@ tg_byte_size_from_graph_raddbgi_key(TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Ke case TG_KeyKind_Cons: { Temp scratch = scratch_begin(0, 0); - TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_rdi_key(scratch.arena, graph, rdbg, key); result = type->byte_size; scratch_end(scratch); }break; @@ -945,12 +945,12 @@ tg_member_copy(Arena *arena, TG_Member *src) } internal TG_MemberArray -tg_members_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key) +tg_members_from_graph_rdi_key(Arena *arena, TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key) { TG_MemberArray result = {0}; Temp scratch = scratch_begin(&arena, 1); { - TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_rdi_key(scratch.arena, graph, rdbg, key); if(type->members != 0) { result.count = type->count; @@ -967,7 +967,7 @@ tg_members_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed } internal TG_MemberArray -tg_data_members_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key) +tg_data_members_from_graph_rdi_key(Arena *arena, TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key) { Temp scratch = scratch_begin(&arena, 1); TG_Kind root_type_kind = tg_kind_from_key(key); @@ -976,7 +976,7 @@ tg_data_members_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Pa TG_MemberList members_list = {0}; B32 members_need_offset_sort = 0; { - TG_Type *root_type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); + TG_Type *root_type = tg_type_from_graph_rdi_key(scratch.arena, graph, rdbg, key); typedef struct Task Task; struct Task { @@ -1015,7 +1015,7 @@ tg_data_members_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Pa 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_raddbgi_key(scratch.arena, graph, rdbg, type->members[member_idx].type_key); + t->type = tg_type_from_graph_rdi_key(scratch.arena, graph, rdbg, type->members[member_idx].type_key); SLLQueuePush(first_task, last_task, t); members_need_offset_sort = 1; } @@ -1064,7 +1064,7 @@ tg_data_members_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Pa TG_Member *member = &members.v[idx]; if(idx+1 < members.count) { - U64 member_byte_size = tg_byte_size_from_graph_raddbgi_key(graph, rdbg, member->type_key); + U64 member_byte_size = tg_byte_size_from_graph_rdi_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) { @@ -1111,7 +1111,7 @@ tg_data_members_from_graph_raddbgi_key(Arena *arena, TG_Graph *graph, RADDBGI_Pa } 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) +tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key, String8List *out, U32 prec, B32 skip_return) { String8 keyword = {0}; TG_Kind kind = tg_kind_from_key(key); @@ -1120,7 +1120,7 @@ tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_K default: { Temp scratch = scratch_begin(&arena, 1); - TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_rdi_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); @@ -1128,14 +1128,14 @@ tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_K case TG_Kind_Bitfield: { - TG_Key direct = tg_direct_from_graph_raddbgi_key(graph, rdbg, key); + TG_Key direct = tg_direct_from_graph_rdi_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_raddbgi_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_rdi_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) @@ -1161,7 +1161,7 @@ tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_K case TG_Kind_Alias: { Temp scratch = scratch_begin(&arena, 1); - TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_rdi_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); @@ -1174,7 +1174,7 @@ tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_K fwd_udt:; { Temp scratch = scratch_begin(&arena, 1); - TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_rdi_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)); @@ -1184,7 +1184,7 @@ tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_K case TG_Kind_Array: { - TG_Key direct = tg_direct_from_graph_raddbgi_key(graph, rdbg, key); + TG_Key direct = tg_direct_from_graph_rdi_key(graph, rdbg, key); tg_lhs_string_from_key(arena, graph, rdbg, direct, out, 2, skip_return); if(prec == 1) { @@ -1196,7 +1196,7 @@ tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_K { if(!skip_return) { - TG_Key direct = tg_direct_from_graph_raddbgi_key(graph, rdbg, key); + TG_Key direct = tg_direct_from_graph_rdi_key(graph, rdbg, key); tg_lhs_string_from_key(arena, graph, rdbg, direct, out, 2, 0); } if(prec == 1) @@ -1207,21 +1207,21 @@ tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_K case TG_Kind_Ptr: { - TG_Key direct = tg_direct_from_graph_raddbgi_key(graph, rdbg, key); + TG_Key direct = tg_direct_from_graph_rdi_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_raddbgi_key(graph, rdbg, key); + TG_Key direct = tg_direct_from_graph_rdi_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_raddbgi_key(graph, rdbg, key); + TG_Key direct = tg_direct_from_graph_rdi_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; @@ -1229,10 +1229,10 @@ tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_K case TG_Kind_MemberPtr: { Temp scratch = scratch_begin(&arena, 1); - TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_rdi_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_raddbgi_key(scratch.arena, graph, rdbg, type->owner_type_key); + TG_Type *container = tg_type_from_graph_rdi_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)); @@ -1248,7 +1248,7 @@ tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_K } internal void -tg_rhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key, String8List *out, U32 prec) +tg_rhs_string_from_key(Arena *arena, TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key, String8List *out, U32 prec) { TG_Kind kind = tg_kind_from_key(key); switch(kind) @@ -1257,7 +1257,7 @@ tg_rhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_K case TG_Kind_Bitfield: { - TG_Key direct = tg_direct_from_graph_raddbgi_key(graph, rdbg, key); + TG_Key direct = tg_direct_from_graph_rdi_key(graph, rdbg, key); tg_rhs_string_from_key(arena, graph, rdbg, direct, out, prec); }break; @@ -1267,14 +1267,14 @@ tg_rhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_K case TG_Kind_RRef: case TG_Kind_MemberPtr: { - TG_Key direct = tg_direct_from_graph_raddbgi_key(graph, rdbg, key); + TG_Key direct = tg_direct_from_graph_rdi_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_raddbgi_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_rdi_key(scratch.arena, graph, rdbg, key); if(prec == 1) { str8_list_push(arena, out, str8_lit(")")); @@ -1283,7 +1283,7 @@ tg_rhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_K 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_raddbgi_key(graph, rdbg, key); + TG_Key direct = tg_direct_from_graph_rdi_key(graph, rdbg, key); tg_rhs_string_from_key(arena, graph, rdbg, direct, out, 2); scratch_end(scratch); }break; @@ -1291,7 +1291,7 @@ tg_rhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_K case TG_Kind_Function: { Temp scratch = scratch_begin(&arena, 1); - TG_Type *type = tg_type_from_graph_raddbgi_key(scratch.arena, graph, rdbg, key); + TG_Type *type = tg_type_from_graph_rdi_key(scratch.arena, graph, rdbg, key); if(prec == 1) { str8_list_push(arena, out, str8_lit(")")); @@ -1320,7 +1320,7 @@ tg_rhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_K } str8_list_push(arena, out, str8_lit(")")); } - TG_Key direct = tg_direct_from_graph_raddbgi_key(graph, rdbg, key); + TG_Key direct = tg_direct_from_graph_rdi_key(graph, rdbg, key); tg_rhs_string_from_key(arena, graph, rdbg, direct, out, 2); scratch_end(scratch); }break; @@ -1328,7 +1328,7 @@ tg_rhs_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_K } internal String8 -tg_string_from_key(Arena *arena, TG_Graph *graph, RADDBGI_Parsed *rdbg, TG_Key key) +tg_string_from_key(Arena *arena, TG_Graph *graph, RDI_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 9ce08056..1b20b86d 100644 --- a/src/type_graph/type_graph.h +++ b/src/type_graph/type_graph.h @@ -1,8 +1,8 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef TYPE_GRAPH_NEW_H -#define TYPE_GRAPH_NEW_H +#ifndef TYPE_GRAPH_H +#define TYPE_GRAPH_H //////////////////////////////// //~ rjf: Generated Code @@ -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_raddbgi_type_kind(RADDBGI_TypeKind kind); -internal TG_MemberKind tg_member_kind_from_raddbgi_member_kind(RADDBGI_MemberKind kind); +internal TG_Kind tg_kind_from_rdi_type_kind(RDI_TypeKind kind); +internal TG_MemberKind tg_member_kind_from_rdi_member_kind(RDI_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_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_Type *tg_type_from_graph_rdi_key(Arena *arena, TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key); +internal TG_Key tg_direct_from_graph_rdi_key(TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key); +internal TG_Key tg_unwrapped_direct_from_graph_rdi_key(TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key); +internal TG_Key tg_owner_from_graph_rdi_key(TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key); +internal TG_Key tg_ptee_from_graph_rdi_key(TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key); +internal TG_Key tg_unwrapped_from_graph_rdi_key(TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key); +internal U64 tg_byte_size_from_graph_rdi_key(TG_Graph *graph, RDI_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_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); +internal TG_MemberArray tg_members_from_graph_rdi_key(Arena *arena, TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key); +internal TG_MemberArray tg_data_members_from_graph_rdi_key(Arena *arena, TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key); +internal void tg_lhs_string_from_key(Arena *arena, TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key, String8List *out, U32 prec, B32 skip_return); +internal void tg_rhs_string_from_key(Arena *arena, TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key, String8List *out, U32 prec); +internal String8 tg_string_from_key(Arena *arena, TG_Graph *graph, RDI_Parsed *rdbg, TG_Key key); -#endif // TYPE_GRAPH_NEW_H +#endif // TYPE_GRAPH_H