From 9932a30ef9fbca15b1ddb99a9d2034a053f9bd11 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Thu, 29 Aug 2024 13:16:50 -0700 Subject: [PATCH] entity parameter tree equipment; architecture -> arch --- src/base/base_core.c | 26 +++---- src/base/base_core.h | 22 +++--- src/base/base_strings.c | 4 +- src/base/base_strings.h | 2 +- src/ctrl/ctrl_core.c | 60 +++++++-------- src/ctrl/ctrl_core.h | 18 ++--- src/dasm_cache/dasm_cache.c | 18 ++--- src/dasm_cache/dasm_cache.h | 6 +- src/dbg_engine/dbg_engine.mdesk | 4 +- src/dbg_engine/dbg_engine_core.c | 81 +++++++++++++++----- src/dbg_engine/dbg_engine_core.h | 16 +++- src/dbg_frontend/dbg_frontend_core.c | 22 +++--- src/dbg_frontend/dbg_frontend_views.c | 34 ++++----- src/demon/demon_core.c | 8 +- src/demon/demon_core.h | 4 +- src/demon/linux/demon_core_linux.c | 2 +- src/demon/linux/demon_os_linux.c | 56 +++++++------- src/demon/linux/demon_os_linux.h | 4 +- src/demon/win32/demon_core_win32.c | 100 ++++++++++++------------- src/demon/win32/demon_core_win32.h | 8 +- src/eval/eval_bundles.c | 2 +- src/eval/eval_core.h | 2 +- src/eval/eval_interpret.c | 2 +- src/eval/eval_interpret.h | 2 +- src/eval/eval_parse.c | 10 +-- src/eval/eval_types.c | 14 ++-- src/eval/eval_types.h | 10 +-- src/os/core/win32/os_core_win32.c | 2 +- src/pe/pe.c | 12 +-- src/pe/pe.h | 2 +- src/rdi_format/rdi_format.mdesk | 2 +- src/rdi_from_dwarf/rdi_elf.c | 6 +- src/rdi_from_dwarf/rdi_elf.h | 2 +- src/regs/generated/regs.meta.c | 54 ++++++------- src/regs/rdi/generated/regs_rdi.meta.c | 12 +-- src/regs/rdi/regs_rdi.h | 4 +- src/regs/rdi/regs_rdi.mdesk | 12 +-- src/regs/regs.c | 24 +++--- src/regs/regs.h | 26 +++---- src/regs/regs.mdesk | 36 ++++----- src/text_cache/text_cache.c | 4 +- src/text_cache/text_cache.h | 2 +- 42 files changed, 395 insertions(+), 342 deletions(-) diff --git a/src/base/base_core.c b/src/base/base_core.c index 877dcb4e..4868add6 100644 --- a/src/base/base_core.c +++ b/src/base/base_core.c @@ -399,23 +399,23 @@ txt_rng_contains(TxtRng r, TxtPt pt) //~ rjf: Toolchain/Environment Enum Functions internal U64 -bit_size_from_arch(Architecture arch) +bit_size_from_arch(Arch arch) { // TODO(rjf): metacode U64 arch_bitsize = 0; switch(arch) { - case Architecture_x64: arch_bitsize = 64; break; - case Architecture_x86: arch_bitsize = 32; break; - case Architecture_arm64: arch_bitsize = 64; break; - case Architecture_arm32: arch_bitsize = 32; break; + case Arch_x64: arch_bitsize = 64; break; + case Arch_x86: arch_bitsize = 32; break; + case Arch_arm64: arch_bitsize = 64; break; + case Arch_arm32: arch_bitsize = 32; break; default: break; } return arch_bitsize; } internal U64 -max_instruction_size_from_arch(Architecture arch) +max_instruction_size_from_arch(Arch arch) { // TODO(rjf): make this real return 64; @@ -434,17 +434,17 @@ operating_system_from_context(void){ return os; } -internal Architecture -architecture_from_context(void){ - Architecture arch = Architecture_Null; +internal Arch +arch_from_context(void){ + Arch arch = Arch_Null; #if ARCH_X64 - arch = Architecture_x64; + arch = Arch_x64; #elif ARCH_X86 - arch = Architecture_x86; + arch = Arch_x86; #elif ARCH_ARM64 - arch = Architecture_arm64; + arch = Arch_arm64; #elif ARCH_ARM32 - arch = Architecture_arm32; + arch = Arch_arm32; #endif return arch; } diff --git a/src/base/base_core.h b/src/base/base_core.h index 815ea009..89da4574 100644 --- a/src/base/base_core.h +++ b/src/base/base_core.h @@ -439,16 +439,16 @@ typedef enum OperatingSystem } OperatingSystem; -typedef enum Architecture +typedef enum Arch { - Architecture_Null, - Architecture_x64, - Architecture_x86, - Architecture_arm64, - Architecture_arm32, - Architecture_COUNT, + Arch_Null, + Arch_x64, + Arch_x86, + Arch_arm64, + Arch_arm32, + Arch_COUNT, } -Architecture; +Arch; typedef enum Compiler { @@ -779,11 +779,11 @@ internal B32 txt_rng_contains(TxtRng r, TxtPt pt); //////////////////////////////// //~ rjf: Toolchain/Environment Enum Functions -internal U64 bit_size_from_arch(Architecture arch); -internal U64 max_instruction_size_from_arch(Architecture arch); +internal U64 bit_size_from_arch(Arch arch); +internal U64 max_instruction_size_from_arch(Arch arch); internal OperatingSystem operating_system_from_context(void); -internal Architecture architecture_from_context(void); +internal Arch arch_from_context(void); internal Compiler compiler_from_context(void); //////////////////////////////// diff --git a/src/base/base_strings.c b/src/base/base_strings.c index 74b3a6ee..c28e144c 100644 --- a/src/base/base_strings.c +++ b/src/base/base_strings.c @@ -1459,7 +1459,7 @@ string_from_operating_system(OperatingSystem os){ } internal String8 -string_from_architecture(Architecture arch){ +string_from_arch(Arch arch){ local_persist String8 strings[] = { str8_lit_comp("Null"), str8_lit_comp("x64"), @@ -1468,7 +1468,7 @@ string_from_architecture(Architecture arch){ str8_lit_comp("arm32"), }; String8 result = str8_lit("error"); - if (arch < Architecture_COUNT){ + if (arch < Arch_COUNT){ result = strings[arch]; } return(result); diff --git a/src/base/base_strings.h b/src/base/base_strings.h index c68bdff6..1e7e0ef6 100644 --- a/src/base/base_strings.h +++ b/src/base/base_strings.h @@ -315,7 +315,7 @@ internal String32 str32_from_8(Arena *arena, String8 in); internal String8 string_from_dimension(Dimension dimension); internal String8 string_from_side(Side side); internal String8 string_from_operating_system(OperatingSystem os); -internal String8 string_from_architecture(Architecture arch); +internal String8 string_from_arch(Arch arch); //////////////////////////////// //~ rjf: Time Types -> String diff --git a/src/ctrl/ctrl_core.c b/src/ctrl/ctrl_core.c index 5bc53c3d..60a115be 100644 --- a/src/ctrl/ctrl_core.c +++ b/src/ctrl/ctrl_core.c @@ -520,8 +520,8 @@ ctrl_entity_store_alloc(void) store->arena = arena; store->hash_slots_count = 1024; store->hash_slots = push_array(arena, CTRL_EntityHashSlot, store->hash_slots_count); - CTRL_Entity *root = store->root = ctrl_entity_alloc(store, &ctrl_entity_nil, CTRL_EntityKind_Root, Architecture_Null, 0, dmn_handle_zero(), 0); - CTRL_Entity *local_machine = ctrl_entity_alloc(store, root, CTRL_EntityKind_Machine, architecture_from_context(), CTRL_MachineID_Local, dmn_handle_zero(), 0); + CTRL_Entity *root = store->root = ctrl_entity_alloc(store, &ctrl_entity_nil, CTRL_EntityKind_Root, Arch_Null, 0, dmn_handle_zero(), 0); + CTRL_Entity *local_machine = ctrl_entity_alloc(store, root, CTRL_EntityKind_Machine, arch_from_context(), CTRL_MachineID_Local, dmn_handle_zero(), 0); (void)local_machine; return store; } @@ -628,7 +628,7 @@ ctrl_entity_string_release(CTRL_EntityStore *store, String8 string) //- rjf: entity construction/deletion internal CTRL_Entity * -ctrl_entity_alloc(CTRL_EntityStore *store, CTRL_Entity *parent, CTRL_EntityKind kind, Architecture arch, CTRL_MachineID machine_id, DMN_Handle handle, U64 id) +ctrl_entity_alloc(CTRL_EntityStore *store, CTRL_Entity *parent, CTRL_EntityKind kind, Arch arch, CTRL_MachineID machine_id, DMN_Handle handle, U64 id) { CTRL_Entity *entity = &ctrl_entity_nil; { @@ -883,7 +883,7 @@ ctrl_entity_store_apply_events(CTRL_EntityStore *store, CTRL_EventList *list) CTRL_Entity *debug_info_path = ctrl_entity_child_from_kind(module, CTRL_EntityKind_DebugInfoPath); if(debug_info_path == &ctrl_entity_nil) { - debug_info_path = ctrl_entity_alloc(store, module, CTRL_EntityKind_DebugInfoPath, Architecture_Null, 0, dmn_handle_zero(), 0); + debug_info_path = ctrl_entity_alloc(store, module, CTRL_EntityKind_DebugInfoPath, Arch_Null, 0, dmn_handle_zero(), 0); } ctrl_entity_equip_string(store, debug_info_path, event->string); debug_info_path->timestamp = event->timestamp; @@ -901,12 +901,12 @@ ctrl_init(void) Arena *arena = arena_alloc(); ctrl_state = push_array(arena, CTRL_State, 1); ctrl_state->arena = arena; - for(Architecture arch = (Architecture)0; arch < Architecture_COUNT; arch = (Architecture)(arch+1)) + for(Arch arch = (Arch)0; arch < Arch_COUNT; arch = (Arch)(arch+1)) { - String8 *reg_names = regs_reg_code_string_table_from_architecture(arch); - U64 reg_count = regs_reg_code_count_from_architecture(arch); - String8 *alias_names = regs_alias_code_string_table_from_architecture(arch); - U64 alias_count = regs_alias_code_count_from_architecture(arch); + String8 *reg_names = regs_reg_code_string_table_from_arch(arch); + U64 reg_count = regs_reg_code_count_from_arch(arch); + String8 *alias_names = regs_alias_code_string_table_from_arch(arch); + U64 alias_count = regs_alias_code_count_from_arch(arch); ctrl_state->arch_string2reg_tables[arch] = e_string2num_map_make(ctrl_state->arena, 256); ctrl_state->arch_string2alias_tables[arch] = e_string2num_map_make(ctrl_state->arena, 256); for(U64 idx = 1; idx < reg_count; idx += 1) @@ -1452,8 +1452,8 @@ ctrl_query_cached_reg_block_from_thread(Arena *arena, CTRL_EntityStore *store, C { CTRL_ThreadRegCache *cache = &ctrl_state->thread_reg_cache; CTRL_Entity *thread_entity = ctrl_entity_from_machine_id_handle(store, machine_id, thread); - Architecture arch = thread_entity->arch; - U64 reg_block_size = regs_block_size_from_architecture(arch); + Arch arch = thread_entity->arch; + U64 reg_block_size = regs_block_size_from_arch(arch); U64 hash = ctrl_hash_from_machine_id_handle(machine_id, thread); U64 slot_idx = hash%cache->slots_count; U64 stripe_idx = slot_idx%cache->stripes_count; @@ -1552,7 +1552,7 @@ ctrl_query_cached_rip_from_thread(CTRL_EntityStore *store, CTRL_MachineID machin { Temp scratch = scratch_begin(0, 0); CTRL_Entity *thread_entity = ctrl_entity_from_machine_id_handle(store, machine_id, thread); - Architecture arch = thread_entity->arch; + Arch arch = thread_entity->arch; void *block = ctrl_query_cached_reg_block_from_thread(scratch.arena, store, machine_id, thread); U64 result = regs_rip_from_arch_block(arch, block); scratch_end(scratch); @@ -1564,7 +1564,7 @@ ctrl_query_cached_rsp_from_thread(CTRL_EntityStore *store, CTRL_MachineID machin { Temp scratch = scratch_begin(0, 0); CTRL_Entity *thread_entity = ctrl_entity_from_machine_id_handle(store, machine_id, thread); - Architecture arch = thread_entity->arch; + Arch arch = thread_entity->arch; void *block = ctrl_query_cached_reg_block_from_thread(scratch.arena, store, machine_id, thread); U64 result = regs_rsp_from_arch_block(arch, block); scratch_end(scratch); @@ -1718,7 +1718,7 @@ ctrl_initial_debug_info_path_from_module(Arena *arena, CTRL_MachineID machine_id //- rjf: unwind deep copier internal CTRL_Unwind -ctrl_unwind_deep_copy(Arena *arena, Architecture arch, CTRL_Unwind *src) +ctrl_unwind_deep_copy(Arena *arena, Arch arch, CTRL_Unwind *src) { CTRL_Unwind dst = {0}; { @@ -1726,7 +1726,7 @@ ctrl_unwind_deep_copy(Arena *arena, Architecture arch, CTRL_Unwind *src) dst.frames.count = src->frames.count; dst.frames.v = push_array(arena, CTRL_UnwindFrame, dst.frames.count); MemoryCopy(dst.frames.v, src->frames.v, sizeof(dst.frames.v[0])*dst.frames.count); - U64 block_size = regs_block_size_from_architecture(arch); + U64 block_size = regs_block_size_from_arch(arch); for(U64 idx = 0; idx < dst.frames.count; idx += 1) { dst.frames.v[idx].regs = push_array_no_zero(arena, U8, block_size); @@ -2585,13 +2585,13 @@ ctrl_unwind_step__pe_x64(CTRL_EntityStore *store, CTRL_MachineID machine_id, DMN //- rjf: abstracted unwind step internal CTRL_UnwindStepResult -ctrl_unwind_step(CTRL_EntityStore *store, CTRL_MachineID machine_id, DMN_Handle process, DMN_Handle module, Architecture arch, void *reg_block, U64 endt_us) +ctrl_unwind_step(CTRL_EntityStore *store, CTRL_MachineID machine_id, DMN_Handle process, DMN_Handle module, Arch arch, void *reg_block, U64 endt_us) { CTRL_UnwindStepResult result = {0}; switch(arch) { default:{}break; - case Architecture_x64: + case Arch_x64: { result = ctrl_unwind_step__pe_x64(store, machine_id, process, module, (REGS_RegBlockX64 *)reg_block, endt_us); }break; @@ -2612,12 +2612,12 @@ ctrl_unwind_from_thread(Arena *arena, CTRL_EntityStore *store, CTRL_MachineID ma //- rjf: unpack args CTRL_Entity *thread_entity = ctrl_entity_from_machine_id_handle(store, machine_id, thread); CTRL_Entity *process_entity = thread_entity->parent; - Architecture arch = thread_entity->arch; - U64 arch_reg_block_size = regs_block_size_from_architecture(arch); + Arch arch = thread_entity->arch; + U64 arch_reg_block_size = regs_block_size_from_arch(arch); //- rjf: grab initial register block void *regs_block = ctrl_query_cached_reg_block_from_thread(scratch.arena, store, machine_id, thread); - B32 regs_block_good = (arch != Architecture_Null && regs_block != 0); + B32 regs_block_good = (arch != Arch_Null && regs_block != 0); //- rjf: loop & unwind CTRL_UnwindFrameNode *first_frame_node = 0; @@ -2721,13 +2721,13 @@ ctrl_reg_gen(void) //- rjf: name -> register/alias hash tables, for eval internal E_String2NumMap * -ctrl_string2reg_from_arch(Architecture arch) +ctrl_string2reg_from_arch(Arch arch) { return &ctrl_state->arch_string2reg_tables[arch]; } internal E_String2NumMap * -ctrl_string2alias_from_arch(Architecture arch) +ctrl_string2alias_from_arch(Arch arch) { return &ctrl_state->arch_string2alias_tables[arch]; } @@ -3415,7 +3415,7 @@ ctrl_thread__next_dmn_event(Arena *arena, DMN_CtrlCtx *ctrl_ctx, CTRL_Msg *msg, log_infof("process: [%I64u]\n", ev->process.u64[0]); log_infof("thread: [%I64u]\n", ev->thread.u64[0]); log_infof("module: [%I64u]\n", ev->module.u64[0]); - log_infof("arch: %S\n", string_from_architecture(ev->arch)); + log_infof("arch: %S\n", string_from_arch(ev->arch)); log_infof("address: 0x%I64x\n", ev->address); log_infof("string: \"%S\"\n", ev->string); log_infof("ip_vaddr: 0x%I64x\n", ev->instruction_pointer); @@ -3498,7 +3498,7 @@ ctrl_thread__next_dmn_event(Arena *arena, DMN_CtrlCtx *ctrl_ctx, CTRL_Msg *msg, RDI_GlobalVariable *global_var = rdi_element_from_name_idx(rdi, GlobalVariables, ids[0]); U64 global_var_voff = global_var->voff; U64 global_var_vaddr = global_var->voff + module->vaddr_range.min; - Architecture arch = process->arch; + Arch arch = process->arch; U64 addr_size = bit_size_from_arch(arch)/8; dmn_process_read(ev->process, r1u64(global_var_vaddr, global_var_vaddr+addr_size), &asan_shadow_base_vaddr); asan_shadow_variable_exists_but_is_zero = (asan_shadow_base_vaddr == 0); @@ -3557,7 +3557,7 @@ ctrl_thread__next_dmn_event(Arena *arena, DMN_CtrlCtx *ctrl_ctx, CTRL_Msg *msg, if(do_spoof) ProfScope("prep spoof") { CTRL_Entity *spoof_process = ctrl_entity_from_machine_id_handle(ctrl_state->ctrl_thread_entity_store, CTRL_MachineID_Local, spoof->process); - Architecture arch = spoof_process->arch; + Arch arch = spoof_process->arch; size_of_spoof = bit_size_from_arch(arch)/8; dmn_process_read(spoof_process->handle, r1u64(spoof->vaddr, spoof->vaddr+size_of_spoof), &spoof_old_ip_value); } @@ -3623,8 +3623,8 @@ ctrl_thread__next_dmn_event(Arena *arena, DMN_CtrlCtx *ctrl_ctx, CTRL_Msg *msg, if(spoof != 0) { CTRL_Entity *thread = ctrl_entity_from_machine_id_handle(ctrl_state->ctrl_thread_entity_store, CTRL_MachineID_Local, spoof->thread); - Architecture arch = thread->arch; - void *regs_block = push_array(scratch.arena, U8, regs_block_size_from_architecture(arch)); + Arch arch = thread->arch; + void *regs_block = push_array(scratch.arena, U8, regs_block_size_from_arch(arch)); dmn_thread_read_reg_block(spoof->thread, regs_block); U64 spoof_thread_rip = regs_rip_from_arch_block(arch, regs_block); if(spoof_thread_rip == spoof->new_ip_value) @@ -3812,7 +3812,7 @@ ctrl_eval_space_read(void *u, E_Space space, void *out, Rng1U64 range) case CTRL_EntityKind_Thread: { Temp scratch = scratch_begin(0, 0); - U64 regs_size = regs_block_size_from_architecture(entity->arch); + U64 regs_size = regs_block_size_from_arch(entity->arch); void *regs = ctrl_query_cached_reg_block_from_thread(scratch.arena, ctrl_state->ctrl_thread_entity_store, entity->machine_id, entity->handle); Rng1U64 legal_range = r1u64(0, regs_size); Rng1U64 read_range = intersect_1u64(legal_range, range); @@ -3862,7 +3862,7 @@ ctrl_thread__launch(DMN_CtrlCtx *ctrl_ctx, CTRL_Msg *msg) for(String8Node *n = msg->entry_points.first; n != 0; n = n->next) { String8 string = n->string; - CTRL_Entity *entry = ctrl_entity_alloc(ctrl_state->ctrl_thread_entity_store, ctrl_state->ctrl_thread_entity_store->root, CTRL_EntityKind_EntryPoint, Architecture_Null, 0, dmn_handle_zero(), (U64)id); + CTRL_Entity *entry = ctrl_entity_alloc(ctrl_state->ctrl_thread_entity_store, ctrl_state->ctrl_thread_entity_store->root, CTRL_EntityKind_EntryPoint, Arch_Null, 0, dmn_handle_zero(), (U64)id); ctrl_entity_equip_string(ctrl_state->ctrl_thread_entity_store, entry, string); } } @@ -4548,7 +4548,7 @@ ctrl_thread__run(DMN_CtrlCtx *ctrl_ctx, CTRL_Msg *msg) // CTRL_Entity *thread = ctrl_entity_from_machine_id_handle(ctrl_state->ctrl_thread_entity_store, CTRL_MachineID_Local, event->thread); CTRL_Entity *process = ctrl_entity_from_machine_id_handle(ctrl_state->ctrl_thread_entity_store, CTRL_MachineID_Local, event->process); - Architecture arch = thread->arch; + Arch arch = thread->arch; U64 thread_rip_vaddr = dmn_rip_from_thread(event->thread); CTRL_Entity *module = &ctrl_entity_nil; { diff --git a/src/ctrl/ctrl_core.h b/src/ctrl/ctrl_core.h index 20ce6cd4..4c849997 100644 --- a/src/ctrl/ctrl_core.h +++ b/src/ctrl/ctrl_core.h @@ -63,7 +63,7 @@ struct CTRL_Entity CTRL_Entity *prev; CTRL_Entity *parent; CTRL_EntityKind kind; - Architecture arch; + Arch arch; CTRL_MachineID machine_id; DMN_Handle handle; U64 id; @@ -371,7 +371,7 @@ struct CTRL_Event CTRL_MachineID machine_id; DMN_Handle entity; DMN_Handle parent; - Architecture arch; + Arch arch; U64 u64_code; U32 entity_id; Rng1U64 vaddr_rng; @@ -562,8 +562,8 @@ struct CTRL_State CTRL_WakeupFunctionType *wakeup_hook; // rjf: name -> register/alias hash tables for eval - E_String2NumMap arch_string2reg_tables[Architecture_COUNT]; - E_String2NumMap arch_string2alias_tables[Architecture_COUNT]; + E_String2NumMap arch_string2reg_tables[Arch_COUNT]; + E_String2NumMap arch_string2alias_tables[Arch_COUNT]; // rjf: caches CTRL_ProcessMemoryCache process_memory_cache; @@ -696,7 +696,7 @@ internal String8 ctrl_entity_string_alloc(CTRL_EntityStore *store, String8 strin internal void ctrl_entity_string_release(CTRL_EntityStore *store, String8 string); //- rjf: entity construction/deletion -internal CTRL_Entity *ctrl_entity_alloc(CTRL_EntityStore *store, CTRL_Entity *parent, CTRL_EntityKind kind, Architecture arch, CTRL_MachineID machine_id, DMN_Handle handle, U64 id); +internal CTRL_Entity *ctrl_entity_alloc(CTRL_EntityStore *store, CTRL_Entity *parent, CTRL_EntityKind kind, Arch arch, CTRL_MachineID machine_id, DMN_Handle handle, U64 id); internal void ctrl_entity_release(CTRL_EntityStore *store, CTRL_Entity *entity); //- rjf: entity equipment @@ -763,14 +763,14 @@ internal String8 ctrl_initial_debug_info_path_from_module(Arena *arena, CTRL_Mac //~ rjf: Unwinding Functions //- rjf: unwind deep copier -internal CTRL_Unwind ctrl_unwind_deep_copy(Arena *arena, Architecture arch, CTRL_Unwind *src); +internal CTRL_Unwind ctrl_unwind_deep_copy(Arena *arena, Arch arch, CTRL_Unwind *src); //- rjf: [x64] internal REGS_Reg64 *ctrl_unwind_reg_from_pe_gpr_reg__pe_x64(REGS_RegBlockX64 *regs, PE_UnwindGprRegX64 gpr_reg); internal CTRL_UnwindStepResult ctrl_unwind_step__pe_x64(CTRL_EntityStore *store, CTRL_MachineID machine_id, DMN_Handle process_handle, DMN_Handle module, REGS_RegBlockX64 *regs, U64 endt_us); //- rjf: abstracted unwind step -internal CTRL_UnwindStepResult ctrl_unwind_step(CTRL_EntityStore *store, CTRL_MachineID machine_id, DMN_Handle process_handle, DMN_Handle module, Architecture arch, void *reg_block, U64 endt_us); +internal CTRL_UnwindStepResult ctrl_unwind_step(CTRL_EntityStore *store, CTRL_MachineID machine_id, DMN_Handle process_handle, DMN_Handle module, Arch arch, void *reg_block, U64 endt_us); //- rjf: abstracted full unwind internal CTRL_Unwind ctrl_unwind_from_thread(Arena *arena, CTRL_EntityStore *store, CTRL_MachineID machine_id, DMN_Handle thread, U64 endt_us); @@ -789,8 +789,8 @@ internal U64 ctrl_mem_gen(void); internal U64 ctrl_reg_gen(void); //- rjf: name -> register/alias hash tables, for eval -internal E_String2NumMap *ctrl_string2reg_from_arch(Architecture arch); -internal E_String2NumMap *ctrl_string2alias_from_arch(Architecture arch); +internal E_String2NumMap *ctrl_string2reg_from_arch(Arch arch); +internal E_String2NumMap *ctrl_string2alias_from_arch(Arch arch); //////////////////////////////// //~ rjf: Control-Thread Functions diff --git a/src/dasm_cache/dasm_cache.c b/src/dasm_cache/dasm_cache.c index a58536b2..38759fc4 100644 --- a/src/dasm_cache/dasm_cache.c +++ b/src/dasm_cache/dasm_cache.c @@ -10,7 +10,7 @@ #endif internal DASM_Inst -dasm_inst_from_code(Arena *arena, Architecture arch, U64 vaddr, String8 code, DASM_Syntax syntax) +dasm_inst_from_code(Arena *arena, Arch arch, U64 vaddr, String8 code, DASM_Syntax syntax) { DASM_Inst inst = {0}; switch(arch) @@ -18,8 +18,8 @@ dasm_inst_from_code(Arena *arena, Architecture arch, U64 vaddr, String8 code, DA default:{}break; //- rjf: x86/x64 disassembly - case Architecture_x86: - case Architecture_x64: + case Arch_x86: + case Arch_x64: { // rjf: determine zydis formatter style ZydisFormatterStyle style = ZYDIS_FORMATTER_STYLE_INTEL; @@ -138,7 +138,7 @@ dasm_inst_from_code(Arena *arena, Architecture arch, U64 vaddr, String8 code, DA //~ rjf: Control Flow Analysis internal DASM_CtrlFlowInfo -dasm_ctrl_flow_info_from_arch_vaddr_code(Arena *arena, DASM_InstFlags exit_points_mask, Architecture arch, U64 vaddr, String8 code) +dasm_ctrl_flow_info_from_arch_vaddr_code(Arena *arena, DASM_InstFlags exit_points_mask, Arch arch, U64 vaddr, String8 code) { Temp scratch = scratch_begin(&arena, 1); DASM_CtrlFlowInfo info = {0}; @@ -395,7 +395,7 @@ dasm_info_from_hash_params(DASM_Scope *scope, U128 hash, DASM_Params *params) { log_infof("hash: [0x%I64x 0x%I64x]\n", hash.u64[0], hash.u64[1]); log_infof("vaddr: 0x%I64x\n", params->vaddr); - log_infof("arch: %S\n", string_from_architecture(params->arch)); + log_infof("arch: %S\n", string_from_arch(params->arch)); log_infof("style_flags: 0x%x\n", params->style_flags); log_infof("syntax: %i\n", params->syntax); log_infof("base_vaddr: 0x%I64x\n", params->base_vaddr); @@ -459,7 +459,7 @@ dasm_u2p_enqueue_req(U128 hash, DASM_Params *params, U64 endt_us) { U64 unconsumed_size = dasm_shared->u2p_ring_write_pos - dasm_shared->u2p_ring_read_pos; U64 available_size = dasm_shared->u2p_ring_size - unconsumed_size; - if(available_size >= sizeof(hash)+sizeof(U64)+sizeof(Architecture)+sizeof(DASM_StyleFlags)+sizeof(DASM_Syntax)+sizeof(U64)+sizeof(U64)+params->dbgi_key.path.size+sizeof(U64)) + if(available_size >= sizeof(hash)+sizeof(U64)+sizeof(Arch)+sizeof(DASM_StyleFlags)+sizeof(DASM_Syntax)+sizeof(U64)+sizeof(U64)+params->dbgi_key.path.size+sizeof(U64)) { good = 1; dasm_shared->u2p_ring_write_pos += ring_write_struct(dasm_shared->u2p_ring_base, dasm_shared->u2p_ring_size, dasm_shared->u2p_ring_write_pos, &hash); @@ -494,7 +494,7 @@ dasm_u2p_dequeue_req(Arena *arena, U128 *hash_out, DASM_Params *params_out) OS_MutexScope(dasm_shared->u2p_ring_mutex) for(;;) { U64 unconsumed_size = dasm_shared->u2p_ring_write_pos - dasm_shared->u2p_ring_read_pos; - if(unconsumed_size >= sizeof(*hash_out)+sizeof(U64)+sizeof(Architecture)+sizeof(DASM_StyleFlags)+sizeof(DASM_Syntax)+sizeof(U64)+sizeof(U64)+sizeof(U64)) + if(unconsumed_size >= sizeof(*hash_out)+sizeof(U64)+sizeof(Arch)+sizeof(DASM_StyleFlags)+sizeof(DASM_Syntax)+sizeof(U64)+sizeof(U64)+sizeof(U64)) { dasm_shared->u2p_ring_read_pos += ring_read_struct(dasm_shared->u2p_ring_base, dasm_shared->u2p_ring_size, dasm_shared->u2p_ring_read_pos, hash_out); dasm_shared->u2p_ring_read_pos += ring_read_struct(dasm_shared->u2p_ring_base, dasm_shared->u2p_ring_size, dasm_shared->u2p_ring_read_pos, ¶ms_out->vaddr); @@ -576,8 +576,8 @@ dasm_parse_thread__entry_point(void *p) default:{}break; //- rjf: x86/x64 decoding - case Architecture_x64: - case Architecture_x86: + case Arch_x64: + case Arch_x86: { // rjf: disassemble RDI_SourceFile *last_file = &rdi_nil_element_union.source_file; diff --git a/src/dasm_cache/dasm_cache.h b/src/dasm_cache/dasm_cache.h index 4f054055..5ca4c1ee 100644 --- a/src/dasm_cache/dasm_cache.h +++ b/src/dasm_cache/dasm_cache.h @@ -93,7 +93,7 @@ typedef struct DASM_Params DASM_Params; struct DASM_Params { U64 vaddr; - Architecture arch; + Arch arch; DASM_StyleFlags style_flags; DASM_Syntax syntax; U64 base_vaddr; @@ -280,12 +280,12 @@ global DASM_Shared *dasm_shared = 0; //////////////////////////////// //~ rjf: Instruction Decoding/Disassembling Type Functions -internal DASM_Inst dasm_inst_from_code(Arena *arena, Architecture arch, U64 vaddr, String8 code, DASM_Syntax syntax); +internal DASM_Inst dasm_inst_from_code(Arena *arena, Arch arch, U64 vaddr, String8 code, DASM_Syntax syntax); //////////////////////////////// //~ rjf: Control Flow Analysis -internal DASM_CtrlFlowInfo dasm_ctrl_flow_info_from_arch_vaddr_code(Arena *arena, DASM_InstFlags exit_points_mask, Architecture arch, U64 vaddr, String8 code); +internal DASM_CtrlFlowInfo dasm_ctrl_flow_info_from_arch_vaddr_code(Arena *arena, DASM_InstFlags exit_points_mask, Arch arch, U64 vaddr, String8 code); //////////////////////////////// //~ rjf: Parameter Type Functions diff --git a/src/dbg_engine/dbg_engine.mdesk b/src/dbg_engine/dbg_engine.mdesk index 22980d66..b9672b36 100644 --- a/src/dbg_engine/dbg_engine.mdesk +++ b/src/dbg_engine/dbg_engine.mdesk @@ -27,6 +27,8 @@ D_EntityKindTable: { {Nil nil nils 0 0 0 0 0 0 0 0 0 0 0 "Label" Null "Nil" } {Root root roots 0 0 0 0 0 0 0 0 0 0 0 "Label" Null "Root" } + + //- rjf: machines {Machine machine machines 0 1 0 1 0 0 0 0 0 0 0 "Label" Machine "Machine" } //- rjf: filesystem modeling @@ -59,7 +61,7 @@ D_EntityKindTable: {WorkingDirectory working_directory working_directories 0 0 0 0 0 0 0 0 1 1 0 "Execution Path" Null "Working Directory" } {EntryPoint entry_point entry_points 0 0 0 0 0 0 0 0 0 1 0 "Symbol Name" Null "Entry Point" } - //- rjf: view containers (windows, panels, views) + //- rjf: frontend containers (windows, panels, views) {Window window windows 1 0 0 0 0 0 1 0 0 1 1 "Label" Window "Window" } {Panel panel panels 1 0 0 0 0 0 1 0 0 1 1 "Label" XSplit "Panel" } {View view views 1 0 0 0 0 0 1 0 0 1 1 "Label" Null "View" } diff --git a/src/dbg_engine/dbg_engine_core.c b/src/dbg_engine/dbg_engine_core.c index b781b9aa..25eadd0d 100644 --- a/src/dbg_engine/dbg_engine_core.c +++ b/src/dbg_engine/dbg_engine_core.c @@ -1281,6 +1281,7 @@ d_entity_alloc(D_Entity *parent, D_EntityKind kind) entity->id = d_state->entities_id_gen; entity->gen += 1; entity->alloc_time_us = os_now_microseconds(); + entity->params_root = &md_nil_node; // rjf: initialize to deleted, record history, then "undelete" if this allocation can be undone if(user_defined_lifetime) @@ -1352,6 +1353,10 @@ d_entity_release(D_Entity *entity) { d_name_release(task->e->string); } + if(task->e->params_arena != 0) + { + arena_release(task->e->params_arena); + } d_state->kind_alloc_gens[task->e->kind] += 1; } @@ -1478,7 +1483,7 @@ d_entity_equip_ctrl_handle(D_Entity *entity, DMN_Handle handle) } internal void -d_entity_equip_arch(D_Entity *entity, Architecture arch) +d_entity_equip_arch(D_Entity *entity, Arch arch) { d_require_entity_nonnil(entity, return); d_state_delta_history_push_struct_delta(d_state_delta_history(), &entity->arch, .guard_entity = entity); @@ -1560,6 +1565,44 @@ d_entity_equip_namef(D_Entity *entity, char *fmt, ...) scratch_end(scratch); } +//- rjf: params tree equipment + +internal void +d_entity_equip_params(D_Entity *entity, MD_Node *params) +{ + if(entity->params_arena == 0) + { + entity->params_arena = arena_alloc(); + } + arena_clear(entity->params_arena); + entity->params_root = md_tree_copy(entity->params_arena, params); +} + +internal void +d_entity_equip_param(D_Entity *entity, String8 key, String8 value) +{ + Temp scratch = scratch_begin(0, 0); + { + MD_Node *params = md_tree_copy(scratch.arena, entity->params_root); + MD_Node *key_node = md_child_from_string(params, key, 0); + if(md_node_is_nil(key_node)) + { + key_node = md_push_node(scratch.arena, MD_NodeKind_Main, MD_NodeFlag_Identifier, key, key, 0); + md_node_push_child(params, key_node); + } + MD_TokenizeResult value_tokenize = md_tokenize_from_text(scratch.arena, value); + MD_ParseResult value_parse = md_parse_from_text_tokens(scratch.arena, str8_zero(), value, value_tokenize.tokens); + for(MD_EachNode(child, value_parse.root->first)) + { + child->parent = key_node; + } + key_node->first = value_parse.root->first; + key_node->last = value_parse.root->last; + d_entity_equip_params(entity, params); + } + scratch_end(scratch); +} + //- rjf: opening folders/files & maintaining the entity model of the filesystem internal D_Entity * @@ -2208,7 +2251,7 @@ d_trap_net_from_thread__step_over_inst(Arena *arena, D_Entity *thread) // rjf: thread => unpacked info D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); - Architecture arch = d_architecture_from_entity(thread); + Arch arch = d_arch_from_entity(thread); U64 ip_vaddr = ctrl_query_cached_rip_from_thread(d_state->ctrl_entity_store, thread->ctrl_machine_id, thread->ctrl_handle); // rjf: ip => machine code @@ -2248,7 +2291,7 @@ d_trap_net_from_thread__step_over_line(Arena *arena, D_Entity *thread) D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); D_Entity *module = d_module_from_thread(thread); DI_Key dbgi_key = d_dbgi_key_from_module(module); - Architecture arch = d_architecture_from_entity(thread); + Arch arch = d_arch_from_entity(thread); U64 ip_vaddr = ctrl_query_cached_rip_from_thread(d_state->ctrl_entity_store, thread->ctrl_machine_id, thread->ctrl_handle); log_infof("ip_vaddr: 0x%I64x\n", ip_vaddr); log_infof("dbgi_key: {%S, 0x%I64x}\n", dbgi_key.path, dbgi_key.min_timestamp); @@ -2409,7 +2452,7 @@ d_trap_net_from_thread__step_into_line(Arena *arena, D_Entity *thread) D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); D_Entity *module = d_module_from_thread(thread); DI_Key dbgi_key = d_dbgi_key_from_module(module); - Architecture arch = d_architecture_from_entity(thread); + Arch arch = d_arch_from_entity(thread); U64 ip_vaddr = ctrl_query_cached_rip_from_thread(d_state->ctrl_entity_store, thread->ctrl_machine_id, thread->ctrl_handle); // rjf: ip => line vaddr range @@ -3093,8 +3136,8 @@ d_tls_base_vaddr_from_process_root_rip(D_Entity *process, U64 root_vaddr, U64 ri return base_vaddr; } -internal Architecture -d_architecture_from_entity(D_Entity *entity) +internal Arch +d_arch_from_entity(D_Entity *entity) { return entity->arch; } @@ -3173,7 +3216,7 @@ d_module_from_thread_candidates(D_Entity *thread, D_EntityList *candidates) internal D_Unwind d_unwind_from_ctrl_unwind(Arena *arena, DI_Scope *di_scope, D_Entity *process, CTRL_Unwind *base_unwind) { - Architecture arch = d_architecture_from_entity(process); + Arch arch = d_arch_from_entity(process); D_Unwind result = {0}; result.frames.concrete_frame_count = base_unwind->frames.count; result.frames.total_frame_count = result.frames.concrete_frame_count; @@ -3486,7 +3529,7 @@ d_eval_space_read(void *u, E_Space space, void *out, Rng1U64 range) if(frame_idx < unwind.frames.count) { CTRL_UnwindFrame *f = &unwind.frames.v[frame_idx]; - U64 regs_size = regs_block_size_from_architecture(e_interpret_ctx->reg_arch); + U64 regs_size = regs_block_size_from_arch(e_interpret_ctx->reg_arch); Rng1U64 legal_range = r1u64(0, regs_size); Rng1U64 read_range = intersect_1u64(legal_range, range); U64 read_size = dim_1u64(read_range); @@ -3555,7 +3598,7 @@ d_eval_space_write(void *u, E_Space space, void *in, Rng1U64 range) if(frame_idx < unwind.frames.count) { Temp scratch = scratch_begin(0, 0); - U64 regs_size = regs_block_size_from_architecture(d_architecture_from_entity(entity)); + U64 regs_size = regs_block_size_from_arch(d_arch_from_entity(entity)); Rng1U64 legal_range = r1u64(0, regs_size); Rng1U64 write_range = intersect_1u64(legal_range, range); U64 write_size = dim_1u64(write_range); @@ -5224,15 +5267,15 @@ d_lang_kind_from_eval_params(E_Eval eval, MD_Node *params) return lang_kind; } -internal Architecture -d_architecture_from_eval_params(E_Eval eval, MD_Node *params) +internal Arch +d_arch_from_eval_params(E_Eval eval, MD_Node *params) { - Architecture arch = Architecture_Null; + Arch arch = Arch_Null; MD_Node *arch_node = md_child_from_string(params, str8_lit("arch"), 0); String8 arch_kind_string = arch_node->first->string; if(str8_match(arch_kind_string, str8_lit("x64"), StringMatchFlag_CaseInsensitive)) { - arch = Architecture_x64; + arch = Arch_x64; } return arch; } @@ -8310,7 +8353,7 @@ d_begin_frame(Arena *arena, D_CmdList *cmds, F32 dt) //- rjf: unpack eval-dependent info D_Entity *process = d_entity_from_handle(d_regs()->process); D_Entity *thread = d_entity_from_handle(d_regs()->thread); - Architecture arch = d_architecture_from_entity(thread); + Arch arch = d_arch_from_entity(thread); U64 unwind_count = d_regs()->unwind_count; U64 rip_vaddr = d_query_cached_rip_from_thread_unwind(thread, unwind_count); CTRL_Unwind unwind = d_query_cached_unwind_from_thread(thread); @@ -8330,7 +8373,7 @@ d_begin_frame(Arena *arena, D_CmdList *cmds, F32 dt) { D_Entity *m = n->entity; DI_Key dbgi_key = d_dbgi_key_from_module(m); - eval_modules[eval_module_idx].arch = d_architecture_from_entity(m); + eval_modules[eval_module_idx].arch = d_arch_from_entity(m); eval_modules[eval_module_idx].rdi = di_rdi_from_key(d_state->frame_di_scope, &dbgi_key, 0); eval_modules[eval_module_idx].vaddr_range = m->vaddr_rng; eval_modules[eval_module_idx].space = d_eval_space_from_entity(d_entity_ancestor_from_kind(m, D_EntityKind_Process)); @@ -8423,12 +8466,12 @@ d_begin_frame(Arena *arena, D_CmdList *cmds, F32 dt) { e_member_list_push_new(scratch.arena, &entity_members, .name = str8_lit("Enabled"), .off = 0, .type_key = e_type_key_basic(E_TypeKind_S64)); e_member_list_push_new(scratch.arena, &entity_members, .name = str8_lit("Hit Count"),.off = 0+8, .type_key = e_type_key_basic(E_TypeKind_U64)); - e_member_list_push_new(scratch.arena, &entity_members, .name = str8_lit("Label"), .off = 0+8+8, .type_key = e_type_key_cons_ptr(architecture_from_context(), e_type_key_basic(E_TypeKind_Char8))); - e_member_list_push_new(scratch.arena, &entity_members, .name = str8_lit("Location"), .off = 0+8+8+8, .type_key = e_type_key_cons_ptr(architecture_from_context(), e_type_key_basic(E_TypeKind_Char8))); - e_member_list_push_new(scratch.arena, &entity_members, .name = str8_lit("Condition"),.off = 0+8+8+8+8,.type_key = e_type_key_cons_ptr(architecture_from_context(), e_type_key_basic(E_TypeKind_Char8))); + e_member_list_push_new(scratch.arena, &entity_members, .name = str8_lit("Label"), .off = 0+8+8, .type_key = e_type_key_cons_ptr(arch_from_context(), e_type_key_basic(E_TypeKind_Char8))); + e_member_list_push_new(scratch.arena, &entity_members, .name = str8_lit("Location"), .off = 0+8+8+8, .type_key = e_type_key_cons_ptr(arch_from_context(), e_type_key_basic(E_TypeKind_Char8))); + e_member_list_push_new(scratch.arena, &entity_members, .name = str8_lit("Condition"),.off = 0+8+8+8+8,.type_key = e_type_key_cons_ptr(arch_from_context(), e_type_key_basic(E_TypeKind_Char8))); } E_MemberArray entity_members_array = e_member_array_from_list(scratch.arena, &entity_members); - E_TypeKey entity_type = e_type_key_cons(.arch = architecture_from_context(), + E_TypeKey entity_type = e_type_key_cons(.arch = arch_from_context(), .kind = E_TypeKind_Struct, .name = str8_lit("Entity"), .members = entity_members_array.v, diff --git a/src/dbg_engine/dbg_engine_core.h b/src/dbg_engine/dbg_engine_core.h index c9fbc43e..b3b9cc61 100644 --- a/src/dbg_engine/dbg_engine_core.h +++ b/src/dbg_engine/dbg_engine_core.h @@ -289,7 +289,7 @@ struct D_Entity // rjf: ctrl equipment CTRL_MachineID ctrl_machine_id; DMN_Handle ctrl_handle; - Architecture arch; + Arch arch; U32 ctrl_id; U64 stack_base; Rng1U64 vaddr_rng; @@ -297,6 +297,10 @@ struct D_Entity // rjf: string equipment String8 string; + + // rjf: parameter tree + Arena *params_arena; + MD_Node *params_root; }; typedef struct D_EntityNode D_EntityNode; @@ -1251,7 +1255,7 @@ internal void d_entity_equip_timestamp(D_Entity *entity, U64 timestamp); //- rjf: control layer correllation equipment internal void d_entity_equip_ctrl_machine_id(D_Entity *entity, CTRL_MachineID machine_id); internal void d_entity_equip_ctrl_handle(D_Entity *entity, DMN_Handle handle); -internal void d_entity_equip_arch(D_Entity *entity, Architecture arch); +internal void d_entity_equip_arch(D_Entity *entity, Arch arch); internal void d_entity_equip_ctrl_id(D_Entity *entity, U32 id); internal void d_entity_equip_stack_base(D_Entity *entity, U64 stack_base); internal void d_entity_equip_vaddr_rng(D_Entity *entity, Rng1U64 range); @@ -1261,6 +1265,10 @@ internal void d_entity_equip_vaddr(D_Entity *entity, U64 vaddr); internal void d_entity_equip_name(D_Entity *entity, String8 name); internal void d_entity_equip_namef(D_Entity *entity, char *fmt, ...); +//- rjf: params tree equipment +internal void d_entity_equip_params(D_Entity *entity, MD_Node *params); +internal void d_entity_equip_param(D_Entity *entity, String8 key, String8 value); + //- rjf: opening folders/files & maintaining the entity model of the filesystem internal D_Entity *d_entity_from_path(String8 path, D_EntityFromPathFlags flags); @@ -1341,7 +1349,7 @@ internal D_LineList d_lines_from_file_path_line_num(Arena *arena, String8 file_p internal D_Entity *d_module_from_process_vaddr(D_Entity *process, U64 vaddr); internal D_Entity *d_module_from_thread(D_Entity *thread); internal U64 d_tls_base_vaddr_from_process_root_rip(D_Entity *process, U64 root_vaddr, U64 rip_vaddr); -internal Architecture d_architecture_from_entity(D_Entity *entity); +internal Arch d_arch_from_entity(D_Entity *entity); internal E_String2NumMap *d_push_locals_map_from_dbgi_key_voff(Arena *arena, DI_Scope *scope, DI_Key *dbgi_key, U64 voff); internal E_String2NumMap *d_push_member_map_from_dbgi_key_voff(Arena *arena, DI_Scope *scope, DI_Key *dbgi_key, U64 voff); internal B32 d_set_thread_rip(D_Entity *thread, U64 vaddr); @@ -1456,7 +1464,7 @@ internal E_TypeKey d_type_key_from_params(MD_Node *params); internal E_Value d_value_from_params_key(MD_Node *params, String8 key); internal Rng1U64 d_range_from_eval_params(E_Eval eval, MD_Node *params); internal TXT_LangKind d_lang_kind_from_eval_params(E_Eval eval, MD_Node *params); -internal Architecture d_architecture_from_eval_params(E_Eval eval, MD_Node *params); +internal Arch d_arch_from_eval_params(E_Eval eval, MD_Node *params); internal Vec2S32 d_dim2s32_from_eval_params(E_Eval eval, MD_Node *params); internal R_Tex2DFormat d_tex2dformat_from_eval_params(E_Eval eval, MD_Node *params); diff --git a/src/dbg_frontend/dbg_frontend_core.c b/src/dbg_frontend/dbg_frontend_core.c index 31213da8..0502cd7d 100644 --- a/src/dbg_frontend/dbg_frontend_core.c +++ b/src/dbg_frontend/dbg_frontend_core.c @@ -4612,11 +4612,11 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) //- rjf: gather registers if(ws->autocomp_lister_params.flags & DF_AutoCompListerFlag_Registers) { - Architecture arch = d_architecture_from_entity(thread); - U64 reg_names_count = regs_reg_code_count_from_architecture(arch); - U64 alias_names_count = regs_alias_code_count_from_architecture(arch); - String8 *reg_names = regs_reg_code_string_table_from_architecture(arch); - String8 *alias_names = regs_alias_code_string_table_from_architecture(arch); + Arch arch = d_arch_from_entity(thread); + U64 reg_names_count = regs_reg_code_count_from_arch(arch); + U64 alias_names_count = regs_alias_code_count_from_arch(arch); + String8 *reg_names = regs_reg_code_string_table_from_arch(arch); + String8 *alias_names = regs_alias_code_string_table_from_arch(arch); for(U64 idx = 0; idx < reg_names_count; idx += 1) { if(reg_names[idx].size != 0) @@ -4699,12 +4699,12 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) //- rjf: gather architectures if(ws->autocomp_lister_params.flags & DF_AutoCompListerFlag_Architectures) { - for(EachNonZeroEnumVal(Architecture, arch)) + for(EachNonZeroEnumVal(Arch, arch)) { DF_AutoCompListerItem item = {0}; { - item.string = string_from_architecture(arch); - item.kind_string = str8_lit("Architecture"); + item.string = string_from_arch(arch); + item.kind_string = str8_lit("Arch"); item.matches = fuzzy_match_find(scratch.arena, query, item.string); } if(query.size == 0 || item.matches.count != 0) @@ -9998,8 +9998,8 @@ df_entity_tooltips(D_Entity *entity) { String8 display_string = d_display_string_from_entity(scratch.arena, entity); U64 rip_vaddr = d_query_cached_rip_from_thread(entity); - Architecture arch = d_architecture_from_entity(entity); - String8 arch_str = string_from_architecture(arch); + Arch arch = d_arch_from_entity(entity); + String8 arch_str = string_from_arch(arch); U32 pid_or_tid = entity->ctrl_id; if(display_string.size != 0) UI_PrefWidth(ui_children_sum(1)) UI_Row { @@ -10045,7 +10045,7 @@ df_entity_tooltips(D_Entity *entity) } UI_PrefWidth(ui_children_sum(1)) UI_Row { - UI_PrefWidth(ui_em(18.f, 1.f)) UI_FlagsAdd(UI_BoxFlag_DrawTextWeak) ui_labelf("Architecture: "); + UI_PrefWidth(ui_em(18.f, 1.f)) UI_FlagsAdd(UI_BoxFlag_DrawTextWeak) ui_labelf("Arch: "); UI_PrefWidth(ui_text_dim(10, 1)) ui_label(arch_str); } ui_spacer(ui_em(1.5f, 1.f)); diff --git a/src/dbg_frontend/dbg_frontend_views.c b/src/dbg_frontend/dbg_frontend_views.c index 5f8224d5..6ff0189f 100644 --- a/src/dbg_frontend/dbg_frontend_views.c +++ b/src/dbg_frontend/dbg_frontend_views.c @@ -985,7 +985,7 @@ df_watch_view_build(DF_View *view, DF_WatchViewState *ewv, B32 modifiable, U32 d // FNT_Tag code_font = df_font_from_slot(DF_FontSlot_Code); D_Entity *thread = d_entity_from_handle(d_regs()->thread); - Architecture arch = d_architecture_from_entity(thread); + Arch arch = d_arch_from_entity(thread); CTRL_Unwind base_unwind = d_query_cached_unwind_from_thread(thread); D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); D_Unwind rich_unwind = d_unwind_from_ctrl_unwind(scratch.arena, di_scope, process, &base_unwind); @@ -1107,12 +1107,12 @@ df_watch_view_build(DF_View *view, DF_WatchViewState *ewv, B32 modifiable, U32 d { e_member_list_push_new(scratch.arena, &bp_members, .name = str8_lit("Enabled"), .off = 0, .type_key = e_type_key_basic(E_TypeKind_S64)); e_member_list_push_new(scratch.arena, &bp_members, .name = str8_lit("Hit Count"),.off = 0+8, .type_key = e_type_key_basic(E_TypeKind_U64)); - e_member_list_push_new(scratch.arena, &bp_members, .name = str8_lit("Label"), .off = 0+8+8, .type_key = e_type_key_cons_ptr(architecture_from_context(), e_type_key_basic(E_TypeKind_Char8))); - e_member_list_push_new(scratch.arena, &bp_members, .name = str8_lit("Location"), .off = 0+8+8+8, .type_key = e_type_key_cons_ptr(architecture_from_context(), e_type_key_basic(E_TypeKind_Char8))); - e_member_list_push_new(scratch.arena, &bp_members, .name = str8_lit("Condition"),.off = 0+8+8+8+8,.type_key = e_type_key_cons_ptr(architecture_from_context(), e_type_key_basic(E_TypeKind_Char8))); + e_member_list_push_new(scratch.arena, &bp_members, .name = str8_lit("Label"), .off = 0+8+8, .type_key = e_type_key_cons_ptr(arch_from_context(), e_type_key_basic(E_TypeKind_Char8))); + e_member_list_push_new(scratch.arena, &bp_members, .name = str8_lit("Location"), .off = 0+8+8+8, .type_key = e_type_key_cons_ptr(arch_from_context(), e_type_key_basic(E_TypeKind_Char8))); + e_member_list_push_new(scratch.arena, &bp_members, .name = str8_lit("Condition"),.off = 0+8+8+8+8,.type_key = e_type_key_cons_ptr(arch_from_context(), e_type_key_basic(E_TypeKind_Char8))); } E_MemberArray bp_members_array = e_member_array_from_list(scratch.arena, &bp_members); - E_TypeKey bp_type = e_type_key_cons(.arch = architecture_from_context(), .kind = E_TypeKind_Struct, .name = str8_lit("Breakpoint"), .members = bp_members_array.v, .count = bp_members_array.count); + E_TypeKey bp_type = e_type_key_cons(.arch = arch_from_context(), .kind = E_TypeKind_Struct, .name = str8_lit("Breakpoint"), .members = bp_members_array.v, .count = bp_members_array.count); E_Expr *bp_expr = e_push_expr(scratch.arena, E_ExprKind_LeafOffset, 0); bp_expr->type_key = bp_type; bp_expr->mode = E_Mode_Offset; @@ -1147,7 +1147,7 @@ df_watch_view_build(DF_View *view, DF_WatchViewState *ewv, B32 modifiable, U32 d e_member_list_push_new(scratch.arena, &wp_members, .name = str8_lit("Location"), .off = 0, .type_key = e_type_key_cons_array(e_type_key_basic(E_TypeKind_Char8), 256)); } E_MemberArray wp_members_array = e_member_array_from_list(scratch.arena, &wp_members); - E_TypeKey wp_type = e_type_key_cons(.arch = architecture_from_context(), .kind = E_TypeKind_Struct, .name = str8_lit("Watch Pin"), .members = wp_members_array.v, .count = wp_members_array.count); + E_TypeKey wp_type = e_type_key_cons(.arch = arch_from_context(), .kind = E_TypeKind_Struct, .name = str8_lit("Watch Pin"), .members = wp_members_array.v, .count = wp_members_array.count); E_Expr *wp_expr = e_push_expr(scratch.arena, E_ExprKind_LeafOffset, 0); wp_expr->type_key = wp_type; wp_expr->mode = E_Mode_Offset; @@ -1235,11 +1235,11 @@ df_watch_view_build(DF_View *view, DF_WatchViewState *ewv, B32 modifiable, U32 d case DF_WatchViewFillKind_Registers: { D_Entity *thread = d_entity_from_handle(d_regs()->thread); - Architecture arch = d_architecture_from_entity(thread); - U64 reg_count = regs_reg_code_count_from_architecture(arch); - String8 *reg_strings = regs_reg_code_string_table_from_architecture(arch); - U64 alias_count = regs_alias_code_count_from_architecture(arch); - String8 *alias_strings = regs_alias_code_string_table_from_architecture(arch); + Arch arch = d_arch_from_entity(thread); + U64 reg_count = regs_reg_code_count_from_arch(arch); + String8 *reg_strings = regs_reg_code_string_table_from_arch(arch); + U64 alias_count = regs_alias_code_count_from_arch(arch); + String8 *alias_strings = regs_alias_code_string_table_from_arch(arch); U64 num = 1; for(U64 reg_idx = 1; reg_idx < reg_count; reg_idx += 1, num += 1) { @@ -6651,7 +6651,7 @@ DF_VIEW_CMD_FUNCTION_DEF(disasm) space = d_eval_space_from_entity(d_entity_from_handle(d_regs()->process)); } Rng1U64 range = d_range_from_eval_params(eval, params); - Architecture arch = d_architecture_from_eval_params(eval, params); + Arch arch = d_arch_from_eval_params(eval, params); D_Entity *space_entity = d_entity_from_eval_space(space); D_Entity *dasm_module = &d_nil_entity; DI_Key dbgi_key = {0}; @@ -6661,7 +6661,7 @@ DF_VIEW_CMD_FUNCTION_DEF(disasm) default:{}break; case D_EntityKind_Process: { - arch = d_architecture_from_entity(space_entity); + arch = d_arch_from_entity(space_entity); dasm_module = d_module_from_process_vaddr(space_entity, range.min); dbgi_key = d_dbgi_key_from_module(dasm_module); base_vaddr = dasm_module->vaddr_rng.min; @@ -6680,7 +6680,7 @@ DF_VIEW_CMD_FUNCTION_DEF(disasm) } DASM_Info dasm_info = dasm_info_from_key_params(dasm_scope, dasm_key, &dasm_params, &dasm_data_hash); d_regs()->text_key = dasm_info.text_key; - d_regs()->lang_kind = txt_lang_kind_from_architecture(arch); + d_regs()->lang_kind = txt_lang_kind_from_arch(arch); U128 dasm_text_hash = {0}; TXT_TextInfo dasm_text_info = txt_text_info_from_key_lang(txt_scope, d_regs()->text_key, d_regs()->lang_kind, &dasm_text_hash); String8 dasm_text_data = hs_data_from_hash(hs_scope, dasm_text_hash); @@ -6783,7 +6783,7 @@ DF_VIEW_UI_FUNCTION_DEF(disasm) space = d_eval_space_from_entity(d_entity_from_handle(d_regs()->process)); } Rng1U64 range = d_range_from_eval_params(eval, params); - Architecture arch = d_architecture_from_eval_params(eval, params); + Arch arch = d_arch_from_eval_params(eval, params); D_Entity *space_entity = d_entity_from_eval_space(space); D_Entity *dasm_module = &d_nil_entity; DI_Key dbgi_key = {0}; @@ -6793,7 +6793,7 @@ DF_VIEW_UI_FUNCTION_DEF(disasm) default:{}break; case D_EntityKind_Process: { - arch = d_architecture_from_entity(space_entity); + arch = d_arch_from_entity(space_entity); dasm_module = d_module_from_process_vaddr(space_entity, range.min); dbgi_key = d_dbgi_key_from_module(dasm_module); base_vaddr = dasm_module->vaddr_rng.min; @@ -6812,7 +6812,7 @@ DF_VIEW_UI_FUNCTION_DEF(disasm) } DASM_Info dasm_info = dasm_info_from_key_params(dasm_scope, dasm_key, &dasm_params, &dasm_data_hash); d_regs()->text_key = dasm_info.text_key; - d_regs()->lang_kind = txt_lang_kind_from_architecture(arch); + d_regs()->lang_kind = txt_lang_kind_from_arch(arch); U128 dasm_text_hash = {0}; TXT_TextInfo dasm_text_info = txt_text_info_from_key_lang(txt_scope, d_regs()->text_key, d_regs()->lang_kind, &dasm_text_hash); String8 dasm_text_data = hs_data_from_hash(hs_scope, dasm_text_hash); diff --git a/src/demon/demon_core.c b/src/demon/demon_core.c index 7d2a18f5..136c2d45 100644 --- a/src/demon/demon_core.c +++ b/src/demon/demon_core.c @@ -131,8 +131,8 @@ dmn_rip_from_thread(DMN_Handle thread) U64 result = 0; Temp scratch = scratch_begin(0, 0); { - Architecture arch = dmn_arch_from_thread(thread); - U64 reg_block_size = regs_block_size_from_architecture(arch); + Arch arch = dmn_arch_from_thread(thread); + U64 reg_block_size = regs_block_size_from_arch(arch); void *reg_block = push_array(scratch.arena, U8, reg_block_size); dmn_thread_read_reg_block(thread, reg_block); result = regs_rip_from_arch_block(arch, reg_block); @@ -147,8 +147,8 @@ dmn_rsp_from_thread(DMN_Handle thread) U64 result = 0; Temp scratch = scratch_begin(0, 0); { - Architecture arch = dmn_arch_from_thread(thread); - U64 reg_block_size = regs_block_size_from_architecture(arch); + Arch arch = dmn_arch_from_thread(thread); + U64 reg_block_size = regs_block_size_from_arch(arch); void *reg_block = push_array(scratch.arena, U8, reg_block_size); dmn_thread_read_reg_block(thread, reg_block); result = regs_rsp_from_arch_block(arch, reg_block); diff --git a/src/demon/demon_core.h b/src/demon/demon_core.h index 523e6e82..923ea825 100644 --- a/src/demon/demon_core.h +++ b/src/demon/demon_core.h @@ -68,7 +68,7 @@ struct DMN_Event DMN_Handle process; DMN_Handle thread; DMN_Handle module; - Architecture arch; + Arch arch; U64 address; U64 size; String8 string; @@ -228,7 +228,7 @@ internal B32 dmn_process_write(DMN_Handle process, Rng1U64 range, void *src); #define dmn_process_write_struct(process, vaddr, ptr) dmn_process_write((process), r1u64((vaddr), (vaddr)+(sizeof(*ptr))), ptr) //- rjf: threads -internal Architecture dmn_arch_from_thread(DMN_Handle handle); +internal Arch dmn_arch_from_thread(DMN_Handle handle); internal U64 dmn_stack_base_vaddr_from_thread(DMN_Handle handle); internal U64 dmn_tls_root_vaddr_from_thread(DMN_Handle handle); internal B32 dmn_thread_read_reg_block(DMN_Handle handle, void *reg_block); diff --git a/src/demon/linux/demon_core_linux.c b/src/demon/linux/demon_core_linux.c index 5c9e16cd..861c21d3 100644 --- a/src/demon/linux/demon_core_linux.c +++ b/src/demon/linux/demon_core_linux.c @@ -131,7 +131,7 @@ dmn_process_write(DMN_Handle process, Rng1U64 range, void *src) //- rjf: threads -internal Architecture +internal Arch dmn_arch_from_thread(DMN_Handle handle) { } diff --git a/src/demon/linux/demon_os_linux.c b/src/demon/linux/demon_os_linux.c index 01a1fb70..b0b3c972 100644 --- a/src/demon/linux/demon_os_linux.c +++ b/src/demon/linux/demon_os_linux.c @@ -115,10 +115,10 @@ demon_lnx_open_memory_fd_for_pid(pid_t pid){ return(result); } -internal Architecture +internal Arch demon_lnx_arch_from_pid(pid_t pid){ Temp scratch = scratch_begin(0, 0); - Architecture result = Architecture_Null; + Arch result = Arch_Null; // exe path String8 exe_path = demon_lnx_executable_path_from_pid(scratch.arena, pid); @@ -168,22 +168,22 @@ demon_lnx_arch_from_pid(pid_t pid){ switch (ehdr.e_machine){ case SYMS_ElfMachineKind_386: { - result = Architecture_x86; + result = Arch_x86; }break; case SYMS_ElfMachineKind_ARM: { - result = Architecture_arm32; + result = Arch_arm32; }break; case SYMS_ElfMachineKind_X86_64: { - result = Architecture_x64; + result = Arch_x64; }break; case SYMS_ElfMachineKind_AARCH64: { - result = Architecture_arm64; + result = Arch_arm64; }break; } @@ -192,9 +192,9 @@ demon_lnx_arch_from_pid(pid_t pid){ } internal DEMON_LNX_ProcessAux -demon_lnx_aux_from_pid(pid_t pid, Architecture arch){ +demon_lnx_aux_from_pid(pid_t pid, Arch arch){ DEMON_LNX_ProcessAux result = {0}; - B32 addr_32bit = (arch == Architecture_x86 || arch == Architecture_arm32); + B32 addr_32bit = (arch == Arch_x86 || arch == Arch_arm32); // open aux data Temp scratch = scratch_begin(0, 0); @@ -300,8 +300,8 @@ demon_lnx_phdr_info_from_memory(int memory_fd, B32 is_32bit, U64 phvaddr, U64 ph internal DEMON_LNX_ModuleNode* demon_lnx_module_list_from_process(Arena *arena, DEMON_Entity *process){ - Architecture arch = (Architecture)process->arch; - B32 is_32bit = (arch == Architecture_x86 || arch == Architecture_arm32); + Arch arch = (Arch)process->arch; + B32 is_32bit = (arch == Arch_x86 || arch == Arch_arm32); int memory_fd = (int)process->ext_u64; // aux from pid @@ -839,11 +839,11 @@ demon_os_run(Arena *arena, DEMON_OS_RunCtrls *controls){ U8 *trap_swap_bytes = 0; if (result.first == 0){ - // TODO(allen): per-Architecture implementation of single steps + // TODO(allen): per-Arch implementation of single steps // set single step bit if (single_step_thread != 0){ switch (single_step_thread->arch){ - case Architecture_x86: + case Arch_x86: { // TODO(allen): possibly buggy SYMS_RegX86 regs = {0}; @@ -852,7 +852,7 @@ demon_os_run(Arena *arena, DEMON_OS_RunCtrls *controls){ demon_os_write_regs_x86(single_step_thread, ®s); }break; - case Architecture_x64: + case Arch_x64: { // TODO(allen): possibly buggy SYMS_RegX64 regs = {0}; @@ -863,7 +863,7 @@ demon_os_run(Arena *arena, DEMON_OS_RunCtrls *controls){ } } - // TODO(allen): per-Architecture implementation of traps + // TODO(allen): per-Arch implementation of traps trap_swap_bytes = push_array_no_zero(scratch.arena, U8, controls->trap_count); { @@ -980,13 +980,13 @@ demon_os_run(Arena *arena, DEMON_OS_RunCtrls *controls){ union{ SYMS_RegX86 x86; SYMS_RegX64 x64; } regs = {0}; switch (thread->arch){ - case Architecture_x86: + case Arch_x86: { demon_os_read_regs_x86(thread, ®s.x86); instruction_pointer = regs.x86.eip.u32; }break; - case Architecture_x64: + case Arch_x64: { demon_os_read_regs_x64(thread, ®s.x64); instruction_pointer = regs.x64.rip.u64; @@ -1052,7 +1052,7 @@ demon_os_run(Arena *arena, DEMON_OS_RunCtrls *controls){ // this stuff in the log to make sense of it still. } else{ - Architecture arch = demon_lnx_arch_from_pid(new_pid); + Arch arch = demon_lnx_arch_from_pid(new_pid); // process entity DEMON_Entity *new_process = demon_ent_new(demon_ent_root, DEMON_EntityKind_Process, new_pid); @@ -1105,14 +1105,14 @@ demon_os_run(Arena *arena, DEMON_OS_RunCtrls *controls){ if (e_kind == DEMON_EventKind_Breakpoint){ // TODO(allen): possibly buggy switch (thread->arch){ - case Architecture_x86: + case Arch_x86: { instruction_pointer -= 1; regs.x86.eip.u32 = instruction_pointer; demon_os_write_regs_x86(thread, ®s.x86); }break; - case Architecture_x64: + case Arch_x64: { instruction_pointer -= 1; regs.x64.rip.u64 = instruction_pointer; @@ -1336,7 +1336,7 @@ demon_os_run(Arena *arena, DEMON_OS_RunCtrls *controls){ // cleanup if (did_run){ - // TODO(allen): per-Architecture + // TODO(allen): per-Arch // unset traps { DEMON_OS_Trap *trap = controls->traps; @@ -1348,7 +1348,7 @@ demon_os_run(Arena *arena, DEMON_OS_RunCtrls *controls){ } } - // TODO(allen): per-Architecture + // TODO(allen): per-Arch // unset single step bit // the single step bit is automatically unset whenever we single step // but if *something else* happened, it will still be there ready to @@ -1356,7 +1356,7 @@ demon_os_run(Arena *arena, DEMON_OS_RunCtrls *controls){ if (single_step_thread != 0){ // TODO(allen): possibly buggy switch (single_step_thread->arch){ - case Architecture_x86: + case Arch_x86: { SYMS_RegX86 regs = {0}; demon_os_read_regs_x86(single_step_thread, ®s); @@ -1364,7 +1364,7 @@ demon_os_run(Arena *arena, DEMON_OS_RunCtrls *controls){ demon_os_write_regs_x86(single_step_thread, ®s); }break; - case Architecture_x64: + case Arch_x64: { SYMS_RegX64 regs = {0}; demon_os_read_regs_x64(single_step_thread, ®s); @@ -1555,7 +1555,7 @@ demon_os_launch_process(OS_LaunchOptions *options){ else{ result = pid; - Architecture arch = demon_lnx_arch_from_pid(pid); + Arch arch = demon_lnx_arch_from_pid(pid); // process entity DEMON_Entity *process = demon_ent_new(demon_ent_root, DEMON_EntityKind_Process, pid); @@ -1688,7 +1688,7 @@ demon_os_attach_process(U32 pid){ // initialize new entities on success if (result){ - Architecture arch = demon_lnx_arch_from_pid(the_process->pid); + Arch arch = demon_lnx_arch_from_pid(the_process->pid); // process entity DEMON_Entity *process = demon_ent_new(demon_ent_root, DEMON_EntityKind_Process, the_process->pid); @@ -1816,15 +1816,15 @@ internal U64 demon_os_tls_root_vaddr_from_thread(DEMON_Entity *thread){ U64 result = 0; switch (thread->arch){ - case Architecture_x64: - case Architecture_x86: + case Arch_x64: + case Arch_x86: { U32 fsbase = 0; pid_t tid = (pid_t)thread->id; if (ptrace(PT_GETFSBASE, tid, (void*)&fsbase, 0) != -1){ result = (U64)fsbase; } - if (thread->arch == Architecture_x64){ + if (thread->arch == Arch_x64){ result += 8; } else{ diff --git a/src/demon/linux/demon_os_linux.h b/src/demon/linux/demon_os_linux.h index adba6853..915e29de 100644 --- a/src/demon/linux/demon_os_linux.h +++ b/src/demon/linux/demon_os_linux.h @@ -198,8 +198,8 @@ internal B32 demon_lnx_attach_pid(Arena *arena, pid_t pid, DEM internal String8 demon_lnx_executable_path_from_pid(Arena *arena, pid_t pid); internal int demon_lnx_open_memory_fd_for_pid(pid_t pid); -internal Architecture demon_lnx_arch_from_pid(pid_t pid); -internal DEMON_LNX_ProcessAux demon_lnx_aux_from_pid(pid_t pid, Architecture arch); +internal Arch demon_lnx_arch_from_pid(pid_t pid); +internal DEMON_LNX_ProcessAux demon_lnx_aux_from_pid(pid_t pid, Arch arch); internal DEMON_LNX_PhdrInfo demon_lnx_phdr_info_from_memory(int memory_fd, B32 is_32bit, U64 phvaddr, U64 phstride, U64 phcount); internal DEMON_LNX_ModuleNode* demon_lnx_module_list_from_process(Arena *arena, DEMON_Entity *process); diff --git a/src/demon/win32/demon_core_win32.c b/src/demon/win32/demon_core_win32.c index 1a8cdfbb..56145a1c 100644 --- a/src/demon/win32/demon_core_win32.c +++ b/src/demon/win32/demon_core_win32.c @@ -492,23 +492,23 @@ dmn_w32_image_info_from_process_base_vaddr(HANDLE process, U64 base_vaddr) if(got_coff_header) { U64 optional_size_off = 0; - Architecture arch = Architecture_Null; + Arch arch = Arch_Null; switch(coff_header.machine) { case COFF_MachineType_X86: { - arch = Architecture_x86; + arch = Arch_x86; optional_size_off = OffsetOf(PE_OptionalHeader32, sizeof_image); }break; case COFF_MachineType_X64: { - arch = Architecture_x64; + arch = Arch_x64; optional_size_off = OffsetOf(PE_OptionalHeader32Plus, sizeof_image); }break; default: {}break; } - if(arch != Architecture_Null) + if(arch != Arch_Null) { U64 optional_off = coff_header_off + sizeof(coff_header); U32 size = 0; @@ -577,7 +577,7 @@ dmn_w32_xsave_tag_word_from_real_tag_word(U16 ftw) } internal B32 -dmn_w32_thread_read_reg_block(Architecture arch, HANDLE thread, void *reg_block) +dmn_w32_thread_read_reg_block(Arch arch, HANDLE thread, void *reg_block) { B32 result = 0; ProfBeginFunction(); @@ -586,17 +586,17 @@ dmn_w32_thread_read_reg_block(Architecture arch, HANDLE thread, void *reg_block) //////////////////////////// //- rjf: unimplemented win32/arch combos // - case Architecture_Null: - case Architecture_COUNT: + case Arch_Null: + case Arch_COUNT: {}break; - case Architecture_arm64: - case Architecture_arm32: + case Arch_arm64: + case Arch_arm32: {NotImplemented;}break; //////////////////////////// //- rjf: x86 // - case Architecture_x86: + case Arch_x86: { REGS_RegBlockX86 *dst = (REGS_RegBlockX86 *)reg_block; @@ -679,7 +679,7 @@ dmn_w32_thread_read_reg_block(Architecture arch, HANDLE thread, void *reg_block) //////////////////////////// //- rjf: x64 // - case Architecture_x64: + case Arch_x64: { Temp scratch = scratch_begin(0, 0); REGS_RegBlockX64 *dst = (REGS_RegBlockX64 *)reg_block; @@ -871,7 +871,7 @@ dmn_w32_thread_read_reg_block(Architecture arch, HANDLE thread, void *reg_block) } internal B32 -dmn_w32_thread_write_reg_block(Architecture arch, HANDLE thread, void *reg_block) +dmn_w32_thread_write_reg_block(Arch arch, HANDLE thread, void *reg_block) { B32 result = 0; ProfBeginFunction(); @@ -880,17 +880,17 @@ dmn_w32_thread_write_reg_block(Architecture arch, HANDLE thread, void *reg_block //////////////////////////// //- rjf: unimplemented win32/arch combos // - case Architecture_Null: - case Architecture_COUNT: + case Arch_Null: + case Arch_COUNT: {}break; - case Architecture_arm64: - case Architecture_arm32: + case Arch_arm64: + case Arch_arm32: {NotImplemented;}break; //////////////////////////// //- rjf: x86 // - case Architecture_x86: + case Arch_x86: { REGS_RegBlockX86 *src = (REGS_RegBlockX86 *)reg_block; @@ -958,7 +958,7 @@ dmn_w32_thread_write_reg_block(Architecture arch, HANDLE thread, void *reg_block //////////////////////////// //- rjf: x64 // - case Architecture_x64: + case Arch_x64: { Temp scratch = scratch_begin(0, 0); REGS_RegBlockX64 *src = (REGS_RegBlockX64 *)reg_block; @@ -1450,11 +1450,11 @@ dmn_ctrl_run(Arena *arena, DMN_CtrlCtx *ctx, DMN_RunCtrls *ctrls) if(!dmn_handle_match(ctrls->single_step_thread, dmn_handle_zero())) { DMN_W32_Entity *thread = dmn_w32_entity_from_handle(ctrls->single_step_thread); - Architecture arch = thread->arch; + Arch arch = thread->arch; switch(arch) { default:{}break; - case Architecture_x64: + case Arch_x64: { U32 ctx_flags = DMN_W32_CTX_X64|DMN_W32_CTX_INTEL_CONTROL; DWORD size = 0; @@ -1477,19 +1477,19 @@ dmn_ctrl_run(Arena *arena, DMN_CtrlCtx *ctx, DMN_RunCtrls *ctrls) if(!dmn_handle_match(ctrls->single_step_thread, dmn_handle_zero())) ProfScope("set single step bit") { DMN_W32_Entity *thread = dmn_w32_entity_from_handle(ctrls->single_step_thread); - Architecture arch = thread->arch; + Arch arch = thread->arch; switch(arch) { //- rjf: unimplemented win32/arch combos - case Architecture_Null: - case Architecture_COUNT: + case Arch_Null: + case Arch_COUNT: {}break; - case Architecture_arm64: - case Architecture_arm32: + case Arch_arm64: + case Arch_arm32: {NotImplemented;}break; //- rjf: x86 - case Architecture_x86: + case Arch_x86: { REGS_RegBlockX86 regs = {0}; dmn_thread_read_reg_block(ctrls->single_step_thread, ®s); @@ -1498,7 +1498,7 @@ dmn_ctrl_run(Arena *arena, DMN_CtrlCtx *ctx, DMN_RunCtrls *ctrls) }break; //- rjf: x64 - case Architecture_x64: + case Arch_x64: { if(!GetThreadContext(thread->handle, single_step_thread_ctx)) { @@ -2095,7 +2095,7 @@ dmn_ctrl_run(Arena *arena, DMN_CtrlCtx *ctx, DMN_RunCtrls *ctrls) default: { Temp temp = temp_begin(scratch.arena); - U64 regs_block_size = regs_block_size_from_architecture(thread->arch); + U64 regs_block_size = regs_block_size_from_arch(thread->arch); void *regs_block = push_array(scratch.arena, U8, regs_block_size); if(dmn_w32_thread_read_reg_block(thread->arch, thread->handle, regs_block)) { @@ -2106,7 +2106,7 @@ dmn_ctrl_run(Arena *arena, DMN_CtrlCtx *ctx, DMN_RunCtrls *ctrls) }break; //- rjf: x64 (fastpath) - case Architecture_x64: + case Arch_x64: { CONTEXT *ctx = 0; U32 ctx_flags = DMN_W32_CTX_X64|DMN_W32_CTX_INTEL_CONTROL; @@ -2464,26 +2464,26 @@ dmn_ctrl_run(Arena *arena, DMN_CtrlCtx *ctx, DMN_RunCtrls *ctrls) if(!dmn_handle_match(ctrls->single_step_thread, dmn_handle_zero())) ProfScope("unset single step bit") { DMN_W32_Entity *thread = dmn_w32_entity_from_handle(ctrls->single_step_thread); - Architecture arch = thread->arch; + Arch arch = thread->arch; switch(arch) { //- rjf: unimplemented win32/arch combos - case Architecture_Null: - case Architecture_COUNT: + case Arch_Null: + case Arch_COUNT: {}break; - case Architecture_arm64: - case Architecture_arm32: + case Arch_arm64: + case Arch_arm32: {NotImplemented;}break; //- rjf: x86/64 - case Architecture_x86: + case Arch_x86: { REGS_RegBlockX86 regs = {0}; dmn_thread_read_reg_block(ctrls->single_step_thread, ®s); regs.eflags.u32 &= ~0x100; dmn_thread_write_reg_block(ctrls->single_step_thread, ®s); }break; - case Architecture_x64: + case Arch_x64: { if(!GetThreadContext(thread->handle, single_step_thread_ctx)) { @@ -2737,10 +2737,10 @@ dmn_process_write(DMN_Handle process, Rng1U64 range, void *src) //- rjf: threads -internal Architecture +internal Arch dmn_arch_from_thread(DMN_Handle handle) { - Architecture arch = Architecture_Null; + Arch arch = Arch_Null; DMN_AccessScope { DMN_W32_Entity *entity = dmn_w32_entity_from_handle(handle); @@ -2762,18 +2762,18 @@ dmn_stack_base_vaddr_from_thread(DMN_Handle handle) U64 tlb = thread->thread.thread_local_base; switch(thread->arch) { - case Architecture_Null: - case Architecture_COUNT: + case Arch_Null: + case Arch_COUNT: {}break; - case Architecture_arm64: - case Architecture_arm32: + case Arch_arm64: + case Arch_arm32: {NotImplemented;}break; - case Architecture_x64: + case Arch_x64: { U64 stack_base_addr = tlb + 0x8; dmn_w32_process_read(process->handle, r1u64(stack_base_addr, stack_base_addr+8), &result); }break; - case Architecture_x86: + case Arch_x86: { U64 stack_base_addr = tlb + 0x4; dmn_w32_process_read(process->handle, r1u64(stack_base_addr, stack_base_addr+4), &result); @@ -2796,17 +2796,17 @@ dmn_tls_root_vaddr_from_thread(DMN_Handle handle) result = entity->thread.thread_local_base; switch(entity->arch) { - case Architecture_Null: - case Architecture_COUNT: + case Arch_Null: + case Arch_COUNT: {}break; - case Architecture_arm64: - case Architecture_arm32: + case Arch_arm64: + case Arch_arm32: {NotImplemented;}break; - case Architecture_x64: + case Arch_x64: { result += 88; }break; - case Architecture_x86: + case Arch_x86: { result += 44; }break; diff --git a/src/demon/win32/demon_core_win32.h b/src/demon/win32/demon_core_win32.h index ce4d9534..c7234571 100644 --- a/src/demon/win32/demon_core_win32.h +++ b/src/demon/win32/demon_core_win32.h @@ -106,7 +106,7 @@ struct DMN_W32_Entity U32 gen; U64 id; HANDLE handle; - Architecture arch; + Arch arch; union { struct @@ -174,7 +174,7 @@ struct DMN_W32_InjectedBreak typedef struct DMN_W32_ImageInfo DMN_W32_ImageInfo; struct DMN_W32_ImageInfo { - Architecture arch; + Arch arch; U32 size; }; @@ -277,8 +277,8 @@ internal DMN_W32_ImageInfo dmn_w32_image_info_from_process_base_vaddr(HANDLE pro //- rjf: threads internal U16 dmn_w32_real_tag_word_from_xsave(XSAVE_FORMAT *fxsave); internal U16 dmn_w32_xsave_tag_word_from_real_tag_word(U16 ftw); -internal B32 dmn_w32_thread_read_reg_block(Architecture arch, HANDLE thread, void *reg_block); -internal B32 dmn_w32_thread_write_reg_block(Architecture arch, HANDLE thread, void *reg_block); +internal B32 dmn_w32_thread_read_reg_block(Arch arch, HANDLE thread, void *reg_block); +internal B32 dmn_w32_thread_write_reg_block(Arch arch, HANDLE thread, void *reg_block); //- rjf: remote thread injection internal DWORD dmn_w32_inject_thread(HANDLE process, U64 start_address); diff --git a/src/eval/eval_bundles.c b/src/eval/eval_bundles.c index 296df697..aa48af13 100644 --- a/src/eval/eval_bundles.c +++ b/src/eval/eval_bundles.c @@ -102,7 +102,7 @@ e_dynamically_typed_eval_from_eval(E_Eval eval) if(e_space_read(eval.space, &class_base_vaddr, r1u64(ptr_vaddr, ptr_vaddr+addr_size)) && e_space_read(eval.space, &vtable_vaddr, r1u64(class_base_vaddr, class_base_vaddr+addr_size))) { - Architecture arch = e_type_state->ctx->primary_module->arch; + Arch arch = e_type_state->ctx->primary_module->arch; U32 rdi_idx = 0; RDI_Parsed *rdi = 0; U64 module_base = 0; diff --git a/src/eval/eval_core.h b/src/eval/eval_core.h index 7b9e67d2..519d5b09 100644 --- a/src/eval/eval_core.h +++ b/src/eval/eval_core.h @@ -110,7 +110,7 @@ struct E_Module { RDI_Parsed *rdi; Rng1U64 vaddr_range; - Architecture arch; + Arch arch; E_Space space; }; diff --git a/src/eval/eval_interpret.c b/src/eval/eval_interpret.c index f9dd1b10..d9815b7a 100644 --- a/src/eval/eval_interpret.c +++ b/src/eval/eval_interpret.c @@ -163,7 +163,7 @@ e_interpret(String8 bytecode) U8 byte_size = (imm.u64&0x00FF00)>>8; U8 byte_off = (imm.u64&0xFF0000)>>16; REGS_RegCode base_reg_code = regs_reg_code_from_arch_rdi_code(e_interpret_ctx->reg_arch, rdi_reg_code); - REGS_Rng rng = regs_reg_code_rng_table_from_architecture(e_interpret_ctx->reg_arch)[base_reg_code]; + REGS_Rng rng = regs_reg_code_rng_table_from_arch(e_interpret_ctx->reg_arch)[base_reg_code]; U64 off = (U64)rng.byte_off + byte_off; U64 size = (U64)byte_size; B32 good_read = e_space_read(e_interpret_ctx->reg_space, &nval, r1u64(off, off+size)); diff --git a/src/eval/eval_interpret.h b/src/eval/eval_interpret.h index 175a89d8..3a9d0b51 100644 --- a/src/eval/eval_interpret.h +++ b/src/eval/eval_interpret.h @@ -26,7 +26,7 @@ struct E_InterpretCtx E_SpaceRWFunction *space_read; E_SpaceRWFunction *space_write; E_Space primary_space; - Architecture reg_arch; + Arch reg_arch; E_Space reg_space; U64 reg_unwind_count; U64 *module_base; diff --git a/src/eval/eval_parse.c b/src/eval/eval_parse.c index 736d097f..cab5b7f1 100644 --- a/src/eval/eval_parse.c +++ b/src/eval/eval_parse.c @@ -1292,7 +1292,7 @@ e_parse_expr_from_text_tokens__prec(Arena *arena, String8 text, E_TokenArray *to E_TypeKey type_key = zero_struct; String8 local_lookup_string = token_string; E_Space space = {0}; - Architecture arch = Architecture_Null; + Arch arch = Arch_Null; //- rjf: identifiers surrounded by ``s should have those `s stripped if(local_lookup_string.size >= 2 && @@ -1594,7 +1594,7 @@ e_parse_expr_from_text_tokens__prec(Arena *arena, String8 text, E_TokenArray *to } else if(reg_code != 0) { - REGS_Rng reg_rng = regs_reg_code_rng_table_from_architecture(e_parse_ctx->primary_module->arch)[reg_code]; + REGS_Rng reg_rng = regs_reg_code_rng_table_from_arch(e_parse_ctx->primary_module->arch)[reg_code]; E_OpList oplist = {0}; e_oplist_push_uconst(arena, &oplist, reg_rng.byte_off); atom = e_push_expr(arena, E_ExprKind_LeafBytecode, token_string.str); @@ -1606,8 +1606,8 @@ e_parse_expr_from_text_tokens__prec(Arena *arena, String8 text, E_TokenArray *to } else if(alias_code != 0) { - REGS_Slice alias_slice = regs_alias_code_slice_table_from_architecture(e_parse_ctx->primary_module->arch)[alias_code]; - REGS_Rng alias_reg_rng = regs_reg_code_rng_table_from_architecture(e_parse_ctx->primary_module->arch)[alias_slice.code]; + REGS_Slice alias_slice = regs_alias_code_slice_table_from_arch(e_parse_ctx->primary_module->arch)[alias_code]; + REGS_Rng alias_reg_rng = regs_reg_code_rng_table_from_arch(e_parse_ctx->primary_module->arch)[alias_slice.code]; E_OpList oplist = {0}; e_oplist_push_uconst(arena, &oplist, alias_reg_rng.byte_off + alias_slice.byte_off); atom = e_push_expr(arena, E_ExprKind_LeafBytecode, token_string.str); @@ -1674,7 +1674,7 @@ e_parse_expr_from_text_tokens__prec(Arena *arena, String8 text, E_TokenArray *to case RDI_LocationKind_ValReg: { REGS_RegCode regs_reg_code = regs_reg_code_from_arch_rdi_code(arch, loc_reg.reg_code); - REGS_Rng reg_rng = regs_reg_code_rng_table_from_architecture(arch)[regs_reg_code]; + REGS_Rng reg_rng = regs_reg_code_rng_table_from_arch(arch)[regs_reg_code]; E_OpList oplist = {0}; U64 byte_size = (U64)reg_rng.byte_size; U64 byte_pos = 0; diff --git a/src/eval/eval_types.c b/src/eval/eval_types.c index 4a1881bf..e8f2eda3 100644 --- a/src/eval/eval_types.c +++ b/src/eval/eval_types.c @@ -256,7 +256,7 @@ e_type_key_ext(E_TypeKind kind, U32 type_idx, U32 rdi_idx) } internal E_TypeKey -e_type_key_reg(Architecture arch, REGS_RegCode code) +e_type_key_reg(Arch arch, REGS_RegCode code) { E_TypeKey key = {E_TypeKeyKind_Reg}; key.u32[0] = (U32)arch; @@ -265,7 +265,7 @@ e_type_key_reg(Architecture arch, REGS_RegCode code) } internal E_TypeKey -e_type_key_reg_alias(Architecture arch, REGS_AliasCode code) +e_type_key_reg_alias(Arch arch, REGS_AliasCode code) { E_TypeKey key = {E_TypeKeyKind_RegAlias}; key.u32[0] = (U32)arch; @@ -398,7 +398,7 @@ e_type_key_cons_array(E_TypeKey element_type_key, U64 count) } internal E_TypeKey -e_type_key_cons_ptr(Architecture arch, E_TypeKey element_type_key) +e_type_key_cons_ptr(Arch arch, E_TypeKey element_type_key) { E_TypeKey key = e_type_key_cons(.arch = arch, .kind = E_TypeKind_Ptr, .direct_key = element_type_key); return key; @@ -818,16 +818,16 @@ e_type_from_key(Arena *arena, E_TypeKey key) //- rjf: reg type keys case E_TypeKeyKind_Reg: { - Architecture arch = (Architecture)key.u32[0]; + Arch arch = (Arch)key.u32[0]; REGS_RegCode code = (REGS_RegCode)key.u32[1]; - REGS_Rng rng = regs_reg_code_rng_table_from_architecture(arch)[code]; + REGS_Rng rng = regs_reg_code_rng_table_from_arch(arch)[code]; reg_byte_count = (U64)rng.byte_size; }goto build_reg_type; case E_TypeKeyKind_RegAlias: { - Architecture arch = (Architecture)key.u32[0]; + Arch arch = (Arch)key.u32[0]; REGS_AliasCode code = (REGS_AliasCode)key.u32[1]; - REGS_Slice slice = regs_alias_code_slice_table_from_architecture(arch)[code]; + REGS_Slice slice = regs_alias_code_slice_table_from_arch(arch)[code]; reg_byte_count = (U64)slice.byte_size; }goto build_reg_type; build_reg_type: diff --git a/src/eval/eval_types.h b/src/eval/eval_types.h index 60d2c487..e47e2475 100644 --- a/src/eval/eval_types.h +++ b/src/eval/eval_types.h @@ -23,7 +23,7 @@ struct E_TypeKey { E_TypeKeyKind kind; U32 u32[3]; - // [0] -> E_TypeKind (Basic, Cons, Ext); Architecture (Reg, RegAlias) + // [0] -> E_TypeKind (Basic, Cons, Ext); Arch (Reg, RegAlias) // [1] -> Type Index In RDI (Ext); Code (Reg, RegAlias); Type Index In Constructed (Cons) // [2] -> RDI Index (Ext) }; @@ -138,7 +138,7 @@ struct E_Type typedef struct E_ConsTypeParams E_ConsTypeParams; struct E_ConsTypeParams { - Architecture arch; + Arch arch; E_TypeKind kind; String8 name; E_TypeKey direct_key; @@ -230,8 +230,8 @@ internal void e_select_type_ctx(E_TypeCtx *ctx); internal E_TypeKey e_type_key_zero(void); internal E_TypeKey e_type_key_basic(E_TypeKind kind); internal E_TypeKey e_type_key_ext(E_TypeKind kind, U32 type_idx, U32 rdi_idx); -internal E_TypeKey e_type_key_reg(Architecture arch, REGS_RegCode code); -internal E_TypeKey e_type_key_reg_alias(Architecture arch, REGS_AliasCode code); +internal E_TypeKey e_type_key_reg(Arch arch, REGS_RegCode code); +internal E_TypeKey e_type_key_reg_alias(Arch arch, REGS_AliasCode code); //- rjf: constructed type construction internal U64 e_hash_from_cons_type_params(E_ConsTypeParams *params); @@ -241,7 +241,7 @@ internal E_TypeKey e_type_key_cons_(E_ConsTypeParams *params); //- rjf: constructed type construction helpers internal E_TypeKey e_type_key_cons_array(E_TypeKey element_type_key, U64 count); -internal E_TypeKey e_type_key_cons_ptr(Architecture arch, E_TypeKey element_type_key); +internal E_TypeKey e_type_key_cons_ptr(Arch arch, E_TypeKey element_type_key); //- rjf: basic type key functions internal B32 e_type_key_match(E_TypeKey l, E_TypeKey r); diff --git a/src/os/core/win32/os_core_win32.c b/src/os/core/win32/os_core_win32.c index 6ee3523b..da37a8bc 100644 --- a/src/os/core/win32/os_core_win32.c +++ b/src/os/core/win32/os_core_win32.c @@ -1389,7 +1389,7 @@ win32_exception_filter(EXCEPTION_POINTERS* exception_ptrs) frame.AddrStack.Offset = context->Sp; frame.AddrStack.Mode = AddrModeFlat; #else -# error Architecture not supported! +# error Arch not supported! #endif for(U32 idx=0; ;idx++) diff --git a/src/pe/pe.c b/src/pe/pe.c index fb236674..033ee134 100644 --- a/src/pe/pe.c +++ b/src/pe/pe.c @@ -267,10 +267,10 @@ pe_bin_info_from_data(Arena *arena, String8 data) switch(coff_header.machine) { default:{}break; - case COFF_MachineType_X86: {info.arch = Architecture_x86;}break; - case COFF_MachineType_X64: {info.arch = Architecture_x64;}break; - case COFF_MachineType_ARM: {info.arch = Architecture_arm32;}break; - case COFF_MachineType_ARM64: {info.arch = Architecture_arm64;}break; + case COFF_MachineType_X86: {info.arch = Arch_x86;}break; + case COFF_MachineType_X64: {info.arch = Arch_x64;}break; + case COFF_MachineType_ARM: {info.arch = Arch_arm32;}break; + case COFF_MachineType_ARM64: {info.arch = Arch_arm64;}break; } MemoryCopyStruct(&info.tls_header, &tls_header); } @@ -284,7 +284,7 @@ internal U64 pe_intel_pdata_off_from_voff__binary_search(String8 data, PE_BinInfo *bin, U64 voff) { U64 result = 0; - if(bin->arch != Architecture_Null && PE_DataDirectoryIndex_EXCEPTIONS < bin->data_dir_count) + if(bin->arch != Arch_Null && PE_DataDirectoryIndex_EXCEPTIONS < bin->data_dir_count) { Rng1U64 range = bin->data_dir_franges[PE_DataDirectoryIndex_EXCEPTIONS]; U64 pdata_off = range.min; @@ -467,7 +467,7 @@ pe_tls_rng_from_bin_base_vaddr(String8 data, PE_BinInfo *bin, U64 base_vaddr) { U64 result_addr = (bin->tls_header.index_address - bin->image_base); U64 result_size = sizeof(U32); - if(bin->arch != Architecture_Null) + if(bin->arch != Arch_Null) { U64 addr_size = bit_size_from_arch(bin->arch)/8; Temp scratch = scratch_begin(0, 0); diff --git a/src/pe/pe.h b/src/pe/pe.h index e5a863ee..48c9f77b 100644 --- a/src/pe/pe.h +++ b/src/pe/pe.h @@ -728,7 +728,7 @@ struct PE_BinInfo OS_Guid dbg_guid; U32 dbg_age; U32 dbg_time; - Architecture arch; + Arch arch; Rng1U64 *data_dir_franges; U32 data_dir_count; PE_TLSHeader64 tls_header; diff --git a/src/rdi_format/rdi_format.mdesk b/src/rdi_format/rdi_format.mdesk index 9ea9161f..f62d7bf0 100644 --- a/src/rdi_format/rdi_format.mdesk +++ b/src/rdi_format/rdi_format.mdesk @@ -255,7 +255,7 @@ RDI_VMapEntryMemberTable: } //////////////////////////////// -//~ rjf: Architecture Info Tables +//~ rjf: Arch Info Tables @table(name value addr_size) RDI_ArchTable: diff --git a/src/rdi_from_dwarf/rdi_elf.c b/src/rdi_from_dwarf/rdi_elf.c index a99fcccf..25188fd1 100644 --- a/src/rdi_from_dwarf/rdi_elf.c +++ b/src/rdi_from_dwarf/rdi_elf.c @@ -81,7 +81,7 @@ elf_parsed_from_data(Arena *arena, String8 elf_data){ //- validate & translate header values B32 header_is_good = 0; - Architecture arch = Architecture_Null; + Arch arch = Arch_Null; if (decoded_header){ header_is_good = 1; @@ -96,8 +96,8 @@ elf_parsed_from_data(Arena *arena, String8 elf_data){ if (header_is_good){ switch (e_machine){ default: header_is_good = 0; - case ELF_Machine_386: arch = Architecture_x86; break; - case ELF_Machine_X86_64: arch = Architecture_x64; break; + case ELF_Machine_386: arch = Arch_x86; break; + case ELF_Machine_X86_64: arch = Arch_x64; break; } } diff --git a/src/rdi_from_dwarf/rdi_elf.h b/src/rdi_from_dwarf/rdi_elf.h index 873d340d..8643f8bf 100644 --- a/src/rdi_from_dwarf/rdi_elf.h +++ b/src/rdi_from_dwarf/rdi_elf.h @@ -462,7 +462,7 @@ typedef struct ELF_SegmentArray{ typedef struct ELF_Parsed{ String8 data; ELF_Class elf_class; - Architecture arch; + Arch arch; ELF_Shdr64 *sections; String8 *section_names; diff --git a/src/regs/generated/regs.meta.c b/src/regs/generated/regs.meta.c index 6110bf11..c7f9f538 100644 --- a/src/regs/generated/regs.meta.c +++ b/src/regs/generated/regs.meta.c @@ -3,102 +3,102 @@ //- GENERATED CODE -internal U64 regs_block_size_from_architecture(Architecture arch) +internal U64 regs_block_size_from_arch(Arch arch) { U64 result = 8; switch(arch) { default:{}break; -case Architecture_x64:{result = sizeof(REGS_RegBlockX64);}break; -case Architecture_x86:{result = sizeof(REGS_RegBlockX86);}break; +case Arch_x64:{result = sizeof(REGS_RegBlockX64);}break; +case Arch_x86:{result = sizeof(REGS_RegBlockX86);}break; } return result; } -internal U64 regs_reg_code_count_from_architecture(Architecture arch) +internal U64 regs_reg_code_count_from_arch(Arch arch) { U64 result = 0; switch(arch) { default:{}break; -case Architecture_x64:{result = REGS_RegCodeX64_COUNT;}break; -case Architecture_x86:{result = REGS_RegCodeX86_COUNT;}break; +case Arch_x64:{result = REGS_RegCodeX64_COUNT;}break; +case Arch_x86:{result = REGS_RegCodeX86_COUNT;}break; } return result; } -internal U64 regs_alias_code_count_from_architecture(Architecture arch) +internal U64 regs_alias_code_count_from_arch(Arch arch) { U64 result = 0; switch(arch) { default:{}break; -case Architecture_x64:{result = REGS_AliasCodeX64_COUNT;}break; -case Architecture_x86:{result = REGS_AliasCodeX86_COUNT;}break; +case Arch_x64:{result = REGS_AliasCodeX64_COUNT;}break; +case Arch_x86:{result = REGS_AliasCodeX86_COUNT;}break; } return result; } -internal String8 *regs_reg_code_string_table_from_architecture(Architecture arch) +internal String8 *regs_reg_code_string_table_from_arch(Arch arch) { String8 *result = 0; switch(arch) { default:{}break; -case Architecture_x64:{result = regs_g_reg_code_x64_string_table;}break; -case Architecture_x86:{result = regs_g_reg_code_x86_string_table;}break; +case Arch_x64:{result = regs_g_reg_code_x64_string_table;}break; +case Arch_x86:{result = regs_g_reg_code_x86_string_table;}break; } return result; } -internal String8 *regs_alias_code_string_table_from_architecture(Architecture arch) +internal String8 *regs_alias_code_string_table_from_arch(Arch arch) { String8 *result = 0; switch(arch) { default:{}break; -case Architecture_x64:{result = regs_g_alias_code_x64_string_table;}break; -case Architecture_x86:{result = regs_g_alias_code_x86_string_table;}break; +case Arch_x64:{result = regs_g_alias_code_x64_string_table;}break; +case Arch_x86:{result = regs_g_alias_code_x86_string_table;}break; } return result; } -internal REGS_Rng *regs_reg_code_rng_table_from_architecture(Architecture arch) +internal REGS_Rng *regs_reg_code_rng_table_from_arch(Arch arch) { REGS_Rng *result = 0; switch(arch) { default:{}break; -case Architecture_x64:{result = regs_g_reg_code_x64_rng_table;}break; -case Architecture_x86:{result = regs_g_reg_code_x86_rng_table;}break; +case Arch_x64:{result = regs_g_reg_code_x64_rng_table;}break; +case Arch_x86:{result = regs_g_reg_code_x86_rng_table;}break; } return result; } -internal REGS_Slice *regs_alias_code_slice_table_from_architecture(Architecture arch) +internal REGS_Slice *regs_alias_code_slice_table_from_arch(Arch arch) { REGS_Slice *result = 0; switch(arch) { default:{}break; -case Architecture_x64:{result = regs_g_alias_code_x64_slice_table;}break; -case Architecture_x86:{result = regs_g_alias_code_x86_slice_table;}break; +case Arch_x64:{result = regs_g_alias_code_x64_slice_table;}break; +case Arch_x86:{result = regs_g_alias_code_x86_slice_table;}break; } return result; } -internal REGS_UsageKind *regs_reg_code_usage_kind_table_from_architecture(Architecture arch) +internal REGS_UsageKind *regs_reg_code_usage_kind_table_from_arch(Arch arch) { REGS_UsageKind *result = 0; switch(arch) { default:{}break; -case Architecture_x64:{result = regs_g_reg_code_x64_usage_kind_table;}break; -case Architecture_x86:{result = regs_g_reg_code_x86_usage_kind_table;}break; +case Arch_x64:{result = regs_g_reg_code_x64_usage_kind_table;}break; +case Arch_x86:{result = regs_g_reg_code_x86_usage_kind_table;}break; } return result; } -internal REGS_UsageKind *regs_alias_code_usage_kind_table_from_architecture(Architecture arch) +internal REGS_UsageKind *regs_alias_code_usage_kind_table_from_arch(Arch arch) { REGS_UsageKind *result = 0; switch(arch) { default:{}break; -case Architecture_x64:{result = regs_g_alias_code_x64_usage_kind_table;}break; -case Architecture_x86:{result = regs_g_alias_code_x86_usage_kind_table;}break; +case Arch_x64:{result = regs_g_alias_code_x64_usage_kind_table;}break; +case Arch_x86:{result = regs_g_alias_code_x86_usage_kind_table;}break; } return result; } diff --git a/src/regs/rdi/generated/regs_rdi.meta.c b/src/regs/rdi/generated/regs_rdi.meta.c index 4d4b7fe5..9b0cdf65 100644 --- a/src/regs/rdi/generated/regs_rdi.meta.c +++ b/src/regs/rdi/generated/regs_rdi.meta.c @@ -3,13 +3,13 @@ //- GENERATED CODE -internal RDI_RegCode regs_rdi_code_from_arch_reg_code(Architecture arch, REGS_RegCode code) +internal RDI_RegCode regs_rdi_code_from_arch_reg_code(Arch arch, REGS_RegCode code) { RDI_RegCode result = 0; switch(arch) { default:{}break; -case Architecture_x64: +case Arch_x64: { switch(code) { @@ -116,7 +116,7 @@ case REGS_RegCodeX64_k6:{result = RDI_RegCodeX64_k6;}break; case REGS_RegCodeX64_k7:{result = RDI_RegCodeX64_k7;}break; } }break; -case Architecture_x86: +case Arch_x86: { switch(code) { @@ -186,13 +186,13 @@ case REGS_RegCodeX86_ymm7:{result = RDI_RegCodeX86_ymm7;}break; } return result; } -internal REGS_RegCode regs_reg_code_from_arch_rdi_code(Architecture arch, RDI_RegCode code) +internal REGS_RegCode regs_reg_code_from_arch_rdi_code(Arch arch, RDI_RegCode code) { REGS_RegCode result = 0; switch(arch) { default:{}break; -case Architecture_x64: +case Arch_x64: { switch(code) { @@ -299,7 +299,7 @@ case RDI_RegCodeX64_k6:{result = REGS_RegCodeX64_k6;}break; case RDI_RegCodeX64_k7:{result = REGS_RegCodeX64_k7;}break; } }break; -case Architecture_x86: +case Arch_x86: { switch(code) { diff --git a/src/regs/rdi/regs_rdi.h b/src/regs/rdi/regs_rdi.h index 543b28f1..65e210f0 100644 --- a/src/regs/rdi/regs_rdi.h +++ b/src/regs/rdi/regs_rdi.h @@ -4,7 +4,7 @@ #ifndef REGS_RDI_H #define REGS_RDI_H -internal RDI_RegCode 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_RegCode reg); +internal RDI_RegCode regs_rdi_code_from_arch_reg_code(Arch arch, REGS_RegCode code); +internal REGS_RegCode regs_reg_code_from_arch_rdi_code(Arch arch, RDI_RegCode reg); #endif //REGS_RDI_H diff --git a/src/regs/rdi/regs_rdi.mdesk b/src/regs/rdi/regs_rdi.mdesk index fc6fd43c..e3961b84 100644 --- a/src/regs/rdi/regs_rdi.mdesk +++ b/src/regs/rdi/regs_rdi.mdesk @@ -6,13 +6,13 @@ @gen @c_file { - `internal RDI_RegCode regs_rdi_code_from_arch_reg_code(Architecture arch, REGS_RegCode code)`; + `internal RDI_RegCode regs_rdi_code_from_arch_reg_code(Arch arch, REGS_RegCode code)`; `{`; `RDI_RegCode result = 0;`; `switch(arch)`; `{`; `default:{}break;`; - `case Architecture_x64:`; + `case Arch_x64:`; `{`; `switch(code)` `{`; @@ -20,7 +20,7 @@ @expand(REGS_RegTableX64 a) `case REGS_RegCodeX64_$(a.name):{result = RDI_RegCodeX64_$(a.name);}break;`; `}`; `}break;`; - `case Architecture_x86:`; + `case Arch_x86:`; `{`; `switch(code)` `{`; @@ -35,13 +35,13 @@ @gen @c_file { - `internal REGS_RegCode regs_reg_code_from_arch_rdi_code(Architecture arch, RDI_RegCode code)`; + `internal REGS_RegCode regs_reg_code_from_arch_rdi_code(Arch arch, RDI_RegCode code)`; `{`; `REGS_RegCode result = 0;`; `switch(arch)`; `{`; `default:{}break;`; - `case Architecture_x64:`; + `case Arch_x64:`; `{`; `switch(code)` `{`; @@ -49,7 +49,7 @@ @expand(REGS_RegTableX64 a) `case RDI_RegCodeX64_$(a.name):{result = REGS_RegCodeX64_$(a.name);}break;`; `}`; `}break;`; - `case Architecture_x86:`; + `case Arch_x86:`; `{`; `switch(code)` `{`; diff --git a/src/regs/regs.c b/src/regs/regs.c index fd4bb4e4..1cd17c35 100644 --- a/src/regs/regs.c +++ b/src/regs/regs.c @@ -10,49 +10,49 @@ //~ rjf: Helpers internal U64 -regs_rip_from_arch_block(Architecture arch, void *block) +regs_rip_from_arch_block(Arch arch, void *block) { U64 result = 0; if(block != 0) switch(arch) { default:{}break; - case Architecture_x64:{result = ((REGS_RegBlockX64 *)block)->rip.u64;}break; - case Architecture_x86:{result = (U64)((REGS_RegBlockX86 *)block)->eip.u32;}break; + case Arch_x64:{result = ((REGS_RegBlockX64 *)block)->rip.u64;}break; + case Arch_x86:{result = (U64)((REGS_RegBlockX86 *)block)->eip.u32;}break; } return result; } internal U64 -regs_rsp_from_arch_block(Architecture arch, void *block) +regs_rsp_from_arch_block(Arch arch, void *block) { U64 result = 0; if(block != 0) switch(arch) { default:{}break; - case Architecture_x64:{result = ((REGS_RegBlockX64 *)block)->rsp.u64;}break; - case Architecture_x86:{result = (U64)((REGS_RegBlockX86 *)block)->esp.u32;}break; + case Arch_x64:{result = ((REGS_RegBlockX64 *)block)->rsp.u64;}break; + case Arch_x86:{result = (U64)((REGS_RegBlockX86 *)block)->esp.u32;}break; } return result; } internal void -regs_arch_block_write_rip(Architecture arch, void *block, U64 rip) +regs_arch_block_write_rip(Arch arch, void *block, U64 rip) { if(block != 0) switch(arch) { default:{}break; - case Architecture_x64:{((REGS_RegBlockX64 *)block)->rip.u64 = rip;}break; - case Architecture_x86:{((REGS_RegBlockX86 *)block)->eip.u32 = (U32)rip;}break; + case Arch_x64:{((REGS_RegBlockX64 *)block)->rip.u64 = rip;}break; + case Arch_x86:{((REGS_RegBlockX86 *)block)->eip.u32 = (U32)rip;}break; } } internal void -regs_arch_block_write_rsp(Architecture arch, void *block, U64 rsp) +regs_arch_block_write_rsp(Arch arch, void *block, U64 rsp) { if(block != 0) switch(arch) { default:{}break; - case Architecture_x64:{((REGS_RegBlockX64 *)block)->rsp.u64 = rsp;}break; - case Architecture_x86:{((REGS_RegBlockX86 *)block)->esp.u32 = (U32)rsp;}break; + case Arch_x64:{((REGS_RegBlockX64 *)block)->rsp.u64 = rsp;}break; + case Arch_x86:{((REGS_RegBlockX86 *)block)->esp.u32 = (U32)rsp;}break; } } diff --git a/src/regs/regs.h b/src/regs/regs.h index bc929d77..3e6fcbf9 100644 --- a/src/regs/regs.h +++ b/src/regs/regs.h @@ -108,18 +108,18 @@ struct REGS_Slice //////////////////////////////// //~ rjf: Helpers -internal U64 regs_block_size_from_architecture(Architecture arch); -internal U64 regs_reg_code_count_from_architecture(Architecture arch); -internal U64 regs_alias_code_count_from_architecture(Architecture arch); -internal String8 *regs_reg_code_string_table_from_architecture(Architecture arch); -internal String8 *regs_alias_code_string_table_from_architecture(Architecture arch); -internal REGS_Rng *regs_reg_code_rng_table_from_architecture(Architecture arch); -internal REGS_Slice *regs_alias_code_slice_table_from_architecture(Architecture arch); -internal REGS_UsageKind *regs_reg_code_usage_kind_table_from_architecture(Architecture arch); -internal REGS_UsageKind *regs_alias_code_usage_kind_table_from_architecture(Architecture arch); -internal U64 regs_rip_from_arch_block(Architecture arch, void *block); -internal U64 regs_rsp_from_arch_block(Architecture arch, void *block); -internal void regs_arch_block_write_rip(Architecture arch, void *block, U64 rip); -internal void regs_arch_block_write_rsp(Architecture arch, void *block, U64 rsp); +internal U64 regs_block_size_from_arch(Arch arch); +internal U64 regs_reg_code_count_from_arch(Arch arch); +internal U64 regs_alias_code_count_from_arch(Arch arch); +internal String8 *regs_reg_code_string_table_from_arch(Arch arch); +internal String8 *regs_alias_code_string_table_from_arch(Arch arch); +internal REGS_Rng *regs_reg_code_rng_table_from_arch(Arch arch); +internal REGS_Slice *regs_alias_code_slice_table_from_arch(Arch arch); +internal REGS_UsageKind *regs_reg_code_usage_kind_table_from_arch(Arch arch); +internal REGS_UsageKind *regs_alias_code_usage_kind_table_from_arch(Arch arch); +internal U64 regs_rip_from_arch_block(Arch arch, void *block); +internal U64 regs_rsp_from_arch_block(Arch arch, void *block); +internal void regs_arch_block_write_rip(Arch arch, void *block, U64 rip); +internal void regs_arch_block_write_rsp(Arch arch, void *block, U64 rsp); #endif // REGS_H diff --git a/src/regs/regs.mdesk b/src/regs/regs.mdesk index a4fcd10e..2f68c43e 100644 --- a/src/regs/regs.mdesk +++ b/src/regs/regs.mdesk @@ -459,13 +459,13 @@ regs_g_reg_code_x86_usage_kind_table: @c_file @gen { - `internal U64 regs_block_size_from_architecture(Architecture arch)`; + `internal U64 regs_block_size_from_arch(Arch arch)`; `{`; `U64 result = 8;`; `switch(arch)`; `{`; `default:{}break;`; - @expand(REGS_ArchTable a) `case Architecture_$(a.name_lower):{result = sizeof(REGS_RegBlock$(a.name));}break;`; + @expand(REGS_ArchTable a) `case Arch_$(a.name_lower):{result = sizeof(REGS_RegBlock$(a.name));}break;`; `}`; `return result;`; `}`; @@ -473,13 +473,13 @@ regs_g_reg_code_x86_usage_kind_table: @c_file @gen { - `internal U64 regs_reg_code_count_from_architecture(Architecture arch)`; + `internal U64 regs_reg_code_count_from_arch(Arch arch)`; `{`; `U64 result = 0;`; `switch(arch)`; `{`; `default:{}break;`; - @expand(REGS_ArchTable a) `case Architecture_$(a.name_lower):{result = REGS_RegCode$(a.name)_COUNT;}break;`; + @expand(REGS_ArchTable a) `case Arch_$(a.name_lower):{result = REGS_RegCode$(a.name)_COUNT;}break;`; `}`; `return result;`; `}`; @@ -487,13 +487,13 @@ regs_g_reg_code_x86_usage_kind_table: @c_file @gen { - `internal U64 regs_alias_code_count_from_architecture(Architecture arch)`; + `internal U64 regs_alias_code_count_from_arch(Arch arch)`; `{`; `U64 result = 0;`; `switch(arch)`; `{`; `default:{}break;`; - @expand(REGS_ArchTable a) `case Architecture_$(a.name_lower):{result = REGS_AliasCode$(a.name)_COUNT;}break;`; + @expand(REGS_ArchTable a) `case Arch_$(a.name_lower):{result = REGS_AliasCode$(a.name)_COUNT;}break;`; `}`; `return result;`; `}`; @@ -501,13 +501,13 @@ regs_g_reg_code_x86_usage_kind_table: @c_file @gen { - `internal String8 *regs_reg_code_string_table_from_architecture(Architecture arch)`; + `internal String8 *regs_reg_code_string_table_from_arch(Arch arch)`; `{`; `String8 *result = 0;`; `switch(arch)`; `{`; `default:{}break;`; - @expand(REGS_ArchTable a) `case Architecture_$(a.name_lower):{result = regs_g_reg_code_$(a.name_lower)_string_table;}break;`; + @expand(REGS_ArchTable a) `case Arch_$(a.name_lower):{result = regs_g_reg_code_$(a.name_lower)_string_table;}break;`; `}`; `return result;`; `}`; @@ -515,13 +515,13 @@ regs_g_reg_code_x86_usage_kind_table: @c_file @gen { - `internal String8 *regs_alias_code_string_table_from_architecture(Architecture arch)`; + `internal String8 *regs_alias_code_string_table_from_arch(Arch arch)`; `{`; `String8 *result = 0;`; `switch(arch)`; `{`; `default:{}break;`; - @expand(REGS_ArchTable a) `case Architecture_$(a.name_lower):{result = regs_g_alias_code_$(a.name_lower)_string_table;}break;`; + @expand(REGS_ArchTable a) `case Arch_$(a.name_lower):{result = regs_g_alias_code_$(a.name_lower)_string_table;}break;`; `}`; `return result;`; `}`; @@ -529,13 +529,13 @@ regs_g_reg_code_x86_usage_kind_table: @c_file @gen { - `internal REGS_Rng *regs_reg_code_rng_table_from_architecture(Architecture arch)`; + `internal REGS_Rng *regs_reg_code_rng_table_from_arch(Arch arch)`; `{`; `REGS_Rng *result = 0;`; `switch(arch)`; `{`; `default:{}break;`; - @expand(REGS_ArchTable a) `case Architecture_$(a.name_lower):{result = regs_g_reg_code_$(a.name_lower)_rng_table;}break;`; + @expand(REGS_ArchTable a) `case Arch_$(a.name_lower):{result = regs_g_reg_code_$(a.name_lower)_rng_table;}break;`; `}`; `return result;`; `}`; @@ -543,13 +543,13 @@ regs_g_reg_code_x86_usage_kind_table: @c_file @gen { - `internal REGS_Slice *regs_alias_code_slice_table_from_architecture(Architecture arch)`; + `internal REGS_Slice *regs_alias_code_slice_table_from_arch(Arch arch)`; `{`; `REGS_Slice *result = 0;`; `switch(arch)`; `{`; `default:{}break;`; - @expand(REGS_ArchTable a) `case Architecture_$(a.name_lower):{result = regs_g_alias_code_$(a.name_lower)_slice_table;}break;`; + @expand(REGS_ArchTable a) `case Arch_$(a.name_lower):{result = regs_g_alias_code_$(a.name_lower)_slice_table;}break;`; `}`; `return result;`; `}`; @@ -557,13 +557,13 @@ regs_g_reg_code_x86_usage_kind_table: @c_file @gen { - `internal REGS_UsageKind *regs_reg_code_usage_kind_table_from_architecture(Architecture arch)`; + `internal REGS_UsageKind *regs_reg_code_usage_kind_table_from_arch(Arch arch)`; `{`; `REGS_UsageKind *result = 0;`; `switch(arch)`; `{`; `default:{}break;`; - @expand(REGS_ArchTable a) `case Architecture_$(a.name_lower):{result = regs_g_reg_code_$(a.name_lower)_usage_kind_table;}break;`; + @expand(REGS_ArchTable a) `case Arch_$(a.name_lower):{result = regs_g_reg_code_$(a.name_lower)_usage_kind_table;}break;`; `}`; `return result;`; `}`; @@ -571,13 +571,13 @@ regs_g_reg_code_x86_usage_kind_table: @c_file @gen { - `internal REGS_UsageKind *regs_alias_code_usage_kind_table_from_architecture(Architecture arch)`; + `internal REGS_UsageKind *regs_alias_code_usage_kind_table_from_arch(Arch arch)`; `{`; `REGS_UsageKind *result = 0;`; `switch(arch)`; `{`; `default:{}break;`; - @expand(REGS_ArchTable a) `case Architecture_$(a.name_lower):{result = regs_g_alias_code_$(a.name_lower)_usage_kind_table;}break;`; + @expand(REGS_ArchTable a) `case Arch_$(a.name_lower):{result = regs_g_alias_code_$(a.name_lower)_usage_kind_table;}break;`; `}`; `return result;`; `}`; diff --git a/src/text_cache/text_cache.c b/src/text_cache/text_cache.c index 9ec5c551..342cbd75 100644 --- a/src/text_cache/text_cache.c +++ b/src/text_cache/text_cache.c @@ -67,13 +67,13 @@ txt_extension_from_lang_kind(TXT_LangKind kind) } internal TXT_LangKind -txt_lang_kind_from_architecture(Architecture arch) +txt_lang_kind_from_arch(Arch arch) { TXT_LangKind kind = TXT_LangKind_Null; switch(arch) { default:{}break; - case Architecture_x64:{kind = TXT_LangKind_DisasmX64Intel;}break; + case Arch_x64:{kind = TXT_LangKind_DisasmX64Intel;}break; } return kind; } diff --git a/src/text_cache/text_cache.h b/src/text_cache/text_cache.h index cfbfe61c..95155859 100644 --- a/src/text_cache/text_cache.h +++ b/src/text_cache/text_cache.h @@ -237,7 +237,7 @@ global TXT_Shared *txt_shared = 0; internal TXT_LangKind txt_lang_kind_from_extension(String8 extension); internal String8 txt_extension_from_lang_kind(TXT_LangKind kind); -internal TXT_LangKind txt_lang_kind_from_architecture(Architecture arch); +internal TXT_LangKind txt_lang_kind_from_arch(Arch arch); internal TXT_LangLexFunctionType *txt_lex_function_from_lang_kind(TXT_LangKind kind); ////////////////////////////////