diff --git a/src/symbol.cpp b/src/symbol.cpp index 93ed08a..52715d8 100644 --- a/src/symbol.cpp +++ b/src/symbol.cpp @@ -290,70 +290,3 @@ std::optional Symbol::find_global_var(Dwarf_Debug dbg, const std::strin return std::nullopt; } - -void Symbol::list_global_integer_vars(Dwarf_Debug dbg) { - Dwarf_Error err; - Dwarf_Unsigned cu_hdr_len, abbr_offset, next_cu_hdr; - Dwarf_Half ver_stamp, addr_sz; - Dwarf_Half length_size, extension_size; - Dwarf_Sig8 type_signature; - Dwarf_Unsigned typeoffset; - Dwarf_Half header_cu_type; - - std::cout << "Global integer variables:" << std::endl; - std::cout << std::string(50, '-') << std::endl; - - // Iterate through all compilation units - while (dwarf_next_cu_header_d(dbg, true, &cu_hdr_len, &ver_stamp, &abbr_offset, - &addr_sz, &length_size, &extension_size, - &type_signature, &typeoffset, &next_cu_hdr, - &header_cu_type, &err) == DW_DLV_OK) { - - Dwarf_Die cu_die = nullptr; - - // Get the compilation unit DIE - if (dwarf_siblingof_b(dbg, nullptr, true, &cu_die, &err) != DW_DLV_OK) - continue; - - // Get the first child DIE - Dwarf_Die child_die = nullptr; - if (dwarf_child(cu_die, &child_die, &err) != DW_DLV_OK) { - dwarf_dealloc(dbg, cu_die, DW_DLA_DIE); - continue; - } - - // Iterate through all child DIEs - while (child_die != nullptr) { - Dwarf_Half tag; - - if (dwarf_tag(child_die, &tag, &err) == DW_DLV_OK && tag == DW_TAG_variable) { - // Top-level variables are globals (excludes namespace/function-scoped vars) - // Check if it's an integer type - if (is_integer_type(dbg, child_die)) { - char *var_name = nullptr; - - if (dwarf_diename(child_die, &var_name, &err) == DW_DLV_OK && var_name) { - Dwarf_Addr addr = get_global_var_addr(dbg, child_die); - - std::cout << std::format("Variable: {:<30} Address: 0x{:x}", - var_name, addr) << std::endl; - - dwarf_dealloc(dbg, var_name, DW_DLA_STRING); - } - } - } - - // Move to the next sibling - Dwarf_Die next_die = nullptr; - int rc = dwarf_siblingof_c(child_die, &next_die, &err); - - dwarf_dealloc(dbg, child_die, DW_DLA_DIE); - child_die = next_die; - - if (rc != DW_DLV_OK) - break; - } - - dwarf_dealloc(dbg, cu_die, DW_DLA_DIE); - } -} diff --git a/src/symbol.hpp b/src/symbol.hpp index 3c7173b..2f70fa1 100644 --- a/src/symbol.hpp +++ b/src/symbol.hpp @@ -20,7 +20,6 @@ public: bool is_integer_type(Dwarf_Debug dbg, Dwarf_Die die); Dwarf_Addr get_global_var_addr(Dwarf_Debug dbg, Dwarf_Die die); size_t get_var_size(Dwarf_Debug dbg, Dwarf_Die die); - void list_global_integer_vars(Dwarf_Debug dbg); std::optional find_global_var(Dwarf_Debug dbg, const std::string &var_name); };