mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-07-10 11:31:37 -07:00
raddbg -> raddbgi
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#ifndef RADDBG_DWARF_H
|
||||
#define RADDBG_DWARF_H
|
||||
#ifndef RADDBGI_DWARF_H
|
||||
#define RADDBGI_DWARF_H
|
||||
|
||||
// https://dwarfstd.org/doc/DWARF4.pdf
|
||||
// https://dwarfstd.org/doc/DWARF5.pdf
|
||||
@@ -1328,5 +1328,5 @@ static String8 dwarf_string_from_line_ext_op(DWARF_LineExtOp op);
|
||||
static String8 dwarf_string_from_line_entry_format(DWARF_LineEntryFormat format);
|
||||
static String8 dwarf_string_from_section_code(DWARF_SectionCode sec_code);
|
||||
|
||||
#endif //RADDBG_DWARF_H
|
||||
#endif //RADDBGI_DWARF_H
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#ifndef RADDBG_DWARF_STRINGIZE_H
|
||||
#define RADDBG_DWARF_STRINGIZE_H
|
||||
#ifndef RADDBGI_DWARF_STRINGIZE_H
|
||||
#define RADDBGI_DWARF_STRINGIZE_H
|
||||
|
||||
////////////////////////////////
|
||||
//~ DWARF Stringize Functions
|
||||
@@ -25,4 +25,4 @@ dwarf_stringize_addr(Arena *arena, String8List *out, DWARF_AddrUnit *unit, U32 i
|
||||
|
||||
|
||||
|
||||
#endif //RADDBG_DWARF_STRINGIZE_H
|
||||
#endif //RADDBGI_DWARF_STRINGIZE_H
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#ifndef RADDBG_ELF_H
|
||||
#define RADDBG_ELF_H
|
||||
#ifndef RADDBGI_ELF_H
|
||||
#define RADDBGI_ELF_H
|
||||
|
||||
// https://refspecs.linuxfoundation.org/elf/elf.pdf
|
||||
|
||||
@@ -514,4 +514,4 @@ static String8 elf_string_from_symbol_binding(ELF_SymbolBinding binding);
|
||||
static String8 elf_string_from_symbol_type(ELF_SymbolType type);
|
||||
static String8 elf_string_from_symbol_visibility(ELF_SymbolVisibility visibility);
|
||||
|
||||
#endif //RADDBG_ELF_H
|
||||
#endif //RADDBGI_ELF_H
|
||||
|
||||
@@ -416,7 +416,7 @@ main(int argc, char **argv){
|
||||
String8List args = os_string_list_from_argcv(arena, argc, argv);
|
||||
CmdLine cmdline = cmd_line_from_string_list(arena, args);
|
||||
|
||||
ProfBeginCapture("raddbg_from_dwarf");
|
||||
ProfBeginCapture("raddbgi_from_dwarf");
|
||||
|
||||
// parse arguments
|
||||
DWARFCONV_Params *params = dwarf_convert_params_from_cmd_line(arena, &cmdline);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#ifndef RADDBG_FROM_DWARF_H
|
||||
#define RADDBG_FROM_DWARF_H
|
||||
#ifndef RADDBGI_FROM_DWARF_H
|
||||
#define RADDBGI_FROM_DWARF_H
|
||||
|
||||
////////////////////////////////
|
||||
//~ Program Parameters Type
|
||||
@@ -47,4 +47,4 @@ static DWARFCONV_Params *dwarf_convert_params_from_cmd_line(Arena *arena, CmdLin
|
||||
|
||||
|
||||
|
||||
#endif //RADDBG_FROM_DWARF_H
|
||||
#endif //RADDBGI_FROM_DWARF_H
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#ifndef RADDBG_CODEVIEW_H
|
||||
#define RADDBG_CODEVIEW_H
|
||||
#ifndef RADDBGI_CODEVIEW_H
|
||||
#define RADDBGI_CODEVIEW_H
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
@@ -155,7 +155,7 @@ typedef enum{
|
||||
} CV_AllRegEnum;
|
||||
|
||||
|
||||
// X(NAME, CODE, (RADDBG_RegsiterCode_X86) NAME, BYTE_POS, BYTE_SIZE)
|
||||
// X(NAME, CODE, (RADDBGI_RegsiterCode_X86) NAME, BYTE_POS, BYTE_SIZE)
|
||||
#define CV_Reg_X86_XList(X) \
|
||||
X(NONE, 0, nil, 0, 0)\
|
||||
X(AL, 1, eax, 0, 1)\
|
||||
@@ -408,7 +408,7 @@ typedef enum{
|
||||
#undef X
|
||||
} CV_Regx86Enum;
|
||||
|
||||
// X(NAME, CODE, (RADDBG_RegsiterCode_X64) NAME, BYTE_POS, BYTE_SIZE)
|
||||
// X(NAME, CODE, (RADDBGI_RegsiterCode_X64) NAME, BYTE_POS, BYTE_SIZE)
|
||||
#define CV_Reg_X64_XList(X) \
|
||||
X(NONE, 0, nil, 0, 0)\
|
||||
X(AL, 1, rax, 0, 1)\
|
||||
@@ -3057,4 +3057,4 @@ typedef struct PDB_CoffSectionArray PDB_CoffSectionArray;
|
||||
static CV_C13Parsed* cv_c13_from_data(Arena *arena, String8 c13_data,
|
||||
struct PDB_Strtbl *strtbl, struct PDB_CoffSectionArray *sections);
|
||||
|
||||
#endif //RADDBG_CODEVIEW_H
|
||||
#endif //RADDBGI_CODEVIEW_H
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
////////////////////////////////
|
||||
//~ CodeView Conversion Functions
|
||||
|
||||
static RADDBG_Arch
|
||||
raddbg_arch_from_cv_arch(CV_Arch cv_arch){
|
||||
RADDBG_Arch result = 0;
|
||||
static RADDBGI_Arch
|
||||
raddbgi_arch_from_cv_arch(CV_Arch cv_arch){
|
||||
RADDBGI_Arch result = 0;
|
||||
switch (cv_arch){
|
||||
case CV_Arch_8086: result = RADDBG_Arch_X86; break;
|
||||
case CV_Arch_X64: result = RADDBG_Arch_X64; break;
|
||||
case CV_Arch_8086: result = RADDBGI_Arch_X86; break;
|
||||
case CV_Arch_X64: result = RADDBGI_Arch_X64; break;
|
||||
|
||||
//case CV_Arch_8080: break;
|
||||
//case CV_Arch_80286: break;
|
||||
@@ -73,23 +73,23 @@ raddbg_arch_from_cv_arch(CV_Arch cv_arch){
|
||||
return(result);
|
||||
}
|
||||
|
||||
static RADDBG_RegisterCode
|
||||
raddbg_reg_code_from_cv_reg_code(RADDBG_Arch arch, CV_Reg reg_code){
|
||||
RADDBG_RegisterCode result = 0;
|
||||
static RADDBGI_RegisterCode
|
||||
raddbgi_reg_code_from_cv_reg_code(RADDBGI_Arch arch, CV_Reg reg_code){
|
||||
RADDBGI_RegisterCode result = 0;
|
||||
switch (arch){
|
||||
case RADDBG_Arch_X86:
|
||||
case RADDBGI_Arch_X86:
|
||||
{
|
||||
switch (reg_code){
|
||||
#define X(CVN,C,RDN,BP,BZ) case C: result = RADDBG_RegisterCode_X86_##RDN; break;
|
||||
#define X(CVN,C,RDN,BP,BZ) case C: result = RADDBGI_RegisterCode_X86_##RDN; break;
|
||||
CV_Reg_X86_XList(X)
|
||||
#undef X
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_Arch_X64:
|
||||
case RADDBGI_Arch_X64:
|
||||
{
|
||||
switch (reg_code){
|
||||
#define X(CVN,C,RDN,BP,BZ) case C: result = RADDBG_RegisterCode_X64_##RDN; break;
|
||||
#define X(CVN,C,RDN,BP,BZ) case C: result = RADDBGI_RegisterCode_X64_##RDN; break;
|
||||
CV_Reg_X64_XList(X)
|
||||
#undef X
|
||||
}
|
||||
@@ -98,12 +98,12 @@ raddbg_reg_code_from_cv_reg_code(RADDBG_Arch arch, CV_Reg reg_code){
|
||||
return(result);
|
||||
}
|
||||
|
||||
static RADDBG_Language
|
||||
raddbg_language_from_cv_language(CV_Language cv_language){
|
||||
RADDBG_Language result = 0;
|
||||
static RADDBGI_Language
|
||||
raddbgi_language_from_cv_language(CV_Language cv_language){
|
||||
RADDBGI_Language result = 0;
|
||||
switch (cv_language){
|
||||
case CV_Language_C: result = RADDBG_Language_C; break;
|
||||
case CV_Language_CXX: result = RADDBG_Language_CPlusPlus; break;
|
||||
case CV_Language_C: result = RADDBGI_Language_C; break;
|
||||
case CV_Language_CXX: result = RADDBGI_Language_CPlusPlus; break;
|
||||
//case CV_Language_FORTRAN: result = ; break;
|
||||
//case CV_Language_MASM: result = ; break;
|
||||
//case CV_Language_PASCAL: result = ; break;
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#ifndef RADDBG_CODEVIEW_CONVERSION_H
|
||||
#define RADDBG_CODEVIEW_CONVERSION_H
|
||||
#ifndef RADDBGI_CODEVIEW_CONVERSION_H
|
||||
#define RADDBGI_CODEVIEW_CONVERSION_H
|
||||
|
||||
////////////////////////////////
|
||||
//~ CodeView Conversion Functions
|
||||
|
||||
static RADDBG_Arch raddbg_arch_from_cv_arch(CV_Arch arch);
|
||||
static RADDBG_RegisterCode raddbg_reg_code_from_cv_reg_code(RADDBG_Arch arch, CV_Reg reg_code);
|
||||
static RADDBG_Language raddbg_language_from_cv_language(CV_Language language);
|
||||
static RADDBGI_Arch raddbgi_arch_from_cv_arch(CV_Arch arch);
|
||||
static RADDBGI_RegisterCode raddbgi_reg_code_from_cv_reg_code(RADDBGI_Arch arch, CV_Reg reg_code);
|
||||
static RADDBGI_Language raddbgi_language_from_cv_language(CV_Language language);
|
||||
|
||||
#endif //RADDBG_CODEVIEW_CONVERSION_H
|
||||
#endif //RADDBGI_CODEVIEW_CONVERSION_H
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#ifndef RADDBG_CODEVIEW_STRINGIZE_H
|
||||
#define RADDBG_CODEVIEW_STRINGIZE_H
|
||||
#ifndef RADDBGI_CODEVIEW_STRINGIZE_H
|
||||
#define RADDBGI_CODEVIEW_STRINGIZE_H
|
||||
|
||||
////////////////////////////////
|
||||
//~ CodeView Stringize Helper Types
|
||||
@@ -83,4 +83,4 @@ static void cv_stringize_leaf_array(Arena *arena, String8List *out,
|
||||
|
||||
static void cv_stringize_c13_parsed(Arena *arena, String8List *out, CV_C13Parsed *c13);
|
||||
|
||||
#endif //RADDBG_CODEVIEW_STRINGIZE_H
|
||||
#endif //RADDBGI_CODEVIEW_STRINGIZE_H
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#ifndef RADDBG_COFF_H
|
||||
#define RADDBG_COFF_H
|
||||
#ifndef RADDBGI_COFF_H
|
||||
#define RADDBGI_COFF_H
|
||||
|
||||
////////////////////////////////
|
||||
//~ COFF Format Types
|
||||
|
||||
@@ -4,18 +4,18 @@
|
||||
////////////////////////////////
|
||||
//~ COFF Conversion Functions
|
||||
|
||||
static RADDBG_BinarySectionFlags
|
||||
raddbg_binary_section_flags_from_coff_section_flags(COFF_SectionFlags flags){
|
||||
RADDBG_BinarySectionFlags result = 0;
|
||||
static RADDBGI_BinarySectionFlags
|
||||
raddbgi_binary_section_flags_from_coff_section_flags(COFF_SectionFlags flags){
|
||||
RADDBGI_BinarySectionFlags result = 0;
|
||||
|
||||
if (flags & COFF_SectionFlag_MEM_READ){
|
||||
result |= RADDBG_BinarySectionFlag_Read;
|
||||
result |= RADDBGI_BinarySectionFlag_Read;
|
||||
}
|
||||
if (flags & COFF_SectionFlag_MEM_WRITE){
|
||||
result |= RADDBG_BinarySectionFlag_Write;
|
||||
result |= RADDBGI_BinarySectionFlag_Write;
|
||||
}
|
||||
if (flags & COFF_SectionFlag_MEM_EXECUTE){
|
||||
result |= RADDBG_BinarySectionFlag_Execute;
|
||||
result |= RADDBGI_BinarySectionFlag_Execute;
|
||||
}
|
||||
|
||||
return(result);
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#ifndef RADDBG_COFF_CONVERSION_H
|
||||
#define RADDBG_COFF_CONVERSION_H
|
||||
#ifndef RADDBGI_COFF_CONVERSION_H
|
||||
#define RADDBGI_COFF_CONVERSION_H
|
||||
|
||||
////////////////////////////////
|
||||
//~ COFF Conversion Functions
|
||||
|
||||
static RADDBG_BinarySectionFlags
|
||||
raddbg_binary_section_flags_from_coff_section_flags(COFF_SectionFlags flags);
|
||||
static RADDBGI_BinarySectionFlags
|
||||
raddbgi_binary_section_flags_from_coff_section_flags(COFF_SectionFlags flags);
|
||||
|
||||
#endif //RADDBG_COFF_CONVERSION_H
|
||||
#endif //RADDBGI_COFF_CONVERSION_H
|
||||
|
||||
@@ -145,7 +145,7 @@ pdbconv_ctx_alloc(PDBCONV_CtxParams *params, CONS_Root *out_root)
|
||||
PDBCONV_Ctx *pdb_ctx = push_array(arena, PDBCONV_Ctx, 1);
|
||||
pdb_ctx->arena = arena;
|
||||
pdb_ctx->arch = params->arch;
|
||||
pdb_ctx->addr_size = raddbg_addr_size_from_arch(pdb_ctx->arch);
|
||||
pdb_ctx->addr_size = raddbgi_addr_size_from_arch(pdb_ctx->arch);
|
||||
pdb_ctx->hash = params->tpi_hash;
|
||||
pdb_ctx->leaf = params->tpi_leaf;
|
||||
pdb_ctx->sections = params->sections->sections;
|
||||
@@ -980,165 +980,165 @@ pdbconv_type_cons_basic(PDBCONV_Ctx *ctx, CV_TypeId itype){
|
||||
switch (basic_type_code){
|
||||
case CV_BasicType_VOID:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_Void, str8_lit("void"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_Void, str8_lit("void"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_HRESULT:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_Handle, str8_lit("HRESULT"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_Handle, str8_lit("HRESULT"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_RCHAR:
|
||||
case CV_BasicType_CHAR:
|
||||
case CV_BasicType_CHAR8:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_Char8, str8_lit("char"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_Char8, str8_lit("char"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_UCHAR:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_UChar8, str8_lit("UCHAR"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_UChar8, str8_lit("UCHAR"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_WCHAR:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_UChar16, str8_lit("WCHAR"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_UChar16, str8_lit("WCHAR"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_CHAR16:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_Char16, str8_lit("CHAR16"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_Char16, str8_lit("CHAR16"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_CHAR32:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_Char32, str8_lit("CHAR32"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_Char32, str8_lit("CHAR32"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_BOOL8:
|
||||
case CV_BasicType_INT8:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_S8, str8_lit("S8"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_S8, str8_lit("S8"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_BOOL16:
|
||||
case CV_BasicType_INT16:
|
||||
case CV_BasicType_SHORT:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_S16, str8_lit("S16"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_S16, str8_lit("S16"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_BOOL32:
|
||||
case CV_BasicType_INT32:
|
||||
case CV_BasicType_LONG:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_S32, str8_lit("S32"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_S32, str8_lit("S32"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_BOOL64:
|
||||
case CV_BasicType_INT64:
|
||||
case CV_BasicType_QUAD:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_S64, str8_lit("S64"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_S64, str8_lit("S64"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_INT128:
|
||||
case CV_BasicType_OCT:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_S128, str8_lit("S128"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_S128, str8_lit("S128"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_UINT8:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_U8, str8_lit("U8"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_U8, str8_lit("U8"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_UINT16:
|
||||
case CV_BasicType_USHORT:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_U16, str8_lit("U16"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_U16, str8_lit("U16"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_UINT32:
|
||||
case CV_BasicType_ULONG:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_U32, str8_lit("U32"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_U32, str8_lit("U32"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_UINT64:
|
||||
case CV_BasicType_UQUAD:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_U64, str8_lit("U64"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_U64, str8_lit("U64"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_UINT128:
|
||||
case CV_BasicType_UOCT:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_U128, str8_lit("U128"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_U128, str8_lit("U128"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_FLOAT16:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_F16, str8_lit("F16"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_F16, str8_lit("F16"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_FLOAT32:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_F32, str8_lit("F32"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_F32, str8_lit("F32"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_FLOAT32PP:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_F32PP, str8_lit("F32PP"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_F32PP, str8_lit("F32PP"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_FLOAT48:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_F48, str8_lit("F48"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_F48, str8_lit("F48"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_FLOAT64:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_F64, str8_lit("F64"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_F64, str8_lit("F64"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_FLOAT80:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_F80, str8_lit("F80"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_F80, str8_lit("F80"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_FLOAT128:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_F128, str8_lit("F128"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_F128, str8_lit("F128"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_COMPLEX32:
|
||||
{
|
||||
basic_type =
|
||||
cons_type_basic(ctx->root, RADDBG_TypeKind_ComplexF32, str8_lit("ComplexF32"));
|
||||
cons_type_basic(ctx->root, RADDBGI_TypeKind_ComplexF32, str8_lit("ComplexF32"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_COMPLEX64:
|
||||
{
|
||||
basic_type =
|
||||
cons_type_basic(ctx->root, RADDBG_TypeKind_ComplexF64, str8_lit("ComplexF64"));
|
||||
cons_type_basic(ctx->root, RADDBGI_TypeKind_ComplexF64, str8_lit("ComplexF64"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_COMPLEX80:
|
||||
{
|
||||
basic_type =
|
||||
cons_type_basic(ctx->root, RADDBG_TypeKind_ComplexF80, str8_lit("ComplexF80"));
|
||||
cons_type_basic(ctx->root, RADDBGI_TypeKind_ComplexF80, str8_lit("ComplexF80"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_COMPLEX128:
|
||||
{
|
||||
basic_type =
|
||||
cons_type_basic(ctx->root, RADDBG_TypeKind_ComplexF128, str8_lit("ComplexF128"));
|
||||
cons_type_basic(ctx->root, RADDBGI_TypeKind_ComplexF128, str8_lit("ComplexF128"));
|
||||
}break;
|
||||
|
||||
case CV_BasicType_PTR:
|
||||
{
|
||||
basic_type = cons_type_basic(ctx->root, RADDBG_TypeKind_Handle, str8_lit("PTR"));
|
||||
basic_type = cons_type_basic(ctx->root, RADDBGI_TypeKind_Handle, str8_lit("PTR"));
|
||||
}break;
|
||||
}
|
||||
|
||||
@@ -1158,7 +1158,7 @@ pdbconv_type_cons_basic(PDBCONV_Ctx *ctx, CV_TypeId itype){
|
||||
case CV_BasicPointerKind_16_32BIT:
|
||||
case CV_BasicPointerKind_64BIT:
|
||||
{
|
||||
constructed_type = cons_type_pointer(ctx->root, basic_type, RADDBG_TypeKind_Ptr);
|
||||
constructed_type = cons_type_pointer(ctx->root, basic_type, RADDBGI_TypeKind_Ptr);
|
||||
}break;
|
||||
}
|
||||
|
||||
@@ -1196,12 +1196,12 @@ pdbconv_type_cons_leaf_record(PDBCONV_Ctx *ctx, CV_TypeId itype){
|
||||
if (sizeof(CV_LeafModifier) <= cap){
|
||||
CV_LeafModifier *modifier = (CV_LeafModifier*)first;
|
||||
|
||||
RADDBG_TypeModifierFlags flags = 0;
|
||||
RADDBGI_TypeModifierFlags flags = 0;
|
||||
if (modifier->flags & CV_ModifierFlag_Const){
|
||||
flags |= RADDBG_TypeModifierFlag_Const;
|
||||
flags |= RADDBGI_TypeModifierFlag_Const;
|
||||
}
|
||||
if (modifier->flags & CV_ModifierFlag_Volatile){
|
||||
flags |= RADDBG_TypeModifierFlag_Volatile;
|
||||
flags |= RADDBGI_TypeModifierFlag_Volatile;
|
||||
}
|
||||
|
||||
CONS_Type *direct_type = pdbconv_type_resolve_and_check(ctx, modifier->itype);
|
||||
@@ -1227,27 +1227,27 @@ pdbconv_type_cons_leaf_record(PDBCONV_Ctx *ctx, CV_TypeId itype){
|
||||
// TODO(allen): if ptr_mode in {PtrMem, PtrMethod} then output a member pointer instead
|
||||
|
||||
// extract modifier flags
|
||||
RADDBG_TypeModifierFlags modifier_flags = 0;
|
||||
RADDBGI_TypeModifierFlags modifier_flags = 0;
|
||||
if (pointer->attribs & CV_PointerAttrib_Const){
|
||||
modifier_flags |= RADDBG_TypeModifierFlag_Const;
|
||||
modifier_flags |= RADDBGI_TypeModifierFlag_Const;
|
||||
}
|
||||
if (pointer->attribs & CV_PointerAttrib_Volatile){
|
||||
modifier_flags |= RADDBG_TypeModifierFlag_Volatile;
|
||||
modifier_flags |= RADDBGI_TypeModifierFlag_Volatile;
|
||||
}
|
||||
|
||||
// determine type kind
|
||||
RADDBG_TypeKind type_kind = RADDBG_TypeKind_Ptr;
|
||||
RADDBGI_TypeKind type_kind = RADDBGI_TypeKind_Ptr;
|
||||
if (pointer->attribs & CV_PointerAttrib_LRef){
|
||||
type_kind = RADDBG_TypeKind_LRef;
|
||||
type_kind = RADDBGI_TypeKind_LRef;
|
||||
}
|
||||
else if (pointer->attribs & CV_PointerAttrib_RRef){
|
||||
type_kind = RADDBG_TypeKind_RRef;
|
||||
type_kind = RADDBGI_TypeKind_RRef;
|
||||
}
|
||||
if (ptr_mode == CV_PointerMode_LRef){
|
||||
type_kind = RADDBG_TypeKind_LRef;
|
||||
type_kind = RADDBGI_TypeKind_LRef;
|
||||
}
|
||||
else if (ptr_mode == CV_PointerMode_RRef){
|
||||
type_kind = RADDBG_TypeKind_RRef;
|
||||
type_kind = RADDBGI_TypeKind_RRef;
|
||||
}
|
||||
|
||||
CONS_Type *direct_type = pdbconv_type_resolve_and_check(ctx, pointer->itype);
|
||||
@@ -1363,18 +1363,18 @@ pdbconv_type_cons_leaf_record(PDBCONV_Ctx *ctx, CV_TypeId itype){
|
||||
|
||||
// incomplete type
|
||||
if (lf_struct->props & CV_TypeProp_FwdRef){
|
||||
RADDBG_TypeKind type_kind = RADDBG_TypeKind_IncompleteStruct;
|
||||
RADDBGI_TypeKind type_kind = RADDBGI_TypeKind_IncompleteStruct;
|
||||
if (range->hdr.kind == CV_LeafKind_CLASS){
|
||||
type_kind = RADDBG_TypeKind_IncompleteClass;
|
||||
type_kind = RADDBGI_TypeKind_IncompleteClass;
|
||||
}
|
||||
result = cons_type_incomplete(ctx->root, type_kind, name);
|
||||
}
|
||||
|
||||
// complete type
|
||||
else{
|
||||
RADDBG_TypeKind type_kind = RADDBG_TypeKind_Struct;
|
||||
RADDBGI_TypeKind type_kind = RADDBGI_TypeKind_Struct;
|
||||
if (range->hdr.kind == CV_LeafKind_CLASS){
|
||||
type_kind = RADDBG_TypeKind_Class;
|
||||
type_kind = RADDBGI_TypeKind_Class;
|
||||
}
|
||||
result = cons_type_udt(ctx->root, type_kind, name, size_u64);
|
||||
|
||||
@@ -1409,18 +1409,18 @@ pdbconv_type_cons_leaf_record(PDBCONV_Ctx *ctx, CV_TypeId itype){
|
||||
|
||||
// incomplete type
|
||||
if (lf_struct->props & CV_TypeProp_FwdRef){
|
||||
RADDBG_TypeKind type_kind = RADDBG_TypeKind_IncompleteStruct;
|
||||
RADDBGI_TypeKind type_kind = RADDBGI_TypeKind_IncompleteStruct;
|
||||
if (range->hdr.kind == CV_LeafKind_CLASS2){
|
||||
type_kind = RADDBG_TypeKind_IncompleteClass;
|
||||
type_kind = RADDBGI_TypeKind_IncompleteClass;
|
||||
}
|
||||
result = cons_type_incomplete(ctx->root, type_kind, name);
|
||||
}
|
||||
|
||||
// complete type
|
||||
else{
|
||||
RADDBG_TypeKind type_kind = RADDBG_TypeKind_Struct;
|
||||
RADDBGI_TypeKind type_kind = RADDBGI_TypeKind_Struct;
|
||||
if (range->hdr.kind == CV_LeafKind_CLASS2){
|
||||
type_kind = RADDBG_TypeKind_Class;
|
||||
type_kind = RADDBGI_TypeKind_Class;
|
||||
}
|
||||
result = cons_type_udt(ctx->root, type_kind, name, size_u64);
|
||||
|
||||
@@ -1455,12 +1455,12 @@ pdbconv_type_cons_leaf_record(PDBCONV_Ctx *ctx, CV_TypeId itype){
|
||||
// incomplete type
|
||||
if (lf_union->props & CV_TypeProp_FwdRef){
|
||||
result =
|
||||
cons_type_incomplete(ctx->root, RADDBG_TypeKind_IncompleteUnion, name);
|
||||
cons_type_incomplete(ctx->root, RADDBGI_TypeKind_IncompleteUnion, name);
|
||||
}
|
||||
|
||||
// complete type
|
||||
else{
|
||||
result = cons_type_udt(ctx->root, RADDBG_TypeKind_Union, name, size_u64);
|
||||
result = cons_type_udt(ctx->root, RADDBGI_TypeKind_Union, name, size_u64);
|
||||
|
||||
// remember to revisit this for members
|
||||
{
|
||||
@@ -1487,7 +1487,7 @@ pdbconv_type_cons_leaf_record(PDBCONV_Ctx *ctx, CV_TypeId itype){
|
||||
|
||||
// incomplete type
|
||||
if (lf_enum->props & CV_TypeProp_FwdRef){
|
||||
result = cons_type_incomplete(ctx->root, RADDBG_TypeKind_IncompleteEnum, name);
|
||||
result = cons_type_incomplete(ctx->root, RADDBGI_TypeKind_IncompleteEnum, name);
|
||||
}
|
||||
|
||||
// complete type
|
||||
@@ -1667,7 +1667,8 @@ pdbconv_type_cons_leaf_record(PDBCONV_Ctx *ctx, CV_TypeId itype){
|
||||
static CONS_Type*
|
||||
pdbconv_type_resolve_and_check(PDBCONV_Ctx *ctx, CV_TypeId itype){
|
||||
CONS_Type *result = pdbconv_type_resolve_itype(ctx, itype);
|
||||
if (cons_type_is_unhandled_nil(ctx->root, result)){
|
||||
if(cons_type_is_unhandled_nil(ctx->root, result))
|
||||
{
|
||||
cons_errorf(ctx->root, "pdbconv: could not resolve itype (itype = %u)", itype);
|
||||
}
|
||||
return(result);
|
||||
@@ -1798,7 +1799,7 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){
|
||||
// extract important values from parameters
|
||||
String8 data = sym->data;
|
||||
U64 user_id_base = (((U64)sym_unique_id) << 32);
|
||||
U64 sym_unique_id_hash = raddbg_hash((U8*)&sym_unique_id, sizeof(sym_unique_id));
|
||||
U64 sym_unique_id_hash = raddbgi_hash((U8*)&sym_unique_id, sizeof(sym_unique_id));
|
||||
|
||||
// PASS 1: map out data associations
|
||||
ProfScope("map out data associations")
|
||||
@@ -2109,16 +2110,16 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){
|
||||
U32 var_off = regrel32->reg_off;
|
||||
|
||||
// need arch for analyzing register stuff
|
||||
RADDBG_Arch arch = ctx->arch;
|
||||
RADDBGI_Arch arch = ctx->arch;
|
||||
U64 addr_size = ctx->addr_size;
|
||||
|
||||
// determine if this is a parameter
|
||||
RADDBG_LocalKind local_kind = RADDBG_LocalKind_Variable;
|
||||
RADDBGI_LocalKind local_kind = RADDBGI_LocalKind_Variable;
|
||||
{
|
||||
B32 is_stack_reg = 0;
|
||||
switch (arch){
|
||||
case RADDBG_Arch_X86: is_stack_reg = (cv_reg == CV_Regx86_ESP); break;
|
||||
case RADDBG_Arch_X64: is_stack_reg = (cv_reg == CV_Regx64_RSP); break;
|
||||
case RADDBGI_Arch_X86: is_stack_reg = (cv_reg == CV_Regx86_ESP); break;
|
||||
case RADDBGI_Arch_X64: is_stack_reg = (cv_reg == CV_Regx64_RSP); break;
|
||||
}
|
||||
if (is_stack_reg){
|
||||
U32 frame_size = 0xFFFFFFFF;
|
||||
@@ -2128,7 +2129,7 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){
|
||||
frame_size = frameproc->frame_size;
|
||||
}
|
||||
if (var_off > frame_size){
|
||||
local_kind = RADDBG_LocalKind_Parameter;
|
||||
local_kind = RADDBGI_LocalKind_Parameter;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2151,17 +2152,17 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){
|
||||
// will there be an extra indirection to the value
|
||||
B32 extra_indirection_to_value = 0;
|
||||
switch (arch){
|
||||
case RADDBG_Arch_X86:
|
||||
case RADDBGI_Arch_X86:
|
||||
{
|
||||
if (local_kind == RADDBG_LocalKind_Parameter &&
|
||||
if (local_kind == RADDBGI_LocalKind_Parameter &&
|
||||
(type->byte_size > 4 || !IsPow2OrZero(type->byte_size))){
|
||||
extra_indirection_to_value = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_Arch_X64:
|
||||
case RADDBGI_Arch_X64:
|
||||
{
|
||||
if (local_kind == RADDBG_LocalKind_Parameter &&
|
||||
if (local_kind == RADDBGI_LocalKind_Parameter &&
|
||||
(type->byte_size > 8 || !IsPow2OrZero(type->byte_size))){
|
||||
extra_indirection_to_value = 1;
|
||||
}
|
||||
@@ -2169,7 +2170,7 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){
|
||||
}
|
||||
|
||||
// get raddbg register code
|
||||
RADDBG_RegisterCode register_code = raddbg_reg_code_from_cv_reg_code(arch, cv_reg);
|
||||
RADDBGI_RegisterCode register_code = raddbgi_reg_code_from_cv_reg_code(arch, cv_reg);
|
||||
// TODO(allen): real byte_size & byte_pos from cv_reg goes here
|
||||
U32 byte_size = 8;
|
||||
U32 byte_pos = 0;
|
||||
@@ -2271,9 +2272,9 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){
|
||||
// emit a local variable
|
||||
else{
|
||||
// local kind
|
||||
RADDBG_LocalKind local_kind = RADDBG_LocalKind_Variable;
|
||||
RADDBGI_LocalKind local_kind = RADDBGI_LocalKind_Variable;
|
||||
if (slocal->flags & CV_LocalFlag_Param){
|
||||
local_kind = RADDBG_LocalKind_Parameter;
|
||||
local_kind = RADDBGI_LocalKind_Parameter;
|
||||
}
|
||||
|
||||
// emit local
|
||||
@@ -2293,7 +2294,7 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){
|
||||
cons_local_set_basic_info(ctx->root, local_var, &info);
|
||||
|
||||
defrange_target = cons_location_set_from_local(ctx->root, local_var);
|
||||
defrange_target_is_param = (local_kind == RADDBG_LocalKind_Parameter);
|
||||
defrange_target_is_param = (local_kind == RADDBGI_LocalKind_Parameter);
|
||||
}
|
||||
}
|
||||
}break;
|
||||
@@ -2312,9 +2313,9 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){
|
||||
CV_SymDefrangeRegister *defrange_register = (CV_SymDefrangeRegister*)first;
|
||||
|
||||
// TODO(allen): offset & size from cv_reg code
|
||||
RADDBG_Arch arch = ctx->arch;
|
||||
RADDBGI_Arch arch = ctx->arch;
|
||||
CV_Reg cv_reg = defrange_register->reg;
|
||||
RADDBG_RegisterCode register_code = raddbg_reg_code_from_cv_reg_code(arch, cv_reg);
|
||||
RADDBGI_RegisterCode register_code = raddbgi_reg_code_from_cv_reg_code(arch, cv_reg);
|
||||
|
||||
// setup location
|
||||
CONS_Location *location = cons_location_val_reg(ctx->root, register_code);
|
||||
@@ -2347,7 +2348,7 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){
|
||||
// select frame pointer register
|
||||
CV_EncodedFramePtrReg encoded_fp_reg =
|
||||
pdbconv_cv_encoded_fp_reg_from_proc(ctx, current_procedure, defrange_target_is_param);
|
||||
RADDBG_RegisterCode fp_register_code =
|
||||
RADDBGI_RegisterCode fp_register_code =
|
||||
pdbconv_reg_code_from_arch_encoded_fp_reg(ctx->arch, encoded_fp_reg);
|
||||
|
||||
// setup location
|
||||
@@ -2388,9 +2389,9 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){
|
||||
if (defrange_subfield_register->field_offset == 0){
|
||||
|
||||
// TODO(allen): offset & size from cv_reg code
|
||||
RADDBG_Arch arch = ctx->arch;
|
||||
RADDBGI_Arch arch = ctx->arch;
|
||||
CV_Reg cv_reg = defrange_subfield_register->reg;
|
||||
RADDBG_RegisterCode register_code = raddbg_reg_code_from_cv_reg_code(arch, cv_reg);
|
||||
RADDBGI_RegisterCode register_code = raddbgi_reg_code_from_cv_reg_code(arch, cv_reg);
|
||||
|
||||
// setup location
|
||||
CONS_Location *location = cons_location_val_reg(ctx->root, register_code);
|
||||
@@ -2425,7 +2426,7 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){
|
||||
// select frame pointer register
|
||||
CV_EncodedFramePtrReg encoded_fp_reg =
|
||||
pdbconv_cv_encoded_fp_reg_from_proc(ctx, current_procedure, defrange_target_is_param);
|
||||
RADDBG_RegisterCode fp_register_code =
|
||||
RADDBGI_RegisterCode fp_register_code =
|
||||
pdbconv_reg_code_from_arch_encoded_fp_reg(ctx->arch, encoded_fp_reg);
|
||||
|
||||
// setup location
|
||||
@@ -2459,9 +2460,9 @@ pdbconv_symbol_cons(PDBCONV_Ctx *ctx, CV_SymParsed *sym, U32 sym_unique_id){
|
||||
else
|
||||
{
|
||||
// TODO(allen): offset & size from cv_reg code
|
||||
RADDBG_Arch arch = ctx->arch;
|
||||
RADDBGI_Arch arch = ctx->arch;
|
||||
CV_Reg cv_reg = defrange_register_rel->reg;
|
||||
RADDBG_RegisterCode register_code = raddbg_reg_code_from_cv_reg_code(arch, cv_reg);
|
||||
RADDBGI_RegisterCode register_code = raddbgi_reg_code_from_cv_reg_code(arch, cv_reg);
|
||||
U32 byte_size = ctx->addr_size;
|
||||
U32 byte_pos = 0;
|
||||
|
||||
@@ -2758,7 +2759,7 @@ pdbconv_known_global_insert(Arena *arena, PDBCONV_KnownGlobalSet *set, String8 n
|
||||
|
||||
static CONS_Location*
|
||||
pdbconv_location_from_addr_reg_off(PDBCONV_Ctx *ctx,
|
||||
RADDBG_RegisterCode reg_code,
|
||||
RADDBGI_RegisterCode reg_code,
|
||||
U32 reg_byte_size,
|
||||
U32 reg_byte_pos,
|
||||
S64 offset,
|
||||
@@ -2776,12 +2777,12 @@ pdbconv_location_from_addr_reg_off(PDBCONV_Ctx *ctx,
|
||||
Arena *arena = ctx->arena;
|
||||
|
||||
CONS_EvalBytecode bytecode = {0};
|
||||
U32 regread_param = RADDBG_EncodeRegReadParam(reg_code, reg_byte_size, reg_byte_pos);
|
||||
cons_bytecode_push_op(arena, &bytecode, RADDBG_EvalOp_RegRead, regread_param);
|
||||
U32 regread_param = RADDBGI_EncodeRegReadParam(reg_code, reg_byte_size, reg_byte_pos);
|
||||
cons_bytecode_push_op(arena, &bytecode, RADDBGI_EvalOp_RegRead, regread_param);
|
||||
cons_bytecode_push_sconst(arena, &bytecode, offset);
|
||||
cons_bytecode_push_op(arena, &bytecode, RADDBG_EvalOp_Add, 0);
|
||||
cons_bytecode_push_op(arena, &bytecode, RADDBGI_EvalOp_Add, 0);
|
||||
if (extra_indirection){
|
||||
cons_bytecode_push_op(arena, &bytecode, RADDBG_EvalOp_MemRead, ctx->addr_size);
|
||||
cons_bytecode_push_op(arena, &bytecode, RADDBGI_EvalOp_MemRead, ctx->addr_size);
|
||||
}
|
||||
|
||||
result = cons_location_addr_bytecode_stream(ctx->root, &bytecode);
|
||||
@@ -2806,12 +2807,12 @@ pdbconv_cv_encoded_fp_reg_from_proc(PDBCONV_Ctx *ctx, CONS_Symbol *proc, B32 par
|
||||
return(result);
|
||||
}
|
||||
|
||||
static RADDBG_RegisterCode
|
||||
pdbconv_reg_code_from_arch_encoded_fp_reg(RADDBG_Arch arch, CV_EncodedFramePtrReg encoded_reg){
|
||||
RADDBG_RegisterCode result = 0;
|
||||
static RADDBGI_RegisterCode
|
||||
pdbconv_reg_code_from_arch_encoded_fp_reg(RADDBGI_Arch arch, CV_EncodedFramePtrReg encoded_reg){
|
||||
RADDBGI_RegisterCode result = 0;
|
||||
|
||||
switch (arch){
|
||||
case RADDBG_Arch_X86:
|
||||
case RADDBGI_Arch_X86:
|
||||
{
|
||||
switch (encoded_reg){
|
||||
case CV_EncodedFramePtrReg_StackPtr:
|
||||
@@ -2821,29 +2822,29 @@ pdbconv_reg_code_from_arch_encoded_fp_reg(RADDBG_Arch arch, CV_EncodedFramePtrRe
|
||||
}break;
|
||||
case CV_EncodedFramePtrReg_FramePtr:
|
||||
{
|
||||
result = RADDBG_RegisterCode_X86_ebp;
|
||||
result = RADDBGI_RegisterCode_X86_ebp;
|
||||
}break;
|
||||
case CV_EncodedFramePtrReg_BasePtr:
|
||||
{
|
||||
result = RADDBG_RegisterCode_X86_ebx;
|
||||
result = RADDBGI_RegisterCode_X86_ebx;
|
||||
}break;
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_Arch_X64:
|
||||
case RADDBGI_Arch_X64:
|
||||
{
|
||||
switch (encoded_reg){
|
||||
case CV_EncodedFramePtrReg_StackPtr:
|
||||
{
|
||||
result = RADDBG_RegisterCode_X64_rsp;
|
||||
result = RADDBGI_RegisterCode_X64_rsp;
|
||||
}break;
|
||||
case CV_EncodedFramePtrReg_FramePtr:
|
||||
{
|
||||
result = RADDBG_RegisterCode_X64_rbp;
|
||||
result = RADDBGI_RegisterCode_X64_rbp;
|
||||
}break;
|
||||
case CV_EncodedFramePtrReg_BasePtr:
|
||||
{
|
||||
result = RADDBG_RegisterCode_X64_r13;
|
||||
result = RADDBGI_RegisterCode_X64_r13;
|
||||
}break;
|
||||
}
|
||||
}break;
|
||||
@@ -3139,7 +3140,7 @@ str8_list_pushf(arena, &out->errors, fmt, __VA_ARGS__);\
|
||||
// exe hash
|
||||
U64 exe_hash = 0;
|
||||
if (out->good_parse && params->input_exe_data.size > 0) ProfScope("hash exe"){
|
||||
exe_hash = raddbg_hash(params->input_exe_data.str, params->input_exe_data.size);
|
||||
exe_hash = raddbgi_hash(params->input_exe_data.str, params->input_exe_data.size);
|
||||
}
|
||||
|
||||
// output generation
|
||||
@@ -3147,7 +3148,7 @@ str8_list_pushf(arena, &out->errors, fmt, __VA_ARGS__);\
|
||||
if (params->output_name.size > 0){
|
||||
|
||||
// determine arch
|
||||
RADDBG_Arch architecture = RADDBG_Arch_NULL;
|
||||
RADDBGI_Arch architecture = RADDBGI_Arch_NULL;
|
||||
// TODO(rjf): in some cases, the first compilation unit has a zero
|
||||
// architecture, as it's sometimes used as a "nil" unit. this causes bugs
|
||||
// in later stages of conversion - particularly, this was detected via
|
||||
@@ -3165,14 +3166,14 @@ str8_list_pushf(arena, &out->errors, fmt, __VA_ARGS__);\
|
||||
{
|
||||
if(sym_for_unit[comp_unit_idx] != 0)
|
||||
{
|
||||
architecture = raddbg_arch_from_cv_arch(sym_for_unit[comp_unit_idx]->info.arch);
|
||||
architecture = raddbgi_arch_from_cv_arch(sym_for_unit[comp_unit_idx]->info.arch);
|
||||
if(architecture != 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
U64 addr_size = raddbg_addr_size_from_arch(architecture);
|
||||
U64 addr_size = raddbgi_addr_size_from_arch(architecture);
|
||||
|
||||
|
||||
// predict symbol counts
|
||||
@@ -3239,8 +3240,8 @@ str8_list_pushf(arena, &out->errors, fmt, __VA_ARGS__);\
|
||||
char *name_first = (char*)coff_ptr->name;
|
||||
char *name_opl = name_first + sizeof(coff_ptr->name);
|
||||
String8 name = str8_cstring_capped(name_first, name_opl);
|
||||
RADDBG_BinarySectionFlags flags =
|
||||
raddbg_binary_section_flags_from_coff_section_flags(coff_ptr->flags);
|
||||
RADDBGI_BinarySectionFlags flags =
|
||||
raddbgi_binary_section_flags_from_coff_section_flags(coff_ptr->flags);
|
||||
cons_add_binary_section(root, name, flags,
|
||||
coff_ptr->voff, coff_ptr->voff + coff_ptr->vsize,
|
||||
coff_ptr->foff, coff_ptr->foff + coff_ptr->fsize);
|
||||
@@ -3283,7 +3284,7 @@ str8_list_pushf(arena, &out->errors, fmt, __VA_ARGS__);\
|
||||
String8 archive_file = unit->group_name;
|
||||
|
||||
// extract langauge
|
||||
RADDBG_Language lang = raddbg_language_from_cv_language(sym->info.language);
|
||||
RADDBGI_Language lang = raddbgi_language_from_cv_language(sym->info.language);
|
||||
|
||||
// basic per unit info
|
||||
CONS_Unit *unit_handle = cons_unit_handle_from_user_id(root, i, i);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#ifndef RADDBG_FROM_PDB_H
|
||||
#define RADDBG_FROM_PDB_H
|
||||
#ifndef RADDBGI_FROM_PDB_H
|
||||
#define RADDBGI_FROM_PDB_H
|
||||
|
||||
////////////////////////////////
|
||||
//~ Program Parameters Type
|
||||
@@ -107,7 +107,7 @@ typedef struct PDBCONV_KnownGlobalSet{
|
||||
typedef struct PDBCONV_CtxParams PDBCONV_CtxParams;
|
||||
struct PDBCONV_CtxParams
|
||||
{
|
||||
RADDBG_Arch arch;
|
||||
RADDBGI_Arch arch;
|
||||
PDB_TpiHashParsed *tpi_hash;
|
||||
CV_LeafParsed *tpi_leaf;
|
||||
PDB_CoffSectionArray *sections;
|
||||
@@ -140,7 +140,7 @@ typedef struct PDBCONV_Ctx{
|
||||
Arena *arena;
|
||||
|
||||
// INPUT data
|
||||
RADDBG_Arch arch;
|
||||
RADDBGI_Arch arch;
|
||||
U64 addr_size;
|
||||
PDB_TpiHashParsed *hash;
|
||||
CV_LeafParsed *leaf;
|
||||
@@ -247,7 +247,7 @@ static void pdbconv_known_global_insert(Arena *arena, PDBCONV_KnownGlobalSet *se
|
||||
|
||||
// location info helpers
|
||||
static CONS_Location* pdbconv_location_from_addr_reg_off(PDBCONV_Ctx *ctx,
|
||||
RADDBG_RegisterCode reg_code,
|
||||
RADDBGI_RegisterCode reg_code,
|
||||
U32 reg_byte_size,
|
||||
U32 reg_byte_pos,
|
||||
S64 offset,
|
||||
@@ -257,8 +257,8 @@ static CV_EncodedFramePtrReg pdbconv_cv_encoded_fp_reg_from_proc(PDBCONV_Ctx *ct
|
||||
CONS_Symbol *proc,
|
||||
B32 param_base);
|
||||
|
||||
static RADDBG_RegisterCode pdbconv_reg_code_from_arch_encoded_fp_reg(RADDBG_Arch arch,
|
||||
CV_EncodedFramePtrReg encoded_reg);
|
||||
static RADDBGI_RegisterCode pdbconv_reg_code_from_arch_encoded_fp_reg(RADDBGI_Arch arch,
|
||||
CV_EncodedFramePtrReg encoded_reg);
|
||||
|
||||
static void pdbconv_location_over_lvar_addr_range(PDBCONV_Ctx *ctx,
|
||||
CONS_LocationSet *locset,
|
||||
@@ -288,4 +288,4 @@ struct PDBCONV_Out
|
||||
|
||||
static PDBCONV_Out *pdbconv_convert(Arena *arena, PDBCONV_Params *params);
|
||||
|
||||
#endif //RADDBG_FROM_PDB_H
|
||||
#endif // RADDBGI_FROM_PDB_H
|
||||
|
||||
@@ -55,7 +55,7 @@ main(int argc, char **argv){
|
||||
String8List args = os_string_list_from_argcv(arena, argc, argv);
|
||||
CmdLine cmdline = cmd_line_from_string_list(arena, args);
|
||||
|
||||
ProfBeginCapture("raddbg_from_pdb");
|
||||
ProfBeginCapture("raddbgi_from_pdb");
|
||||
|
||||
//- rjf: parse arguments
|
||||
PDBCONV_Params *params = pdb_convert_params_from_cmd_line(arena, &cmdline);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#ifndef RADDBG_MSF_H
|
||||
#define RADDBG_MSF_H
|
||||
#ifndef RADDBGI_MSF_H
|
||||
#define RADDBGI_MSF_H
|
||||
|
||||
////////////////////////////////
|
||||
//~ MSF Format Types
|
||||
@@ -57,4 +57,4 @@ typedef struct MSF_Parsed{
|
||||
static MSF_Parsed* msf_parsed_from_data(Arena *arena, String8 msf_data);
|
||||
static String8 msf_data_from_stream(MSF_Parsed *msf, MSF_StreamNumber sn);
|
||||
|
||||
#endif //RADDBG_MSF_H
|
||||
#endif //RADDBGI_MSF_H
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#ifndef RADDBG_PDB_H
|
||||
#define RADDBG_PDB_H
|
||||
#ifndef RADDBGI_PDB_H
|
||||
#define RADDBGI_PDB_H
|
||||
|
||||
// https://github.com/microsoft/microsoft-pdb/tree/master/PDB
|
||||
|
||||
@@ -459,4 +459,4 @@ static String8 pdb_strtbl_string_from_off(PDB_Strtbl *strtbl, U32 o
|
||||
static String8 pdb_strtbl_string_from_index(PDB_Strtbl *strtbl,
|
||||
PDB_StringIndex idx);
|
||||
|
||||
#endif //RADDBG_PDB_H
|
||||
#endif //RADDBGI_PDB_H
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#ifndef RADDBG_PDB_STRINGIZE_H
|
||||
#define RADDBG_PDB_STRINGIZE_H
|
||||
#ifndef RADDBGI_PDB_STRINGIZE_H
|
||||
#define RADDBGI_PDB_STRINGIZE_H
|
||||
|
||||
////////////////////////////////
|
||||
//~ PDB Stringize Functions
|
||||
|
||||
static void pdb_stringize_tpi_hash(Arena *arena, String8List *out, PDB_TpiHashParsed *hash);
|
||||
|
||||
#endif //RADDBG_PDB_STRINGIZE_H
|
||||
#endif //RADDBGI_PDB_STRINGIZE_H
|
||||
|
||||
Reference in New Issue
Block a user