mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-05 13:28:40 +00:00
printer for S_LABEL
This commit is contained in:
@@ -1,6 +1,12 @@
|
|||||||
// Copyright (c) 2024 Epic Games Tools
|
// Copyright (c) 2024 Epic Games Tools
|
||||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||||
|
|
||||||
|
internal String8
|
||||||
|
cv_string_from_unknown_value(Arena *arena, U32 x)
|
||||||
|
{
|
||||||
|
return push_str8f(arena, "%#x", x);
|
||||||
|
}
|
||||||
|
|
||||||
internal String8
|
internal String8
|
||||||
cv_string_from_type_index_source(CV_TypeIndexSource ti_source)
|
cv_string_from_type_index_source(CV_TypeIndexSource ti_source)
|
||||||
{
|
{
|
||||||
@@ -307,6 +313,16 @@ cv_string_from_c13_checksum_kind(CV_C13ChecksumKind x)
|
|||||||
return str8_zero();
|
return str8_zero();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal String8
|
||||||
|
cv_string_from_label_kind(Arena *arena, CV_LabelKind x)
|
||||||
|
{
|
||||||
|
switch (x) {
|
||||||
|
case CV_LabelKind_Near: return str8_lit("Near");
|
||||||
|
case CV_LabelKind_Far: return str8_lit("Far");
|
||||||
|
}
|
||||||
|
return cv_string_from_unknown_value(arena, x);
|
||||||
|
}
|
||||||
|
|
||||||
internal String8
|
internal String8
|
||||||
cv_string_from_c13_subsection_kind(CV_C13SubSectionKind x)
|
cv_string_from_c13_subsection_kind(CV_C13SubSectionKind x)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ internal String8 cv_string_from_member_pointer_kind(CV_MemberPointerKind x);
|
|||||||
internal String8 cv_string_from_pointer_kind(CV_PointerKind x);
|
internal String8 cv_string_from_pointer_kind(CV_PointerKind x);
|
||||||
internal String8 cv_string_from_pointer_mode(CV_PointerMode x);
|
internal String8 cv_string_from_pointer_mode(CV_PointerMode x);
|
||||||
internal String8 cv_string_from_c13_checksum_kind(CV_C13ChecksumKind x);
|
internal String8 cv_string_from_c13_checksum_kind(CV_C13ChecksumKind x);
|
||||||
|
internal String8 cv_string_from_label_kind(Arena *arena, CV_LabelKind x);
|
||||||
internal String8 cv_string_from_c13_subsection_kind(CV_C13SubSectionKind x);
|
internal String8 cv_string_from_c13_subsection_kind(CV_C13SubSectionKind x);
|
||||||
internal String8 cv_string_from_modifier_flags(Arena *arena, CV_ModifierFlags x);
|
internal String8 cv_string_from_modifier_flags(Arena *arena, CV_ModifierFlags x);
|
||||||
internal String8 cv_string_from_pointer_attribs(Arena *arena, CV_PointerAttribs x);
|
internal String8 cv_string_from_pointer_attribs(Arena *arena, CV_PointerAttribs x);
|
||||||
|
|||||||
+12
-3
@@ -4084,7 +4084,7 @@ cv_print_leaf(Arena *arena, String8List *out, String8 indent, CV_TypeIndex min_i
|
|||||||
} break;
|
} break;
|
||||||
case CV_LeafKind_MEMBER_ST:
|
case CV_LeafKind_MEMBER_ST:
|
||||||
case CV_LeafKind_MEMBER: {
|
case CV_LeafKind_MEMBER: {
|
||||||
CV_LeafMember lf = {0};
|
CV_LeafMember lf = {0};
|
||||||
CV_NumericParsed num = {0};
|
CV_NumericParsed num = {0};
|
||||||
String8 name = {0};
|
String8 name = {0};
|
||||||
cursor += str8_deserial_read_struct(raw_leaf, cursor, &lf);
|
cursor += str8_deserial_read_struct(raw_leaf, cursor, &lf);
|
||||||
@@ -4096,6 +4096,17 @@ cv_print_leaf(Arena *arena, String8List *out, String8 indent, CV_TypeIndex min_i
|
|||||||
rd_printf("Type: %S", cv_string_from_itype(scratch.arena, min_itype, lf.itype));
|
rd_printf("Type: %S", cv_string_from_itype(scratch.arena, min_itype, lf.itype));
|
||||||
rd_printf("Offset: %S", cv_string_from_numeric(scratch.arena, num));
|
rd_printf("Offset: %S", cv_string_from_numeric(scratch.arena, num));
|
||||||
} break;
|
} break;
|
||||||
|
case CV_LeafKind_LABEL: {
|
||||||
|
CV_LeafLabel lf = {0};
|
||||||
|
cursor += str8_deserial_read_struct(raw_leaf, cursor, &lf);
|
||||||
|
|
||||||
|
rd_printf("Kind: %S", cv_string_from_label_kind(scratch.arena, lf.kind));
|
||||||
|
} break;
|
||||||
|
case CV_LeafKind_ENDPRECOMP: {
|
||||||
|
CV_LeafEndPreComp lf = {0};
|
||||||
|
cursor += str8_deserial_read_struct(raw_leaf, cursor, &lf);
|
||||||
|
rd_printf("Sig: %#x", lf.sig);
|
||||||
|
} break;
|
||||||
// 16bit
|
// 16bit
|
||||||
case CV_LeafKind_OEM_16t:
|
case CV_LeafKind_OEM_16t:
|
||||||
case CV_LeafKind_MODIFIER_16t:
|
case CV_LeafKind_MODIFIER_16t:
|
||||||
@@ -4145,8 +4156,6 @@ cv_print_leaf(Arena *arena, String8List *out, String8 indent, CV_TypeIndex min_i
|
|||||||
// Manged
|
// Manged
|
||||||
case CV_LeafKind_MANAGED_ST:
|
case CV_LeafKind_MANAGED_ST:
|
||||||
// undefined
|
// undefined
|
||||||
case CV_LeafKind_LABEL:
|
|
||||||
case CV_LeafKind_ENDPRECOMP:
|
|
||||||
case CV_LeafKind_LIST:
|
case CV_LeafKind_LIST:
|
||||||
case CV_LeafKind_REFSYM:
|
case CV_LeafKind_REFSYM:
|
||||||
case CV_LeafKind_BARRAY:
|
case CV_LeafKind_BARRAY:
|
||||||
|
|||||||
Reference in New Issue
Block a user