llvm-project/lldb/source/Core
Greg Clayton 1f7460716b <rdar://problem/11757916>
Make breakpoint setting by file and line much more efficient by only looking for inlined breakpoint locations if we are setting a breakpoint in anything but a source implementation file. Implementing this complex for a many reasons. Turns out that parsing compile units lazily had some issues with respect to how we need to do things with DWARF in .o files. So the fixes in the checkin for this makes these changes:
- Add a new setting called "target.inline-breakpoint-strategy" which can be set to "never", "always", or "headers". "never" will never try and set any inlined breakpoints (fastest). "always" always looks for inlined breakpoint locations (slowest, but most accurate). "headers", which is the default setting, will only look for inlined breakpoint locations if the breakpoint is set in what are consudered to be header files, which is realy defined as "not in an implementation source file". 
- modify the breakpoint setting by file and line to check the current "target.inline-breakpoint-strategy" setting and act accordingly
- Modify compile units to be able to get their language and other info lazily. This allows us to create compile units from the debug map and not have to fill all of the details in, and then lazily discover this information as we go on debuggging. This is needed to avoid parsing all .o files when setting breakpoints in implementation only files (no inlines). Otherwise we would need to parse the .o file, the object file (mach-o in our case) and the symbol file (DWARF in the object file) just to see what the compile unit was.
- modify the "SymbolFileDWARFDebugMap" to subclass lldb_private::Module so that the virtual "GetObjectFile()" and "GetSymbolVendor()" functions can be intercepted when the .o file contenst are later lazilly needed. Prior to this fix, when we first instantiated the "SymbolFileDWARFDebugMap" class, we would also make modules, object files and symbol files for every .o file in the debug map because we needed to fix up the sections in the .o files with information that is in the executable debug map. Now we lazily do this in the DebugMapModule::GetObjectFile()

Cleaned up header includes a bit as well.

llvm-svn: 162860
2012-08-29 21:13:06 +00:00
..
Address.cpp <rdar://problem/11757916> 2012-08-29 21:13:06 +00:00
AddressRange.cpp <rdar://problem/10103468> 2012-02-24 01:59:29 +00:00
AddressResolver.cpp
AddressResolverFileLine.cpp <rdar://problem/11757916> 2012-08-29 21:13:06 +00:00
AddressResolverName.cpp <rdar://problem/11757916> 2012-08-29 21:13:06 +00:00
ArchSpec.cpp rdar://problem/11374963 2012-08-28 22:53:40 +00:00
Baton.cpp Don't print out the baton pointer value for simple Baton classes. 2011-06-21 20:47:20 +00:00
Broadcaster.cpp Add log entries for HijackBroadcaster() as well as RestoreBroadcaster(). 2012-03-29 20:02:33 +00:00
Communication.cpp Add a general mechanism to wait on the debugger for Broadcasters of a given class/event bit set. 2012-02-16 06:50:00 +00:00
Connection.cpp
ConnectionFileDescriptor.cpp Fixed the delay that was happening when quitting lldb from the command line. We weren't initializing the command pipes when constructing a ConnectionFileDescriptor with a file descriptor. 2012-08-08 22:27:52 +00:00
ConnectionMachPort.cpp Improved the packet throughput when debugging with GDB remote by over 3x on 2011-06-17 01:22:15 +00:00
ConnectionSharedMemory.cpp Improved the packet throughput when debugging with GDB remote by over 3x on 2011-06-17 01:22:15 +00:00
ConstString.cpp <rdar://problem/11757916> 2012-08-29 21:13:06 +00:00
DataBufferHeap.cpp
DataBufferMemoryMap.cpp Add an Error string specifically for when we hit an ENOMEM when 2012-04-26 06:39:51 +00:00
DataEncoder.cpp Forgot to write out the NULL terminator when putting C string value into 2011-09-01 18:13:54 +00:00
DataExtractor.cpp <rdar://problem/10449092> Adding a new uppercase hex format specifier. This commit also changes the short names for formats so that uppercase hex can be 'X', which was previously assigned to hex float. hex float now has no short name. 2012-08-09 19:33:34 +00:00
DataVisualization.cpp Add LLDB_DISABLE_PYTHON around newly added methods in 2012-05-16 00:38:08 +00:00
Debugger.cpp <rdar://problem/11757916> 2012-08-29 21:13:06 +00:00
Disassembler.cpp <rdar://problem/11757916> 2012-08-29 21:13:06 +00:00
DynamicLoader.cpp The DynamicLoader plug-in instance now lives up in lldb_private::Process where 2011-02-16 04:46:07 +00:00
EmulateInstruction.cpp The second part in thread hardening the internals of LLDB where we make 2012-02-18 05:35:26 +00:00
Error.cpp Python summary strings: 2011-07-15 02:26:42 +00:00
Event.cpp This patch captures and serializes all output being written by the 2011-05-02 20:41:46 +00:00
FileLineResolver.cpp <rdar://problem/11757916> 2012-08-29 21:13:06 +00:00
FileSpecList.cpp Reimplemented the code that backed the "settings" in lldb. There were many issues with the previous implementation: 2012-08-22 17:17:09 +00:00
FormatClasses.cpp Removing spurious <ostream> include 2012-03-20 18:52:57 +00:00
FormatManager.cpp Data formatters for libc++ deque and shared/weak ptrs - a contribution by Jared Grubb 2012-08-27 17:42:50 +00:00
History.cpp I modified the StringMap that was being used to unique our debugger C strings 2011-06-09 22:34:34 +00:00
InputReader.cpp Ran the static analyzer on the codebase and found a few things. 2012-07-17 03:23:13 +00:00
InputReaderEZ.cpp Headers cleanup 2012-03-20 19:33:01 +00:00
InputReaderStack.cpp Create new class, InputReaderStack, to better handle 2011-06-02 19:18:55 +00:00
Language.cpp Created lldb::LanguageType by moving an enumeration from the 2010-07-28 02:04:09 +00:00
Listener.cpp Don't call DoOnRemoval if you are just peeking at events. 2012-07-11 21:40:40 +00:00
Log.cpp Add a logging mode that takes a callback and flush'es to that callback. 2012-02-21 02:23:08 +00:00
Makefile Merged Eli Friedman's linux build changes where he added Makefile files that 2010-07-09 20:39:50 +00:00
Mangled.cpp <rdar://problem/12029894> 2012-08-06 15:55:38 +00:00
Module.cpp <rdar://problem/11757916> 2012-08-29 21:13:06 +00:00
ModuleChild.cpp <rdar://problem/10103468> 2012-02-24 01:59:29 +00:00
ModuleList.cpp <rdar://problem/11757916> 2012-08-29 21:13:06 +00:00
Opcode.cpp Changed the Opcode::GetData() API so that it didn't 2012-08-07 01:44:58 +00:00
PluginManager.cpp <rdar://problem/10560053> 2012-02-05 02:38:54 +00:00
RegisterValue.cpp rdar://problem/11598332 2012-06-05 23:25:10 +00:00
RegularExpression.cpp Reimplemented the code that backed the "settings" in lldb. There were many issues with the previous implementation: 2012-08-22 17:17:09 +00:00
Scalar.cpp <rdar://problem/10546739> 2011-12-29 01:26:56 +00:00
SearchFilter.cpp <rdar://problem/11757916> 2012-08-29 21:13:06 +00:00
Section.cpp Added a check to the Section to make sure we don't 2012-07-12 20:44:21 +00:00
SourceManager.cpp <rdar://problem/11757916> 2012-08-29 21:13:06 +00:00
State.cpp Fixed an issue with the pthread_setspecific() where we weren't NULL-ing out 2011-11-17 01:23:07 +00:00
Stream.cpp Include stddef.h for ptrdiff_t, GCC 4.6 doesn't include it implicitly. 2012-02-27 18:46:54 +00:00
StreamAsynchronousIO.cpp This patch captures and serializes all output being written by the 2011-05-02 20:41:46 +00:00
StreamCallback.cpp Updated LLVM to take a new MC JIT that supports 2012-03-01 02:03:47 +00:00
StreamFile.cpp Use Host::File in lldb_private::StreamFile and other places to cleanup host 2011-02-09 01:08:52 +00:00
StreamString.cpp Fix arch_helper() to return the list of supported architectures. 2012-05-29 20:04:10 +00:00
StringList.cpp <rdar://problem/12022079> 2012-08-23 00:22:02 +00:00
Timer.cpp Patch from Filipe Cabecinhas. 2012-04-26 17:12:07 +00:00
UUID.cpp Header patch, virtual dtor patch and missed UUID patch from Kirk Beitz. 2011-02-05 02:56:16 +00:00
UserID.cpp Moved lldb::user_id_t values to be 64 bit. This was going to be needed for 2011-10-19 18:09:39 +00:00
UserSettingsController.cpp Remove further outdated "settings" code and also implement a few missing things. 2012-08-22 18:39:03 +00:00
VMRange.cpp Added support for inlined stack frames being represented as real stack frames 2010-08-24 00:45:41 +00:00
Value.cpp This patch fixes a bug where LLDB was incorrectly setting the address-size on a DataExtractor to be sizeof(void*) when the ValueObject came out of the expression parser 2012-04-24 01:23:23 +00:00
ValueObject.cpp <rdar://problem/11757916> 2012-08-29 21:13:06 +00:00
ValueObjectChild.cpp <rdar://problem/11113279> 2012-03-26 23:03:23 +00:00
ValueObjectConstResult.cpp Make const result value objects able to return dynamic types. 2012-07-07 01:22:45 +00:00
ValueObjectConstResultChild.cpp Redesign of the interaction between Python and frozen objects: 2011-09-06 19:20:51 +00:00
ValueObjectConstResultImpl.cpp This checking is part one of trying to add some threading safety to our 2012-02-17 07:49:44 +00:00
ValueObjectDynamicValue.cpp <rdar://problem/11239650> Fixing a bug where the SetValueFromCString() method failed to operate on dynamic values. The fix consists in making the set operation fall through to the parent. We only actually allow this if the dynamic value is at a 0-offset from the parent, or the new value is 0. Other scenarios would need agreement on the actual meaning of the set operation (do we keep offsetting? do we just assume the user knows what they are doing?) so we prevent them, and let the expression parser deal with the complexity 2012-05-08 21:25:06 +00:00
ValueObjectList.cpp Added the ability to see global variables with a variable expression path so 2011-07-08 21:46:14 +00:00
ValueObjectMemory.cpp <rdar://problem/11113279> 2012-03-26 23:03:23 +00:00
ValueObjectRegister.cpp Changed register ValueObjects to report their 2012-08-24 18:21:05 +00:00
ValueObjectSyntheticFilter.cpp First part of a fix to make GetNonSyntheticValue() work correctly 2012-05-08 18:47:08 +00:00
ValueObjectVariable.cpp <rdar://problem/11757916> 2012-08-29 21:13:06 +00:00
cxa_demangle.cpp Added fix from Pawel Worach. 2012-08-07 16:33:49 +00:00