mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-07-27 09:50:10 +00:00
consistency pass over dwarf layer
This commit is contained in:
+14
-14
@@ -4934,29 +4934,29 @@ elf_print_dwarf_expressions(Arena *arena, String8List *out, String8 indent, Stri
|
||||
SLLStackPush(tag_stack, n);
|
||||
}
|
||||
|
||||
if (tag.kind == DW_Tag_Null) {
|
||||
if (tag.kind == DW_TagKind_Null) {
|
||||
if (tag_stack) {
|
||||
struct TagNode *n = tag_stack;
|
||||
if ((n->tag.kind == DW_Tag_SubProgram || n->tag.kind == DW_Tag_LexicalBlock)) {
|
||||
if ((n->tag.kind == DW_TagKind_SubProgram || n->tag.kind == DW_TagKind_LexicalBlock)) {
|
||||
Assert(lexical_block_depth > 0);
|
||||
--lexical_block_depth;
|
||||
}
|
||||
SLLStackPop(tag_stack);
|
||||
SLLStackPush(free_tags, n);
|
||||
}
|
||||
} else if (tag.kind == DW_Tag_LexicalBlock || tag.kind == DW_Tag_SubProgram) {
|
||||
} else if (tag.kind == DW_TagKind_LexicalBlock || tag.kind == DW_TagKind_SubProgram) {
|
||||
++lexical_block_depth;
|
||||
if (tag.kind == DW_Tag_SubProgram) {
|
||||
String8 expr = dw_exprloc_from_attrib(&dwarf_input, &cu, tag, DW_Attrib_FrameBase);
|
||||
if (tag.kind == DW_TagKind_SubProgram) {
|
||||
String8 expr = dw_exprloc_from_attrib(&dwarf_input, &cu, tag, DW_AttribKind_FrameBase);
|
||||
if (expr.size > 0) {
|
||||
String8 expr_str = dw_format_expression_single_line(comp_temp.arena, expr, cu_base, cu.address_size, arch, cu.version, cu.ext, cu.format);
|
||||
}
|
||||
}
|
||||
} else if (tag.kind == DW_Tag_Variable || tag.kind == DW_Tag_FormalParameter) {
|
||||
} else if (tag.kind == DW_Tag_VariaKindble || tag.kind == DW_Tag_FormalParameter) {
|
||||
#if 0
|
||||
local_persist B32 is_global_var = 0;
|
||||
String8 name = dw_string_from_attrib(&dwarf_input, &cu, tag, DW_Attrib_Name);
|
||||
DW_Attrib *location_attrib = dw_attrib_from_tag(&dwarf_input, &cu, tag, DW_Attrib_Location);
|
||||
String8 name = dw_string_from_attrib(&dwarf_input, &cu, tag, DW_AttribKind_Name);
|
||||
DW_Attrib *location_attrib = dw_attrib_from_tag(&dwarf_input, &cu, tag, DW_AttribKind_Location);
|
||||
DW_AttribClass value_class = dw_value_class_from_attrib(&cu, location_attrib);
|
||||
if (value_class != DW_AttribClass_Null) {
|
||||
if (lexical_block_depth == 0) {
|
||||
@@ -4969,13 +4969,13 @@ elf_print_dwarf_expressions(Arena *arena, String8List *out, String8 indent, Stri
|
||||
|
||||
rd_indent();
|
||||
if (value_class == DW_AttribClass_LocListPtr || value_class == DW_AttribClass_LocList) {
|
||||
DW_LocList location = dw_loclist_from_attrib_ptr(comp_temp.arena, &dwarf_input, &cu, location_attrib);
|
||||
DW_LocList location = dw_loclist_from_attrib(comp_temp.arena, &dwarf_input, &cu, location_attrib);
|
||||
for (DW_LocNode *loc_n = location.first; loc_n != 0; loc_n = loc_n->next) {
|
||||
String8 expr_str = dw_format_expression_single_line(comp_temp.arena, loc_n->v.expr, cu_base, cu.address_size, arch, cu.version, cu.ext, cu.format);
|
||||
rd_printf("[%llx-%llx] %S", loc_n->v.range.min, loc_n->v.range.max, expr_str);
|
||||
}
|
||||
} else if (value_class == DW_AttribClass_ExprLoc) {
|
||||
String8 expr = dw_exprloc_from_attrib_ptr(&dwarf_input, &cu, location_attrib);
|
||||
String8 expr = dw_exprloc_from_attrib(&dwarf_input, &cu, location_attrib);
|
||||
String8 expr_str = dw_format_expression_single_line(comp_temp.arena, expr, cu_base, cu.address_size, arch, cu.version, cu.ext, cu.format);
|
||||
rd_printf("%S", expr_str);
|
||||
}
|
||||
@@ -4985,11 +4985,11 @@ elf_print_dwarf_expressions(Arena *arena, String8List *out, String8 indent, Stri
|
||||
}
|
||||
|
||||
#if 0
|
||||
if (tag.kind == DW_Tag_LexicalBlock || tag.kind == DW_Tag_CompileUnit || tag.kind == DW_Tag_InlinedSubroutine || tag.kind == DW_Tag_SubProgram) {
|
||||
if (tag.kind == DW_TagKind_LexicalBlock || tag.kind == DW_TagKind_CompileUnit || tag.kind == DW_TagKind_InlinedSubroutine || tag.kind == DW_TagKind_SubProgram) {
|
||||
Temp temp = temp_begin(comp_temp.arena);
|
||||
DW_Attrib *ranges_attrib = dw_attrib_from_tag(&dwarf_input, &cu, tag, DW_Attrib_Ranges);
|
||||
if (ranges_attrib->attrib_kind == DW_Attrib_Ranges) {
|
||||
Rng1U64List ranges = dw_rnglist_from_attrib_ptr(temp.arena, &dwarf_input, &cu, ranges_attrib);
|
||||
DW_Attrib *ranges_attrib = dw_attrib_from_tag(&dwarf_input, &cu, tag, DW_AttribKind_Ranges);
|
||||
if (ranges_attrib->attrib_kind == DW_AttribKind_Ranges) {
|
||||
Rng1U64List ranges = dw_rnglist_from_attrib(temp.arena, &dwarf_input, &cu, ranges_attrib);
|
||||
}
|
||||
temp_end(temp);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user