summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2010-10-12 17:33:06 +0000
committerGreg Clayton <gclayton@apple.com>2010-10-12 17:33:06 +0000
commit897f96a5d3c68ef299dbf016c159554b5d1f1f34 (patch)
tree164330084688e025635ad2ae4677fd19e6b9d7b1 /lldb/source/Plugins/Process
parentaec745326ac56048cd3cc7bf5f5704dace4d1a5e (diff)
downloadbcm5719-llvm-897f96a5d3c68ef299dbf016c159554b5d1f1f34.tar.gz
bcm5719-llvm-897f96a5d3c68ef299dbf016c159554b5d1f1f34.zip
Fixed the dispatch queue name retrieval for threads by looking in an extra
shlib. llvm-svn: 116315
Diffstat (limited to 'lldb/source/Plugins/Process')
-rw-r--r--lldb/source/Plugins/Process/MacOSX-User/source/ThreadMacOSX.cpp17
-rw-r--r--lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp15
2 files changed, 23 insertions, 9 deletions
diff --git a/lldb/source/Plugins/Process/MacOSX-User/source/ThreadMacOSX.cpp b/lldb/source/Plugins/Process/MacOSX-User/source/ThreadMacOSX.cpp
index 1ffe45b07b9..aae460e5ff1 100644
--- a/lldb/source/Plugins/Process/MacOSX-User/source/ThreadMacOSX.cpp
+++ b/lldb/source/Plugins/Process/MacOSX-User/source/ThreadMacOSX.cpp
@@ -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;
-
- 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 (module_sp)
+ dispatch_queue_offsets_symbol = module_sp->FindFirstSymbolWithNameAndType (g_dispatch_queue_offsets_symbol_name, 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());
diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
index c3b0c9d1c66..c9b5955ee09 100644
--- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
@@ -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;
-
- const Symbol *dispatch_queue_offsets_symbol = module_sp->FindFirstSymbolWithNameAndType (ConstString("dispatch_queue_offsets"), eSymbolTypeData);
+ if (module_sp)
+ dispatch_queue_offsets_symbol = module_sp->FindFirstSymbolWithNameAndType (g_dispatch_queue_offsets_symbol_name, 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);
OpenPOWER on IntegriCloud