diff --git a/public/client/TracyCallstack.cpp b/public/client/TracyCallstack.cpp index 13de31ef..aea58dd7 100644 --- a/public/client/TracyCallstack.cpp +++ b/public/client/TracyCallstack.cpp @@ -136,7 +136,7 @@ public: Clear(); } - const ImageEntry* GetImageForAddress( void* address ) + const ImageEntry* GetImageForAddress( uint64_t address ) { const ImageEntry* entry = GetImageForAddressImpl( address ); if( !entry ) @@ -156,12 +156,12 @@ private: { ImageCache* cache = reinterpret_cast( data ); - const auto startAddress = reinterpret_cast( info->dlpi_addr ); + const auto startAddress = static_cast( info->dlpi_addr ); if( cache->Contains( startAddress ) ) return 0; const uint32_t headerCount = info->dlpi_phnum; assert( headerCount > 0); - const auto endAddress = reinterpret_cast( info->dlpi_addr + + const auto endAddress = static_cast( info->dlpi_addr + info->dlpi_phdr[info->dlpi_phnum - 1].p_vaddr + info->dlpi_phdr[info->dlpi_phnum - 1].p_memsz); ImageEntry* image = cache->m_images.push_next(); @@ -186,7 +186,7 @@ private: return 0; } - bool Contains( void* startAddress ) const + bool Contains( uint64_t startAddress ) const { return std::any_of( m_images.begin(), m_images.end(), [startAddress]( const ImageEntry& entry ) { return startAddress == entry.m_startAddress; } ); } @@ -236,10 +236,10 @@ private: m_haveMainImageName = true; } - const ImageEntry* GetImageForAddressImpl( void* address ) const + const ImageEntry* GetImageForAddressImpl( uint64_t address ) const { auto it = std::lower_bound( m_images.begin(), m_images.end(), address, - []( const ImageEntry& lhs, const void* rhs ) { return lhs.m_startAddress > rhs; } ); + []( const ImageEntry& lhs, const uint64_t rhs ) { return lhs.m_startAddress > rhs; } ); if( it != m_images.end() && address < it->m_endAddress ) { @@ -1273,7 +1273,7 @@ CallstackEntryData DecodeCallstackPtr( uint64_t ptr ) uint64_t imageBaseAddress = 0x0; #ifdef TRACY_USE_IMAGE_CACHE - const auto* image = s_imageCache->GetImageForAddress((void*)ptr); + const auto* image = s_imageCache->GetImageForAddress( ptr ); if( image ) { imageName = image->m_name; diff --git a/public/client/TracyCallstack.hpp b/public/client/TracyCallstack.hpp index 4f5a3b82..69cdef81 100644 --- a/public/client/TracyCallstack.hpp +++ b/public/client/TracyCallstack.hpp @@ -1,6 +1,8 @@ #ifndef __TRACYCALLSTACK_HPP__ #define __TRACYCALLSTACK_HPP__ +#include + #include "../common/TracyApi.h" #include "../common/TracyForceInline.hpp" #include "TracyCallstack.h" @@ -10,8 +12,8 @@ namespace tracy struct ImageEntry { - void* m_startAddress = nullptr; - void* m_endAddress = nullptr; + uint64_t m_startAddress = 0; + uint64_t m_endAddress = 0; char* m_name = nullptr; };