mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-06 05:48:40 +00:00
linker
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
internal String8
|
||||
rdi_string_from_name_map_kind(RDI_NameMapKind kind)
|
||||
{
|
||||
switch (kind) {
|
||||
case RDI_NameMapKind_NULL : return str8_lit("NULL");
|
||||
case RDI_NameMapKind_GlobalVariables : return str8_lit("GlobalVariables");
|
||||
case RDI_NameMapKind_ThreadVariables : return str8_lit("ThreadVariables");
|
||||
case RDI_NameMapKind_Procedures : return str8_lit("Procedures");
|
||||
case RDI_NameMapKind_Types : return str8_lit("Types");
|
||||
case RDI_NameMapKind_LinkNameProcedures: return str8_lit("LinkNameProcedures");
|
||||
case RDI_NameMapKind_NormalSourcePaths : return str8_lit("NormalSourcePaths");
|
||||
}
|
||||
return str8_lit("");
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
internal String8 rdi_string_from_name_map_kind(RDI_NameMapKind kind);
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,53 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
internal RDI_Arch
|
||||
rdi_arch_from_coff_machine(COFF_MachineType machine)
|
||||
{
|
||||
switch (machine) {
|
||||
case COFF_MachineType_X86: return RDI_Arch_X86;
|
||||
case COFF_MachineType_X64: return RDI_Arch_X64;
|
||||
|
||||
case COFF_MachineType_UNKNOWN:
|
||||
case COFF_MachineType_AM33:
|
||||
case COFF_MachineType_ARM:
|
||||
case COFF_MachineType_ARM64:
|
||||
case COFF_MachineType_ARMNT:
|
||||
case COFF_MachineType_EBC:
|
||||
case COFF_MachineType_IA64:
|
||||
case COFF_MachineType_M32R:
|
||||
case COFF_MachineType_MIPS16:
|
||||
case COFF_MachineType_MIPSFPU:
|
||||
case COFF_MachineType_MIPSFPU16:
|
||||
case COFF_MachineType_POWERPC:
|
||||
case COFF_MachineType_POWERPCFP:
|
||||
case COFF_MachineType_R4000:
|
||||
case COFF_MachineType_RISCV32:
|
||||
case COFF_MachineType_RISCV64:
|
||||
case COFF_MachineType_SH3:
|
||||
case COFF_MachineType_SH3DSP:
|
||||
case COFF_MachineType_SH4:
|
||||
case COFF_MachineType_SH5:
|
||||
case COFF_MachineType_THUMB:
|
||||
case COFF_MachineType_WCEMIPSV2:
|
||||
NotImplemented;
|
||||
default:
|
||||
return RDI_Arch_NULL;
|
||||
}
|
||||
}
|
||||
|
||||
internal RDI_BinarySectionFlags
|
||||
rdi_binary_section_flags_from_coff_section_flags(COFF_SectionFlags flags)
|
||||
{
|
||||
RDI_BinarySectionFlags result = 0;
|
||||
if (flags & COFF_SectionFlag_MEM_READ) {
|
||||
result |= RDI_BinarySectionFlag_Read;
|
||||
}
|
||||
if (flags & COFF_SectionFlag_MEM_WRITE) {
|
||||
result |= RDI_BinarySectionFlag_Write;
|
||||
}
|
||||
if (flags & COFF_SectionFlag_MEM_EXECUTE) {
|
||||
result |= RDI_BinarySectionFlag_Execute;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#pragma once
|
||||
|
||||
internal RDI_Arch rdi_arch_from_coff_machine(COFF_MachineType machine);
|
||||
|
||||
@@ -0,0 +1,244 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
internal RDI_Arch
|
||||
rdi_arch_from_cv_arch(CV_Arch arch)
|
||||
{
|
||||
switch (arch) {
|
||||
case CV_Arch_8086: return RDI_Arch_X86;
|
||||
case CV_Arch_X64: return RDI_Arch_X64;
|
||||
|
||||
case CV_Arch_8080:
|
||||
case CV_Arch_80286:
|
||||
case CV_Arch_80386:
|
||||
case CV_Arch_80486:
|
||||
case CV_Arch_PENTIUM:
|
||||
case CV_Arch_PENTIUMII:
|
||||
case CV_Arch_PENTIUMIII:
|
||||
case CV_Arch_MIPS:
|
||||
case CV_Arch_MIPS16:
|
||||
case CV_Arch_MIPS32:
|
||||
case CV_Arch_MIPS64:
|
||||
case CV_Arch_MIPSI:
|
||||
case CV_Arch_MIPSII:
|
||||
case CV_Arch_MIPSIII:
|
||||
case CV_Arch_MIPSIV:
|
||||
case CV_Arch_MIPSV:
|
||||
case CV_Arch_M68000:
|
||||
case CV_Arch_M68010:
|
||||
case CV_Arch_M68020:
|
||||
case CV_Arch_M68030:
|
||||
case CV_Arch_M68040:
|
||||
case CV_Arch_ALPHA:
|
||||
case CV_Arch_ALPHA_21164:
|
||||
case CV_Arch_ALPHA_21164A:
|
||||
case CV_Arch_ALPHA_21264:
|
||||
case CV_Arch_ALPHA_21364:
|
||||
case CV_Arch_PPC601:
|
||||
case CV_Arch_PPC603:
|
||||
case CV_Arch_PPC604:
|
||||
case CV_Arch_PPC620:
|
||||
case CV_Arch_PPCFP:
|
||||
case CV_Arch_PPCBE:
|
||||
case CV_Arch_SH3:
|
||||
case CV_Arch_SH3E:
|
||||
case CV_Arch_SH3DSP:
|
||||
case CV_Arch_SH4:
|
||||
case CV_Arch_SHMEDIA:
|
||||
case CV_Arch_ARM3:
|
||||
case CV_Arch_ARM4:
|
||||
case CV_Arch_ARM4T:
|
||||
case CV_Arch_ARM5:
|
||||
case CV_Arch_ARM5T:
|
||||
case CV_Arch_ARM6:
|
||||
case CV_Arch_ARM_XMAC:
|
||||
case CV_Arch_ARM_WMMX:
|
||||
case CV_Arch_ARM7:
|
||||
case CV_Arch_OMNI:
|
||||
case CV_Arch_IA64_1:
|
||||
case CV_Arch_IA64_2:
|
||||
case CV_Arch_CEE:
|
||||
case CV_Arch_AM33:
|
||||
case CV_Arch_M32R:
|
||||
case CV_Arch_TRICORE:
|
||||
case CV_Arch_EBC:
|
||||
case CV_Arch_THUMB:
|
||||
case CV_Arch_ARMNT:
|
||||
case CV_Arch_ARM64:
|
||||
case CV_Arch_D3D11_SHADER:
|
||||
NotImplemented;
|
||||
default:
|
||||
return RDI_Arch_NULL;
|
||||
}
|
||||
}
|
||||
|
||||
internal RDI_Language
|
||||
rdi_language_from_cv_language(CV_Language language)
|
||||
{
|
||||
switch (language) {
|
||||
case CV_Language_C: return RDI_Language_C;
|
||||
case CV_Language_CXX: return RDI_Language_CPlusPlus;
|
||||
case CV_Language_MASM: return RDI_Language_Masm;
|
||||
case CV_Language_LINK: return RDI_Language_NULL;
|
||||
case CV_Language_CVTRES: return RDI_Language_NULL;
|
||||
|
||||
case CV_Language_FORTRAN:
|
||||
case CV_Language_PASCAL:
|
||||
case CV_Language_BASIC:
|
||||
case CV_Language_COBOL:
|
||||
case CV_Language_CVTPGD:
|
||||
case CV_Language_CSHARP:
|
||||
case CV_Language_VB:
|
||||
case CV_Language_ILASM:
|
||||
case CV_Language_JAVA:
|
||||
case CV_Language_JSCRIPT:
|
||||
case CV_Language_MSIL:
|
||||
case CV_Language_HLSL:
|
||||
NotImplemented;
|
||||
default:
|
||||
return RDI_Language_NULL;
|
||||
}
|
||||
}
|
||||
|
||||
internal RDI_TypeModifierFlags
|
||||
rdi_type_modifier_flags_from_cv_modifier_flags(CV_ModifierFlags flags)
|
||||
{
|
||||
RDI_TypeModifierFlags result = 0;
|
||||
if (flags & CV_ModifierFlag_Const) {
|
||||
result |= RDI_TypeModifierFlag_Const;
|
||||
}
|
||||
if (flags & CV_ModifierFlag_Volatile) {
|
||||
result |= RDI_TypeModifierFlag_Volatile;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
internal RDI_TypeModifierFlags
|
||||
rdi_type_modifier_flags_from_cv_pointer_attribs(CV_PointerAttribs attribs)
|
||||
{
|
||||
RDI_TypeModifierFlags result = 0;
|
||||
if (attribs & CV_PointerAttrib_Const) {
|
||||
result |= RDI_TypeModifierFlag_Const;
|
||||
}
|
||||
if (attribs & CV_PointerAttrib_Volatile) {
|
||||
result |= RDI_TypeModifierFlag_Volatile;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
internal RDI_TypeKind
|
||||
rdi_type_kind_from_pointer(CV_PointerAttribs attribs, CV_PointerMode mode)
|
||||
{
|
||||
RDI_TypeKind result = RDI_TypeKind_Ptr;
|
||||
|
||||
if (attribs & CV_PointerAttrib_LRef) {
|
||||
result = RDI_TypeKind_LRef;
|
||||
} else if (attribs & CV_PointerAttrib_RRef) {
|
||||
result = RDI_TypeKind_RRef;
|
||||
}
|
||||
|
||||
if (mode == CV_PointerMode_LRef) {
|
||||
result = RDI_TypeKind_LRef;
|
||||
} else if (mode == CV_PointerMode_RRef) {
|
||||
result = RDI_TypeKind_RRef;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
internal RDI_TypeKind
|
||||
rdi_type_kind_from_cv_basic_type(CV_BasicType basic_type)
|
||||
{
|
||||
switch (basic_type) {
|
||||
case CV_BasicType_NOTYPE : return RDI_TypeKind_NULL;
|
||||
case CV_BasicType_ABS : return RDI_TypeKind_NULL;
|
||||
case CV_BasicType_SEGMENT : return RDI_TypeKind_NULL;
|
||||
case CV_BasicType_VOID : return RDI_TypeKind_Void;
|
||||
case CV_BasicType_CURRENCY : return RDI_TypeKind_NULL;
|
||||
case CV_BasicType_NBASICSTR : return RDI_TypeKind_NULL;
|
||||
case CV_BasicType_FBASICSTR : return RDI_TypeKind_NULL;
|
||||
case CV_BasicType_HRESULT : return RDI_TypeKind_Handle;
|
||||
case CV_BasicType_CHAR : return RDI_TypeKind_Char8;
|
||||
case CV_BasicType_SHORT : return RDI_TypeKind_S16;
|
||||
case CV_BasicType_LONG : return RDI_TypeKind_S32;
|
||||
case CV_BasicType_QUAD : return RDI_TypeKind_S64;
|
||||
case CV_BasicType_OCT : return RDI_TypeKind_S128;
|
||||
case CV_BasicType_UCHAR : return RDI_TypeKind_UChar8;
|
||||
case CV_BasicType_USHORT : return RDI_TypeKind_U16;
|
||||
case CV_BasicType_ULONG : return RDI_TypeKind_U32;
|
||||
case CV_BasicType_UQUAD : return RDI_TypeKind_U64;
|
||||
case CV_BasicType_UOCT : return RDI_TypeKind_U128;
|
||||
case CV_BasicType_BOOL8 : return RDI_TypeKind_S8;
|
||||
case CV_BasicType_BOOL16 : return RDI_TypeKind_S16;
|
||||
case CV_BasicType_BOOL32 : return RDI_TypeKind_S32;
|
||||
case CV_BasicType_BOOL64 : return RDI_TypeKind_S64;
|
||||
case CV_BasicType_FLOAT32 : return RDI_TypeKind_F32;
|
||||
case CV_BasicType_FLOAT64 : return RDI_TypeKind_F64;
|
||||
case CV_BasicType_FLOAT80 : return RDI_TypeKind_F80;
|
||||
case CV_BasicType_FLOAT128 : return RDI_TypeKind_F128;
|
||||
case CV_BasicType_FLOAT48 : return RDI_TypeKind_F48;
|
||||
case CV_BasicType_FLOAT32PP : return RDI_TypeKind_F32PP;
|
||||
case CV_BasicType_FLOAT16 : return RDI_TypeKind_F16;
|
||||
case CV_BasicType_COMPLEX32 : return RDI_TypeKind_ComplexF32;
|
||||
case CV_BasicType_COMPLEX64 : return RDI_TypeKind_ComplexF64;
|
||||
case CV_BasicType_COMPLEX80 : return RDI_TypeKind_ComplexF80;
|
||||
case CV_BasicType_COMPLEX128: return RDI_TypeKind_ComplexF128;
|
||||
case CV_BasicType_BIT : return RDI_TypeKind_NULL;
|
||||
case CV_BasicType_PASCHAR : return RDI_TypeKind_NULL;
|
||||
case CV_BasicType_BOOL32FF : return RDI_TypeKind_NULL;
|
||||
case CV_BasicType_INT8 : return RDI_TypeKind_S8;
|
||||
case CV_BasicType_UINT8 : return RDI_TypeKind_U8;
|
||||
case CV_BasicType_RCHAR : return RDI_TypeKind_Char8;
|
||||
case CV_BasicType_WCHAR : return RDI_TypeKind_UChar16;
|
||||
case CV_BasicType_CHAR16 : return RDI_TypeKind_Char16;
|
||||
case CV_BasicType_CHAR32 : return RDI_TypeKind_Char32;
|
||||
case CV_BasicType_INT16 : return RDI_TypeKind_S16;
|
||||
case CV_BasicType_UINT16 : return RDI_TypeKind_U16;
|
||||
case CV_BasicType_INT32 : return RDI_TypeKind_S32;
|
||||
case CV_BasicType_UINT32 : return RDI_TypeKind_U32;
|
||||
case CV_BasicType_INT64 : return RDI_TypeKind_S64;
|
||||
case CV_BasicType_UINT64 : return RDI_TypeKind_U64;
|
||||
case CV_BasicType_INT128 : return RDI_TypeKind_S128;
|
||||
case CV_BasicType_UINT128 : return RDI_TypeKind_U128;
|
||||
case CV_BasicType_CHAR8 : return RDI_TypeKind_Char8;
|
||||
case CV_BasicType_PTR : return RDI_TypeKind_Ptr;
|
||||
}
|
||||
return RDI_TypeKind_NULL;
|
||||
}
|
||||
|
||||
internal RDI_RegCode
|
||||
rdi_reg_code_from_cv(CV_Arch arch, CV_Reg reg)
|
||||
{
|
||||
RDI_RegCode result = 0;
|
||||
switch (arch) {
|
||||
case CV_Arch_8086: {
|
||||
switch (reg) {
|
||||
#define X(CVN,C,RDN,BP,BZ) case C: result = RDI_RegCodeX86_##RDN; break;
|
||||
CV_Reg_X86_XList(X)
|
||||
#undef X
|
||||
}
|
||||
} break;
|
||||
case CV_Arch_X64: {
|
||||
switch (reg) {
|
||||
#define X(CVN,C,RDN,BP,BZ) case C: result = RDI_RegCodeX64_##RDN; break;
|
||||
CV_Reg_X64_XList(X)
|
||||
#undef X
|
||||
}
|
||||
} break;
|
||||
default: NotImplemented;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
internal RDI_ChecksumKind
|
||||
rdi_checksum_from_cv_c13(CV_C13ChecksumKind kind)
|
||||
{
|
||||
switch (kind) {
|
||||
case CV_C13ChecksumKind_Null: return RDI_Checksum_Null;
|
||||
case CV_C13ChecksumKind_MD5: return RDI_Checksum_MD5;
|
||||
case CV_C13ChecksumKind_SHA1: return RDI_Checksum_SHA1;
|
||||
case CV_C13ChecksumKind_SHA256: return RDI_Checksum_SHA256;
|
||||
}
|
||||
InvalidPath;
|
||||
return RDI_Checksum_Null;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#pragma once
|
||||
|
||||
internal RDI_Arch rdi_arch_from_cv_arch(CV_Arch arch);
|
||||
internal RDI_Language rdi_language_from_cv_language(CV_Language language);
|
||||
internal RDI_TypeModifierFlags rdi_type_modifier_flags_from_cv_pointer_attribs(CV_PointerAttribs attribs);
|
||||
internal RDI_TypeKind rdi_type_kind_from_cv_basic_type(CV_BasicType basic_type);
|
||||
internal RDI_RegCode rdi_reg_code_from_cv(CV_Arch arch, CV_Reg reg);
|
||||
|
||||
internal RDI_ChecksumKind rdi_checksum_from_cv_c13(CV_C13ChecksumKind kind);
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
#pragma once
|
||||
|
||||
typedef U8 RDI_U8;
|
||||
typedef U16 RDI_U16;
|
||||
typedef U32 RDI_U32;
|
||||
typedef U64 RDI_U64;
|
||||
typedef S8 RDI_S8;
|
||||
typedef S16 RDI_S16;
|
||||
typedef S32 RDI_S32;
|
||||
typedef S64 RDI_S64;
|
||||
|
||||
#define RDI_PROC internal
|
||||
#define RDIM_MEMSET_OVERRIDE
|
||||
#define rdim_memset MemorySet
|
||||
|
||||
#define RDIM_MEMCPY_OVERRIDE
|
||||
#define rdim_memcpy MemoryCopy
|
||||
|
||||
#define rdim_vsnprintf raddbg_vsnprintf
|
||||
|
||||
Reference in New Issue
Block a user