diff --git a/src/dwarf/dwarf.c b/src/dwarf/dwarf.c index e8179a53..b11d7e60 100644 --- a/src/dwarf/dwarf.c +++ b/src/dwarf/dwarf.c @@ -724,6 +724,17 @@ dw_string_from_attrib_type_encoding(Arena *arena, DW_ATE kind) return push_str8f(arena, "%llx", kind); } +internal String8 +dw_string_from_attrib_visibility(Arena *arena, DW_Vis vis) +{ + switch (vis) { +#define X(_N,_ID) case _ID: return str8_lit(Stringify(_N)); + DW_Vis_XList +#undef X + } + return push_str8f(arena, "%llx", vis); +} + internal String8 dw_string_from_std_opcode(Arena *arena, DW_StdOpcode kind) { diff --git a/src/dwarf/dwarf.h b/src/dwarf/dwarf.h index 8edf2366..f714ce40 100644 --- a/src/dwarf/dwarf.h +++ b/src/dwarf/dwarf.h @@ -1807,6 +1807,7 @@ internal String8 dw_string_from_inl(Arena *arena, DW_InlKind kind); internal String8 dw_string_from_access_kind(Arena *arena, DW_AccessKind kind); internal String8 dw_string_from_calling_convetion(Arena *arena, DW_CallingConventionKind kind); internal String8 dw_string_from_attrib_type_encoding(Arena *arena, DW_ATE kind); +internal String8 dw_string_from_attrib_visibility(Arena *arena, DW_Vis vis); internal String8 dw_string_from_std_opcode(Arena *arena, DW_StdOpcode kind); internal String8 dw_string_from_ext_opcode(Arena *arena, DW_ExtOpcode kind); internal String8 dw_string_from_loc_list_entry_kind(Arena *arena, DW_LLE kind); diff --git a/src/dwarf/dwarf_dump.c b/src/dwarf/dwarf_dump.c index b228f6df..95318987 100644 --- a/src/dwarf/dwarf_dump.c +++ b/src/dwarf/dwarf_dump.c @@ -756,6 +756,11 @@ dw_string_from_attrib_value(Arena *arena, DW_Input *input, Arch arch, DW_CompUni DW_ATE encoding = dw_const_u64_from_attrib(input, cu, attrib); enum_info = dw_string_from_attrib_type_encoding(scratch.arena, encoding); }break; + case DW_AttribKind_Visibility: + { + DW_Vis vis = dw_const_u64_from_attrib(input, cu, attrib); + enum_info = dw_string_from_attrib_visibility(scratch.arena, vis); + }break; } if(enum_info.size)