diff --git a/src/binary/object.hpp b/src/binary/object.hpp index 7668a96..83a5a06 100644 --- a/src/binary/object.hpp +++ b/src/binary/object.hpp @@ -89,7 +89,7 @@ namespace detail { } } frame.object_address = addr - - reinterpret_cast(result.dlfo_map_start) + - reinterpret_cast(result.dlfo_link_map->l_addr) + get_module_image_base(frame.object_path); } frames.push_back(frame); diff --git a/src/binary/safe_dl.hpp b/src/binary/safe_dl.hpp index ad8d03b..1b1cf78 100644 --- a/src/binary/safe_dl.hpp +++ b/src/binary/safe_dl.hpp @@ -25,7 +25,7 @@ namespace detail { out->raw_address = address; dl_find_object result; if(_dl_find_object(reinterpret_cast(address), &result) == 0) { - out->address_relative_to_object_start = address - reinterpret_cast(result.dlfo_map_start); + out->address_relative_to_object_start = address - reinterpret_cast(result.dlfo_link_map->l_addr); if(result.dlfo_link_map->l_name != nullptr && result.dlfo_link_map->l_name[0] != 0) { std::size_t path_length = std::strlen(result.dlfo_link_map->l_name); std::memcpy(