llvm-project/lldb/source/Core
Greg Clayton ae088e52f3 Now that SymbolFileDWARF supports having types in completely separate .pcm file with "-fmodules -gmodules", each SymbolFileDWARF can reference module DWARF info by looking in other DWARF files. Then if you have 1000 .o files that each reference one or more .pcm files in their debug info, a simple Module::FindTypes(...) call can end up searching the same .pcm file over and over and over. Now all internal FindTypes methods in classes (ModuleList, Module, SymbolFile) now take an extra argument:
llvm::DenseSet<lldb_private::SymbolFile *> &searched_symbol_files
    
Each time a SymbolFile::FindTypes() is called, it needs to check the searched_symbol_files list to make sure it hasn't already been asked to find the type and return immediately if it has been checked. This will stop circular dependencies from also crashing LLDB during type queries. 

This has proven to be an issue when debugging large applications on MacOSX that use DWARF in .o files. 

<rdar://problem/24581488>

llvm-svn: 260434
2016-02-10 21:28:13 +00:00
..
Address.cpp Fixed a couple of places where we were getting the module from a 2016-01-29 20:21:33 +00:00
AddressRange.cpp Audit uses of ConstString::AsCString() to make sure they weren't assuming 2014-12-19 19:20:44 +00:00
AddressResolver.cpp Move lldb-log.cpp to core/Logging.cpp 2015-03-18 18:20:42 +00:00
AddressResolverFileLine.cpp Move lldb-log.cpp to core/Logging.cpp 2015-03-18 18:20:42 +00:00
AddressResolverName.cpp Final bit of type system cleanup that abstracts declaration contexts into lldb_private::CompilerDeclContext and renames ClangType to CompilerType in many accessors and functions. 2015-08-24 23:46:31 +00:00
ArchSpec.cpp A little more careful handling of platforms and unspecified unknown 2015-11-06 01:43:36 +00:00
Baton.cpp
Broadcaster.cpp Move lldb-log.cpp to core/Logging.cpp 2015-03-18 18:20:42 +00:00
CMakeLists.txt [cmake] Remove LLVM_NO_RTTI. 2015-09-03 08:46:55 +00:00
Communication.cpp Stop read thread of Communication on EOF 2015-04-20 09:52:47 +00:00
Connection.cpp Create a ConnectionGenericFile class for Windows. 2014-10-06 21:23:09 +00:00
ConnectionMachPort.cpp I make no claims that Mach ports work, but at least we should check the right thing 2015-06-03 22:35:55 +00:00
ConnectionSharedMemory.cpp Use fcntl.h to retrieve the O_CREAT and O_RDWR constants. 2015-09-22 09:46:35 +00:00
ConstString.cpp Fix some race condition in ConstString around Mangled name handling 2015-10-22 11:14:31 +00:00
CxaDemangle.cpp Include <cstdio> to fix build errors. 2015-10-27 17:56:23 +00:00
DataBufferHeap.cpp Fixed a ton of gcc compile warnings 2015-05-13 00:25:54 +00:00
DataBufferMemoryMap.cpp Fix a variety of typos. 2015-06-18 05:27:05 +00:00
DataEncoder.cpp Make lldb::endian::InlHostByteOrder() private. 2015-11-07 04:40:13 +00:00
DataExtractor.cpp Differential Revision: http://reviews.llvm.org/D15333 2015-12-10 10:11:49 +00:00
Debugger.cpp [LLDB] Switch to assembly view if source is moved 2015-12-03 04:56:16 +00:00
Disassembler.cpp [MIPS] Avoid breakpoint in delay slot 2015-08-26 06:04:54 +00:00
DynamicLoader.cpp Add absolute load address support for the DynamicLoader plugins 2015-08-24 10:21:55 +00:00
EmulateInstruction.cpp Clean up register naming conventions inside lldb. 2015-09-15 23:20:34 +00:00
Error.cpp Remove unneeded include. 2015-04-14 21:34:51 +00:00
Event.cpp Make lldb::endian::InlHostByteOrder() private. 2015-11-07 04:40:13 +00:00
FastDemangle.cpp Fix typos. 2015-07-22 00:16:02 +00:00
FileLineResolver.cpp Move lldb-log.cpp to core/Logging.cpp 2015-03-18 18:20:42 +00:00
FileSpecList.cpp For some reason, sometimes the directory paths that clang emits have internal 2014-11-15 01:54:26 +00:00
FormatEntity.cpp Pass the ExecutionContext as well, since it is actually useful 2015-11-19 02:50:27 +00:00
History.cpp
IOHandler.cpp Fix typo in a comment 2015-12-04 21:23:24 +00:00
Listener.cpp Move lldb-log.cpp to core/Logging.cpp 2015-03-18 18:20:42 +00:00
Log.cpp Fixup log enable --stack so it works on Linux. 2015-10-10 01:26:47 +00:00
Logging.cpp Create a logging category that is specific to data formatters activity 2015-10-06 17:55:14 +00:00
Mangled.cpp Don't demangle a name when Mangled::GetName() is called with ePreferMangled. Only demangle if this isn't the the value for the "preference" argument indicating the user wants the demangled name. This will stop a lot of symbols from being demangled when parsing the symbol table in ObjectFileMachO. 2015-12-17 01:00:50 +00:00
Module.cpp Now that SymbolFileDWARF supports having types in completely separate .pcm file with "-fmodules -gmodules", each SymbolFileDWARF can reference module DWARF info by looking in other DWARF files. Then if you have 1000 .o files that each reference one or more .pcm files in their debug info, a simple Module::FindTypes(...) call can end up searching the same .pcm file over and over and over. Now all internal FindTypes methods in classes (ModuleList, Module, SymbolFile) now take an extra argument: 2016-02-10 21:28:13 +00:00
ModuleChild.cpp
ModuleList.cpp Now that SymbolFileDWARF supports having types in completely separate .pcm file with "-fmodules -gmodules", each SymbolFileDWARF can reference module DWARF info by looking in other DWARF files. Then if you have 1000 .o files that each reference one or more .pcm files in their debug info, a simple Module::FindTypes(...) call can end up searching the same .pcm file over and over and over. Now all internal FindTypes methods in classes (ModuleList, Module, SymbolFile) now take an extra argument: 2016-02-10 21:28:13 +00:00
Opcode.cpp Make lldb::endian::InlHostByteOrder() private. 2015-11-07 04:40:13 +00:00
PluginManager.cpp Fixed version of r250913, which actually implements all the static functions. 2015-10-21 19:14:33 +00:00
RegisterValue.cpp Fix typos. 2015-09-22 05:07:56 +00:00
RegularExpression.cpp Fix warnings detected by -Wpessimizing-move 2015-07-28 09:18:32 +00:00
Scalar.cpp Fix invalid shift operator overload in Scalar 2016-02-09 17:28:01 +00:00
SearchFilter.cpp Work around lack of %zd printf format specifier in MSVC libs. 2015-03-30 17:46:36 +00:00
Section.cpp Actually implement Section::GetSectionData. 2015-11-04 01:02:43 +00:00
SourceManager.cpp Silence some MSVC warnings. 2015-08-26 23:55:14 +00:00
State.cpp
Stream.cpp Make lldb::endian::InlHostByteOrder() private. 2015-11-07 04:40:13 +00:00
StreamAsynchronousIO.cpp Fix warnings detected by -Wpessimizing-move 2015-07-28 09:18:32 +00:00
StreamCallback.cpp
StreamFile.cpp Support for truncate/append on log files 2015-03-20 09:43:20 +00:00
StreamGDBRemote.cpp merge lldb-platform-work branch (and assorted fixes) into trunk 2013-08-26 23:57:52 +00:00
StreamString.cpp Silence -Wqual-cast warnings from GCC 5.2 2015-10-18 19:34:38 +00:00
StringList.cpp Remove duplicate header added in r256927 2016-01-07 14:34:52 +00:00
StructuredData.cpp Make the "lldb/Utility/JSON.h" able to parse JSON into tokens with the new JSONParser class. 2015-07-06 23:40:40 +00:00
Timer.cpp Remove Timer::Initialize routine 2016-02-01 13:29:41 +00:00
UUID.cpp Add Utility/ModuleCache class and integrate it with PlatformGDBRemoteServer - in order to allow modules caching from remote targets. 2015-03-10 01:15:28 +00:00
UserID.cpp Implemented a types.py module that allows types to be inspected for padding. 2013-06-19 21:50:28 +00:00
UserSettingsController.cpp Don't #include "lldb-python.h" from anywhere. 2015-05-29 17:41:47 +00:00
VMRange.cpp
Value.cpp Make lldb::endian::InlHostByteOrder() private. 2015-11-07 04:40:13 +00:00
ValueObject.cpp No need for a custom function here; just use what C provides 2015-12-22 00:47:36 +00:00
ValueObjectCast.cpp [SBValue] Add a method GetNumChildren(uint32_t max) 2015-10-21 19:28:08 +00:00
ValueObjectChild.cpp More rework of the updating logic for ValueObjectChild. Still just refactoring with no feature change 2015-11-09 23:59:53 +00:00
ValueObjectConstResult.cpp [SBValue] Add a method GetNumChildren(uint32_t max) 2015-10-21 19:28:08 +00:00
ValueObjectConstResultCast.cpp Rename clang_type -> compiler_type for variables. 2015-09-24 03:54:50 +00:00
ValueObjectConstResultChild.cpp Add a way for source languages to "mark" ValueObjects with language-specific flags 2015-11-09 19:27:34 +00:00
ValueObjectConstResultImpl.cpp Add a way for source languages to "mark" ValueObjects with language-specific flags 2015-11-09 19:27:34 +00:00
ValueObjectDynamicValue.cpp Add a way for source languages to "mark" ValueObjects with language-specific flags 2015-11-09 19:27:34 +00:00
ValueObjectList.cpp
ValueObjectMemory.cpp [SBValue] Add a method GetNumChildren(uint32_t max) 2015-10-21 19:28:08 +00:00
ValueObjectRegister.cpp [SBValue] Add a method GetNumChildren(uint32_t max) 2015-10-21 19:28:08 +00:00
ValueObjectSyntheticFilter.cpp Add a way for source languages to "mark" ValueObjects with language-specific flags 2015-11-09 19:27:34 +00:00
ValueObjectVariable.cpp [SBValue] Add a method GetNumChildren(uint32_t max) 2015-10-21 19:28:08 +00:00