From 9683ff1211c1a00c812dfb6537421f3e99cd77cb Mon Sep 17 00:00:00 2001 From: Jim Ingham Date: Sat, 19 Nov 2011 00:19:25 +0000 Subject: 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 --- lldb/source/Core/ModuleList.cpp | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) (limited to 'lldb/source/Core/ModuleList.cpp') 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 ®ex, + 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 -- cgit v1.2.3