forked from OSchip/llvm-project
Fixed the dispatch queue name retrieval for threads by looking in an extra
shlib. llvm-svn: 116315
This commit is contained in:
parent
aec745326a
commit
897f96a5d3
|
@ -107,13 +107,20 @@ ThreadMacOSX::GetDispatchQueueName()
|
|||
return NULL;
|
||||
|
||||
uint8_t memory_buffer[8];
|
||||
addr_t dispatch_queue_offsets_addr = LLDB_INVALID_ADDRESS;
|
||||
DataExtractor data(memory_buffer, sizeof(memory_buffer), m_process.GetByteOrder(), m_process.GetAddressByteSize());
|
||||
static ConstString g_dispatch_queue_offsets_symbol_name ("dispatch_queue_offsets");
|
||||
const Symbol *dispatch_queue_offsets_symbol = NULL;
|
||||
ModuleSP module_sp(m_process.GetTarget().GetImages().FindFirstModuleForFileSpec (FileSpec("libSystem.B.dylib")));
|
||||
if (module_sp.get() == NULL)
|
||||
return NULL;
|
||||
if (module_sp)
|
||||
dispatch_queue_offsets_symbol = module_sp->FindFirstSymbolWithNameAndType (g_dispatch_queue_offsets_symbol_name, eSymbolTypeData);
|
||||
|
||||
lldb::addr_t dispatch_queue_offsets_addr = LLDB_INVALID_ADDRESS;
|
||||
const Symbol *dispatch_queue_offsets_symbol = module_sp->FindFirstSymbolWithNameAndType (ConstString("dispatch_queue_offsets"), eSymbolTypeData);
|
||||
if (dispatch_queue_offsets_symbol == NULL)
|
||||
{
|
||||
module_sp = m_process.GetTarget().GetImages().FindFirstModuleForFileSpec (FileSpec("libdispatch.dylib"));
|
||||
if (module_sp)
|
||||
dispatch_queue_offsets_symbol = module_sp->FindFirstSymbolWithNameAndType (g_dispatch_queue_offsets_symbol_name, eSymbolTypeData);
|
||||
}
|
||||
if (dispatch_queue_offsets_symbol)
|
||||
dispatch_queue_offsets_addr = dispatch_queue_offsets_symbol->GetValue().GetLoadAddress(&m_process.GetTarget());
|
||||
|
||||
|
|
|
@ -2243,11 +2243,18 @@ ProcessGDBRemote::GetDispatchQueueNameForThread
|
|||
// to look it up
|
||||
if (m_dispatch_queue_offsets_addr == LLDB_INVALID_ADDRESS)
|
||||
{
|
||||
static ConstString g_dispatch_queue_offsets_symbol_name ("dispatch_queue_offsets");
|
||||
const Symbol *dispatch_queue_offsets_symbol = NULL;
|
||||
ModuleSP module_sp(GetTarget().GetImages().FindFirstModuleForFileSpec (FileSpec("libSystem.B.dylib")));
|
||||
if (module_sp.get() == NULL)
|
||||
return NULL;
|
||||
if (module_sp)
|
||||
dispatch_queue_offsets_symbol = module_sp->FindFirstSymbolWithNameAndType (g_dispatch_queue_offsets_symbol_name, eSymbolTypeData);
|
||||
|
||||
const Symbol *dispatch_queue_offsets_symbol = module_sp->FindFirstSymbolWithNameAndType (ConstString("dispatch_queue_offsets"), eSymbolTypeData);
|
||||
if (dispatch_queue_offsets_symbol == NULL)
|
||||
{
|
||||
module_sp = GetTarget().GetImages().FindFirstModuleForFileSpec (FileSpec("libdispatch.dylib"));
|
||||
if (module_sp)
|
||||
dispatch_queue_offsets_symbol = module_sp->FindFirstSymbolWithNameAndType (g_dispatch_queue_offsets_symbol_name, eSymbolTypeData);
|
||||
}
|
||||
if (dispatch_queue_offsets_symbol)
|
||||
m_dispatch_queue_offsets_addr = dispatch_queue_offsets_symbol->GetValue().GetLoadAddress(&m_target);
|
||||
|
||||
|
|
Loading…
Reference in New Issue