1
0
mirror of https://github.com/wolfpld/tracy synced 2025-04-29 20:33:52 +00:00

Collect symbol sizes.

This commit is contained in:
Bartosz Taudul 2020-03-25 18:05:00 +01:00
parent 954c43912d
commit d47e6819a8
2 changed files with 25 additions and 2 deletions

View File

@ -286,7 +286,16 @@ CallstackEntryData DecodeCallstackPtr( uint64_t ptr )
cb_data[write].name = symValid ? CopyString( si->Name, si->NameLen ) : CopyString( moduleName ); cb_data[write].name = symValid ? CopyString( si->Name, si->NameLen ) : CopyString( moduleName );
cb_data[write].file = CopyString( filename ); cb_data[write].file = CopyString( filename );
cb_data[write].symAddr = symValid ? si->Address : 0; if( symValid )
{
cb_data[write].symLen = si->Size;
cb_data[write].symAddr = si->Address;
}
else
{
cb_data[write].symLen = 0;
cb_data[write].symAddr = 0;
}
} }
#ifndef __CYGWIN__ #ifndef __CYGWIN__
@ -310,7 +319,16 @@ CallstackEntryData DecodeCallstackPtr( uint64_t ptr )
cb.name = symInlineValid ? CopyString( si->Name, si->NameLen ) : CopyString( moduleName ); cb.name = symInlineValid ? CopyString( si->Name, si->NameLen ) : CopyString( moduleName );
cb.file = CopyString( filename ); cb.file = CopyString( filename );
cb.symAddr = symInlineValid ? si->Address : 0; if( symInlineValid )
{
cb.symLen = si->Size;
cb.symAddr = si->Address;
}
else
{
cb.symLen = 0;
cb.symAddr = 0;
}
ctx++; ctx++;
} }
@ -413,6 +431,7 @@ static int CallstackDataCb( void* /*data*/, uintptr_t pc, const char* fn, int li
enum { DemangleBufLen = 64*1024 }; enum { DemangleBufLen = 64*1024 };
char demangled[DemangleBufLen]; char demangled[DemangleBufLen];
cb_data[cb_num].symLen = 0;
cb_data[cb_num].symAddr = (uint64_t)pc; cb_data[cb_num].symAddr = (uint64_t)pc;
if( !fn && !function ) if( !fn && !function )
@ -524,11 +543,13 @@ static void CallstackErrorCb( void* /*data*/, const char* /*msg*/, int /*errnum*
void SymInfoCallback( void* /*data*/, uintptr_t pc, const char* symname, uintptr_t symval, uintptr_t symsize ) void SymInfoCallback( void* /*data*/, uintptr_t pc, const char* symname, uintptr_t symval, uintptr_t symsize )
{ {
cb_data[cb_fixup].symLen = (uint32_t)symsize;
cb_data[cb_fixup].symAddr = (uint64_t)symval; cb_data[cb_fixup].symAddr = (uint64_t)symval;
} }
void SymInfoError( void* /*data*/, const char* /*msg*/, int /*errnum*/ ) void SymInfoError( void* /*data*/, const char* /*msg*/, int /*errnum*/ )
{ {
cb_data[cb_fixup].symLen = 0;
cb_data[cb_fixup].symAddr = 0; cb_data[cb_fixup].symAddr = 0;
} }
@ -647,6 +668,7 @@ CallstackEntryData DecodeCallstackPtr( uint64_t ptr )
loc[loclen + addrlen] = '\0'; loc[loclen + addrlen] = '\0';
cb.file = loc; cb.file = loc;
cb.symLen = 0;
cb.symAddr = (uint64_t)symaddr; cb.symAddr = (uint64_t)symaddr;
if( demangled ) free( demangled ); if( demangled ) free( demangled );

View File

@ -34,6 +34,7 @@ struct CallstackEntry
const char* name; const char* name;
const char* file; const char* file;
uint32_t line; uint32_t line;
uint32_t symLen;
uint64_t symAddr; uint64_t symAddr;
}; };