From 579339dd24e8cb4eec64dd07612fad5feecc4f80 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Mon, 2 May 2022 01:11:45 +0200 Subject: [PATCH] Retrieve correct symbol address. --- server/TracyWorker.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp index f867d869..bbe3e412 100644 --- a/server/TracyWorker.cpp +++ b/server/TracyWorker.cpp @@ -6736,15 +6736,27 @@ void Worker::ProcessCodeInformation( const QueueCodeInformation& ev ) auto cit = m_checkedFileStrings.find( ref ); if( cit == m_checkedFileStrings.end() ) { - auto& symmap = GetSymbolMap(); - auto it = symmap.find( ev.symAddr ); - if( it == symmap.end() ) + uint64_t baseAddr = 0; + if( HasSymbolCode( ev.symAddr ) ) + { + baseAddr = ev.symAddr; + } + else + { + const auto parentAddr = GetSymbolForAddress( ev.symAddr ); + if( parentAddr != 0 && HasSymbolCode( parentAddr ) ) + { + baseAddr = parentAddr; + } + } + const SymbolData* sym = baseAddr == 0 ? nullptr : GetSymbolData( baseAddr ); + if( !sym ) { CacheSource( ref ); } else { - CacheSource( ref, it->second.imageName ); + CacheSource( ref, sym->imageName ); } } }