mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-06 05:48:40 +00:00
minor fixes and renames in DWARF enums
This commit is contained in:
+82
-56
@@ -119,6 +119,20 @@ typedef enum DW_LanguageEnum
|
|||||||
DW_Language_UserHi = 0xffff,
|
DW_Language_UserHi = 0xffff,
|
||||||
} DW_LanguageEnum;
|
} DW_LanguageEnum;
|
||||||
|
|
||||||
|
#define DW_Inl_XList(X) \
|
||||||
|
X(NotInlined, 0) \
|
||||||
|
X(Inlined, 1) \
|
||||||
|
X(DeclaredNotInlined, 2) \
|
||||||
|
X(DeclaredInlined, 3)
|
||||||
|
|
||||||
|
typedef U32 DW_InlKind;
|
||||||
|
typedef enum DW_InlKindEnum
|
||||||
|
{
|
||||||
|
#define X(_N,_ID) DW_Inl_##_N = _ID,
|
||||||
|
DW_Inl_XList(X)
|
||||||
|
#undef X
|
||||||
|
} DW_InlKindEnum;
|
||||||
|
|
||||||
#define DW_StdOpcode_XList(X) \
|
#define DW_StdOpcode_XList(X) \
|
||||||
X(ExtendedOpcode, 0x00) \
|
X(ExtendedOpcode, 0x00) \
|
||||||
X(Copy, 0x01) \
|
X(Copy, 0x01) \
|
||||||
@@ -250,6 +264,7 @@ typedef enum DW_NameCase
|
|||||||
typedef U64 DW_TagKind;
|
typedef U64 DW_TagKind;
|
||||||
typedef enum DW_TagKindEnum
|
typedef enum DW_TagKindEnum
|
||||||
{
|
{
|
||||||
|
DW_Tag_Null,
|
||||||
#define X(_N,_ID) DW_Tag_##_N = _ID,
|
#define X(_N,_ID) DW_Tag_##_N = _ID,
|
||||||
DW_Tag_V3_XList(X)
|
DW_Tag_V3_XList(X)
|
||||||
DW_Tag_V5_XList(X)
|
DW_Tag_V5_XList(X)
|
||||||
@@ -1172,12 +1187,12 @@ typedef enum DW_AttribTypeEncodingKindEnum
|
|||||||
#undef X
|
#undef X
|
||||||
} DW_AttribTypeEncodingKindEnum;
|
} DW_AttribTypeEncodingKindEnum;
|
||||||
|
|
||||||
#define DW_CallingConventionKind_XList(X) \
|
#define DW_CallingConventionKind_XList(X) \
|
||||||
X(DW_CallingConvention_Normal, 0x0) \
|
X(Normal, 0x0) \
|
||||||
X(DW_CallingConvention_Program, 0x1) \
|
X(Program, 0x1) \
|
||||||
X(DW_CallingConvention_NoCall, 0x2) \
|
X(NoCall, 0x3) \
|
||||||
X(DW_CallingConvention_PassByValue, 0x1) \
|
X(PassByValue, 0x4) \
|
||||||
X(DW_CallingConvention_PassByReference, 0x2)
|
X(PassByReference, 0x5)
|
||||||
|
|
||||||
typedef U64 DW_CallingConventionKind;
|
typedef U64 DW_CallingConventionKind;
|
||||||
typedef enum DW_CallingConventionKindEnum
|
typedef enum DW_CallingConventionKindEnum
|
||||||
@@ -1188,9 +1203,9 @@ typedef enum DW_CallingConventionKindEnum
|
|||||||
} DW_CallingConventionKindEnum;
|
} DW_CallingConventionKindEnum;
|
||||||
|
|
||||||
#define DW_AccessKind_XList(X) \
|
#define DW_AccessKind_XList(X) \
|
||||||
X(DW_Access_Public, 0x00) \
|
X(Public, 0x00) \
|
||||||
X(DW_Access_Private, 0x01) \
|
X(Private, 0x01) \
|
||||||
X(DW_Access_Protected, 0x02)
|
X(Protected, 0x02)
|
||||||
|
|
||||||
typedef U64 DW_AccessKind;
|
typedef U64 DW_AccessKind;
|
||||||
typedef enum DW_AccessKindEnum
|
typedef enum DW_AccessKindEnum
|
||||||
@@ -1505,9 +1520,18 @@ enum
|
|||||||
X(Convert, 0xa8) \
|
X(Convert, 0xa8) \
|
||||||
X(ReInterpret, 0xa9)
|
X(ReInterpret, 0xa9)
|
||||||
|
|
||||||
#define DW_Expr_GNU_XList(X) \
|
#define DW_Expr_GNU_XList(X) \
|
||||||
X(GNU_PushTlsAddress, 0xe0) \
|
X(GNU_PushTlsAddress, 0xe0) \
|
||||||
X(GNU_UnInit, 0xf0)
|
X(GNU_UnInit, 0xf0) \
|
||||||
|
X(GNU_ImplicitPointer, 0xf2) \
|
||||||
|
X(GNU_EntryValue, 0xf3) \
|
||||||
|
X(GNU_ConstType, 0xf4) \
|
||||||
|
X(GNU_RegvalType, 0xf5) \
|
||||||
|
X(GNU_DerefType, 0xf6) \
|
||||||
|
X(GNU_Convert, 0xf7) \
|
||||||
|
X(GNU_AddrIndex, 0xfb) \
|
||||||
|
X(GNU_ConstIndex, 0xfc)
|
||||||
|
|
||||||
typedef U64 DW_ExprOp;
|
typedef U64 DW_ExprOp;
|
||||||
typedef enum DW_ExprOpEnum
|
typedef enum DW_ExprOpEnum
|
||||||
{
|
{
|
||||||
@@ -1541,22 +1565,22 @@ typedef enum DW_ExprOpEnum
|
|||||||
X(St5, 16, st5, 0, 10) \
|
X(St5, 16, st5, 0, 10) \
|
||||||
X(St6, 17, st6, 0, 10) \
|
X(St6, 17, st6, 0, 10) \
|
||||||
X(St7, 18, st7, 0, 10) \
|
X(St7, 18, st7, 0, 10) \
|
||||||
X(Xmm0, 21, xmm0, 0, 16) \
|
X(Xmm0, 21, ymm0, 0, 16) \
|
||||||
X(Xmm1, 22, xmm1, 0, 16) \
|
X(Xmm1, 22, ymm1, 0, 16) \
|
||||||
X(Xmm2, 23, xmm2, 0, 16) \
|
X(Xmm2, 23, ymm2, 0, 16) \
|
||||||
X(Xmm3, 24, xmm3, 0, 16) \
|
X(Xmm3, 24, ymm3, 0, 16) \
|
||||||
X(Xmm4, 25, xmm4, 0, 16) \
|
X(Xmm4, 25, ymm4, 0, 16) \
|
||||||
X(Xmm5, 26, xmm5, 0, 16) \
|
X(Xmm5, 26, ymm5, 0, 16) \
|
||||||
X(Xmm6, 27, xmm6, 0, 16) \
|
X(Xmm6, 27, ymm6, 0, 16) \
|
||||||
X(Xmm7, 28, xmm7, 0, 16) \
|
X(Xmm7, 28, ymm7, 0, 16) \
|
||||||
X(Mm0, 29, mm0, 0, 4) \
|
X(Mm0, 29, fpr0, 0, 8) \
|
||||||
X(Mm1, 30, mm1, 0, 4) \
|
X(Mm1, 30, fpr1, 0, 8) \
|
||||||
X(Mm2, 31, mm2, 0, 4) \
|
X(Mm2, 31, fpr2, 0, 8) \
|
||||||
X(Mm3, 32, mm3, 0, 4) \
|
X(Mm3, 32, fpr3, 0, 8) \
|
||||||
X(Mm4, 33, mm4, 0, 4) \
|
X(Mm4, 33, fpr4, 0, 8) \
|
||||||
X(Mm5, 34, mm5, 0, 4) \
|
X(Mm5, 34, fpr5, 0, 8) \
|
||||||
X(Mm6, 35, mm6, 0, 4) \
|
X(Mm6, 35, fpr6, 0, 8) \
|
||||||
X(Mm7, 36, mm7, 0, 4) \
|
X(Mm7, 36, fpr7, 0, 8) \
|
||||||
X(Fcw, 37, fcw, 0, 2) \
|
X(Fcw, 37, fcw, 0, 2) \
|
||||||
X(Fsw, 38, fsw, 0, 2) \
|
X(Fsw, 38, fsw, 0, 2) \
|
||||||
X(Mxcsr, 39, mxcsr, 0, 4) \
|
X(Mxcsr, 39, mxcsr, 0, 4) \
|
||||||
@@ -1587,22 +1611,22 @@ typedef enum DW_ExprOpEnum
|
|||||||
X(R14, 14, r14, 0, 8) \
|
X(R14, 14, r14, 0, 8) \
|
||||||
X(R15, 15, r15, 0, 8) \
|
X(R15, 15, r15, 0, 8) \
|
||||||
X(Rip, 16, rip, 0, 8) \
|
X(Rip, 16, rip, 0, 8) \
|
||||||
X(Xmm0, 17, ymm0, 0, 16) \
|
X(Xmm0, 17, zmm0, 0, 16) \
|
||||||
X(Xmm1, 18, ymm1, 0, 16) \
|
X(Xmm1, 18, zmm1, 0, 16) \
|
||||||
X(Xmm2, 19, ymm2, 0, 16) \
|
X(Xmm2, 19, zmm2, 0, 16) \
|
||||||
X(Xmm3, 20, ymm3, 0, 16) \
|
X(Xmm3, 20, zmm3, 0, 16) \
|
||||||
X(Xmm4, 21, ymm4, 0, 16) \
|
X(Xmm4, 21, zmm4, 0, 16) \
|
||||||
X(Xmm5, 22, ymm5, 0, 16) \
|
X(Xmm5, 22, zmm5, 0, 16) \
|
||||||
X(Xmm6, 23, ymm6, 0, 16) \
|
X(Xmm6, 23, zmm6, 0, 16) \
|
||||||
X(Xmm7, 24, ymm7, 0, 16) \
|
X(Xmm7, 24, zmm7, 0, 16) \
|
||||||
X(Xmm8, 25, ymm8, 0, 16) \
|
X(Xmm8, 25, zmm8, 0, 16) \
|
||||||
X(Xmm9, 26, ymm9, 0, 16) \
|
X(Xmm9, 26, zmm9, 0, 16) \
|
||||||
X(Xmm10, 27, ymm10, 0, 16) \
|
X(Xmm10, 27, zmm10, 0, 16) \
|
||||||
X(Xmm11, 28, ymm11, 0, 16) \
|
X(Xmm11, 28, zmm11, 0, 16) \
|
||||||
X(Xmm12, 29, ymm12, 0, 16) \
|
X(Xmm12, 29, zmm12, 0, 16) \
|
||||||
X(Xmm13, 30, ymm13, 0, 16) \
|
X(Xmm13, 30, zmm13, 0, 16) \
|
||||||
X(Xmm14, 31, ymm14, 0, 16) \
|
X(Xmm14, 31, zmm14, 0, 16) \
|
||||||
X(Xmm15, 32, ymm15, 0, 16) \
|
X(Xmm15, 32, zmm15, 0, 16) \
|
||||||
X(St0, 33, st0, 0, 10) \
|
X(St0, 33, st0, 0, 10) \
|
||||||
X(St1, 34, st1, 0, 10) \
|
X(St1, 34, st1, 0, 10) \
|
||||||
X(St2, 35, st2, 0, 10) \
|
X(St2, 35, st2, 0, 10) \
|
||||||
@@ -1611,14 +1635,14 @@ typedef enum DW_ExprOpEnum
|
|||||||
X(St5, 38, st5, 0, 10) \
|
X(St5, 38, st5, 0, 10) \
|
||||||
X(St6, 39, st6, 0, 10) \
|
X(St6, 39, st6, 0, 10) \
|
||||||
X(St7, 40, st7, 0, 10) \
|
X(St7, 40, st7, 0, 10) \
|
||||||
X(Mm0, 41, mm0, 0, 8) \
|
X(Mm0, 41, fpr0, 0, 8) \
|
||||||
X(Mm1, 42, mm1, 0, 8) \
|
X(Mm1, 42, fpr1, 0, 8) \
|
||||||
X(Mm2, 43, mm2, 0, 8) \
|
X(Mm2, 43, fpr2, 0, 8) \
|
||||||
X(Mm3, 44, mm3, 0, 8) \
|
X(Mm3, 44, fpr3, 0, 8) \
|
||||||
X(Mm4, 45, mm4, 0, 8) \
|
X(Mm4, 45, fpr4, 0, 8) \
|
||||||
X(Mm5, 46, mm5, 0, 8) \
|
X(Mm5, 46, fpr5, 0, 8) \
|
||||||
X(Mm6, 47, mm6, 0, 8) \
|
X(Mm6, 47, fpr6, 0, 8) \
|
||||||
X(Mm7, 48, mm7, 0, 8) \
|
X(Mm7, 48, fpr7, 0, 8) \
|
||||||
X(Rflags, 49, rflags, 0, 4) \
|
X(Rflags, 49, rflags, 0, 4) \
|
||||||
X(Es, 50, es, 0, 2) \
|
X(Es, 50, es, 0, 2) \
|
||||||
X(Cs, 51, cs, 0, 2) \
|
X(Cs, 51, cs, 0, 2) \
|
||||||
@@ -1631,18 +1655,20 @@ typedef enum DW_ExprOpEnum
|
|||||||
X(Tr, 62, nil, 0, 0) \
|
X(Tr, 62, nil, 0, 0) \
|
||||||
X(Ldtr, 63, nil, 0, 0)
|
X(Ldtr, 63, nil, 0, 0)
|
||||||
|
|
||||||
typedef U32 DW_RegX86;
|
typedef U32 DW_Reg;
|
||||||
|
|
||||||
|
typedef DW_Reg DW_RegX86;
|
||||||
typedef enum DW_RegX86Enum
|
typedef enum DW_RegX86Enum
|
||||||
{
|
{
|
||||||
#define X(_N,_ID,...) DW_Reg_x86_##_N = _ID,
|
#define X(_N,_ID,...) DW_RegX86_##_N = _ID,
|
||||||
DW_Regs_X86_XList(X)
|
DW_Regs_X86_XList(X)
|
||||||
#undef X
|
#undef X
|
||||||
} DW_RegX86Enum;
|
} DW_RegX86Enum;
|
||||||
|
|
||||||
typedef U32 DW_RegX64;
|
typedef DW_Reg DW_RegX64;
|
||||||
typedef enum DW_RegX64Enum
|
typedef enum DW_RegX64Enum
|
||||||
{
|
{
|
||||||
#define X(_N,_ID,...) DW_Reg_x64_##_N = _ID,
|
#define X(_N,_ID,...) DW_RegX64_##_N = _ID,
|
||||||
DW_Regs_X64_XList(X)
|
DW_Regs_X64_XList(X)
|
||||||
#undef X
|
#undef X
|
||||||
} DW_RegX64Enum;
|
} DW_RegX64Enum;
|
||||||
|
|||||||
+52
-3
@@ -12,7 +12,11 @@ dw_string_from_expr_op(Arena *arena, DW_Version ver, DW_Ext ext, DW_ExprOp op)
|
|||||||
case DW_Ext_LLVM: break;
|
case DW_Ext_LLVM: break;
|
||||||
case DW_Ext_APPLE: break;
|
case DW_Ext_APPLE: break;
|
||||||
case DW_Ext_MIPS: break;
|
case DW_Ext_MIPS: break;
|
||||||
case DW_Ext_GNU: DW_Expr_GNU_XList(X); break;
|
case DW_Ext_GNU: {
|
||||||
|
switch (op) {
|
||||||
|
DW_Expr_GNU_XList(X);
|
||||||
|
}
|
||||||
|
} break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (ver) {
|
switch (ver) {
|
||||||
@@ -48,6 +52,7 @@ internal String8
|
|||||||
dw_string_from_tag_kind(Arena *arena, DW_TagKind kind)
|
dw_string_from_tag_kind(Arena *arena, DW_TagKind kind)
|
||||||
{
|
{
|
||||||
switch (kind) {
|
switch (kind) {
|
||||||
|
case DW_Tag_Null: return str8_lit("Null");
|
||||||
#define X(_N,_ID) case DW_Tag_##_N: return str8_lit(Stringify(_N));
|
#define X(_N,_ID) case DW_Tag_##_N: return str8_lit(Stringify(_N));
|
||||||
DW_Tag_V3_XList(X)
|
DW_Tag_V3_XList(X)
|
||||||
DW_Tag_V5_XList(X)
|
DW_Tag_V5_XList(X)
|
||||||
@@ -149,6 +154,50 @@ dw_string_from_language(Arena *arena, DW_Language kind)
|
|||||||
return push_str8f(arena, "%x", kind);
|
return push_str8f(arena, "%x", kind);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal String8
|
||||||
|
dw_string_from_inl(Arena *arena, DW_InlKind kind)
|
||||||
|
{
|
||||||
|
switch (kind) {
|
||||||
|
#define X(_N,_ID) case _ID: return str8_lit(Stringify(_N));
|
||||||
|
DW_Inl_XList(X)
|
||||||
|
#undef X
|
||||||
|
}
|
||||||
|
return push_str8f(arena, "%x", kind);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal String8
|
||||||
|
dw_string_from_access_kind(Arena *arena, DW_AccessKind kind)
|
||||||
|
{
|
||||||
|
switch (kind) {
|
||||||
|
#define X(_N,_ID) case _ID: return str8_lit(Stringify(_N));
|
||||||
|
DW_AccessKind_XList(X)
|
||||||
|
#undef X
|
||||||
|
}
|
||||||
|
return push_str8f(arena, "%llx", kind);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal String8
|
||||||
|
dw_string_from_calling_convetion(Arena *arena, DW_CallingConventionKind kind)
|
||||||
|
{
|
||||||
|
switch (kind) {
|
||||||
|
#define X(_N,_ID) case _ID: return str8_lit(Stringify(_N));
|
||||||
|
DW_CallingConventionKind_XList(X)
|
||||||
|
#undef X
|
||||||
|
}
|
||||||
|
return push_str8f(arena, "%llx", kind);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal String8
|
||||||
|
dw_string_from_attrib_type_encoding(Arena *arena, DW_AttribTypeEncodingKind kind)
|
||||||
|
{
|
||||||
|
switch (kind) {
|
||||||
|
#define X(_N,_ID) case _ID: return str8_lit(Stringify(_N));
|
||||||
|
DW_AttribTypeEncodingKind_XList(X)
|
||||||
|
#undef X
|
||||||
|
}
|
||||||
|
return push_str8f(arena, "%llx", kind);
|
||||||
|
}
|
||||||
|
|
||||||
internal String8
|
internal String8
|
||||||
dw_string_from_std_opcode(Arena *arena, DW_StdOpcode kind)
|
dw_string_from_std_opcode(Arena *arena, DW_StdOpcode kind)
|
||||||
{
|
{
|
||||||
@@ -201,14 +250,14 @@ dw_string_from_register(Arena *arena, Arch arch, U64 reg_id)
|
|||||||
case Arch_Null: break;
|
case Arch_Null: break;
|
||||||
case Arch_x86: {
|
case Arch_x86: {
|
||||||
switch (reg_id) {
|
switch (reg_id) {
|
||||||
#define X(_N, _ID, ...) case DW_Reg_x86_##_N: reg_str = str8_lit(Stringify(_ID)); break;
|
#define X(_N, _ID, ...) case DW_RegX86_##_N: reg_str = str8_lit(Stringify(_N)); break;
|
||||||
DW_Regs_X86_XList(X)
|
DW_Regs_X86_XList(X)
|
||||||
#undef X
|
#undef X
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case Arch_x64: {
|
case Arch_x64: {
|
||||||
switch (reg_id) {
|
switch (reg_id) {
|
||||||
#define X(_N, _ID, ...) case DW_Reg_x64_##_N: reg_str = str8_lit(Stringify(_ID)); break;
|
#define X(_N, _ID, ...) case DW_RegX64_##_N: reg_str = str8_lit(Stringify(_N)); break;
|
||||||
DW_Regs_X64_XList(X)
|
DW_Regs_X64_XList(X)
|
||||||
#undef X
|
#undef X
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ internal String8 dw_string_from_expr_op(Arena *arena, DW_Version ver, DW_Ext ext
|
|||||||
internal String8 dw_string_from_tag_kind(Arena *arena, DW_TagKind kind);
|
internal String8 dw_string_from_tag_kind(Arena *arena, DW_TagKind kind);
|
||||||
internal String8 dw_string_from_attrib_kind(Arena *arena, DW_Version ver, DW_Ext ext, DW_AttribKind kind);
|
internal String8 dw_string_from_attrib_kind(Arena *arena, DW_Version ver, DW_Ext ext, DW_AttribKind kind);
|
||||||
internal String8 dw_string_from_form_kind(Arena *arena, DW_Version ver, DW_FormKind kind);
|
internal String8 dw_string_from_form_kind(Arena *arena, DW_Version ver, DW_FormKind kind);
|
||||||
|
internal String8 dw_string_access_kind(Arena *arena, DW_AccessKind kind);
|
||||||
|
|
||||||
//internal String8 dw_string_from_register(Arena *arena, Arch arch, U64 reg_id);
|
//internal String8 dw_string_from_register(Arena *arena, Arch arch, U64 reg_id);
|
||||||
|
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ dw_unwind_x64__apply_frame_rules(String8 raw_eh_frame,
|
|||||||
|
|
||||||
// is this a roll-over CFA?
|
// is this a roll-over CFA?
|
||||||
B32 is_roll_over_cfa = 0;
|
B32 is_roll_over_cfa = 0;
|
||||||
if (reg_idx == DW_Reg_x64_Rsp) {
|
if (reg_idx == DW_RegX64_Rsp) {
|
||||||
DW_CFIRegisterRule rule = row->cells[reg_idx].rule;
|
DW_CFIRegisterRule rule = row->cells[reg_idx].rule;
|
||||||
if (rule == DW_CFIRegisterRule_Undefined || rule == DW_CFIRegisterRule_SameValue) {
|
if (rule == DW_CFIRegisterRule_Undefined || rule == DW_CFIRegisterRule_SameValue) {
|
||||||
is_roll_over_cfa = 1;
|
is_roll_over_cfa = 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user