mirror of
https://github.com/intel/llvm.git
synced 2026-01-22 23:49:22 +08:00
Export the ability to get the start and end addresses for functions
and symbols, and also allow clients to get the prologue size in bytes:
SBAddress
SBFunction::GetStartAddress ();
SBAddress
SBFunction::GetEndAddress ();
uint32_t
SBFunction::GetPrologueByteSize ();
SBAddress
SBSymbol::GetStartAddress ();
SBAddress
SBSymbol::GetEndAddress ();
uint32_t
SBSymbol::GetPrologueByteSize ();
llvm-svn: 126892
This commit is contained in:
@@ -156,3 +156,38 @@ SBFunction::reset (lldb_private::Function *lldb_object_ptr)
|
||||
m_opaque_ptr = lldb_object_ptr;
|
||||
}
|
||||
|
||||
SBAddress
|
||||
SBFunction::GetStartAddress ()
|
||||
{
|
||||
SBAddress addr;
|
||||
if (m_opaque_ptr)
|
||||
addr.SetAddress (&m_opaque_ptr->GetAddressRange().GetBaseAddress());
|
||||
return addr;
|
||||
}
|
||||
|
||||
SBAddress
|
||||
SBFunction::GetEndAddress ()
|
||||
{
|
||||
SBAddress addr;
|
||||
if (m_opaque_ptr)
|
||||
{
|
||||
addr_t byte_size = m_opaque_ptr->GetAddressRange().GetByteSize();
|
||||
if (byte_size > 0)
|
||||
{
|
||||
addr.SetAddress (&m_opaque_ptr->GetAddressRange().GetBaseAddress());
|
||||
addr->Slide (byte_size);
|
||||
}
|
||||
}
|
||||
return addr;
|
||||
}
|
||||
|
||||
|
||||
uint32_t
|
||||
SBFunction::GetPrologueByteSize ()
|
||||
{
|
||||
if (m_opaque_ptr)
|
||||
return m_opaque_ptr->GetPrologueByteSize();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -153,3 +153,47 @@ SBSymbol::reset (lldb_private::Symbol *symbol)
|
||||
{
|
||||
m_opaque_ptr = symbol;
|
||||
}
|
||||
|
||||
SBAddress
|
||||
SBSymbol::GetStartAddress ()
|
||||
{
|
||||
SBAddress addr;
|
||||
if (m_opaque_ptr)
|
||||
{
|
||||
// Make sure the symbol is an address based symbol first:
|
||||
AddressRange *symbol_arange_ptr = m_opaque_ptr->GetAddressRangePtr();
|
||||
if (symbol_arange_ptr)
|
||||
{
|
||||
addr.SetAddress (&symbol_arange_ptr->GetBaseAddress());
|
||||
}
|
||||
}
|
||||
return addr;
|
||||
}
|
||||
|
||||
SBAddress
|
||||
SBSymbol::GetEndAddress ()
|
||||
{
|
||||
SBAddress addr;
|
||||
if (m_opaque_ptr)
|
||||
{
|
||||
AddressRange *symbol_arange_ptr = m_opaque_ptr->GetAddressRangePtr();
|
||||
if (symbol_arange_ptr)
|
||||
{
|
||||
addr_t byte_size = symbol_arange_ptr->GetByteSize();
|
||||
if (byte_size > 0)
|
||||
{
|
||||
addr.SetAddress (&symbol_arange_ptr->GetBaseAddress());
|
||||
addr->Slide (byte_size);
|
||||
}
|
||||
}
|
||||
}
|
||||
return addr;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
SBSymbol::GetPrologueByteSize ()
|
||||
{
|
||||
if (m_opaque_ptr)
|
||||
return m_opaque_ptr->GetPrologueByteSize();
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user