summaryrefslogtreecommitdiffstats
path: root/lldb/source/Core/ModuleList.cpp
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>2011-11-19 00:19:25 +0000
committerJim Ingham <jingham@apple.com>2011-11-19 00:19:25 +0000
commit9683ff1211c1a00c812dfb6537421f3e99cd77cb (patch)
treead4966613a9f826abe1b85e746344d5032a6ffb3 /lldb/source/Core/ModuleList.cpp
parent6dc4c16417f13295f638a8360fd96237130140df (diff)
downloadbcm5719-llvm-9683ff1211c1a00c812dfb6537421f3e99cd77cb.tar.gz
bcm5719-llvm-9683ff1211c1a00c812dfb6537421f3e99cd77cb.zip
Handle stepping through a trampoline where the jump target is calculated a runtime - and so doesn't match
the name of the PLT entry. This solution assumes a naming convention agreed upon by us and the system folks, and isn't general. The general solution requires actually finding & calling the resolver function if it hasn't been called yet. That's more tricky. llvm-svn: 144981
Diffstat (limited to 'lldb/source/Core/ModuleList.cpp')
-rw-r--r--lldb/source/Core/ModuleList.cpp27
1 files changed, 24 insertions, 3 deletions
diff --git a/lldb/source/Core/ModuleList.cpp b/lldb/source/Core/ModuleList.cpp
index d5cf9ab4566..9799f924575 100644
--- a/lldb/source/Core/ModuleList.cpp
+++ b/lldb/source/Core/ModuleList.cpp
@@ -248,14 +248,35 @@ ModuleList::FindGlobalVariables (const RegularExpression& regex,
size_t
ModuleList::FindSymbolsWithNameAndType (const ConstString &name,
SymbolType symbol_type,
- SymbolContextList &sc_list)
+ SymbolContextList &sc_list,
+ bool append)
{
Mutex::Locker locker(m_modules_mutex);
- sc_list.Clear();
+ if (!append)
+ sc_list.Clear();
+ size_t initial_size = sc_list.GetSize();
+
collection::iterator pos, end = m_modules.end();
for (pos = m_modules.begin(); pos != end; ++pos)
(*pos)->FindSymbolsWithNameAndType (name, symbol_type, sc_list);
- return sc_list.GetSize();
+ return sc_list.GetSize() - initial_size;
+}
+
+ size_t
+ModuleList::FindSymbolsMatchingRegExAndType (const RegularExpression &regex,
+ lldb::SymbolType symbol_type,
+ SymbolContextList &sc_list,
+ bool append)
+{
+ Mutex::Locker locker(m_modules_mutex);
+ if (!append)
+ sc_list.Clear();
+ size_t initial_size = sc_list.GetSize();
+
+ collection::iterator pos, end = m_modules.end();
+ for (pos = m_modules.begin(); pos != end; ++pos)
+ (*pos)->FindSymbolsMatchingRegExAndType (regex, symbol_type, sc_list);
+ return sc_list.GetSize() - initial_size;
}
class ModuleMatches
OpenPOWER on IntegriCloud