diff --git a/src/dwarf/dwarf.c b/src/dwarf/dwarf.c index 0c552663..05f72bc0 100644 --- a/src/dwarf/dwarf.c +++ b/src/dwarf/dwarf.c @@ -46,21 +46,25 @@ dw_reg_pos_from_code_x64(DW_Reg reg_code) } internal U64 -dw_reg_size_from_code(RDI_Arch arch, DW_Reg reg_code) +dw_reg_size_from_code(Arch arch, DW_Reg reg_code) { switch (arch) { + case Arch_Null: break; case Arch_x86: return dw_reg_size_from_code_x86(reg_code); case Arch_x64: return dw_reg_size_from_code_x64(reg_code); + default: NotImplemented; break; } return 0; } internal U64 -dw_reg_pos_from_code(RDI_Arch arch, DW_Reg reg_code) +dw_reg_pos_from_code(Arch arch, DW_Reg reg_code) { switch (arch) { + case Arch_Null: break; case Arch_x86: return dw_reg_pos_from_code_x86(reg_code); case Arch_x64: return dw_reg_pos_from_code_x64(reg_code); + default: NotImplemented; break; } return max_U64; } diff --git a/src/dwarf/dwarf_expr.c b/src/dwarf/dwarf_expr.c index fe4fd9a1..98309b97 100644 --- a/src/dwarf/dwarf_expr.c +++ b/src/dwarf/dwarf_expr.c @@ -3,13 +3,16 @@ //- analyzers +#if 0 internal DW_SimpleLoc dw_expr__analyze_fast(void *base, Rng1U64 range, U64 text_section_base) { DW_SimpleLoc result = {DW_SimpleLocKind_Empty}; + String8 expr_data = str8((U8*)data+range.min, (U8*)data+range.max); + U8 op = 0; - if (dw_based_range_read(base, range, 0, 1, &op)) { + if (str8_deserial_read_struct(expr_data, 0, &op)) { // step params U64 size_param = 0; B32 is_signed = 0; @@ -548,12 +551,14 @@ dw_expr__analyze_details(void *in_base, Rng1U64 in_range, DW_ExprMachineCallConf scratch_end(scratch); return result; } +#endif //- full eval internal DW_Location dw_expr__eval(Arena *arena_optional, void *expr_base, Rng1U64 expr_range, DW_ExprMachineConfig *config) { +#if 0 Temp scratch = scratch_begin(&arena_optional, 1); DW_Location result = {0}; @@ -1322,8 +1327,12 @@ dw_expr__eval(Arena *arena_optional, void *expr_base, Rng1U64 expr_range, DW_Exp // clear stack scratch_end(scratch); return result; +#endif + DW_Location result = {0}; + return result; } + //- dw expr val stack internal DW_ExprStack diff --git a/src/dwarf/dwarf_unwind.c b/src/dwarf/dwarf_unwind.c index 84931716..81cc93de 100644 --- a/src/dwarf/dwarf_unwind.c +++ b/src/dwarf/dwarf_unwind.c @@ -1,6 +1,11 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) +internal U64 dw_based_range_read(void *base, Rng1U64 range, U64 off, U64 size, void *out) { return 0; } +internal U64 dw_based_range_read_uleb128(void *base, Rng1U64 range, U64 off, U64 *out) { return 0; } +internal U64 dw_based_range_read_sleb128(void *base, Rng1U64 range, U64 off, S64 *out) { return 0; } +internal U64 dw_based_range_read_length(void *base, Rng1U64 range, U64 off, U64 *out) { return 0; } + //////////////////////////////// // x64 Unwind Function diff --git a/src/elf/elf.c b/src/elf/elf.c index 1a094baa..ac3473cb 100644 --- a/src/elf/elf.c +++ b/src/elf/elf.c @@ -82,10 +82,10 @@ elf_sym64_from_sym32(ELF_Sym32 sym32) internal ELF_Rel64 elf_rel64_from_rel32(ELF_Rel32 rel32) { - U32 sym = SYMS_ELF32_R_SYM(rel32.r_info); - U32 type = SYMS_ELF32_R_TYPE(rel32.r_info); + U32 sym = ELF32_R_SYM(rel32.r_info); + U32 type = ELF32_R_TYPE(rel32.r_info); ELF_Rel64 rel64 = {0}; - rel64.r_info = SYMS_ELF64_R_INFO(sym, type); + rel64.r_info = ELF64_R_INFO(sym, type); rel64.r_offset = rel32.r_offset; return rel64; } @@ -93,11 +93,11 @@ elf_rel64_from_rel32(ELF_Rel32 rel32) internal ELF_Rela64 elf_rela64_from_rela32(ELF_Rela32 rela32) { - U32 sym = SYMS_ELF32_R_SYM(rela32.r_info); - U32 type = SYMS_ELF32_R_TYPE(rela32.r_info); + U32 sym = ELF32_R_SYM(rela32.r_info); + U32 type = ELF32_R_TYPE(rela32.r_info); ELF_Rela64 rela64 = {0}; rela64.r_offset = rela32.r_info; - rela64.r_info = SYMS_ELF64_R_INFO(sym, type); + rela64.r_info = ELF64_R_INFO(sym, type); rela64.r_addend = rela32.r_addend; return rela64; } diff --git a/src/radcon/radcon.c b/src/radcon/radcon.c index ac6335dc..9d6101f1 100644 --- a/src/radcon/radcon.c +++ b/src/radcon/radcon.c @@ -172,12 +172,15 @@ rc_context_from_cmd_line(Arena *arena, CmdLine *cmdl) String8 debug_name = {0}; String8 debug_data = {0}; + B32 check_guid = 0; + Guid pe_pdb_guid = {0}; + + B32 elf_has_debug_link = 0; + ELF_GnuDebugLink debug_link = {0}; // // Input has PE/COFF // - B32 check_guid = 0; - Guid pe_pdb_guid = {0}; if (is_pe_present) { image = Image_CoffPe; image_name = pe_name; @@ -221,8 +224,6 @@ rc_context_from_cmd_line(Arena *arena, CmdLine *cmdl) } } - B32 elf_has_debug_link = 0; - ELF_GnuDebugLink debug_link = {0}; if (is_elf_present || is_elf_debug_present) { if (driver != RC_Driver_Null && driver != RC_Driver_Dwarf) { fprintf(stderr, "error: ELF inputs are only supported when using DWARF driver.\n"); diff --git a/src/radcon/radcon_main.c b/src/radcon/radcon_main.c index 05f4ab99..9f3c2b0a 100644 --- a/src/radcon/radcon_main.c +++ b/src/radcon/radcon_main.c @@ -14,6 +14,7 @@ #include "third_party/xxHash/xxhash.h" #define SINFL_IMPLEMENTATION #include "third_party/sinfl/sinfl.h" +#include "third_party/radsort/radsort.h" //////////////////////////////// // RDI Format Library