Initial checkin of lldb code from internal Apple repo.
authorChris Lattner <sabre@nondot.org>
Tue, 8 Jun 2010 16:52:24 +0000 (16:52 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 8 Jun 2010 16:52:24 +0000 (16:52 +0000)
llvm-svn: 105619

790 files changed:
lldb/docs/code-signing.txt [new file with mode: 0644]
lldb/docs/code_signing.txt [new file with mode: 0644]
lldb/include/lldb/API/LLDB.h [new file with mode: 0644]
lldb/include/lldb/API/SBAddress.h [new file with mode: 0644]
lldb/include/lldb/API/SBBlock.h [new file with mode: 0644]
lldb/include/lldb/API/SBBreakpoint.h [new file with mode: 0644]
lldb/include/lldb/API/SBBreakpointLocation.h [new file with mode: 0644]
lldb/include/lldb/API/SBBroadcaster.h [new file with mode: 0644]
lldb/include/lldb/API/SBCommandContext.h [new file with mode: 0644]
lldb/include/lldb/API/SBCommandInterpreter.h [new file with mode: 0644]
lldb/include/lldb/API/SBCommandReturnObject.h [new file with mode: 0644]
lldb/include/lldb/API/SBCommunication.h [new file with mode: 0644]
lldb/include/lldb/API/SBCompileUnit.h [new file with mode: 0644]
lldb/include/lldb/API/SBDebugger.h [new file with mode: 0644]
lldb/include/lldb/API/SBDefines.h [new file with mode: 0644]
lldb/include/lldb/API/SBError.h [new file with mode: 0644]
lldb/include/lldb/API/SBEvent.h [new file with mode: 0644]
lldb/include/lldb/API/SBFileSpec.h [new file with mode: 0644]
lldb/include/lldb/API/SBFrame.h [new file with mode: 0644]
lldb/include/lldb/API/SBFunction.h [new file with mode: 0644]
lldb/include/lldb/API/SBHostOS.h [new file with mode: 0644]
lldb/include/lldb/API/SBInputReader.h [new file with mode: 0644]
lldb/include/lldb/API/SBInstruction.h [new file with mode: 0644]
lldb/include/lldb/API/SBInstructionList.h [new file with mode: 0644]
lldb/include/lldb/API/SBLineEntry.h [new file with mode: 0644]
lldb/include/lldb/API/SBListener.h [new file with mode: 0644]
lldb/include/lldb/API/SBModule.h [new file with mode: 0644]
lldb/include/lldb/API/SBProcess.h [new file with mode: 0644]
lldb/include/lldb/API/SBSourceManager.h [new file with mode: 0644]
lldb/include/lldb/API/SBStringList.h [new file with mode: 0644]
lldb/include/lldb/API/SBSymbol.h [new file with mode: 0644]
lldb/include/lldb/API/SBSymbolContext.h [new file with mode: 0644]
lldb/include/lldb/API/SBTarget.h [new file with mode: 0644]
lldb/include/lldb/API/SBThread.h [new file with mode: 0644]
lldb/include/lldb/API/SBType.h [new file with mode: 0644]
lldb/include/lldb/API/SBValue.h [new file with mode: 0644]
lldb/include/lldb/API/SBValueList.h [new file with mode: 0644]
lldb/include/lldb/Breakpoint/Breakpoint.h [new file with mode: 0644]
lldb/include/lldb/Breakpoint/BreakpointID.h [new file with mode: 0644]
lldb/include/lldb/Breakpoint/BreakpointIDList.h [new file with mode: 0644]
lldb/include/lldb/Breakpoint/BreakpointList.h [new file with mode: 0644]
lldb/include/lldb/Breakpoint/BreakpointLocation.h [new file with mode: 0644]
lldb/include/lldb/Breakpoint/BreakpointLocationCollection.h [new file with mode: 0644]
lldb/include/lldb/Breakpoint/BreakpointLocationList.h [new file with mode: 0644]
lldb/include/lldb/Breakpoint/BreakpointOptions.h [new file with mode: 0644]
lldb/include/lldb/Breakpoint/BreakpointResolver.h [new file with mode: 0644]
lldb/include/lldb/Breakpoint/BreakpointResolverAddress.h [new file with mode: 0644]
lldb/include/lldb/Breakpoint/BreakpointResolverFileLine.h [new file with mode: 0644]
lldb/include/lldb/Breakpoint/BreakpointResolverName.h [new file with mode: 0644]
lldb/include/lldb/Breakpoint/BreakpointSite.h [new file with mode: 0644]
lldb/include/lldb/Breakpoint/BreakpointSiteList.h [new file with mode: 0644]
lldb/include/lldb/Breakpoint/Stoppoint.h [new file with mode: 0644]
lldb/include/lldb/Breakpoint/StoppointCallbackContext.h [new file with mode: 0644]
lldb/include/lldb/Breakpoint/StoppointLocation.h [new file with mode: 0644]
lldb/include/lldb/Breakpoint/WatchpointLocation.h [new file with mode: 0644]
lldb/include/lldb/Core/Address.h [new file with mode: 0644]
lldb/include/lldb/Core/AddressRange.h [new file with mode: 0644]
lldb/include/lldb/Core/AddressResolver.h [new file with mode: 0644]
lldb/include/lldb/Core/AddressResolverFileLine.h [new file with mode: 0644]
lldb/include/lldb/Core/AddressResolverName.h [new file with mode: 0644]
lldb/include/lldb/Core/ArchSpec.h [new file with mode: 0644]
lldb/include/lldb/Core/Args.h [new file with mode: 0644]
lldb/include/lldb/Core/Baton.h [new file with mode: 0644]
lldb/include/lldb/Core/Broadcaster.h [new file with mode: 0644]
lldb/include/lldb/Core/ClangForward.h [new file with mode: 0644]
lldb/include/lldb/Core/Communication.h [new file with mode: 0644]
lldb/include/lldb/Core/Connection.h [new file with mode: 0644]
lldb/include/lldb/Core/ConnectionFileDescriptor.h [new file with mode: 0644]
lldb/include/lldb/Core/ConstString.h [new file with mode: 0644]
lldb/include/lldb/Core/DataBuffer.h [new file with mode: 0644]
lldb/include/lldb/Core/DataBufferHeap.h [new file with mode: 0644]
lldb/include/lldb/Core/DataBufferMemoryMap.h [new file with mode: 0644]
lldb/include/lldb/Core/DataExtractor.h [new file with mode: 0644]
lldb/include/lldb/Core/Debugger.h [new file with mode: 0644]
lldb/include/lldb/Core/Disassembler.h [new file with mode: 0644]
lldb/include/lldb/Core/Error.h [new file with mode: 0644]
lldb/include/lldb/Core/Event.h [new file with mode: 0644]
lldb/include/lldb/Core/FileSpec.h [new file with mode: 0644]
lldb/include/lldb/Core/FileSpecList.h [new file with mode: 0644]
lldb/include/lldb/Core/Flags.h [new file with mode: 0644]
lldb/include/lldb/Core/IOStreamMacros.h [new file with mode: 0644]
lldb/include/lldb/Core/InputReader.h [new file with mode: 0644]
lldb/include/lldb/Core/Language.h [new file with mode: 0644]
lldb/include/lldb/Core/Listener.h [new file with mode: 0644]
lldb/include/lldb/Core/Log.h [new file with mode: 0644]
lldb/include/lldb/Core/Mangled.h [new file with mode: 0644]
lldb/include/lldb/Core/Module.h [new file with mode: 0644]
lldb/include/lldb/Core/ModuleChild.h [new file with mode: 0644]
lldb/include/lldb/Core/ModuleList.h [new file with mode: 0644]
lldb/include/lldb/Core/Options.h [new file with mode: 0644]
lldb/include/lldb/Core/PluginInterface.h [new file with mode: 0644]
lldb/include/lldb/Core/PluginManager.h [new file with mode: 0644]
lldb/include/lldb/Core/RegularExpression.h [new file with mode: 0644]
lldb/include/lldb/Core/STLUtils.h [new file with mode: 0644]
lldb/include/lldb/Core/Scalar.h [new file with mode: 0644]
lldb/include/lldb/Core/SearchFilter.h [new file with mode: 0644]
lldb/include/lldb/Core/Section.h [new file with mode: 0644]
lldb/include/lldb/Core/SourceManager.h [new file with mode: 0644]
lldb/include/lldb/Core/State.h [new file with mode: 0644]
lldb/include/lldb/Core/Stream.h [new file with mode: 0644]
lldb/include/lldb/Core/StreamFile.h [new file with mode: 0644]
lldb/include/lldb/Core/StreamString.h [new file with mode: 0644]
lldb/include/lldb/Core/StringList.h [new file with mode: 0644]
lldb/include/lldb/Core/TTYState.h [new file with mode: 0644]
lldb/include/lldb/Core/ThreadSafeSTLMap.h [new file with mode: 0644]
lldb/include/lldb/Core/ThreadSafeValue.h [new file with mode: 0644]
lldb/include/lldb/Core/Timer.h [new file with mode: 0644]
lldb/include/lldb/Core/UUID.h [new file with mode: 0644]
lldb/include/lldb/Core/UniqueCStringMap.h [new file with mode: 0644]
lldb/include/lldb/Core/UserID.h [new file with mode: 0644]
lldb/include/lldb/Core/VMRange.h [new file with mode: 0644]
lldb/include/lldb/Core/Value.h [new file with mode: 0644]
lldb/include/lldb/Core/ValueObject.h [new file with mode: 0644]
lldb/include/lldb/Core/ValueObjectChild.h [new file with mode: 0644]
lldb/include/lldb/Core/ValueObjectList.h [new file with mode: 0644]
lldb/include/lldb/Core/ValueObjectRegister.h [new file with mode: 0644]
lldb/include/lldb/Core/ValueObjectVariable.h [new file with mode: 0644]
lldb/include/lldb/Core/dwarf.h [new file with mode: 0644]
lldb/include/lldb/Expression/ClangASTSource.h [new file with mode: 0644]
lldb/include/lldb/Expression/ClangExpression.h [new file with mode: 0644]
lldb/include/lldb/Expression/ClangExpressionDeclMap.h [new file with mode: 0644]
lldb/include/lldb/Expression/ClangExpressionVariable.h [new file with mode: 0644]
lldb/include/lldb/Expression/ClangFunction.h [new file with mode: 0644]
lldb/include/lldb/Expression/ClangStmtVisitor.h [new file with mode: 0644]
lldb/include/lldb/Expression/DWARFExpression.h [new file with mode: 0644]
lldb/include/lldb/Expression/RecordingMemoryManager.h [new file with mode: 0644]
lldb/include/lldb/Host/Condition.h [new file with mode: 0644]
lldb/include/lldb/Host/Endian.h [new file with mode: 0644]
lldb/include/lldb/Host/Host.h [new file with mode: 0644]
lldb/include/lldb/Host/Mutex.h [new file with mode: 0644]
lldb/include/lldb/Host/Predicate.h [new file with mode: 0644]
lldb/include/lldb/Host/Symbols.h [new file with mode: 0644]
lldb/include/lldb/Host/TimeValue.h [new file with mode: 0644]
lldb/include/lldb/Host/Types.h [new file with mode: 0644]
lldb/include/lldb/Interpreter/CommandCompletions.h [new file with mode: 0644]
lldb/include/lldb/Interpreter/CommandContext.h [new file with mode: 0644]
lldb/include/lldb/Interpreter/CommandInterpreter.h [new file with mode: 0644]
lldb/include/lldb/Interpreter/CommandObject.h [new file with mode: 0644]
lldb/include/lldb/Interpreter/CommandObjectCrossref.h [new file with mode: 0644]
lldb/include/lldb/Interpreter/CommandObjectMultiword.h [new file with mode: 0644]
lldb/include/lldb/Interpreter/CommandObjectRegexCommand.h [new file with mode: 0644]
lldb/include/lldb/Interpreter/CommandReturnObject.h [new file with mode: 0644]
lldb/include/lldb/Interpreter/ScriptInterpreter.h [new file with mode: 0644]
lldb/include/lldb/Interpreter/ScriptInterpreterNone.h [new file with mode: 0644]
lldb/include/lldb/Interpreter/ScriptInterpreterPython.h [new file with mode: 0644]
lldb/include/lldb/Interpreter/StateVariable.h [new file with mode: 0644]
lldb/include/lldb/Symbol/Block.h [new file with mode: 0644]
lldb/include/lldb/Symbol/ClangASTContext.h [new file with mode: 0644]
lldb/include/lldb/Symbol/CompileUnit.h [new file with mode: 0644]
lldb/include/lldb/Symbol/DWARFCallFrameInfo.h [new file with mode: 0644]
lldb/include/lldb/Symbol/Declaration.h [new file with mode: 0644]
lldb/include/lldb/Symbol/Function.h [new file with mode: 0644]
lldb/include/lldb/Symbol/LineEntry.h [new file with mode: 0644]
lldb/include/lldb/Symbol/LineTable.h [new file with mode: 0644]
lldb/include/lldb/Symbol/ObjectContainer.h [new file with mode: 0644]
lldb/include/lldb/Symbol/ObjectFile.h [new file with mode: 0644]
lldb/include/lldb/Symbol/Symbol.h [new file with mode: 0644]
lldb/include/lldb/Symbol/SymbolContext.h [new file with mode: 0644]
lldb/include/lldb/Symbol/SymbolContextScope.h [new file with mode: 0644]
lldb/include/lldb/Symbol/SymbolFile.h [new file with mode: 0644]
lldb/include/lldb/Symbol/SymbolVendor.h [new file with mode: 0644]
lldb/include/lldb/Symbol/Symtab.h [new file with mode: 0644]
lldb/include/lldb/Symbol/Type.h [new file with mode: 0644]
lldb/include/lldb/Symbol/TypeList.h [new file with mode: 0644]
lldb/include/lldb/Symbol/Variable.h [new file with mode: 0644]
lldb/include/lldb/Symbol/VariableList.h [new file with mode: 0644]
lldb/include/lldb/Target/ABI.h [new file with mode: 0644]
lldb/include/lldb/Target/DynamicLoader.h [new file with mode: 0644]
lldb/include/lldb/Target/ExecutionContext.h [new file with mode: 0644]
lldb/include/lldb/Target/ExecutionContextScope.h [new file with mode: 0644]
lldb/include/lldb/Target/ObjCObjectPrinter.h [new file with mode: 0644]
lldb/include/lldb/Target/PathMappingList.h [new file with mode: 0644]
lldb/include/lldb/Target/Process.h [new file with mode: 0644]
lldb/include/lldb/Target/RegisterContext.h [new file with mode: 0644]
lldb/include/lldb/Target/StackFrame.h [new file with mode: 0644]
lldb/include/lldb/Target/StackFrameList.h [new file with mode: 0644]
lldb/include/lldb/Target/StackID.h [new file with mode: 0644]
lldb/include/lldb/Target/Target.h [new file with mode: 0644]
lldb/include/lldb/Target/TargetList.h [new file with mode: 0644]
lldb/include/lldb/Target/Thread.h [new file with mode: 0644]
lldb/include/lldb/Target/ThreadList.h [new file with mode: 0644]
lldb/include/lldb/Target/ThreadPlan.h [new file with mode: 0644]
lldb/include/lldb/Target/ThreadPlanBase.h [new file with mode: 0644]
lldb/include/lldb/Target/ThreadPlanCallFunction.h [new file with mode: 0644]
lldb/include/lldb/Target/ThreadPlanContinue.h [new file with mode: 0644]
lldb/include/lldb/Target/ThreadPlanRunToAddress.h [new file with mode: 0644]
lldb/include/lldb/Target/ThreadPlanShouldStopHere.h [new file with mode: 0644]
lldb/include/lldb/Target/ThreadPlanStepInRange.h [new file with mode: 0644]
lldb/include/lldb/Target/ThreadPlanStepInstruction.h [new file with mode: 0644]
lldb/include/lldb/Target/ThreadPlanStepOut.h [new file with mode: 0644]
lldb/include/lldb/Target/ThreadPlanStepOverBreakpoint.h [new file with mode: 0644]
lldb/include/lldb/Target/ThreadPlanStepOverRange.h [new file with mode: 0644]
lldb/include/lldb/Target/ThreadPlanStepRange.h [new file with mode: 0644]
lldb/include/lldb/Target/ThreadPlanStepThrough.h [new file with mode: 0644]
lldb/include/lldb/Target/ThreadPlanStepUntil.h [new file with mode: 0644]
lldb/include/lldb/Target/UnixSignals.h [new file with mode: 0644]
lldb/include/lldb/Target/Unwind.h [new file with mode: 0644]
lldb/include/lldb/lldb-defines.h [new file with mode: 0644]
lldb/include/lldb/lldb-enumerations.h [new file with mode: 0644]
lldb/include/lldb/lldb-forward-rtti.h [new file with mode: 0644]
lldb/include/lldb/lldb-forward.h [new file with mode: 0644]
lldb/include/lldb/lldb-include.h [new file with mode: 0644]
lldb/include/lldb/lldb-private-interfaces.h [new file with mode: 0644]
lldb/include/lldb/lldb-private-log.h [new file with mode: 0644]
lldb/include/lldb/lldb-private.h [new file with mode: 0644]
lldb/include/lldb/lldb-types.h [new file with mode: 0644]
lldb/lldb.runcontext [new file with mode: 0644]
lldb/lldb.xcodeproj/project.pbxproj [new file with mode: 0644]
lldb/lldb.xcworkspace/contents.xcworkspacedata [new file with mode: 0644]
lldb/resources/LLDB-Info.plist [new file with mode: 0644]
lldb/resources/lldb-framework-exports [new file with mode: 0644]
lldb/scripts/Python/build-swig-Python.sh [new file with mode: 0755]
lldb/scripts/Python/edit-swig-python-wrapper-file.py [new file with mode: 0644]
lldb/scripts/Python/finish-swig-Python-LLDB.sh [new file with mode: 0755]
lldb/scripts/build-llvm.pl [new file with mode: 0644]
lldb/scripts/build-swig-wrapper-classes.sh [new file with mode: 0755]
lldb/scripts/checkpoint-llvm.pl [new file with mode: 0755]
lldb/scripts/finish-swig-wrapper-classes.sh [new file with mode: 0755]
lldb/scripts/install-lldb.sh [new file with mode: 0755]
lldb/scripts/lldb.swig [new file with mode: 0644]
lldb/scripts/sed-sources [new file with mode: 0755]
lldb/source/API/SBAddress.cpp [new file with mode: 0644]
lldb/source/API/SBBlock.cpp [new file with mode: 0644]
lldb/source/API/SBBreakpoint.cpp [new file with mode: 0644]
lldb/source/API/SBBreakpointLocation.cpp [new file with mode: 0644]
lldb/source/API/SBBroadcaster.cpp [new file with mode: 0644]
lldb/source/API/SBCommandContext.cpp [new file with mode: 0644]
lldb/source/API/SBCommandInterpreter.cpp [new file with mode: 0644]
lldb/source/API/SBCommandReturnObject.cpp [new file with mode: 0644]
lldb/source/API/SBCommunication.cpp [new file with mode: 0644]
lldb/source/API/SBCompileUnit.cpp [new file with mode: 0644]
lldb/source/API/SBDebugger.cpp [new file with mode: 0644]
lldb/source/API/SBError.cpp [new file with mode: 0644]
lldb/source/API/SBEvent.cpp [new file with mode: 0644]
lldb/source/API/SBFileSpec.cpp [new file with mode: 0644]
lldb/source/API/SBFrame.cpp [new file with mode: 0644]
lldb/source/API/SBFunction.cpp [new file with mode: 0644]
lldb/source/API/SBHostOS.cpp [new file with mode: 0644]
lldb/source/API/SBInputReader.cpp [new file with mode: 0644]
lldb/source/API/SBInstruction.cpp [new file with mode: 0644]
lldb/source/API/SBInstructionList.cpp [new file with mode: 0644]
lldb/source/API/SBLineEntry.cpp [new file with mode: 0644]
lldb/source/API/SBListener.cpp [new file with mode: 0644]
lldb/source/API/SBModule.cpp [new file with mode: 0644]
lldb/source/API/SBProcess.cpp [new file with mode: 0644]
lldb/source/API/SBSourceManager.cpp [new file with mode: 0644]
lldb/source/API/SBStringList.cpp [new file with mode: 0644]
lldb/source/API/SBSymbol.cpp [new file with mode: 0644]
lldb/source/API/SBSymbolContext.cpp [new file with mode: 0644]
lldb/source/API/SBTarget.cpp [new file with mode: 0644]
lldb/source/API/SBThread.cpp [new file with mode: 0644]
lldb/source/API/SBType.cpp [new file with mode: 0644]
lldb/source/API/SBValue.cpp [new file with mode: 0644]
lldb/source/API/SBValueList.cpp [new file with mode: 0644]
lldb/source/Breakpoint/Breakpoint.cpp [new file with mode: 0644]
lldb/source/Breakpoint/BreakpointID.cpp [new file with mode: 0644]
lldb/source/Breakpoint/BreakpointIDList.cpp [new file with mode: 0644]
lldb/source/Breakpoint/BreakpointList.cpp [new file with mode: 0644]
lldb/source/Breakpoint/BreakpointLocation.cpp [new file with mode: 0644]
lldb/source/Breakpoint/BreakpointLocationCollection.cpp [new file with mode: 0644]
lldb/source/Breakpoint/BreakpointLocationList.cpp [new file with mode: 0644]
lldb/source/Breakpoint/BreakpointOptions.cpp [new file with mode: 0644]
lldb/source/Breakpoint/BreakpointResolver.cpp [new file with mode: 0644]
lldb/source/Breakpoint/BreakpointResolverAddress.cpp [new file with mode: 0644]
lldb/source/Breakpoint/BreakpointResolverFileLine.cpp [new file with mode: 0644]
lldb/source/Breakpoint/BreakpointResolverName.cpp [new file with mode: 0644]
lldb/source/Breakpoint/BreakpointSite.cpp [new file with mode: 0644]
lldb/source/Breakpoint/BreakpointSiteList.cpp [new file with mode: 0644]
lldb/source/Breakpoint/Stoppoint.cpp [new file with mode: 0644]
lldb/source/Breakpoint/StoppointCallbackContext.cpp [new file with mode: 0644]
lldb/source/Breakpoint/StoppointLocation.cpp [new file with mode: 0644]
lldb/source/Breakpoint/WatchpointLocation.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectAdd.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectAdd.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectAlias.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectAlias.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectAppend.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectAppend.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectApropos.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectApropos.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectArgs.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectArgs.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectBreakpoint.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectBreakpoint.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectBreakpointCommand.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectBreakpointCommand.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectCall.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectCall.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectDelete.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectDelete.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectDisassemble.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectDisassemble.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectExpression.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectExpression.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectFile.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectFile.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectFrame.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectFrame.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectHelp.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectHelp.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectImage.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectImage.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectInfo.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectInfo.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectLog.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectLog.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectMemory.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectMemory.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectProcess.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectProcess.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectQuit.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectQuit.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectRegister.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectRegister.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectRemove.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectRemove.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectScript.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectScript.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectSelect.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectSelect.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectSet.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectSet.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectSettings.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectSettings.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectShow.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectShow.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectSource.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectSource.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectSourceFile.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectSourceFile.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectStatus.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectStatus.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectSyntax.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectSyntax.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectTarget.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectTarget.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectThread.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectThread.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectTranslate.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectTranslate.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectUnalias.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectUnalias.h [new file with mode: 0644]
lldb/source/Commands/CommandObjectVariable.cpp [new file with mode: 0644]
lldb/source/Commands/CommandObjectVariable.h [new file with mode: 0644]
lldb/source/Core/Address.cpp [new file with mode: 0644]
lldb/source/Core/AddressRange.cpp [new file with mode: 0644]
lldb/source/Core/AddressResolver.cpp [new file with mode: 0644]
lldb/source/Core/AddressResolverFileLine.cpp [new file with mode: 0644]
lldb/source/Core/AddressResolverName.cpp [new file with mode: 0644]
lldb/source/Core/ArchSpec.cpp [new file with mode: 0644]
lldb/source/Core/Args.cpp [new file with mode: 0644]
lldb/source/Core/Baton.cpp [new file with mode: 0644]
lldb/source/Core/Broadcaster.cpp [new file with mode: 0644]
lldb/source/Core/Communication.cpp [new file with mode: 0644]
lldb/source/Core/Connection.cpp [new file with mode: 0644]
lldb/source/Core/ConnectionFileDescriptor.cpp [new file with mode: 0644]
lldb/source/Core/ConstString.cpp [new file with mode: 0644]
lldb/source/Core/DataBufferHeap.cpp [new file with mode: 0644]
lldb/source/Core/DataBufferMemoryMap.cpp [new file with mode: 0644]
lldb/source/Core/DataExtractor.cpp [new file with mode: 0644]
lldb/source/Core/Debugger.cpp [new file with mode: 0644]
lldb/source/Core/Disassembler.cpp [new file with mode: 0644]
lldb/source/Core/DynamicLoader.cpp [new file with mode: 0644]
lldb/source/Core/Error.cpp [new file with mode: 0644]
lldb/source/Core/Event.cpp [new file with mode: 0644]
lldb/source/Core/FileSpec.cpp [new file with mode: 0644]
lldb/source/Core/FileSpecList.cpp [new file with mode: 0644]
lldb/source/Core/Flags.cpp [new file with mode: 0644]
lldb/source/Core/InputReader.cpp [new file with mode: 0644]
lldb/source/Core/Language.cpp [new file with mode: 0644]
lldb/source/Core/Listener.cpp [new file with mode: 0644]
lldb/source/Core/Log.cpp [new file with mode: 0644]
lldb/source/Core/Mangled.cpp [new file with mode: 0644]
lldb/source/Core/Module.cpp [new file with mode: 0644]
lldb/source/Core/ModuleChild.cpp [new file with mode: 0644]
lldb/source/Core/ModuleList.cpp [new file with mode: 0644]
lldb/source/Core/Options.cpp [new file with mode: 0644]
lldb/source/Core/PluginManager.cpp [new file with mode: 0644]
lldb/source/Core/RegularExpression.cpp [new file with mode: 0644]
lldb/source/Core/Scalar.cpp [new file with mode: 0644]
lldb/source/Core/SearchFilter.cpp [new file with mode: 0644]
lldb/source/Core/Section.cpp [new file with mode: 0644]
lldb/source/Core/SourceManager.cpp [new file with mode: 0644]
lldb/source/Core/State.cpp [new file with mode: 0644]
lldb/source/Core/Stream.cpp [new file with mode: 0644]
lldb/source/Core/StreamFile.cpp [new file with mode: 0644]
lldb/source/Core/StreamString.cpp [new file with mode: 0644]
lldb/source/Core/StringList.cpp [new file with mode: 0644]
lldb/source/Core/TTYState.cpp [new file with mode: 0644]
lldb/source/Core/Timer.cpp [new file with mode: 0644]
lldb/source/Core/UUID.cpp [new file with mode: 0644]
lldb/source/Core/UserID.cpp [new file with mode: 0644]
lldb/source/Core/VMRange.cpp [new file with mode: 0644]
lldb/source/Core/Value.cpp [new file with mode: 0644]
lldb/source/Core/ValueObject.cpp [new file with mode: 0644]
lldb/source/Core/ValueObjectChild.cpp [new file with mode: 0644]
lldb/source/Core/ValueObjectList.cpp [new file with mode: 0644]
lldb/source/Core/ValueObjectRegister.cpp [new file with mode: 0644]
lldb/source/Core/ValueObjectVariable.cpp [new file with mode: 0644]
lldb/source/Expression/ClangASTSource.cpp [new file with mode: 0644]
lldb/source/Expression/ClangExpression.cpp [new file with mode: 0644]
lldb/source/Expression/ClangExpressionDeclMap.cpp [new file with mode: 0644]
lldb/source/Expression/ClangExpressionVariable.cpp [new file with mode: 0644]
lldb/source/Expression/ClangFunction.cpp [new file with mode: 0644]
lldb/source/Expression/ClangStmtVisitor.cpp [new file with mode: 0644]
lldb/source/Expression/DWARFExpression.cpp [new file with mode: 0644]
lldb/source/Expression/RecordingMemoryManager.cpp [new file with mode: 0644]
lldb/source/Host/macosx/Condition.cpp [new file with mode: 0644]
lldb/source/Host/macosx/Host.mm [new file with mode: 0644]
lldb/source/Host/macosx/Mutex.cpp [new file with mode: 0644]
lldb/source/Host/macosx/Symbols.cpp [new file with mode: 0644]
lldb/source/Host/macosx/TimeValue.cpp [new file with mode: 0644]
lldb/source/Host/macosx/cfcpp/CFCBundle.cpp [new file with mode: 0644]
lldb/source/Host/macosx/cfcpp/CFCBundle.h [new file with mode: 0644]
lldb/source/Host/macosx/cfcpp/CFCData.cpp [new file with mode: 0644]
lldb/source/Host/macosx/cfcpp/CFCData.h [new file with mode: 0644]
lldb/source/Host/macosx/cfcpp/CFCMutableArray.cpp [new file with mode: 0644]
lldb/source/Host/macosx/cfcpp/CFCMutableArray.h [new file with mode: 0644]
lldb/source/Host/macosx/cfcpp/CFCMutableDictionary.cpp [new file with mode: 0644]
lldb/source/Host/macosx/cfcpp/CFCMutableDictionary.h [new file with mode: 0644]
lldb/source/Host/macosx/cfcpp/CFCMutableSet.cpp [new file with mode: 0644]
lldb/source/Host/macosx/cfcpp/CFCMutableSet.h [new file with mode: 0644]
lldb/source/Host/macosx/cfcpp/CFCReleaser.h [new file with mode: 0644]
lldb/source/Host/macosx/cfcpp/CFCString.cpp [new file with mode: 0644]
lldb/source/Host/macosx/cfcpp/CFCString.h [new file with mode: 0644]
lldb/source/Host/macosx/cfcpp/CoreFoundationCPP.h [new file with mode: 0644]
lldb/source/Interpreter/CommandCompletions.cpp [new file with mode: 0644]
lldb/source/Interpreter/CommandContext.cpp [new file with mode: 0644]
lldb/source/Interpreter/CommandInterpreter.cpp [new file with mode: 0644]
lldb/source/Interpreter/CommandObject.cpp [new file with mode: 0644]
lldb/source/Interpreter/CommandObjectCrossref.cpp [new file with mode: 0644]
lldb/source/Interpreter/CommandObjectMultiword.cpp [new file with mode: 0644]
lldb/source/Interpreter/CommandObjectRegexCommand.cpp [new file with mode: 0644]
lldb/source/Interpreter/CommandReturnObject.cpp [new file with mode: 0644]
lldb/source/Interpreter/ScriptInterpreter.cpp [new file with mode: 0644]
lldb/source/Interpreter/ScriptInterpreterNone.cpp [new file with mode: 0644]
lldb/source/Interpreter/ScriptInterpreterPython.cpp [new file with mode: 0644]
lldb/source/Interpreter/StateVariable.cpp [new file with mode: 0644]
lldb/source/Interpreter/embedded_interpreter.py [new file with mode: 0644]
lldb/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.cpp [new file with mode: 0644]
lldb/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.h [new file with mode: 0644]
lldb/source/Plugins/ABI/SysV-x86_64/ABISysV_x86_64.cpp [new file with mode: 0644]
lldb/source/Plugins/ABI/SysV-x86_64/ABISysV_x86_64.h [new file with mode: 0644]
lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp [new file with mode: 0644]
lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.h [new file with mode: 0644]
lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp [new file with mode: 0644]
lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.h [new file with mode: 0644]
lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLDLog.cpp [new file with mode: 0644]
lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLDLog.h [new file with mode: 0644]
lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/ObjCTrampolineHandler.cpp [new file with mode: 0644]
lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/ObjCTrampolineHandler.h [new file with mode: 0644]
lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/ThreadPlanStepThroughObjCTrampoline.cpp [new file with mode: 0644]
lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/ThreadPlanStepThroughObjCTrampoline.h [new file with mode: 0644]
lldb/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp [new file with mode: 0644]
lldb/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.h [new file with mode: 0644]
lldb/source/Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.cpp [new file with mode: 0644]
lldb/source/Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.h [new file with mode: 0644]
lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp [new file with mode: 0644]
lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.h [new file with mode: 0644]
lldb/source/Plugins/ObjectFile/ELF/elf.h [new file with mode: 0644]
lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp [new file with mode: 0644]
lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/scripts/cc-swig [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/scripts/config.pl [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/scripts/test-ProcessDebug.pl [new file with mode: 0755]
lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/MachException.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/MachException.h [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/MachTask.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/MachTask.h [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/MachThreadContext.h [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/MachThreadContext_arm.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/MachThreadContext_arm.h [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/MachThreadContext_i386.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/MachThreadContext_i386.h [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/MachThreadContext_x86_64.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/MachThreadContext_x86_64.h [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/MachVMMemory.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/MachVMMemory.h [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/MachVMRegion.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/MachVMRegion.h [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/MacOSX/ProcessControl-mig.defs [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/ProcessMacOSX.h [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/ProcessMacOSXLog.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/ProcessMacOSXLog.h [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/ProcessMacOSXRemote.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/ProcessMacOSXRemote.h [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/RegisterContextMach_arm.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/RegisterContextMach_arm.h [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/RegisterContextMach_i386.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/RegisterContextMach_i386.h [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/RegisterContextMach_x86_64.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/RegisterContextMach_x86_64.h [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/ThreadMacOSX.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/MacOSX-User/source/ThreadMacOSX.h [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/LibUnwindRegisterContext.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/LibUnwindRegisterContext.h [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/MacOSXLibunwindCallbacks.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/MacOSXLibunwindCallbacks.h [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/RegisterContextMacOSXFrameBackchain.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/RegisterContextMacOSXFrameBackchain.h [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/UnwindLibUnwind.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/UnwindLibUnwind.h [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/UnwindMacOSXFrameBackchain.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/UnwindMacOSXFrameBackchain.h [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/include/libunwind.h [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/include/mach-o/compact_unwind_encoding.h [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/include/unwind.h [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/AddressSpace.hpp [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/ArchDefaultUnwinder.hpp [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/AssemblyInstructions.hpp [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/AssemblyParser.hpp [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/CompactUnwinder.hpp [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/DwarfInstructions.hpp [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/DwarfParser.hpp [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/FileAbstraction.hpp [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/InternalMacros.h [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/Registers.hpp [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/Registers.s [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/RemoteDebuggerDummyUnwinder.hpp [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/RemoteProcInfo.hpp [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/RemoteRegisterMap.hpp [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/RemoteUnwindProfile.h [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/Unwind-sjlj.c [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/UnwindCursor.hpp [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/UnwindLevel1-gcc-ext.c [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/UnwindLevel1.c [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/dwarf2.h [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/libunwind_priv.h [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/libuwind.cxx [new file with mode: 0644]
lldb/source/Plugins/Process/Utility/libunwind/src/unw_getcontext.s [new file with mode: 0644]
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.h [new file with mode: 0644]
lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.h [new file with mode: 0644]
lldb/source/Plugins/Process/gdb-remote/GDBServer.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/gdb-remote/GDBServerLog.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/gdb-remote/GDBServerLog.h [new file with mode: 0644]
lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h [new file with mode: 0644]
lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.h [new file with mode: 0644]
lldb/source/Plugins/Process/gdb-remote/ThreadGDBRemote.cpp [new file with mode: 0644]
lldb/source/Plugins/Process/gdb-remote/ThreadGDBRemote.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFAttribute.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDIECollection.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDIECollection.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugAbbrev.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugAbbrev.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugArangeSet.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugArangeSet.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugAranges.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugAranges.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugLine.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugLine.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugMacinfo.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugMacinfo.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugMacinfoEntry.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugMacinfoEntry.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugPubnames.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugPubnames.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugPubnamesSet.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugPubnamesSet.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDefines.c [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFDefines.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFLocationDescription.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFLocationDescription.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFLocationList.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/DWARFLocationList.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/LogChannelDWARF.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/LogChannelDWARF.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolFile/Symtab/SymbolFileSymtab.h [new file with mode: 0644]
lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp [new file with mode: 0644]
lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.h [new file with mode: 0644]
lldb/source/Symbol/Block.cpp [new file with mode: 0644]
lldb/source/Symbol/ClangASTContext.cpp [new file with mode: 0644]
lldb/source/Symbol/CompileUnit.cpp [new file with mode: 0644]
lldb/source/Symbol/DWARFCallFrameInfo.cpp [new file with mode: 0644]
lldb/source/Symbol/Declaration.cpp [new file with mode: 0644]
lldb/source/Symbol/Function.cpp [new file with mode: 0644]
lldb/source/Symbol/LineEntry.cpp [new file with mode: 0644]
lldb/source/Symbol/LineTable.cpp [new file with mode: 0644]
lldb/source/Symbol/ObjectFile.cpp [new file with mode: 0644]
lldb/source/Symbol/Symbol.cpp [new file with mode: 0644]
lldb/source/Symbol/SymbolContext.cpp [new file with mode: 0644]
lldb/source/Symbol/SymbolFile.cpp [new file with mode: 0644]
lldb/source/Symbol/SymbolVendor.mm [new file with mode: 0644]
lldb/source/Symbol/Symtab.cpp [new file with mode: 0644]
lldb/source/Symbol/Type.cpp [new file with mode: 0644]
lldb/source/Symbol/TypeList.cpp [new file with mode: 0644]
lldb/source/Symbol/Variable.cpp [new file with mode: 0644]
lldb/source/Symbol/VariableList.cpp [new file with mode: 0644]
lldb/source/Target/ABI.cpp [new file with mode: 0644]
lldb/source/Target/ExecutionContext.cpp [new file with mode: 0644]
lldb/source/Target/ObjCObjectPrinter.cpp [new file with mode: 0644]
lldb/source/Target/PathMappingList.cpp [new file with mode: 0644]
lldb/source/Target/Process.cpp [new file with mode: 0644]
lldb/source/Target/RegisterContext.cpp [new file with mode: 0644]
lldb/source/Target/StackFrame.cpp [new file with mode: 0644]
lldb/source/Target/StackFrameList.cpp [new file with mode: 0644]
lldb/source/Target/StackID.cpp [new file with mode: 0644]
lldb/source/Target/Target.cpp [new file with mode: 0644]
lldb/source/Target/TargetList.cpp [new file with mode: 0644]
lldb/source/Target/Thread.cpp [new file with mode: 0644]
lldb/source/Target/ThreadList.cpp [new file with mode: 0644]
lldb/source/Target/ThreadPlan.cpp [new file with mode: 0644]
lldb/source/Target/ThreadPlanBase.cpp [new file with mode: 0644]
lldb/source/Target/ThreadPlanCallFunction.cpp [new file with mode: 0644]
lldb/source/Target/ThreadPlanContinue.cpp [new file with mode: 0644]
lldb/source/Target/ThreadPlanRunToAddress.cpp [new file with mode: 0644]
lldb/source/Target/ThreadPlanShouldStopHere.cpp [new file with mode: 0644]
lldb/source/Target/ThreadPlanStepInRange.cpp [new file with mode: 0644]
lldb/source/Target/ThreadPlanStepInstruction.cpp [new file with mode: 0644]
lldb/source/Target/ThreadPlanStepOut.cpp [new file with mode: 0644]
lldb/source/Target/ThreadPlanStepOverBreakpoint.cpp [new file with mode: 0644]
lldb/source/Target/ThreadPlanStepOverRange.cpp [new file with mode: 0644]
lldb/source/Target/ThreadPlanStepRange.cpp [new file with mode: 0644]
lldb/source/Target/ThreadPlanStepThrough.cpp [new file with mode: 0644]
lldb/source/Target/ThreadPlanStepUntil.cpp [new file with mode: 0644]
lldb/source/Target/UnixSignals.cpp [new file with mode: 0644]
lldb/source/Utility/ARM_DWARF_Registers.h [new file with mode: 0644]
lldb/source/Utility/ARM_GCC_Registers.h [new file with mode: 0644]
lldb/source/Utility/PseudoTerminal.cpp [new file with mode: 0644]
lldb/source/Utility/PseudoTerminal.h [new file with mode: 0644]
lldb/source/Utility/StringExtractor.cpp [new file with mode: 0644]
lldb/source/Utility/StringExtractor.h [new file with mode: 0644]
lldb/source/Utility/StringExtractorGDBRemote.cpp [new file with mode: 0644]
lldb/source/Utility/StringExtractorGDBRemote.h [new file with mode: 0644]
lldb/source/lldb-log.cpp [new file with mode: 0644]
lldb/source/lldb.cpp [new file with mode: 0644]
lldb/test/Makefile [new file with mode: 0644]
lldb/test/array_types/Makefile [new file with mode: 0644]
lldb/test/array_types/cmds.txt [new file with mode: 0644]
lldb/test/array_types/main.c [new file with mode: 0644]
lldb/test/bitfields/Makefile [new file with mode: 0644]
lldb/test/bitfields/main.c [new file with mode: 0644]
lldb/test/class_types/Makefile [new file with mode: 0644]
lldb/test/class_types/cmds.txt [new file with mode: 0644]
lldb/test/class_types/main.cpp [new file with mode: 0644]
lldb/test/dead-strip/Makefile [new file with mode: 0644]
lldb/test/dead-strip/cmds.txt [new file with mode: 0644]
lldb/test/dead-strip/main.c [new file with mode: 0644]
lldb/test/enum_types/Makefile [new file with mode: 0644]
lldb/test/enum_types/main.c [new file with mode: 0644]
lldb/test/function_types/Makefile [new file with mode: 0644]
lldb/test/function_types/main.c [new file with mode: 0644]
lldb/test/global_variables/Makefile [new file with mode: 0644]
lldb/test/global_variables/a.c [new file with mode: 0644]
lldb/test/global_variables/cmds.txt [new file with mode: 0644]
lldb/test/global_variables/main.c [new file with mode: 0644]
lldb/test/load_unload/Makefile [new file with mode: 0644]
lldb/test/load_unload/a.c [new file with mode: 0644]
lldb/test/load_unload/b.c [new file with mode: 0644]
lldb/test/load_unload/c.c [new file with mode: 0644]
lldb/test/load_unload/cmds.txt [new file with mode: 0644]
lldb/test/load_unload/main.c [new file with mode: 0644]
lldb/test/namespace/Makefile [new file with mode: 0644]
lldb/test/namespace/cmds.txt [new file with mode: 0644]
lldb/test/namespace/main.cpp [new file with mode: 0644]
lldb/test/order/Makefile [new file with mode: 0644]
lldb/test/order/cmds.txt [new file with mode: 0644]
lldb/test/order/main.c [new file with mode: 0644]
lldb/test/order/order-file [new file with mode: 0644]
lldb/test/print-obj/Makefile [new file with mode: 0644]
lldb/test/print-obj/blocked.m [new file with mode: 0644]
lldb/test/set_values/Makefile [new file with mode: 0644]
lldb/test/set_values/main.c [new file with mode: 0644]
lldb/test/signed_types/Makefile [new file with mode: 0644]
lldb/test/signed_types/main.cpp [new file with mode: 0644]
lldb/test/stl/Makefile [new file with mode: 0644]
lldb/test/stl/cmds.txt [new file with mode: 0644]
lldb/test/stl/main.cpp [new file with mode: 0644]
lldb/test/struct_types/Makefile [new file with mode: 0644]
lldb/test/struct_types/cmds.txt [new file with mode: 0644]
lldb/test/struct_types/main.c [new file with mode: 0644]
lldb/test/tester.py [new file with mode: 0755]
lldb/test/threads/Makefile [new file with mode: 0644]
lldb/test/threads/main.cpp [new file with mode: 0644]
lldb/test/unsigned_types/Makefile [new file with mode: 0644]
lldb/test/unsigned_types/main.cpp [new file with mode: 0644]
lldb/tools/debugserver/debugnub-exports [new file with mode: 0644]
lldb/tools/debugserver/debugserver.xcodeproj/project.pbxproj [new file with mode: 0644]
lldb/tools/debugserver/resources/lldb-debugserver-Info.plist [new file with mode: 0644]
lldb/tools/debugserver/resources/lldb-debugserver-entitlements.plist [new file with mode: 0644]
lldb/tools/debugserver/scripts/dbgnub-config.pl [new file with mode: 0644]
lldb/tools/debugserver/source/ChangeLog [new file with mode: 0644]
lldb/tools/debugserver/source/DNB.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/DNB.h [new file with mode: 0644]
lldb/tools/debugserver/source/DNBArch.h [new file with mode: 0644]
lldb/tools/debugserver/source/DNBBreakpoint.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/DNBBreakpoint.h [new file with mode: 0644]
lldb/tools/debugserver/source/DNBDataRef.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/DNBDataRef.h [new file with mode: 0644]
lldb/tools/debugserver/source/DNBDefs.h [new file with mode: 0644]
lldb/tools/debugserver/source/DNBError.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/DNBError.h [new file with mode: 0644]
lldb/tools/debugserver/source/DNBLog.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/DNBLog.h [new file with mode: 0644]
lldb/tools/debugserver/source/DNBRegisterInfo.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/DNBRegisterInfo.h [new file with mode: 0644]
lldb/tools/debugserver/source/DNBRuntimeAction.h [new file with mode: 0644]
lldb/tools/debugserver/source/DNBThreadResumeActions.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/DNBThreadResumeActions.h [new file with mode: 0644]
lldb/tools/debugserver/source/DNBTimer.h [new file with mode: 0644]
lldb/tools/debugserver/source/FunctionProfiler.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/FunctionProfiler.h [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/CFBundle.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/CFBundle.h [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/CFData.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/CFData.h [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/CFString.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/CFString.h [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/CFUtils.h [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/MachDYLD.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/MachDYLD.h [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/MachException.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/MachException.h [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/MachProcess.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/MachProcess.h [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/MachTask.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/MachTask.h [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/MachThread.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/MachThread.h [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/MachThreadList.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/MachThreadList.h [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/MachVMMemory.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/MachVMMemory.h [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/MachVMRegion.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/MachVMRegion.h [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/arm/DNBArchImpl.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/arm/DNBArchImpl.h [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/dbgnub-mig.defs [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/i386/DNBArchImplI386.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/i386/DNBArchImplI386.h [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/ppc/DNBArchImpl.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/ppc/DNBArchImpl.h [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/x86_64/DNBArchImplX86_64.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/MacOSX/x86_64/DNBArchImplX86_64.h [new file with mode: 0644]
lldb/tools/debugserver/source/PThreadCondition.h [new file with mode: 0644]
lldb/tools/debugserver/source/PThreadEvent.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/PThreadEvent.h [new file with mode: 0644]
lldb/tools/debugserver/source/PThreadMutex.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/PThreadMutex.h [new file with mode: 0644]
lldb/tools/debugserver/source/ProfileObjectiveC.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/ProfileObjectiveC.h [new file with mode: 0644]
lldb/tools/debugserver/source/PseudoTerminal.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/PseudoTerminal.h [new file with mode: 0644]
lldb/tools/debugserver/source/RNBContext.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/RNBContext.h [new file with mode: 0644]
lldb/tools/debugserver/source/RNBDefs.h [new file with mode: 0644]
lldb/tools/debugserver/source/RNBRemote.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/RNBRemote.h [new file with mode: 0644]
lldb/tools/debugserver/source/RNBServices.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/RNBServices.h [new file with mode: 0644]
lldb/tools/debugserver/source/RNBSocket.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/RNBSocket.h [new file with mode: 0644]
lldb/tools/debugserver/source/SysSignal.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/SysSignal.h [new file with mode: 0644]
lldb/tools/debugserver/source/TTYState.cpp [new file with mode: 0644]
lldb/tools/debugserver/source/TTYState.h [new file with mode: 0644]
lldb/tools/debugserver/source/com.apple.debugserver.applist.plist [new file with mode: 0644]
lldb/tools/debugserver/source/com.apple.debugserver.plist [new file with mode: 0644]
lldb/tools/debugserver/source/debugserver-entitlements.plist [new file with mode: 0644]
lldb/tools/debugserver/source/debugserver.cpp [new file with mode: 0644]
lldb/tools/driver/Driver.cpp [new file with mode: 0644]
lldb/tools/driver/Driver.h [new file with mode: 0644]
lldb/tools/driver/IOChannel.cpp [new file with mode: 0644]
lldb/tools/driver/IOChannel.h [new file with mode: 0644]
lldb/tools/driver/lldb-Info.plist [new file with mode: 0644]
lldb/www/content.css [new file with mode: 0644]
lldb/www/index.html [new file with mode: 0644]
lldb/www/menu.css [new file with mode: 0644]
lldb/www/menu.html.incl [new file with mode: 0644]

diff --git a/lldb/docs/code-signing.txt b/lldb/docs/code-signing.txt
new file mode 100644 (file)
index 0000000..77cc099
--- /dev/null
@@ -0,0 +1,47 @@
+On MacOSX lldb needs to be code signed. The Debug and Release builds 
+are set to code sign using a code signing certificate named 
+lldb_codesign. 
+
+If you don't have one yet you will need to:
+- Launch /Applications/Utilities/Keychain Access.app
+
+- In Keychain Access select the "login" keychain in the "Keychains"
+  list in the upper left hand corner of the window.
+
+- Select the following menu item:
+
+       Keychain Access->Certificate Assistant->Create a Certificate...
+
+- Set the following settings
+
+       Name = lldb_codesign
+       Identity Type = Self Signed Root
+       Certificate Type = Code Signing
+
+- Click Continue
+- Click Continue
+- Click Done
+- Click on the "My Certificates"
+- Double click on your new lldb_codesign certificate
+- Turn down the "Trust" disclosure triangle
+
+       Change:
+               When using this certificate: Always Trust
+
+- Enter your login password to confirm and make it trusted
+
+The next steps are necessary on SnowLeopard, but are probably because of a bug
+how Keychain Access makes certificates (the steps above used to be enougnk 
+in Leopard.)
+
+- Option-drag the new lldb_codesign certificate from the login keychain to
+  the System keychain in the Keychains pane of the main Keychain Access window
+  to make a copy of this certificate in the System keychain.  You'll have to
+  authorize a few more times, set it to be "Always trusted" when asked.
+- Switch to the System keychain, and drag the copy of lldb_codesign you just
+  made there onto the desktop.
+- Switch to Terminal, and run the following:
+
+sudo security add-trust -d -r trustRoot -p basic -p codeSign -k /Library/Keychains/System.keychain ~/Desktop/lldb_codesign.cer
+
+That should do it.
diff --git a/lldb/docs/code_signing.txt b/lldb/docs/code_signing.txt
new file mode 100644 (file)
index 0000000..77cc099
--- /dev/null
@@ -0,0 +1,47 @@
+On MacOSX lldb needs to be code signed. The Debug and Release builds 
+are set to code sign using a code signing certificate named 
+lldb_codesign. 
+
+If you don't have one yet you will need to:
+- Launch /Applications/Utilities/Keychain Access.app
+
+- In Keychain Access select the "login" keychain in the "Keychains"
+  list in the upper left hand corner of the window.
+
+- Select the following menu item:
+
+       Keychain Access->Certificate Assistant->Create a Certificate...
+
+- Set the following settings
+
+       Name = lldb_codesign
+       Identity Type = Self Signed Root
+       Certificate Type = Code Signing
+
+- Click Continue
+- Click Continue
+- Click Done
+- Click on the "My Certificates"
+- Double click on your new lldb_codesign certificate
+- Turn down the "Trust" disclosure triangle
+
+       Change:
+               When using this certificate: Always Trust
+
+- Enter your login password to confirm and make it trusted
+
+The next steps are necessary on SnowLeopard, but are probably because of a bug
+how Keychain Access makes certificates (the steps above used to be enougnk 
+in Leopard.)
+
+- Option-drag the new lldb_codesign certificate from the login keychain to
+  the System keychain in the Keychains pane of the main Keychain Access window
+  to make a copy of this certificate in the System keychain.  You'll have to
+  authorize a few more times, set it to be "Always trusted" when asked.
+- Switch to the System keychain, and drag the copy of lldb_codesign you just
+  made there onto the desktop.
+- Switch to Terminal, and run the following:
+
+sudo security add-trust -d -r trustRoot -p basic -p codeSign -k /Library/Keychains/System.keychain ~/Desktop/lldb_codesign.cer
+
+That should do it.
diff --git a/lldb/include/lldb/API/LLDB.h b/lldb/include/lldb/API/LLDB.h
new file mode 100644 (file)
index 0000000..729d393
--- /dev/null
@@ -0,0 +1,49 @@
+//===-- LLDB.h --------------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_LLDB_h_
+#define LLDB_LLDB_h_
+
+// C Includes
+// C++ Includes
+// Other libraries and framework includes
+// Project includes
+#include <LLDB/SBDefines.h>
+#include <LLDB/SBAddress.h>
+#include <LLDB/SBBlock.h>
+#include <LLDB/SBBreakpoint.h>
+#include <LLDB/SBBreakpointLocation.h>
+#include <LLDB/SBBroadcaster.h>
+#include <LLDB/SBCommandContext.h>
+#include <LLDB/SBCommandInterpreter.h>
+#include <LLDB/SBCommandReturnObject.h>
+#include <LLDB/SBCommunication.h>
+#include <LLDB/SBCompileUnit.h>
+#include <LLDB/SBDebugger.h>
+#include <LLDB/SBError.h>
+#include <LLDB/SBEvent.h>
+#include <LLDB/SBFileSpec.h>
+#include <LLDB/SBFrame.h>
+#include <LLDB/SBFunction.h>
+#include <LLDB/SBHostOS.h>
+#include <LLDB/SBInputReader.h>
+#include <LLDB/SBLineEntry.h>
+#include <LLDB/SBListener.h>
+#include <LLDB/SBModule.h>
+#include <LLDB/SBProcess.h>
+#include <LLDB/SBSourceManager.h>
+#include <LLDB/SBSymbol.h>
+#include <LLDB/SBSymbolContext.h>
+#include <LLDB/SBTarget.h>
+#include <LLDB/SBThread.h>
+#include <LLDB/SBType.h>
+#include <LLDB/SBValue.h>
+#include <LLDB/SBValueList.h>
+
+#endif  // LLDB_LLDB_h_
diff --git a/lldb/include/lldb/API/SBAddress.h b/lldb/include/lldb/API/SBAddress.h
new file mode 100644 (file)
index 0000000..4f0195a
--- /dev/null
@@ -0,0 +1,75 @@
+//===-- SBAddress.h ---------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBAddress_h_
+#define LLDB_SBAddress_h_
+
+#include <LLDB/SBDefines.h>
+
+namespace lldb {
+
+class SBAddress
+{
+public:
+
+    SBAddress ();
+
+    SBAddress (const lldb::SBAddress &rhs);
+
+    ~SBAddress ();
+
+#ifndef SWIG
+    const SBAddress &
+    operator = (const SBAddress &rhs);
+#endif
+
+    bool
+    IsValid () const;
+
+    addr_t
+    GetFileAddress () const;
+
+    addr_t
+    GetLoadAddress (const lldb::SBProcess &process) const;
+
+    bool
+    OffsetAddress (addr_t offset);
+
+protected:
+
+    friend class SBFrame;
+    friend class SBLineEntry;
+    friend class SBSymbolContext;
+    friend class SBThread;
+
+#ifndef SWIG
+
+    const lldb_private::Address *
+    operator->() const;
+
+    const lldb_private::Address &
+    operator*() const;
+
+#endif
+
+
+    SBAddress (const lldb_private::Address *lldb_object_ptr);
+
+    void
+    SetAddress (const lldb_private::Address *lldb_object_ptr);
+
+private:
+
+    std::auto_ptr<lldb_private::Address> m_lldb_object_ap;
+};
+
+
+} // namespace lldb
+
+#endif // LLDB_SBAddress_h_
diff --git a/lldb/include/lldb/API/SBBlock.h b/lldb/include/lldb/API/SBBlock.h
new file mode 100644 (file)
index 0000000..b8eef00
--- /dev/null
@@ -0,0 +1,44 @@
+//===-- SBBlock.h -----------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBBlock_h_
+#define LLDB_SBBlock_h_
+
+#include <LLDB/SBDefines.h>
+
+namespace lldb {
+
+class SBBlock
+{
+public:
+
+    SBBlock ();
+
+    ~SBBlock ();
+
+    bool
+    IsValid () const;
+
+    void
+    AppendVariables (bool can_create, bool get_parent_variables, lldb_private::VariableList *var_list);
+
+private:
+    friend class SBFrame;
+    friend class SBSymbolContext;
+
+    SBBlock (lldb_private::Block *lldb_object_ptr);
+
+
+    lldb_private::Block *m_lldb_object_ptr;
+};
+
+
+} // namespace lldb
+
+#endif // LLDB_SBBlock_h_
diff --git a/lldb/include/lldb/API/SBBreakpoint.h b/lldb/include/lldb/API/SBBreakpoint.h
new file mode 100644 (file)
index 0000000..7139474
--- /dev/null
@@ -0,0 +1,129 @@
+//===-- SBBreakpoint.h ------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBBreakpoint_h_
+#define LLDB_SBBreakpoint_h_
+
+#include <LLDB/SBDefines.h>
+
+namespace lldb {
+
+class SBBreakpoint
+{
+public:
+
+    typedef bool (*BreakpointHitCallback) (void *baton, 
+                                           SBProcess &process,
+                                           SBThread &thread, 
+                                           lldb::SBBreakpointLocation &location);
+
+    SBBreakpoint ();
+
+    SBBreakpoint (const lldb::SBBreakpoint& rhs);
+
+    ~SBBreakpoint();
+
+#ifndef SWIG
+    const SBBreakpoint &
+    operator = (const SBBreakpoint& rhs);
+#endif
+
+    break_id_t
+    GetID () const;
+
+    bool
+    IsValid() const;
+
+    void
+    Dump (FILE *f);
+
+    void
+    ClearAllBreakpointSites ();
+
+    lldb::SBBreakpointLocation
+    FindLocationByAddress (lldb::addr_t vm_addr);
+
+    lldb::break_id_t
+    FindLocationIDByAddress (lldb::addr_t vm_addr);
+
+    lldb::SBBreakpointLocation
+    FindLocationByID (lldb::break_id_t bp_loc_id);
+
+    lldb::SBBreakpointLocation
+    GetLocationAtIndex (uint32_t index);
+
+    void
+    ListLocations (FILE *, const char *description_level = "full");
+
+    void
+    SetEnabled (bool enable);
+
+    bool
+    IsEnabled ();
+
+    void
+    SetIgnoreCount (int32_t count);
+
+    int32_t
+    GetIgnoreCount () const;
+
+    void
+    SetThreadID (lldb::tid_t sb_thread_id);
+
+    lldb::tid_t
+    GetThreadID ();
+
+    void
+    SetCallback (BreakpointHitCallback callback, void *baton);
+
+    size_t
+    GetNumResolvedLocations() const;
+
+    size_t
+    GetNumLocations() const;
+
+    void
+    GetDescription (FILE *, const char *description_level, bool describe_locations = false);
+
+
+
+private:
+    friend class SBBreakpointLocation;
+    friend class SBTarget;
+
+    SBBreakpoint (const lldb::BreakpointSP &bp_sp);
+
+#ifndef SWIG
+
+    lldb_private::Breakpoint *
+    operator->() const;
+
+    lldb_private::Breakpoint *
+    get() const;
+
+    lldb::BreakpointSP &
+    operator *();
+
+    const lldb::BreakpointSP &
+    operator *() const;
+
+#endif
+
+    static bool
+    PrivateBreakpointHitCallback (void *baton, 
+                                  lldb_private::StoppointCallbackContext *context, 
+                                  lldb::user_id_t break_id, 
+                                  lldb::user_id_t break_loc_id);
+    
+    lldb::BreakpointSP m_break_sp;
+};
+
+} // namespace lldb
+
+#endif  // LLDB_SBBreakpoint_h_
diff --git a/lldb/include/lldb/API/SBBreakpointLocation.h b/lldb/include/lldb/API/SBBreakpointLocation.h
new file mode 100644 (file)
index 0000000..8369956
--- /dev/null
@@ -0,0 +1,73 @@
+//===-- SBBreakpointLocation.h ----------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBBreakpointLocation_h_
+#define LLDB_SBBreakpointLocation_h_
+
+#include <LLDB/SBDefines.h>
+#include <LLDB/SBBreakpoint.h>
+
+namespace lldb {
+
+class SBBreakpointLocation
+{
+public:
+
+    SBBreakpointLocation ();
+
+    ~SBBreakpointLocation ();
+
+    bool
+    IsValid() const;
+
+    lldb::addr_t
+    GetLoadAddress ();
+
+    void
+    SetEnabled(bool enabled);
+
+    bool
+    IsEnabled ();
+
+    int32_t
+    GetIgnoreCount ();
+
+    void
+    SetIgnoreCount (int32_t n);
+
+    void
+    SetThreadID (lldb::tid_t thread_id);
+
+    lldb::tid_t
+    GetThreadID ();
+
+    bool
+    IsResolved ();
+
+    void
+    GetDescription (FILE *f, const char *description_level);
+
+    SBBreakpoint
+    GetBreakpoint ();
+
+private:
+    friend class SBBreakpoint;
+
+    SBBreakpointLocation (const lldb::BreakpointLocationSP &break_loc_sp);
+    
+    void
+    SetLocation (const lldb::BreakpointLocationSP &break_loc_sp);
+
+    lldb::BreakpointLocationSP m_break_loc_sp;
+
+};
+
+} // namespace lldb
+
+#endif  // LLDB_SBBreakpointLocation_h_
diff --git a/lldb/include/lldb/API/SBBroadcaster.h b/lldb/include/lldb/API/SBBroadcaster.h
new file mode 100644 (file)
index 0000000..94baef2
--- /dev/null
@@ -0,0 +1,83 @@
+//===-- SBBroadcaster.h -----------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBBroadcaster_h_
+#define LLDB_SBBroadcaster_h_
+
+#include <LLDB/SBDefines.h>
+
+namespace lldb {
+
+class SBBroadcaster
+{
+public:
+    SBBroadcaster ();
+
+    SBBroadcaster (const char *name);
+
+    ~SBBroadcaster();
+
+    bool
+    IsValid () const;
+
+    void
+    BroadcastEventByType (uint32_t event_type, bool unique = false);
+
+    void
+    BroadcastEvent (const lldb::SBEvent &event, bool unique = false);
+
+    void
+    AddInitialEventsToListener (const lldb::SBListener &listener, uint32_t requested_events);
+
+    uint32_t
+    AddListener (const lldb::SBListener &listener, uint32_t event_mask);
+
+    const char *
+    GetName ();
+
+    bool
+    EventTypeHasListeners (uint32_t event_type);
+
+    bool
+    RemoveListener (const lldb::SBListener &listener, uint32_t event_mask = UINT32_MAX);
+
+#ifndef SWIG
+    bool
+    operator == (const lldb::SBBroadcaster &rhs) const;
+
+    bool
+    operator != (const lldb::SBBroadcaster &rhs) const;
+
+#endif
+
+protected:
+    friend class SBCommandInterpreter;
+    friend class SBCommunication;
+    friend class SBEvent;
+    friend class SBListener;
+    friend class SBProcess;
+    friend class SBTarget;
+
+    SBBroadcaster (lldb_private::Broadcaster *broadcaster, bool owns);
+
+    lldb_private::Broadcaster *
+    GetLLDBObjectPtr () const;
+
+    void
+    SetLLDBObjectPtr (lldb_private::Broadcaster *broadcaster, bool owns);
+
+private:
+
+    lldb_private::Broadcaster *m_lldb_object;
+    bool m_lldb_object_owned;
+};
+
+} // namespace lldb
+
+#endif  // LLDB_SBBroadcaster_h_
diff --git a/lldb/include/lldb/API/SBCommandContext.h b/lldb/include/lldb/API/SBCommandContext.h
new file mode 100644 (file)
index 0000000..c77465c
--- /dev/null
@@ -0,0 +1,36 @@
+//===-- SBCommandContext.h --------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBCommandContext_h_
+#define LLDB_SBCommandContext_h_
+
+
+#include <LLDB/SBDefines.h>
+
+namespace lldb {
+
+class SBCommandContext
+{
+public:
+
+    SBCommandContext (lldb_private::CommandContext *lldb_object);
+
+    ~SBCommandContext ();
+
+    bool
+    IsValid () const;
+
+private:
+
+    lldb_private::CommandContext *m_lldb_object;
+};
+
+} // namespace lldb
+
+#endif // LLDB_SBCommandContext_h_
diff --git a/lldb/include/lldb/API/SBCommandInterpreter.h b/lldb/include/lldb/API/SBCommandInterpreter.h
new file mode 100644 (file)
index 0000000..bb71cf5
--- /dev/null
@@ -0,0 +1,105 @@
+//===-- SBCommandInterpreter.h ----------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBCommandInterpreter_h_
+#define LLDB_SBCommandInterpreter_h_
+
+#include <LLDB/SBDefines.h>
+
+namespace lldb {
+
+class SBCommandInterpreter
+{
+public:
+    enum
+    {
+        eBroadcastBitThreadShouldExit       = (1 << 0),
+        eBroadcastBitResetPrompt            = (1 << 1),
+        eBroadcastBitQuitCommandReceived    = (1 << 2)   // User entered quit
+    };
+
+
+    ~SBCommandInterpreter ();
+
+    bool
+    CommandExists (const char *cmd);
+
+    bool
+    AliasExists (const char *cmd);
+
+    bool
+    UserCommandExists (const char *cmd);
+
+    lldb::SBBroadcaster
+    GetBroadcaster ();
+
+    const char **
+    GetEnvironmentVariables ();
+
+    bool
+    HasCommands ();
+
+    bool
+    HasAliases ();
+
+    bool
+    HasUserCommands ();
+
+    bool
+    HasAliasOptions ();
+
+    bool
+    HasInterpreterVariables ();
+
+    lldb::SBProcess
+    GetProcess ();
+
+    ssize_t
+    WriteToScriptInterpreter (const char *src);
+
+    ssize_t
+    WriteToScriptInterpreter (const char *src, size_t src_len);
+
+    void
+    SourceInitFileInHomeDirectory (lldb::SBCommandReturnObject &result);
+
+    void
+    SourceInitFileInCurrentWorkingDirectory (lldb::SBCommandReturnObject &result);
+
+    lldb::ReturnStatus
+    HandleCommand (const char *command_line, lldb::SBCommandReturnObject &result, bool add_to_history = false);
+
+    int
+    HandleCompletion (const char *current_line,
+                      const char *cursor,
+                      const char *last_char,
+                      int match_start_point,
+                      int max_return_elements,
+                      SBStringList &matches);
+
+protected:
+
+    lldb_private::CommandInterpreter &
+    GetLLDBObjectRef ();
+
+    lldb_private::CommandInterpreter *
+    GetLLDBObjectPtr ();
+
+private:
+    friend class SBDebugger;
+
+    SBCommandInterpreter (lldb_private::CommandInterpreter &interpreter_ptr);   // Access using SBDebugger::GetSharedInstance().GetCommandInterpreter();
+
+    lldb_private::CommandInterpreter &m_interpreter;
+};
+
+
+} // namespace lldb
+
+#endif // LLDB_SBCommandInterpreter_h_
diff --git a/lldb/include/lldb/API/SBCommandReturnObject.h b/lldb/include/lldb/API/SBCommandReturnObject.h
new file mode 100644 (file)
index 0000000..65ddc70
--- /dev/null
@@ -0,0 +1,80 @@
+//===-- SBCommandReturnObject.h ---------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBCommandReturnObject_h_
+#define LLDB_SBCommandReturnObject_h_
+
+#include <LLDB/SBDefines.h>
+
+namespace lldb {
+
+class SBCommandReturnObject
+{
+public:
+
+    SBCommandReturnObject ();
+
+    ~SBCommandReturnObject ();
+
+    bool
+    IsValid() const;
+
+    const char *
+    GetOutput ();
+
+    const char *
+    GetError ();
+
+    size_t
+    PutOutput (FILE *fh);
+
+    size_t
+    GetOutputSize ();
+
+    size_t
+    GetErrorSize ();
+
+    size_t
+    PutError (FILE *fh);
+
+    void
+    Clear();
+
+    lldb::ReturnStatus
+    GetStatus();
+
+    bool
+    Succeeded ();
+
+    bool
+    HasResult ();
+
+    void
+    AppendMessage (const char *message);
+
+protected:
+    friend class SBCommandInterpreter;
+    friend class SBOptions;
+
+    lldb_private::CommandReturnObject *
+    GetLLDBObjectPtr();
+
+    lldb_private::CommandReturnObject &
+    GetLLDBObjectRef();
+
+    void
+    SetLLDBObjectPtr (lldb_private::CommandReturnObject *ptr);
+
+ private:
+    std::auto_ptr<lldb_private::CommandReturnObject> m_return_object_ap;
+};
+
+} // namespace lldb
+
+#endif        // LLDB_SBCommandReturnObject_h_
diff --git a/lldb/include/lldb/API/SBCommunication.h b/lldb/include/lldb/API/SBCommunication.h
new file mode 100644 (file)
index 0000000..134a78a
--- /dev/null
@@ -0,0 +1,97 @@
+//===-- SBCommunication.h ---------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBCommunication_h_
+#define LLDB_SBCommunication_h_
+
+#include <LLDB/SBDefines.h>
+#include <LLDB/SBError.h>
+
+namespace lldb {
+
+class SBCommunication
+{
+public:
+    enum {
+        eBroadcastBitDisconnected           = (1 << 0), ///< Sent when the communications connection is lost.
+        eBroadcastBitReadThreadGotBytes     = (1 << 1), ///< Sent by the read thread when bytes become available.
+        eBroadcastBitReadThreadDidExit      = (1 << 2), ///< Sent by the read thread when it exits to inform clients.
+        eBroadcastBitReadThreadShouldExit   = (1 << 3), ///< Sent by clients that need to cancel the read thread.
+        eBroadcastBitPacketAvailable        = (1 << 4), ///< Sent when data received makes a complete packet.
+        eAllEventBits                       = 0xffffffff
+    };
+
+    typedef void (*ReadThreadBytesReceived) (void *baton, const void *src, size_t src_len);
+
+    SBCommunication ();
+    SBCommunication (const char * broadcaster_name);
+   ~SBCommunication ();
+
+
+    lldb::SBBroadcaster
+    GetBroadcaster ();
+
+    lldb::ConnectionStatus
+    AdoptFileDesriptor (int fd, bool owns_fd);
+
+    lldb::ConnectionStatus
+    CheckIfBytesAvailable ();
+
+    lldb::ConnectionStatus
+    WaitForBytesAvailableInfinite ();
+
+    lldb::ConnectionStatus
+    WaitForBytesAvailableWithTimeout (uint32_t timeout_usec);
+
+    lldb::ConnectionStatus
+    Connect (const char *url);
+
+    lldb::ConnectionStatus
+    Disconnect ();
+
+    bool
+    IsConnected () const;
+
+    size_t
+    Read (void *dst,
+          size_t dst_len,
+          uint32_t timeout_usec,
+          lldb::ConnectionStatus &status);
+
+    size_t
+    Write (const void *src,
+           size_t src_len,
+           lldb::ConnectionStatus &status);
+
+    bool
+    ReadThreadStart ();
+
+    bool
+    ReadThreadStop ();
+
+    bool
+    ReadThreadIsRunning ();
+
+    bool
+    SetReadThreadBytesReceivedCallback (ReadThreadBytesReceived callback,
+                                        void *callback_baton);
+
+
+private:
+//    void
+//    CreateIfNeeded ();
+
+    lldb_private::Communication *m_lldb_object;
+    bool m_lldb_object_owned;
+};
+
+
+} // namespace lldb
+
+#endif // LLDB_SBCommunication_h_
diff --git a/lldb/include/lldb/API/SBCompileUnit.h b/lldb/include/lldb/API/SBCompileUnit.h
new file mode 100644 (file)
index 0000000..3d6e7e4
--- /dev/null
@@ -0,0 +1,75 @@
+//===-- SBCompileUnit.h -----------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBCompileUnit_h_
+#define LLDB_SBCompileUnit_h_
+
+#include <LLDB/SBDefines.h>
+#include <LLDB/SBFileSpec.h>
+
+namespace lldb {
+
+class SBCompileUnit
+{
+public:
+
+    SBCompileUnit ();
+
+    ~SBCompileUnit ();
+
+    bool
+    IsValid () const;
+
+    lldb::SBFileSpec
+    GetFileSpec () const;
+
+    uint32_t
+    GetNumLineEntries () const;
+
+    lldb::SBLineEntry
+    GetLineEntryAtIndex (uint32_t idx) const;
+
+    uint32_t
+    FindLineEntryIndex (uint32_t start_idx,
+                        uint32_t line,
+                        lldb::SBFileSpec *inline_file_spec) const;
+
+#ifndef SWIG
+
+    bool
+    operator == (const lldb::SBCompileUnit &rhs) const;
+
+    bool
+    operator != (const lldb::SBCompileUnit &rhs) const;
+
+#endif
+
+private:
+    friend class SBFrame;
+    friend class SBSymbolContext;
+
+    SBCompileUnit (lldb_private::CompileUnit *lldb_object_ptr);
+
+#ifndef SWIG
+
+    const lldb_private::CompileUnit *
+    operator->() const;
+
+    const lldb_private::CompileUnit &
+    operator*() const;
+
+#endif
+
+    lldb_private::CompileUnit *m_lldb_object_ptr;
+};
+
+
+} // namespace lldb
+
+#endif // LLDB_SBCompileUnit_h_
diff --git a/lldb/include/lldb/API/SBDebugger.h b/lldb/include/lldb/API/SBDebugger.h
new file mode 100644 (file)
index 0000000..3dcc489
--- /dev/null
@@ -0,0 +1,148 @@
+//===-- SBDebugger.h --------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBDebugger_h_
+#define LLDB_SBDebugger_h_
+
+#include <LLDB/SBDefines.h>
+
+namespace lldb {
+
+class SBDebugger
+{
+public:
+
+    static void
+    Initialize();
+    
+    static void
+    Terminate();
+    
+    static void
+    SetAsync (bool b);
+
+    static void
+    SetInputFile (const char *tty_name);    // DEPRECATED: will be removed in next submission
+
+    static void
+    SetOutputFile (const char *tty_name);   // DEPRECATED: will be removed in next submission
+
+    static void
+    SetErrorFile (const char *tty_name);    // DEPRECATED: will be removed in next submission
+
+    static void
+    SetInputFileHandle (FILE *f, bool transfer_ownership);
+
+    static void
+    SetOutputFileHandle (FILE *f, bool transfer_ownership);
+
+    static void
+    SetErrorFileHandle (FILE *f, bool transfer_ownership);
+
+    static FILE *
+    GetInputFileHandle ();
+
+    static FILE *
+    GetOutputFileHandle ();
+
+    static FILE *
+    GetErrorFileHandle ();
+
+    static lldb::SBCommandInterpreter
+    GetCommandInterpreter ();
+
+    static void
+    HandleCommand (const char *command);
+
+    static lldb::SBListener
+    GetListener ();
+
+    static void
+    HandleProcessEvent (const lldb::SBProcess &process,
+                        const lldb::SBEvent &event,
+                        FILE *out,
+                        FILE *err);
+
+    static lldb::SBTarget
+    CreateTargetWithFileAndTargetTriple (const char *filename,
+                                         const char *target_triple);
+
+    static lldb::SBTarget
+    CreateTargetWithFileAndArch (const char *filename,
+                                 const char *archname);
+
+    static lldb::SBTarget
+    CreateTarget (const char *filename);
+
+    static lldb::SBTarget
+    GetTargetAtIndex (uint32_t idx);
+
+    static lldb::SBTarget
+    FindTargetWithProcessID (pid_t pid);
+
+    static lldb::SBTarget
+    FindTargetWithFileAndArch (const char *filename,
+                               const char *arch);
+
+    static uint32_t
+    GetNumTargets ();
+
+    static lldb::SBTarget
+    GetCurrentTarget ();
+
+    static void
+    UpdateCurrentThread (lldb::SBProcess &process);
+
+    static void
+    ReportCurrentLocation (FILE *out = stdout,
+                           FILE *err = stderr);
+
+    static lldb::SBSourceManager &
+    GetSourceManager ();
+
+    static bool
+    GetDefaultArchitecture (char *arch_name, size_t arch_name_len);
+
+    static bool
+    SetDefaultArchitecture (const char *arch_name);
+
+    static lldb::ScriptLanguage
+    GetScriptingLanguage (const char *script_language_name);
+
+    static const char *
+    GetVersionString ();
+
+    static const char *
+    StateAsCString (lldb::StateType state);
+
+    static bool
+    StateIsRunningState (lldb::StateType state);
+
+    static bool
+    StateIsStoppedState (lldb::StateType state);
+
+    static void
+    DispatchInput (void *baton, const void *data, size_t data_len);
+
+    static void
+    PushInputReader (lldb::SBInputReader &reader);
+
+private:
+#ifndef SWIG
+    friend class SBProcess;
+
+    static lldb::SBTarget
+    FindTargetWithLLDBProcess (const lldb::ProcessSP &processSP);
+#endif
+}; // class SBDebugger
+
+
+} // namespace lldb
+
+#endif // LLDB_SBDebugger_h_
diff --git a/lldb/include/lldb/API/SBDefines.h b/lldb/include/lldb/API/SBDefines.h
new file mode 100644 (file)
index 0000000..f1e3c38
--- /dev/null
@@ -0,0 +1,62 @@
+//===-- SBDefines.h ---------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBDefines_h_
+#define LLDB_SBDefines_h_
+
+// C Includes
+// C++ Includes
+// Other libraries and framework includes
+// Project includes
+
+#include <LLDB/lldb-defines.h>
+#include <LLDB/lldb-enumerations.h>
+#include <LLDB/lldb-forward.h>
+#include <LLDB/lldb-forward-rtti.h>
+#include <LLDB/lldb-types.h>
+
+// Forward Declarations
+
+namespace lldb {
+
+class SBAddress;
+class SBBlock;
+class SBBreakpoint;
+class SBBreakpointLocation;
+class SBBroadcaster;
+class SBCommandContext;
+class SBCommandInterpreter;
+class SBCommandReturnObject;
+class SBCommunication;
+class SBCompileUnit;
+class SBDebugger;
+class SBError;
+class SBEvent;
+class SBEventList;
+class SBFileSpec;
+class SBFrame;
+class SBFunction;
+class SBHostOS;
+class SBInputReader;
+class SBInstruction;
+class SBLineEntry;
+class SBListener;
+class SBModule;
+class SBProcess;
+class SBSourceManager;
+class SBSymbol;
+class SBSymbolContext;
+class SBStringList;
+class SBTarget;
+class SBThread;
+class SBValue;
+
+}
+
+#endif  // LLDB_SBDefines_h_
diff --git a/lldb/include/lldb/API/SBError.h b/lldb/include/lldb/API/SBError.h
new file mode 100644 (file)
index 0000000..1d23c73
--- /dev/null
@@ -0,0 +1,102 @@
+//===-- SBError.h -----------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBError_h_
+#define LLDB_SBError_h_
+
+#include <LLDB/SBDefines.h>
+
+namespace lldb {
+
+class SBError {
+public:
+    SBError ();
+
+    SBError (const SBError &rhs);
+
+    ~SBError();
+
+#ifndef SWIG
+
+    const SBError &
+    operator =(const SBError &rhs);
+
+#endif
+
+    const char *
+    GetCString () const;
+
+    void
+    Clear ();
+
+    bool
+    Fail () const;
+
+    bool
+    Success () const;
+
+    uint32_t
+    GetError () const;
+
+    lldb::ErrorType
+    GetType () const;
+
+    void
+    SetError (uint32_t err, lldb::ErrorType type);
+
+    void
+    SetErrorToErrno ();
+
+    void
+    SetErrorToGenericError ();
+
+    void
+    SetErrorString (const char *err_str);
+
+    int
+    SetErrorStringWithFormat (const char *format, ...);
+
+    bool
+    IsValid () const;
+
+protected:
+    friend class SBArguments;
+    friend class SBCommunication;
+    friend class SBHostOS;
+    friend class SBInputReader;
+    friend class SBProcess;
+
+#ifndef SWIG
+
+    lldb_private::Error *
+    get();
+
+    lldb_private::Error *
+    operator->();
+
+    const lldb_private::Error &
+    operator*() const;
+
+#endif
+
+
+    void
+    SetError (const lldb_private::Error &lldb_error);
+
+private:
+    std::auto_ptr<lldb_private::Error> m_lldb_object_ap;
+
+    void
+    CreateIfNeeded ();
+};
+
+
+} // namespace lldb
+
+#endif // LLDB_SBError_h_
diff --git a/lldb/include/lldb/API/SBEvent.h b/lldb/include/lldb/API/SBEvent.h
new file mode 100644 (file)
index 0000000..2267d8d
--- /dev/null
@@ -0,0 +1,89 @@
+//===-- SBEvent.h -----------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBEvent_h_
+#define LLDB_SBEvent_h_
+
+#include <vector>
+
+#include <LLDB/SBDefines.h>
+
+namespace lldb {
+
+class SBBroadcaster;
+
+class SBEvent
+{
+public:
+    SBEvent();
+
+    // Make an event that contains a C string.
+    SBEvent (uint32_t event, const char *cstr, uint32_t cstr_len);
+
+    ~SBEvent();
+
+    bool
+    IsValid() const;
+
+    void
+    Dump (FILE *f) const;
+
+    const char *
+    GetDataFlavor ();
+
+    uint32_t
+    GetType () const;
+
+    lldb::SBBroadcaster
+    GetBroadcaster () const;
+
+    bool
+    BroadcasterMatchesPtr (const lldb::SBBroadcaster *broadcaster);
+
+    bool
+    BroadcasterMatchesRef (const lldb::SBBroadcaster &broadcaster);
+
+    void
+    Clear();
+
+    static const char *
+    GetCStringFromEvent (const lldb::SBEvent &event);
+
+protected:
+    friend class SBListener;
+    friend class SBBroadcaster;
+    friend class SBDebugger;
+    friend class SBProcess;
+
+    SBEvent (lldb::EventSP &event_sp);
+
+    lldb::EventSP &
+    GetSharedPtr () const;
+
+    void
+    SetEventSP (lldb::EventSP &event_sp);
+
+    void
+    SetLLDBObjectPtr (lldb_private::Event* event);
+
+    lldb_private::Event *
+    GetLLDBObjectPtr ();
+
+    const lldb_private::Event *
+    GetLLDBObjectPtr () const;
+
+private:
+
+    mutable lldb::EventSP m_event_sp;
+    mutable lldb_private::Event *m_lldb_object;
+};
+
+} // namespace lldb
+
+#endif  // LLDB_SBEvent_h_
diff --git a/lldb/include/lldb/API/SBFileSpec.h b/lldb/include/lldb/API/SBFileSpec.h
new file mode 100644 (file)
index 0000000..dd6718e
--- /dev/null
@@ -0,0 +1,83 @@
+//===-- SBFileSpec.h --------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBFileSpec_h_
+#define LLDB_SBFileSpec_h_
+
+#include <LLDB/SBDefines.h>
+
+namespace lldb {
+
+class SBFileSpec
+{
+public:
+    SBFileSpec ();
+
+    SBFileSpec (const lldb::SBFileSpec &rhs);
+
+    SBFileSpec (const char *path);
+
+    ~SBFileSpec ();
+
+#ifndef SWIG
+    const SBFileSpec &
+    operator = (const lldb::SBFileSpec &rhs);
+#endif
+
+    bool
+    IsValid() const;
+
+    bool
+    Exists () const;
+
+    const char *
+    GetFileName() const;
+
+    const char *
+    GetDirectory() const;
+
+    uint32_t
+    GetPath (char *dst_path, size_t dst_len) const;
+
+    static int
+    ResolvePath (const char *src_path, char *dst_path, size_t dst_len);
+
+private:
+    friend class SBLineEntry;
+    friend class SBCompileUnit;
+    friend class SBHostOS;
+    friend class SBModule;
+    friend class SBSourceManager;
+    friend class SBTarget;
+
+    void
+    SetFileSpec (const lldb_private::FileSpec& fs);
+#ifndef SWIG
+
+    const lldb_private::FileSpec *
+    operator->() const;
+
+    const lldb_private::FileSpec *
+    get() const;
+
+    const lldb_private::FileSpec &
+    operator*() const;
+
+    const lldb_private::FileSpec &
+    ref() const;
+
+#endif
+
+    std::auto_ptr <lldb_private::FileSpec> m_lldb_object_ap;
+};
+
+
+} // namespace lldb
+
+#endif // LLDB_SBFileSpec_h_
diff --git a/lldb/include/lldb/API/SBFrame.h b/lldb/include/lldb/API/SBFrame.h
new file mode 100644 (file)
index 0000000..36106bd
--- /dev/null
@@ -0,0 +1,130 @@
+//===-- SBFrame.h -----------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBFrame_h_
+#define LLDB_SBFrame_h_
+
+#include <LLDB/SBDefines.h>
+#include <LLDB/SBValueList.h>
+
+namespace lldb {
+
+class SBValue;
+
+class SBFrame
+{
+public:
+    SBFrame ();
+
+   ~SBFrame();
+
+    bool
+    IsValid() const;
+
+    uint32_t
+    GetFrameID () const;
+
+    lldb::addr_t
+    GetPC () const;
+
+    bool
+    SetPC (lldb::addr_t new_pc);
+
+    lldb::addr_t
+    GetSP () const;
+
+    lldb::addr_t
+    GetFP () const;
+
+    lldb::SBAddress
+    GetPCAddress () const;
+
+    lldb::SBSymbolContext
+    GetSymbolContext (uint32_t resolve_scope) const;
+
+    lldb::SBModule
+    GetModule () const;
+
+    lldb::SBCompileUnit
+    GetCompileUnit () const;
+
+    lldb::SBFunction
+    GetFunction () const;
+
+    lldb::SBBlock
+    GetBlock () const;
+
+    lldb::SBLineEntry
+    GetLineEntry () const;
+
+    lldb::SBThread
+    GetThread () const;
+
+    const char *
+    Disassemble () const;
+
+    void
+    Clear();
+
+#ifndef SWIG
+    bool
+    operator == (const lldb::SBFrame &rhs) const;
+
+    bool
+    operator != (const lldb::SBFrame &rhs) const;
+
+#endif
+
+    lldb::SBValueList
+    GetVariables (bool arguments,
+                  bool locals,
+                  bool statics,
+                  bool in_scope_only);
+
+    lldb::SBValueList
+    GetRegisters ();
+
+    lldb::SBValue
+    LookupVar (const char *var_name);
+
+    lldb::SBValue
+    LookupVarInScope (const char *var_name, const char *scope);
+
+protected:
+    friend class SBValue;
+
+    lldb_private::StackFrame *
+    GetLLDBObjectPtr ();
+
+private:
+    friend class SBThread;
+
+#ifndef SWIG
+
+    lldb_private::StackFrame *
+    operator->() const;
+
+    // Mimic shared pointer...
+    lldb_private::StackFrame *
+    get() const;
+
+#endif
+
+
+    SBFrame (const lldb::StackFrameSP &lldb_object_sp);
+
+    void
+    SetFrame (const lldb::StackFrameSP &lldb_object_sp);
+
+    lldb::StackFrameSP m_lldb_object_sp;
+};
+
+} // namespace lldb
+
+#endif  // LLDB_SBFrame_h_
diff --git a/lldb/include/lldb/API/SBFunction.h b/lldb/include/lldb/API/SBFunction.h
new file mode 100644 (file)
index 0000000..613d8b0
--- /dev/null
@@ -0,0 +1,55 @@
+//===-- SBFunction.h --------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBFunction_h_
+#define LLDB_SBFunction_h_
+
+#include <LLDB/SBDefines.h>
+
+namespace lldb {
+
+class SBFunction
+{
+public:
+
+    SBFunction ();
+
+    ~SBFunction ();
+
+    bool
+    IsValid () const;
+
+    const char *
+    GetName() const;
+
+    const char *
+    GetMangledName () const;
+
+#ifndef SWIG
+    bool
+    operator == (const lldb::SBFunction &rhs) const;
+
+    bool
+    operator != (const lldb::SBFunction &rhs) const;
+#endif
+
+private:
+    friend class SBFrame;
+    friend class SBSymbolContext;
+
+    SBFunction (lldb_private::Function *lldb_object_ptr);
+
+
+    lldb_private::Function *m_lldb_object_ptr;
+};
+
+
+} // namespace lldb
+
+#endif // LLDB_SBFunction_h_
diff --git a/lldb/include/lldb/API/SBHostOS.h b/lldb/include/lldb/API/SBHostOS.h
new file mode 100644 (file)
index 0000000..53943ca
--- /dev/null
@@ -0,0 +1,54 @@
+//===-- SBHostOS.h ----------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBHostOS_h_
+#define LLDB_SBHostOS_h_
+
+#include <LLDB/SBDefines.h>
+#include <LLDB/SBFileSpec.h>
+
+namespace lldb {
+
+class SBHostOS
+{
+public:
+
+    static lldb::SBFileSpec
+    GetProgramFileSpec ();
+
+    static void
+    ThreadCreated (const char *name);
+
+    static lldb::thread_t
+    ThreadCreate (const char *name,
+                  void *(*thread_function)(void *),
+                  void *thread_arg,
+                  lldb::SBError *err);
+
+    static bool
+    ThreadCancel (lldb::thread_t thread,
+                  lldb::SBError *err);
+
+    static bool
+    ThreadDetach (lldb::thread_t thread,
+                  lldb::SBError *err);
+    static bool
+    ThreadJoin (lldb::thread_t thread,
+                void **result,
+                lldb::SBError *err);
+
+
+private:
+
+};
+
+
+} // namespace lldb
+
+#endif // LLDB_SBHostOS_h_
diff --git a/lldb/include/lldb/API/SBInputReader.h b/lldb/include/lldb/API/SBInputReader.h
new file mode 100644 (file)
index 0000000..5b2590e
--- /dev/null
@@ -0,0 +1,100 @@
+//===-- SBInputReader.h -----------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBInputReader_h_
+#define LLDB_SBInputReader_h_
+
+#include <LLDB/SBDefines.h>
+
+#include <termios.h>
+
+namespace lldb {
+
+class SBInputReader
+{
+public:
+
+    typedef size_t (*Callback) (void *baton, 
+                                SBInputReader *reader, 
+                                InputReaderAction notification,
+                                const char *bytes, 
+                                size_t bytes_len);
+
+    SBInputReader ();
+
+    SBInputReader (const lldb::InputReaderSP &reader_sp);
+
+    SBInputReader (const lldb::SBInputReader &rhs);
+
+    ~SBInputReader ();
+
+
+    SBError
+    Initialize (Callback callback,
+                void *callback_baton,
+                lldb::InputReaderGranularity granularity,
+                const char *end_token,
+                const char *prompt,
+                bool echo);
+    
+    bool
+    IsValid () const;
+
+#ifndef SWIG
+    const SBInputReader &
+    operator = (const lldb::SBInputReader &rhs);
+#endif
+
+    bool
+    IsActive () const;
+
+    bool
+    IsDone () const;
+
+    void
+    SetIsDone (bool value);
+
+    InputReaderGranularity
+    GetGranularity ();
+
+protected:
+    friend class SBDebugger;
+
+#ifndef SWIG
+
+    lldb_private::InputReader *
+    operator->() const;
+
+    lldb::InputReaderSP &
+    operator *();
+
+    const lldb::InputReaderSP &
+    operator *() const;
+#endif
+
+    lldb_private::InputReader *
+    get() const;
+
+private:
+
+    static size_t
+    PrivateCallback (void *baton, 
+                     lldb_private::InputReader *reader, 
+                     lldb::InputReaderAction notification,
+                     const char *bytes, 
+                     size_t bytes_len);
+
+    lldb::InputReaderSP m_reader_sp;
+    Callback m_callback_function;
+    void *m_callback_baton;
+};
+
+} // namespace lldb
+
+#endif // LLDB_SBInputReader_h_
diff --git a/lldb/include/lldb/API/SBInstruction.h b/lldb/include/lldb/API/SBInstruction.h
new file mode 100644 (file)
index 0000000..256b1c0
--- /dev/null
@@ -0,0 +1,57 @@
+//===-- SBInstruction.h -----------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBInstruction_h_
+#define LLDB_SBInstruction_h_
+
+#include <LLDB/SBDefines.h>
+
+// There's a lot to be fixed here, but need to wait for underlying insn implementation
+// to be revised & settle down first.
+
+//class lldb_private::Disassembler::Instruction;
+
+namespace lldb {
+
+class SBInstruction
+{
+public:
+
+    //SBInstruction (lldb_private::Disassembler::Instruction *lldb_insn);
+
+    SBInstruction ();
+
+    ~SBInstruction ();
+
+    //bool
+    //IsValid();
+
+    //size_t
+    //GetByteSize ();
+
+    //void
+    //SetByteSize (size_t byte_size);
+
+    //bool
+    //DoesBranch ();
+
+    void
+    Print (FILE *out);
+
+private:
+
+    //lldb_private::Disassembler::Instruction::SharedPtr  m_lldb_object_sp;
+
+
+};
+
+
+} // namespace lldb
+
+#endif // LLDB_SBInstruction_h_
diff --git a/lldb/include/lldb/API/SBInstructionList.h b/lldb/include/lldb/API/SBInstructionList.h
new file mode 100644 (file)
index 0000000..4558074
--- /dev/null
@@ -0,0 +1,53 @@
+//===-- SBInstructionList.h -------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBInstructionList_h_
+#define LLDB_SBInstructionList_h_
+
+#include <LLDB/SBDefines.h>
+
+namespace lldb {
+
+class SBInstructionList
+{
+public:
+
+    SBInstructionList ();
+
+    ~SBInstructionList ();
+
+    size_t
+    GetSize ();
+
+    lldb::SBInstruction
+    GetInstructionAtIndex (uint32_t idx);
+
+    void
+    Clear ();
+
+    void
+    AppendInstruction (lldb::SBInstruction inst);
+
+
+    void
+    Print (FILE *out);
+
+private:
+
+    // If we have an instruction list, it will need to be backed by an
+    // lldb_private class that contains the list, we can't inherit from
+    // std::vector here...
+    //std::vector <SBInstruction> m_insn_list;
+
+};
+
+
+} // namespace lldb
+
+#endif // LLDB_SBInstructionList_h_
diff --git a/lldb/include/lldb/API/SBLineEntry.h b/lldb/include/lldb/API/SBLineEntry.h
new file mode 100644 (file)
index 0000000..2e18bb7
--- /dev/null
@@ -0,0 +1,88 @@
+//===-- SBLineEntry.h -------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBLineEntry_h_
+#define LLDB_SBLineEntry_h_
+
+#include <LLDB/SBDefines.h>
+#include <LLDB/SBAddress.h>
+#include <LLDB/SBFileSpec.h>
+
+namespace lldb {
+
+class SBLineEntry
+{
+public:
+
+    SBLineEntry ();
+
+    SBLineEntry (const lldb::SBLineEntry &rhs);
+
+    ~SBLineEntry ();
+
+#ifndef SWIG
+    const lldb::SBLineEntry &
+    operator = (const lldb::SBLineEntry &rhs);
+#endif
+
+    lldb::SBAddress
+    GetStartAddress () const;
+
+    lldb::SBAddress
+    GetEndAddress () const;
+
+    bool
+    IsValid () const;
+
+    lldb::SBFileSpec
+    GetFileSpec () const;
+
+    uint32_t
+    GetLine () const;
+
+    uint32_t
+    GetColumn () const;
+
+#ifndef SWIG
+    bool
+    operator == (const lldb::SBLineEntry &rhs) const;
+
+    bool
+    operator != (const lldb::SBLineEntry &rhs) const;
+
+#endif
+
+private:
+    friend class SBCompileUnit;
+    friend class SBFrame;
+    friend class SBSymbolContext;
+
+#ifndef SWIG
+
+    const lldb_private::LineEntry *
+    operator->() const;
+
+    const lldb_private::LineEntry &
+    operator*() const;
+
+#endif
+
+
+    SBLineEntry (const lldb_private::LineEntry *lldb_object_ptr);
+
+    void
+    SetLineEntry (const lldb_private::LineEntry &lldb_object_ref);
+
+    std::auto_ptr<lldb_private::LineEntry> m_lldb_object_ap;
+};
+
+
+} // namespace lldb
+
+#endif // LLDB_SBLineEntry_h_
diff --git a/lldb/include/lldb/API/SBListener.h b/lldb/include/lldb/API/SBListener.h
new file mode 100644 (file)
index 0000000..8fd28f7
--- /dev/null
@@ -0,0 +1,119 @@
+//===-- SBListener.h --------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBListener_h_
+#define LLDB_SBListener_h_
+
+#include <LLDB/SBDefines.h>
+
+namespace lldb {
+
+class SBListener
+{
+public:
+    friend class SBBroadcaster;
+    friend class SBCommandInterpreter;
+    friend class SBDebugger;
+    friend class SBTarget;
+
+    SBListener (const char *name);
+
+    SBListener (lldb_private::Listener &listener);
+
+    SBListener ();
+
+    ~SBListener ();
+
+    void
+    AddEvent (const lldb::SBEvent &event);
+
+    void
+    Clear ();
+
+    bool
+    IsValid () const;
+
+    uint32_t
+    StartListeningForEvents (const lldb::SBBroadcaster& broadcaster,
+                             uint32_t event_mask);
+
+    bool
+    StopListeningForEvents (const lldb::SBBroadcaster& broadcaster,
+                            uint32_t event_mask);
+
+    // Returns true if an event was recieved, false if we timed out.
+    bool
+    WaitForEvent (uint32_t num_seconds,
+                  lldb::SBEvent &event);
+
+    bool
+    WaitForEventForBroadcaster (uint32_t num_seconds,
+                                const lldb::SBBroadcaster &broadcaster,
+                                lldb::SBEvent &sb_event);
+
+    bool
+    WaitForEventForBroadcasterWithType (uint32_t num_seconds,
+                                        const lldb::SBBroadcaster &broadcaster,
+                                        uint32_t event_type_mask,
+                                        lldb::SBEvent &sb_event);
+
+    bool
+    PeekAtNextEvent (lldb::SBEvent &sb_event);
+
+    bool
+    PeekAtNextEventForBroadcaster (const lldb::SBBroadcaster &broadcaster,
+                                   lldb::SBEvent &sb_event);
+
+    bool
+    PeekAtNextEventForBroadcasterWithType (const lldb::SBBroadcaster &broadcaster,
+                                           uint32_t event_type_mask,
+                                           lldb::SBEvent &sb_event);
+
+    bool
+    GetNextEvent (lldb::SBEvent &sb_event);
+
+    bool
+    GetNextEventForBroadcaster (const lldb::SBBroadcaster &broadcaster,
+                                lldb::SBEvent &sb_event);
+
+    bool
+    GetNextEventForBroadcasterWithType (const lldb::SBBroadcaster &broadcaster,
+                                        uint32_t event_type_mask,
+                                        lldb::SBEvent &sb_event);
+
+    bool
+    HandleBroadcastEvent (const lldb::SBEvent &event);
+
+private:
+
+#ifndef SWIG
+
+    lldb_private::Listener *
+    operator->() const;
+
+    lldb_private::Listener *
+    get() const;
+
+    lldb_private::Listener &
+    operator *();
+
+    const lldb_private::Listener &
+    operator *() const;
+
+#endif
+
+
+
+    lldb_private::Listener *m_lldb_object_ptr;
+    bool m_lldb_object_ptr_owned;
+};
+
+} // namespace lldb
+
+#endif  // LLDB_SBListener_h_
diff --git a/lldb/include/lldb/API/SBModule.h b/lldb/include/lldb/API/SBModule.h
new file mode 100644 (file)
index 0000000..13aa593
--- /dev/null
@@ -0,0 +1,79 @@
+//===-- SBModule.h ----------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBModule_h_
+#define LLDB_SBModule_h_
+
+#include <LLDB/SBDefines.h>
+
+namespace lldb {
+
+class SBModule
+{
+public:
+
+    SBModule ();
+
+    ~SBModule ();
+
+    bool
+    IsValid () const;
+
+    lldb::SBFileSpec
+    GetFileSpec () const;
+
+    const uint8_t *
+    GetUUIDBytes () const;
+
+#ifndef SWIG
+    bool
+    operator == (const lldb::SBModule &rhs) const;
+
+    bool
+    operator != (const lldb::SBModule &rhs) const;
+
+#endif
+
+
+private:
+    friend class SBSymbolContext;
+    friend class SBTarget;
+    friend class SBFrame;
+
+    explicit SBModule (const lldb::ModuleSP& module_sp);
+
+    void
+    SetModule (const lldb::ModuleSP& module_sp);
+#ifndef SWIG
+
+    lldb::ModuleSP &
+    operator *();
+
+
+    lldb_private::Module *
+    operator ->();
+
+    const lldb_private::Module *
+    operator ->() const;
+
+    lldb_private::Module *
+    get();
+
+    const lldb_private::Module *
+    get() const;
+
+#endif
+
+    lldb::ModuleSP m_lldb_object_sp;
+};
+
+
+} // namespace lldb
+
+#endif // LLDB_SBModule_h_
diff --git a/lldb/include/lldb/API/SBProcess.h b/lldb/include/lldb/API/SBProcess.h
new file mode 100644 (file)
index 0000000..caba204
--- /dev/null
@@ -0,0 +1,195 @@
+//===-- SBProcess.h ---------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBProcess_h_
+#define LLDB_SBProcess_h_
+
+#include <LLDB/SBDefines.h>
+#include <LLDB/SBError.h>
+#include <LLDB/SBTarget.h>
+
+namespace lldb {
+
+class SBEvent;
+
+class SBProcess
+{
+public:
+    //------------------------------------------------------------------
+    /// Broadcaster event bits definitions.
+    //------------------------------------------------------------------
+    enum
+    {
+        eBroadcastBitStateChanged   = (1 << 0),
+        eBroadcastBitInterrupt      = (1 << 1),
+        eBroadcastBitSTDOUT         = (1 << 2),
+        eBroadcastBitSTDERR         = (1 << 3),
+    };
+
+    SBProcess ();
+
+    SBProcess (const lldb::SBProcess& rhs);
+
+    ~SBProcess();
+
+    void
+    Clear ();
+
+    bool
+    IsValid() const;
+
+    lldb::SBTarget
+    GetTarget() const;
+
+    size_t
+    PutSTDIN (const char *src, size_t src_len);
+
+    size_t
+    GetSTDOUT (char *dst, size_t dst_len) const;
+
+    size_t
+    GetSTDERR (char *dst, size_t dst_len) const;
+
+    void
+    ReportCurrentState (const lldb::SBEvent &event, FILE *out) const;
+
+    void
+    AppendCurrentStateReport (const lldb::SBEvent &event, lldb::SBCommandReturnObject &result);
+
+    //------------------------------------------------------------------
+    // Thread related functions
+    //------------------------------------------------------------------
+    uint32_t
+    GetNumThreads ();
+
+    lldb::SBThread
+    GetThreadAtIndex (size_t index);
+
+    lldb::SBThread
+    GetThreadByID (lldb::tid_t sb_thread_id);
+
+    lldb::SBThread
+    GetCurrentThread () const;
+
+    bool
+    SetCurrentThread (const lldb::SBThread &thread);
+
+    bool
+    SetCurrentThreadByID (uint32_t tid);
+
+    //------------------------------------------------------------------
+    // Stepping related functions
+    //------------------------------------------------------------------
+
+    lldb::StateType
+    GetState ();
+
+    int
+    GetExitStatus ();
+
+    const char *
+    GetExitDescription ();
+
+    lldb::pid_t
+    GetProcessID ();
+
+    uint32_t
+    GetAddressByteSize() const;
+
+    SBError
+    Destroy ();
+
+    void
+    DisplayThreadsInfo (FILE *out = NULL, FILE *err = NULL, bool only_threads_with_stop_reason = true);
+
+    void
+    ListThreads ();
+
+    bool
+    WaitUntilProcessHasStopped (lldb::SBCommandReturnObject &result);
+
+    lldb::pid_t
+    AttachByPID (lldb::pid_t pid);  // DEPRECATED: will be removed in a few builds in favor of SBError AttachByPID(pid_t)
+
+    SBError
+    Attach (lldb::pid_t pid);
+
+    SBError
+    AttachByName (const char *name, bool wait_for_launch);
+
+    SBError
+    Continue ();
+
+    SBError
+    Stop ();
+
+    SBError
+    Kill ();
+
+    SBError
+    Detach ();
+
+    SBError
+    Signal (int signal);
+
+    void
+    Backtrace (bool all_threads = false, uint32_t num_frames = 0);
+
+    size_t
+    ReadMemory (addr_t addr, void *buf, size_t size, SBError &error);
+
+    size_t
+    WriteMemory (addr_t addr, const void *buf, size_t size, SBError &error);
+
+    // Events
+    static lldb::StateType
+    GetStateFromEvent (const lldb::SBEvent &event);
+
+    static bool
+    GetRestartedFromEvent (const lldb::SBEvent &event);
+
+    static lldb::SBProcess
+    GetProcessFromEvent (const lldb::SBEvent &event);
+
+    lldb::SBBroadcaster
+    GetBroadcaster () const;
+
+protected:
+    friend class SBAddress;
+    friend class SBBreakpoint;
+    friend class SBBreakpointLocation;
+    friend class SBCommandInterpreter;
+    friend class SBDebugger;
+    friend class SBTarget;
+    friend class SBThread;
+    friend class SBValue;
+
+#ifndef SWIG
+
+    lldb_private::Process *
+    operator->() const;
+
+    // Mimic shared pointer...
+    lldb_private::Process *
+    get() const;
+
+#endif
+
+
+    SBProcess (const lldb::ProcessSP &process_sp);
+
+    void
+    SetProcess (const lldb::ProcessSP &process_sp);
+
+    lldb::ProcessSP m_lldb_object_sp;
+};
+
+}  // namespace lldb
+
+#endif  // LLDB_SBProcess_h_
diff --git a/lldb/include/lldb/API/SBSourceManager.h b/lldb/include/lldb/API/SBSourceManager.h
new file mode 100644 (file)
index 0000000..54ac612
--- /dev/null
@@ -0,0 +1,47 @@
+//===-- SBSourceManager.h ---------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBSourceManager_h_
+#define LLDB_SBSourceManager_h_
+
+#include <LLDB/SBDefines.h>
+
+namespace lldb {
+
+class SBSourceManager
+{
+public:
+    ~SBSourceManager();
+
+    size_t
+    DisplaySourceLinesWithLineNumbers (const lldb::SBFileSpec &file,
+                                       uint32_t line,
+                                       uint32_t context_before,
+                                       uint32_t context_after,
+                                       const char* current_line_cstr,
+                                       FILE *f);
+
+
+protected:
+    friend class SBCommandInterpreter;
+    friend class SBDebugger;
+
+    SBSourceManager(lldb_private::SourceManager &source_manager);
+
+    lldb_private::SourceManager &
+    GetLLDBManager ();
+
+private:
+
+    lldb_private::SourceManager &m_source_manager;
+};
+
+} // namespace lldb
+
+#endif  // LLDB_SBSourceManager_h_
diff --git a/lldb/include/lldb/API/SBStringList.h b/lldb/include/lldb/API/SBStringList.h
new file mode 100644 (file)
index 0000000..2d1300f
--- /dev/null
@@ -0,0 +1,72 @@
+//===-- SBStringList.h ------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBStringList_h_
+#define LLDB_SBStringList_h_
+
+
+#include <LLDB/SBDefines.h>
+
+namespace lldb {
+
+class SBStringList
+{
+public:
+
+    SBStringList ();
+
+    SBStringList (const lldb_private::StringList  *lldb_strings);
+
+    SBStringList (const lldb::SBStringList  &rhs);
+
+    ~SBStringList ();
+
+    bool
+    IsValid() const;
+
+    void
+    AppendString (const char *str);
+
+    void
+    AppendList (const char **strv, int strc);
+
+    void
+    AppendList (lldb::SBStringList strings);
+
+    uint32_t
+    GetSize () const;
+
+    const char *
+    GetStringAtIndex (size_t idx);
+
+    void
+    Clear ();
+
+#ifndef SWIG
+
+    const lldb_private::StringList *
+    operator->() const;
+
+    const lldb_private::StringList &
+    operator*() const;
+
+    const lldb::SBStringList &
+    operator = (const lldb::SBStringList &rhs);
+
+#endif
+
+private:
+
+    std::auto_ptr<lldb_private::StringList> m_lldb_object_ap;
+
+};
+
+} // namespace lldb
+
+#endif // LLDB_SBStringList_h_
diff --git a/lldb/include/lldb/API/SBSymbol.h b/lldb/include/lldb/API/SBSymbol.h
new file mode 100644 (file)
index 0000000..b7a3058
--- /dev/null
@@ -0,0 +1,55 @@
+//===-- SBSymbol.h ----------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBSymbol_h_
+#define LLDB_SBSymbol_h_
+
+#include <LLDB/SBDefines.h>
+
+namespace lldb {
+
+class SBSymbol
+{
+public:
+
+    SBSymbol ();
+
+    ~SBSymbol ();
+
+    bool
+    IsValid () const;
+
+
+    const char *
+    GetName() const;
+
+    const char *
+    GetMangledName () const;
+
+#ifndef SWIG
+    bool
+    operator == (const lldb::SBSymbol &rhs) const;
+
+    bool
+    operator != (const lldb::SBSymbol &rhs) const;
+#endif
+
+
+private:
+    friend class SBSymbolContext;
+
+    SBSymbol (lldb_private::Symbol *lldb_object_ptr);
+
+    lldb_private::Symbol *m_lldb_object_ptr;
+};
+
+
+} // namespace lldb
+
+#endif // LLDB_SBSymbol_h_
diff --git a/lldb/include/lldb/API/SBSymbolContext.h b/lldb/include/lldb/API/SBSymbolContext.h
new file mode 100644 (file)
index 0000000..fd14511
--- /dev/null
@@ -0,0 +1,73 @@
+//===-- SBSymbolContext.h ---------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBSymbolContext_h_
+#define LLDB_SBSymbolContext_h_
+
+#include <LLDB/SBDefines.h>
+#include <LLDB/SBBlock.h>
+#include <LLDB/SBCompileUnit.h>
+#include <LLDB/SBFunction.h>
+#include <LLDB/SBLineEntry.h>
+#include <LLDB/SBModule.h>
+#include <LLDB/SBSymbol.h>
+
+namespace lldb {
+
+class SBSymbolContext
+{
+public:
+    SBSymbolContext ();
+
+    SBSymbolContext (const lldb::SBSymbolContext& rhs);
+
+    ~SBSymbolContext ();
+
+    bool
+    IsValid () const;
+
+#ifndef SWIG
+    const lldb::SBSymbolContext &
+    operator = (const lldb::SBSymbolContext &rhs);
+#endif
+
+    SBModule        GetModule ();
+    SBCompileUnit   GetCompileUnit ();
+    SBFunction      GetFunction ();
+    SBBlock         GetBlock ();
+    SBLineEntry     GetLineEntry ();
+    SBSymbol        GetSymbol ();
+
+protected:
+    friend class SBFrame;
+    friend class SBThread;
+
+#ifndef SWIG
+
+    lldb_private::SymbolContext*
+    operator->() const;
+
+#endif
+
+    lldb_private::SymbolContext *
+    GetLLDBObjectPtr() const;
+
+    SBSymbolContext (const lldb_private::SymbolContext *sc_ptr);
+
+    void
+    SetSymbolContext (const lldb_private::SymbolContext *sc_ptr);
+
+private:
+    std::auto_ptr<lldb_private::SymbolContext> m_lldb_object_ap;
+};
+
+
+} // namespace lldb
+
+#endif // LLDB_SBSymbolContext_h_
diff --git a/lldb/include/lldb/API/SBTarget.h b/lldb/include/lldb/API/SBTarget.h
new file mode 100644 (file)
index 0000000..e950b4c
--- /dev/null
@@ -0,0 +1,167 @@
+//===-- SBTarget.h ----------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBTarget_h_
+#define LLDB_SBTarget_h_
+
+#include <LLDB/SBDefines.h>
+#include <LLDB/SBBroadcaster.h>
+#include <LLDB/SBFileSpec.h>
+
+namespace lldb {
+
+class SBBreakpoint;
+
+class SBTarget
+{
+public:
+    //------------------------------------------------------------------
+    // Broadcaster bits.
+    //------------------------------------------------------------------
+    enum
+    {
+        eBroadcastBitBreakpointChanged  = (1 << 0),
+        eBroadcastBitModulesLoaded      = (1 << 1),
+        eBroadcastBitModulesUnloaded    = (1 << 2)
+    };
+
+    //------------------------------------------------------------------
+    // Constructors and Destructors
+    //------------------------------------------------------------------
+    SBTarget (const lldb::SBTarget& rhs);
+
+    SBTarget ();  // Required for SWIG.
+
+    //------------------------------------------------------------------
+    // Destructor
+    //------------------------------------------------------------------
+    ~SBTarget();
+
+    const lldb::SBTarget&
+    Assign (const lldb::SBTarget& rhs);
+
+    bool
+    IsValid() const;
+
+    lldb::SBProcess
+    GetProcess ();
+
+    lldb::SBProcess
+    CreateProcess ();
+
+    lldb::SBProcess
+    LaunchProcess (char const **argv,
+                   char const **envp,
+                   const char *tty,
+                   bool stop_at_entry);
+
+    lldb::SBFileSpec
+    GetExecutable ();
+
+    uint32_t
+    GetNumModules () const;
+
+    lldb::SBModule
+    GetModuleAtIndex (uint32_t idx);
+
+    lldb::SBModule
+    FindModule (const lldb::SBFileSpec &file_spec);
+
+    bool
+    DeleteTargetFromList (lldb_private::TargetList *list);
+
+    bool
+    MakeCurrentTarget ();
+
+    lldb::SBBreakpoint
+    BreakpointCreateByLocation (const char *file, uint32_t line);
+
+    lldb::SBBreakpoint
+    BreakpointCreateByLocation (const lldb::SBFileSpec &file_spec, uint32_t line);
+
+    lldb::SBBreakpoint
+    BreakpointCreateByName (const char *symbol_name, const char *module_name = NULL);
+
+    lldb::SBBreakpoint
+    BreakpointCreateByRegex (const char *symbol_name_regex, const char *module_name = NULL);
+
+    lldb::SBBreakpoint
+    BreakpointCreateByAddress (addr_t address);
+
+    bool
+    BreakpointDelete (break_id_t break_id);
+
+    void
+    ListAllBreakpoints ();
+
+    lldb::SBBreakpoint
+    FindBreakpointByID (break_id_t break_id);
+
+    bool
+    EnableAllBreakpoints ();
+
+    bool
+    DisableAllBreakpoints ();
+
+    bool
+    DeleteAllBreakpoints ();
+
+    lldb::SBBroadcaster
+    GetBroadcaster () const;
+
+    //void
+    //Disassemble ();
+
+    void
+    Disassemble (lldb::addr_t file_address_start, lldb::addr_t file_address_end = LLDB_INVALID_ADDRESS,
+                 const char *module_name = NULL);
+
+    void
+    Disassemble (const char *function_name, const char *module_name = NULL);
+
+#ifndef SWIG
+    bool
+    operator == (const lldb::SBTarget &rhs) const;
+
+    bool
+    operator != (const lldb::SBTarget &rhs) const;
+
+#endif
+
+protected:
+    friend class SBDebugger;
+    friend class SBProcess;
+
+    //------------------------------------------------------------------
+    // Constructors are private, use static Target::Create function to
+    // create an instance of this class.
+    //------------------------------------------------------------------
+
+    SBTarget (const lldb::TargetSP& target_sp);
+
+    void
+    SetLLBDTarget (const lldb::TargetSP& target_sp);
+
+    lldb_private::Target *
+    GetLLDBObjectPtr();
+
+    const lldb_private::Target *
+    GetLLDBObjectPtr() const;
+
+private:
+    //------------------------------------------------------------------
+    // For Target only
+    //------------------------------------------------------------------
+
+    lldb::TargetSP m_target_sp;
+};
+
+} // namespace lldb
+
+#endif  // LLDB_SBTarget_h_
diff --git a/lldb/include/lldb/API/SBThread.h b/lldb/include/lldb/API/SBThread.h
new file mode 100644 (file)
index 0000000..220424f
--- /dev/null
@@ -0,0 +1,152 @@
+//===-- SBThread.h ----------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBThread_h_
+#define LLDB_SBThread_h_
+
+#include <LLDB/SBDefines.h>
+
+namespace lldb {
+
+class SBFrame;
+
+class SBThread
+{
+public:
+    SBThread ();
+
+    SBThread (const lldb::SBThread &thread);
+
+   ~SBThread();
+
+    bool
+    IsValid() const;
+
+    lldb::StopReason
+    GetStopReason();
+
+    size_t
+    GetStopDescription (char *dst, size_t dst_len);
+
+    lldb::tid_t
+    GetThreadID () const;
+
+    uint32_t
+    GetIndexID () const;
+
+    const char *
+    GetName () const;
+
+    const char *
+    GetQueueName() const;
+
+    void
+    DisplayFramesForCurrentContext (FILE *out,
+                                    FILE *err,
+                                    uint32_t first_frame,
+                                    uint32_t num_frames,
+                                    bool show_frame_info,
+                                    uint32_t num_frames_with_source,
+                                    uint32_t source_lines_before = 3,
+                                    uint32_t source_lines_after = 3);
+
+    bool
+    DisplaySingleFrameForCurrentContext (FILE *out,
+                                         FILE *err,
+                                         lldb::SBFrame &frame,
+                                         bool show_frame_info,
+                                         bool show_source,
+                                         uint32_t source_lines_after,
+                                         uint32_t source_lines_before);
+
+    void
+    StepOver (lldb::RunMode stop_other_threads = lldb::eOnlyDuringStepping);
+
+    void
+    StepInto (lldb::RunMode stop_other_threads = lldb::eOnlyDuringStepping);
+
+    void
+    StepOut ();
+
+    void
+    StepInstruction(bool step_over);
+
+    void
+    RunToAddress (lldb::addr_t addr);
+
+    void
+    Backtrace (uint32_t num_frames = 0);
+
+    uint32_t
+    GetNumFrames ();
+
+    lldb::SBFrame
+    GetFrameAtIndex (uint32_t idx);
+
+    lldb::SBProcess
+    GetProcess ();
+
+#ifndef SWIG
+
+    const lldb::SBThread &
+    operator = (const lldb::SBThread &rhs);
+
+    bool
+    operator == (const lldb::SBThread &rhs) const;
+
+    bool
+    operator != (const lldb::SBThread &rhs) const;
+
+#endif
+
+
+protected:
+    friend class SBBreakpoint;
+    friend class SBBreakpointLocation;
+    friend class SBFrame;
+    friend class SBProcess;
+    friend class SBDebugger;
+    friend class SBValue;
+
+    lldb_private::Thread *
+    GetLLDBObjectPtr ();
+
+#ifndef SWIG
+
+    const lldb_private::Thread *
+    operator->() const;
+
+    const lldb_private::Thread &
+    operator*() const;
+
+
+    lldb_private::Thread *
+    operator->();
+
+    lldb_private::Thread &
+    operator*();
+
+#endif
+
+    SBThread (const lldb::ThreadSP& lldb_object_sp);
+
+    void
+    SetThread (const lldb::ThreadSP& lldb_object_sp);
+
+private:
+    //------------------------------------------------------------------
+    // Classes that inherit from Thread can see and modify these
+    //------------------------------------------------------------------
+
+    lldb::ThreadSP m_lldb_object_sp;
+};
+
+} // namespace lldb
+
+#endif  // LLDB_SBThread_h_
diff --git a/lldb/include/lldb/API/SBType.h b/lldb/include/lldb/API/SBType.h
new file mode 100644 (file)
index 0000000..f647fbf
--- /dev/null
@@ -0,0 +1,31 @@
+//===-- SBType.h ------------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBType_h_
+#define LLDB_SBType_h_
+
+#include <LLDB/SBDefines.h>
+
+namespace lldb {
+
+class SBType
+{
+public:
+
+    static bool
+    IsPointerType (void *opaque_type);
+
+private:
+
+};
+
+
+} // namespace lldb
+
+#endif // LLDB_SBType_h_
diff --git a/lldb/include/lldb/API/SBValue.h b/lldb/include/lldb/API/SBValue.h
new file mode 100644 (file)
index 0000000..395ca00
--- /dev/null
@@ -0,0 +1,126 @@
+//===-- SBValue.h -----------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBValue_h_
+#define LLDB_SBValue_h_
+
+#include <LLDB/SBDefines.h>
+
+class lldb_private::Variable;
+class lldb_private::ValueObject;
+class lldb_private::ExecutionContext;
+
+namespace lldb {
+
+class SBValue
+{
+public:
+    SBValue ();
+
+    ~SBValue ();
+
+    bool
+    IsValid() const;
+
+    void
+    Print (FILE *out_file, lldb::SBFrame *frame, bool print_type, bool print_value);
+
+    const char *
+    GetName();
+
+    const char *
+    GetTypeName ();
+
+    size_t
+    GetByteSize ();
+
+    bool
+    IsInScope (const lldb::SBFrame &frame);
+
+    const char *
+    GetValue (const lldb::SBFrame &frame);
+
+    bool
+    GetValueDidChange ();
+
+    const char *
+    GetSummary (const lldb::SBFrame &frame);
+
+    const char *
+    GetLocation (const lldb::SBFrame &frame);
+
+    bool
+    SetValueFromCString (const lldb::SBFrame &frame, const char *value_str);
+
+    lldb::SBValue
+    GetChildAtIndex (uint32_t idx);
+
+    // Matches children of this object only and will match base classes and
+    // member names if this is a clang typed object.
+    uint32_t
+    GetIndexOfChildWithName (const char *name);
+
+    // Matches child members of this object and child members of any base
+    // classes.
+    lldb::SBValue
+    GetChildMemberWithName (const char *name);
+
+    uint32_t
+    GetNumChildren ();
+
+    bool
+    ValueIsStale ();
+
+    void *
+    GetOpaqueType();
+
+    //void
+    //DumpType ();
+
+    lldb::SBValue
+    Dereference ();
+
+    bool
+    TypeIsPtrType ();
+
+
+protected:
+    friend class SBValueList;
+    friend class SBFrame;
+
+    SBValue (const lldb::ValueObjectSP &value_sp);
+
+#ifndef SWIG
+
+    // Mimic shared pointer...
+    lldb_private::ValueObject *
+    get() const;
+
+    lldb_private::ValueObject *
+    operator->() const;
+
+    lldb::ValueObjectSP &
+    operator*();
+
+    const lldb::ValueObjectSP &
+    operator*() const;
+
+#endif
+
+private:
+
+    lldb_private::ExecutionContext
+    GetCurrentExecutionContext ();
+
+    lldb::ValueObjectSP m_lldb_object_sp;
+};
+
+} // namespace lldb
+
+#endif  // LLDB_SBValue_h_
diff --git a/lldb/include/lldb/API/SBValueList.h b/lldb/include/lldb/API/SBValueList.h
new file mode 100644 (file)
index 0000000..49b5fef
--- /dev/null
@@ -0,0 +1,79 @@
+//===-- SBValueList.h -------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SBValueList_h_
+#define LLDB_SBValueList_h_
+
+#include <LLDB/SBDefines.h>
+
+class lldb_private::ValueObjectList;
+
+namespace lldb {
+
+class SBValueList
+{
+public:
+
+    SBValueList ();
+
+    SBValueList (const lldb::SBValueList &rhs);
+
+    ~SBValueList();
+
+    bool
+    IsValid() const;
+
+    void
+    Append (const lldb::SBValue &val_obj);
+
+    uint32_t
+    GetSize() const;
+
+    lldb::SBValue
+    GetValueAtIndex (uint32_t idx) const;
+
+    lldb::SBValue
+    FindValueObjectByUID (lldb::user_id_t uid);
+
+
+#ifndef SWIG
+    const lldb::SBValueList &
+    operator = (const lldb::SBValueList &rhs);
+
+    lldb_private::ValueObjectList *
+    operator -> ();
+
+    lldb_private::ValueObjectList &
+    operator* ();
+
+    const lldb_private::ValueObjectList *
+    operator -> () const;
+
+    const lldb_private::ValueObjectList &
+    operator* () const;
+#endif
+
+private:
+    friend class SBFrame;
+
+    SBValueList (const lldb_private::ValueObjectList *lldb_object_ptr);
+
+    void
+    Append (lldb::ValueObjectSP& val_obj_sp);
+
+    void
+    CreateIfNeeded ();
+
+    std::auto_ptr<lldb_private::ValueObjectList> m_lldb_object_ap;
+};
+
+
+} // namespace lldb
+
+#endif  // LLDB_SBValueList_h_
diff --git a/lldb/include/lldb/Breakpoint/Breakpoint.h b/lldb/include/lldb/Breakpoint/Breakpoint.h
new file mode 100644 (file)
index 0000000..1f08636
--- /dev/null
@@ -0,0 +1,511 @@
+//===-- Breakpoint.h --------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef liblldb_Breakpoint_h_
+#define liblldb_Breakpoint_h_
+
+// C Includes
+// C++ Includes
+// Other libraries and framework includes
+// Project includes
+#include "lldb/Breakpoint/BreakpointLocationList.h"
+#include "lldb/Breakpoint/BreakpointOptions.h"
+#include "lldb/Breakpoint/BreakpointLocationCollection.h"
+#include "lldb/Breakpoint/Stoppoint.h"
+#include "lldb/Core/SearchFilter.h"
+#include "lldb/Core/Event.h"
+#include "lldb/Core/StringList.h"
+
+namespace lldb_private {
+
+//----------------------------------------------------------------------
+/// @class Breakpoint Breakpoint.h "lldb/Breakpoint/Breakpoint.h"
+/// @brief Class that manages logical breakpoint setting.
+//----------------------------------------------------------------------
+
+//----------------------------------------------------------------------
+/// General Outline:
+/// A breakpoint has four main parts, a filter, a resolver, the list of breakpoint
+/// locations that have been determined for the filter/resolver pair, and finally
+/// a set of options for the breakpoint.
+///
+/// \b Filter:
+/// This is an object derived from SearchFilter.  It manages the search
+/// for breakpoint location matches through the symbols in the module list of the target
+/// that owns it.  It also filters out locations based on whatever logic it wants.
+///
+/// \b Resolver:
+/// This is an object derived from BreakpointResolver.  It provides a
+/// callback to the filter that will find breakpoint locations.  How it does this is
+/// determined by what kind of resolver it is.
+///
+/// The Breakpoint class also provides constructors for the common breakpoint cases
+/// which make the appropriate filter and resolver for you.
+///
+/// \b Location List:
+/// This stores the breakpoint locations that have been determined
+/// to date.  For a given breakpoint, there will be only one location with a given
+/// address.  Adding a location at an already taken address will just return the location
+/// already at that address.  Locations can be looked up by ID, or by address.
+///
+/// \b Options:
+/// This includes:
+///    \b Enabled/Disabled
+///    \b Ignore Count
+///    \b Callback
+///    \b Condition
+/// Note, these options can be set on the breakpoint, and they can also be set on the
+/// individual locations.  The options set on the breakpoint take precedence over the
+/// options set on the individual location.
+/// So for instance disabling the breakpoint will cause NONE of the locations to get hit.
+/// But if the breakpoint is enabled, then the location's enabled state will be checked
+/// to determine whether to insert that breakpoint location.
+/// Similarly, if the breakpoint condition says "stop", we won't check the location's condition.
+/// But if the breakpoint condition says "continue", then we will check the location for whether
+/// to actually stop or not.
+/// One subtle point worth observing here is that you don't actually stop at a Breakpoint, you
+/// always stop at one of its locations.  So the "should stop" tests are done by the location,
+/// not by the breakpoint.
+//----------------------------------------------------------------------
+class Breakpoint:
+    public Stoppoint
+{
+public:
+
+    static const ConstString &
+    GetEventIdentifier ();
+
+
+    //------------------------------------------------------------------
+    /// An enum specifying the match style for breakpoint settings.  At
+    /// present only used for function name style breakpoints.
+    //------------------------------------------------------------------
+    typedef enum
+    {
+        Exact,
+        Regexp,
+        Glob
+    } MatchType;
+
+    class BreakpointEventData :
+        public EventData
+    {
+    public:
+
+        static const ConstString &
+        GetFlavorString ();
+
+        virtual const ConstString &
+        GetFlavor () const;
+
+
+        enum EventSubType
+        {
+            eBreakpointInvalidType = (1 << 0),
+            eBreakpointAdded = (1 << 1),
+            eBreakpointRemoved = (1 << 2),
+            eBreakpointLocationsAdded = (1 << 3),
+            eBreakpointLocationsRemoved = (1 << 4),
+            eBreakpointLocationResolved = (1 << 5)
+        };
+
+        BreakpointEventData (EventSubType sub_type,
+                             lldb::BreakpointSP &new_breakpoint_sp);
+
+        virtual
+        ~BreakpointEventData();
+
+        EventSubType
+        GetSubType () const;
+
+        lldb::BreakpointSP &
+        GetBreakpoint ();
+
+
+        virtual void
+        Dump (Stream *s) const;
+
+        static BreakpointEventData *
+        GetEventDataFromEvent (const lldb::EventSP &event_sp);
+
+        static EventSubType
+        GetSubTypeFromEvent (const lldb::EventSP &event_sp);
+
+        static lldb::BreakpointSP
+        GetBreakpointFromEvent (const lldb::EventSP &event_sp);
+
+    private:
+        EventSubType m_sub_type;
+        lldb::BreakpointSP m_new_breakpoint_sp;
+        BreakpointLocationCollection m_locations;
+
+        DISALLOW_COPY_AND_ASSIGN (BreakpointEventData);
+    };
+
+
+    //------------------------------------------------------------------
+    /// Destructor.
+    ///
+    /// The destructor is not virtual since there should be no reason to subclass
+    /// breakpoints.  The varieties of breakpoints are specified instead by
+    /// providing different resolvers & filters.
+    //------------------------------------------------------------------
+    ~Breakpoint();
+
+    //------------------------------------------------------------------
+    // Methods
+    //------------------------------------------------------------------
+
+    //------------------------------------------------------------------
+    /// Tell whether this breakpoint is an "internal" breakpoint.
+    /// @return
+    ///     Returns \b true if this is an internal breakpoint, \b false otherwise.
+    //------------------------------------------------------------------
+    bool
+    IsInternal () const;
+
+    //------------------------------------------------------------------
+    /// Standard "Dump" method.  At present it does nothing.
+    //------------------------------------------------------------------
+    void
+    Dump (Stream *s);
+
+    //------------------------------------------------------------------
+    // The next set of methods provide ways to tell the breakpoint to update
+    // it's location list - usually done when modules appear or disappear.
+    //------------------------------------------------------------------
+
+
+    //------------------------------------------------------------------
+    /// Tell this breakpoint to clear all its breakpoint sites.  Done
+    /// when the process holding the breakpoint sites is destroyed.
+    //------------------------------------------------------------------
+    void
+    ClearAllBreakpointSites ();
+
+    //------------------------------------------------------------------
+    /// Tell this breakpoint to scan it's target's module list and resolve any
+    /// new locations that match the breakpoint's specifications.
+    //------------------------------------------------------------------
+    void
+    ResolveBreakpoint ();
+
+    //------------------------------------------------------------------
+    /// Tell this breakpoint to scan a given module list and resolve any
+    /// new locations that match the breakpoint's specifications.
+    ///
+    /// @param[in] changedModules
+    ///    The list of modules to look in for new locations.
+    //------------------------------------------------------------------
+    void
+    ResolveBreakpointInModules (ModuleList &changedModules);
+
+
+    //------------------------------------------------------------------
+    /// Like ResolveBreakpointInModules, but allows for "unload" events, in
+    /// which case we will remove any locations that are in modules that got
+    /// unloaded.
+    ///
+    /// @param[in] changedModules
+    ///    The list of modules to look in for new locations.
+    /// @param[in] load_event
+    ///    If \b true then the modules were loaded, if \b false, unloaded.
+    //------------------------------------------------------------------
+    void
+    ModulesChanged (ModuleList &changedModules,
+                    bool load_event);
+
+
+    //------------------------------------------------------------------
+    // The next set of methods provide access to the breakpoint locations
+    // for this breakpoint.
+    //------------------------------------------------------------------
+
+    //------------------------------------------------------------------
+    /// Add a location to the breakpoint's location list.  This is only meant
+    /// to be called by the breakpoint's resolver.  FIXME: how do I ensure that?
+    ///
+    /// @param[in] addr
+    ///    The Address specifying the new location.
+    /// @param[out] new_location
+    ///    Set to \b true if a new location was created, to \b false if there
+    ///    already was a location at this Address.
+    /// @return
+    ///    Returns a pointer to the new location.
+    //------------------------------------------------------------------
+    lldb::BreakpointLocationSP
+    AddLocation (Address &addr,
+                 bool *new_location = NULL);
+
+    //------------------------------------------------------------------
+    /// Find a breakpoint location by Address.
+    ///
+    /// @param[in] addr
+    ///    The Address specifying the location.
+    /// @return
+    ///    Returns a shared pointer to the location at \a addr.  The pointer
+    ///    in the shared pointer will be NULL if there is no location at that address.
+    //------------------------------------------------------------------
+    lldb::BreakpointLocationSP
+    FindLocationByAddress (Address &addr);
+
+    //------------------------------------------------------------------
+    /// Find a breakpoint location ID by Address.
+    ///
+    /// @param[in] addr
+    ///    The Address specifying the location.
+    /// @return
+    ///    Returns the UID of the location at \a addr, or \b LLDB_INVALID_ID if
+    ///    there is no breakpoint location at that address.
+    //------------------------------------------------------------------
+    lldb::break_id_t
+    FindLocationIDByAddress (Address &addr);
+
+    //------------------------------------------------------------------
+    /// Find a breakpoint location for a given breakpoint location ID.
+    ///
+    /// @param[in] bp_loc_id
+    ///    The ID specifying the location.
+    /// @return
+    ///    Returns a shared pointer to the location with ID \a bp_loc_id.  The pointer
+    ///    in the shared pointer will be NULL if there is no location with that ID.
+    //------------------------------------------------------------------
+    lldb::BreakpointLocationSP
+    FindLocationByID (lldb::break_id_t bp_loc_id);
+
+    //------------------------------------------------------------------
+    /// Get breakpoint locations by index.
+    ///
+    /// @param[in] index
+    ///    The location index.
+    ///
+    /// @return
+    ///     Returns a shared pointer to the location with index \a 
+    ///     index. The shared pointer might contain NULL if \a index is
+    ///     greater than then number of actual locations.
+    //------------------------------------------------------------------
+    lldb::BreakpointLocationSP
+    GetLocationAtIndex (uint32_t index);
+
+
+    const lldb::BreakpointSP
+    GetSP ();
+
+    //------------------------------------------------------------------
+    // The next section deals with various breakpoint options.
+    //------------------------------------------------------------------
+
+    //------------------------------------------------------------------
+    /// If \a enable is \b true, enable the breakpoint, if \b false disable it.
+    //------------------------------------------------------------------
+    void
+    SetEnabled (bool enable);
+
+    //------------------------------------------------------------------
+    /// Check the Enable/Disable state.
+    /// @return
+    ///     \b true if the breakpoint is enabled, \b false if disabled.
+    //------------------------------------------------------------------
+    bool
+    IsEnabled ();
+
+    //------------------------------------------------------------------
+    /// Set the breakpoint to ignore the next \a count breakpoint hits.
+    /// @param[in] count
+    ///    The number of breakpoint hits to ignore.
+    //------------------------------------------------------------------
+    void
+    SetIgnoreCount (int32_t count);
+
+    //------------------------------------------------------------------
+    /// Return the current Ignore Count.
+    /// @return
+    ///     The number of breakpoint hits to be ignored.
+    //------------------------------------------------------------------
+    int32_t
+    GetIgnoreCount () const;
+
+    //------------------------------------------------------------------
+    /// Set the valid thread to be checked when the breakpoint is hit.
+    /// @param[in] thread_id
+    ///    If this thread hits the breakpoint, we stop, otherwise not.
+    //------------------------------------------------------------------
+    void
+    SetThreadID (lldb::tid_t thread_id);
+
+    //------------------------------------------------------------------
+    /// Return the current stop thread value.
+    /// @return
+    ///     The thread id for which the breakpoint hit will stop, LLDB_INVALID_THREAD_ID for all threads.
+    //------------------------------------------------------------------
+    lldb::tid_t
+    GetThreadID ();
+
+    //------------------------------------------------------------------
+    /// Set the callback action invoked when the breakpoint is hit.  The callback
+    /// Will return a bool indicating whether the target should stop at this breakpoint or not.
+    /// @param[in] callback
+    ///    The method that will get called when the breakpoint is hit.
+    /// @param[in] baton
+    ///    A void * pointer that will get passed back to the callback function.
+    //------------------------------------------------------------------
+    void
+    SetCallback (BreakpointHitCallback callback, 
+                 void *baton,
+                 bool is_synchronous = false);
+
+    void
+    SetCallback (BreakpointHitCallback callback, 
+                 const lldb::BatonSP &callback_baton_sp,
+                 bool is_synchronous = false);
+
+    void
+    ClearCallback ();
+
+    //------------------------------------------------------------------
+    /// Set the condition expression to be checked when the breakpoint is hit.
+    /// @param[in] expression
+    ///    The method that will get called when the breakpoint is hit.
+    //------------------------------------------------------------------
+    void
+    SetCondition (void *expression);
+
+    //------------------------------------------------------------------
+    // The next section are various utility functions.
+    //------------------------------------------------------------------
+
+    //------------------------------------------------------------------
+    /// Return the number of breakpoint locations that have resolved to
+    /// actual breakpoint sites.
+    ///
+    /// @return
+    ///     The number locations resolved breakpoint sites.
+    //------------------------------------------------------------------
+    size_t
+    GetNumResolvedLocations() const;
+
+    //------------------------------------------------------------------
+    /// Return the number of breakpoint locations.
+    ///
+    /// @return
+    ///     The number breakpoint locations.
+    //------------------------------------------------------------------
+    size_t
+    GetNumLocations() const;
+
+    //------------------------------------------------------------------
+    /// Put a description of this breakpoint into the stream \a s.
+    ///
+    /// @param[in] s
+    ///     Stream into which to dump the description.
+    ///
+    /// @param[in] level
+    ///     The description level that indicates the detail level to
+    ///     provide.
+    ///
+    /// @see lldb::DescriptionLevel
+    //------------------------------------------------------------------
+    void
+    GetDescription (Stream *s, lldb::DescriptionLevel level, bool show_locations = false);
+
+    //------------------------------------------------------------------
+    /// Accessor for the breakpoint Target.
+    /// @return
+    ///     This breakpoint's Target.
+    //------------------------------------------------------------------
+    Target &
+    GetTarget ();
+
+    const Target &
+    GetTarget () const;
+
+    void
+    GetResolverDescription (Stream *s);
+
+    void
+    GetFilterDescription (Stream *s);
+
+    //------------------------------------------------------------------
+    /// Returns the BreakpointOptions structure set at the breakpoint level.
+    ///
+    /// Meant to be used by the BreakpointLocation class.
+    ///
+    /// @return
+    ///     A pointer to this breakpoint's BreakpointOptions.
+    //------------------------------------------------------------------
+    BreakpointOptions *
+    GetOptions ();
+
+
+protected:
+    friend class Target;
+    friend class BreakpointLocation; // To call InvokeCallback
+    //------------------------------------------------------------------
+    /// Constructors and Destructors
+    /// Only the Target can make a breakpoint, and it owns the breakpoint lifespans.
+    /// The constructor takes a filter and a resolver.  Up in Target there are convenience
+    /// variants that make breakpoints for some common cases.
+    //------------------------------------------------------------------
+    // This is the generic constructor
+    Breakpoint(Target &target, lldb::SearchFilterSP &filter_sp, lldb::BreakpointResolverSP &resolver_sp);
+
+    //------------------------------------------------------------------
+    // Protected Methods
+    //------------------------------------------------------------------
+
+    //------------------------------------------------------------------
+    /// Invoke the callback action when the breakpoint is hit.
+    ///
+    /// Meant to be used by the BreakpointLocation class.
+    ///
+    /// @param[in] context
+    ///     Described the breakpoint event.
+    ///
+    /// @param[in] bp_loc_id
+    ///     Which breakpoint location hit this breakpoint.
+    ///
+    /// @return
+    ///     \b true if the target should stop at this breakpoint and \b false not.
+    //------------------------------------------------------------------
+    bool
+    InvokeCallback (StoppointCallbackContext *context,
+                    lldb::break_id_t bp_loc_id);
+
+protected:
+
+    //------------------------------------------------------------------
+    /// Returns the shared pointer that this breakpoint holds for the
+    /// breakpoint location passed in as \a bp_loc_ptr.  Passing in a 
+    /// breakpoint location that doesn't belong to this breakpoint will
+    /// cause an assert.
+    ///
+    /// Meant to be used by the BreakpointLocation::GetSP() function.
+    ///
+    /// @return
+    ///     A copy of the shared pointer for the given location.
+    //------------------------------------------------------------------
+    lldb::BreakpointLocationSP
+    GetLocationSP (BreakpointLocation *bp_loc_ptr);
+
+private:
+    //------------------------------------------------------------------
+    // For Breakpoint only
+    //------------------------------------------------------------------
+    Target &m_target;                         // The target that holds this breakpoint.
+    lldb::SearchFilterSP m_filter_sp;         // The filter that constrains the breakpoint's domain.
+    lldb::BreakpointResolverSP m_resolver_sp; // The resolver that defines this breakpoint.
+    BreakpointOptions m_options;              // Settable breakpoint options
+    BreakpointLocationList m_locations;       // The list of locations currently found for this breakpoint.
+
+    DISALLOW_COPY_AND_ASSIGN(Breakpoint);
+};
+
+} // namespace lldb_private
+
+#endif  // liblldb_Breakpoint_h_
diff --git a/lldb/include/lldb/Breakpoint/BreakpointID.h b/lldb/include/lldb/Breakpoint/BreakpointID.h
new file mode 100644 (file)
index 0000000..9e35210
--- /dev/null
@@ -0,0 +1,117 @@
+//===-- BreakpointID.h ------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef liblldb_BreakpointID_h_
+#define liblldb_BreakpointID_h_
+
+// C Includes
+// C++ Includes
+// Other libraries and framework includes
+// Project includes
+
+#include "lldb/lldb-private.h"
+
+namespace lldb_private {
+
+//----------------------------------------------------------------------
+// class BreakpointID
+//----------------------------------------------------------------------
+
+class BreakpointID
+{
+public:
+
+    BreakpointID (lldb::break_id_t bp_id = LLDB_INVALID_BREAK_ID,
+                  lldb::break_id_t loc_id = LLDB_INVALID_BREAK_ID);
+
+    virtual
+    ~BreakpointID ();
+
+    lldb::break_id_t
+    GetBreakpointID ()
+    {
+        return m_break_id;
+    }
+
+    lldb::break_id_t
+    GetLocationID ()
+    {
+        return m_location_id;
+    }
+
+    void
+    SetID (lldb::break_id_t bp_id, lldb::break_id_t loc_id)
+    {
+        m_break_id = bp_id;
+        m_location_id = loc_id;
+    }
+
+    void
+    SetBreakpointID (lldb::break_id_t bp_id)
+    {
+        m_break_id = bp_id;
+    }
+
+    void
+    SetBreakpointLocationID (lldb::break_id_t loc_id)
+    {
+        m_location_id = loc_id;
+    }
+
+    void
+    GetDescription (Stream *s, lldb::DescriptionLevel level);
+
+    static bool
+    IsRangeIdentifier (const char *str);
+
+    static bool
+    IsValidIDExpression (const char *str);
+
+    static const char *g_range_specifiers[];
+
+    //------------------------------------------------------------------
+    /// Takes an input string containing the description of a breakpoint or breakpoint and location
+    /// and returns the breakpoint ID and the breakpoint location id.
+    ///
+    /// @param[in] input
+    ///     A string containing JUST the breakpoint description.
+    /// @param[out] break_id
+    ///     This is the break id.
+    /// @param[out] break_loc_id
+    ///     This is breakpoint location id, or LLDB_INVALID_BREAK_ID is no location was specified.
+    /// @return
+    ///     \b true if the call was able to extract a breakpoint location from the string.  \b false otherwise.
+    //------------------------------------------------------------------
+    static bool
+    ParseCanonicalReference (const char *input, lldb::break_id_t *break_id, lldb::break_id_t *break_loc_id);
+
+
+    //------------------------------------------------------------------
+    /// Takes a breakpoint ID and the breakpoint location id and returns
+    /// a string containing the canonical description for the breakpoint
+    /// or breakpoint location.
+    ///
+    /// @param[out] break_id
+    ///     This is the break id.
+    ///
+    /// @param[out] break_loc_id
+    ///     This is breakpoint location id, or LLDB_INVALID_BREAK_ID is no
+    ///     location is to be specified.
+    //------------------------------------------------------------------
+    static void
+    GetCanonicalReference (Stream *s, lldb::break_id_t break_id, lldb::break_id_t break_loc_id);
+
+protected:
+    lldb::break_id_t m_break_id;
+    lldb::break_id_t m_location_id;
+};
+
+} // namespace lldb_private
+
+#endif  // liblldb_BreakpointID_h_
diff --git a/lldb/include/lldb/Breakpoint/BreakpointIDList.h b/lldb/include/lldb/Breakpoint/BreakpointIDList.h
new file mode 100644 (file)
index 0000000..bc88087
--- /dev/null
@@ -0,0 +1,82 @@
+//===-- BreakpointIDList.h --------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef liblldb_BreakpointIDList_h_
+#define liblldb_BreakpointIDList_h_
+
+// C Includes
+// C++ Includes
+#include <vector>
+
+// Other libraries and framework includes
+// Project includes
+
+#include "lldb/lldb-private.h"
+#include "lldb/Breakpoint/BreakpointID.h"
+
+namespace lldb_private {
+
+//----------------------------------------------------------------------
+// class BreakpointIDList
+//----------------------------------------------------------------------
+
+
+class BreakpointIDList
+{
+public:
+    typedef std::vector<BreakpointID> BreakpointIDArray;
+
+    BreakpointIDList ();
+
+    virtual
+    ~BreakpointIDList ();
+
+    int
+    Size();
+
+    BreakpointID &
+    GetBreakpointIDAtIndex (int index);
+
+    bool
+    RemoveBreakpointIDAtIndex (int index);
+
+    void
+    Clear();
+
+    bool
+    AddBreakpointID (BreakpointID bp_id);
+
+    bool
+    AddBreakpointID (const char *bp_id);
+
+    bool
+    FindBreakpointID (BreakpointID &bp_id, int *position);
+
+    bool
+    FindBreakpointID (const char *bp_id, int *position);
+
+    void
+    InsertStringArray (const char **string_array, int array_size, CommandReturnObject &result);
+
+    static bool
+    StringContainsIDRangeExpression (const char *in_string, int *range_start_len, int *range_end_pos);
+
+    static void
+    FindAndReplaceIDRanges (Args &old_args, Target *target, CommandReturnObject &result, Args &new_args);
+
+private:
+    BreakpointIDArray m_breakpoint_ids;
+    BreakpointID m_invalid_id;
+
+    DISALLOW_COPY_AND_ASSIGN(BreakpointIDList);
+};
+
+} // namespace lldb_private
+
+#endif  // liblldb_BreakpointIDList_h_
diff --git a/lldb/include/lldb/Breakpoint/BreakpointList.h b/lldb/include/lldb/Breakpoint/BreakpointList.h
new file mode 100644 (file)
index 0000000..225bb3b
--- /dev/null
@@ -0,0 +1,177 @@
+//===-- BreakpointList.h ----------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef liblldb_BreakpointList_h_
+#define liblldb_BreakpointList_h_
+
+// C Includes
+// C++ Includes
+#include <list>
+// Other libraries and framework includes
+// Project includes
+#include "lldb/Breakpoint/Breakpoint.h"
+#include "lldb/Host/Mutex.h"
+
+namespace lldb_private {
+
+//----------------------------------------------------------------------
+/// @class BreakpointList BreakpointList.h "lldb/Breakpoint/BreakpointList.h"
+/// @brief This class manages a list of breakpoints.
+//----------------------------------------------------------------------
+
+//----------------------------------------------------------------------
+/// General Outline:
+/// Allows adding and removing breakpoints and find by ID and index.
+//----------------------------------------------------------------------
+
+class BreakpointList
+{
+public:
+    BreakpointList (bool is_internal);
+
+    ~BreakpointList();
+
+    //------------------------------------------------------------------
+    /// Add the breakpoint \a bp_sp to the list.
+    ///
+    /// @param[in] bp_sp
+    ///   Shared pointer to the breakpoint that will get added to the list.
+    ///
+    /// @result
+    ///   Returns breakpoint id.
+    //------------------------------------------------------------------
+    virtual lldb::break_id_t
+    Add (lldb::BreakpointSP& bp_sp);
+
+    //------------------------------------------------------------------
+    /// Standard "Dump" method.  At present it does nothing.
+    //------------------------------------------------------------------
+    void
+    Dump (Stream *s) const;
+
+    //------------------------------------------------------------------
+    /// Returns a shared pointer to the breakpoint with id \a breakID.
+    ///
+    /// @param[in] breakID
+    ///   The breakpoint ID to seek for.
+    ///
+    /// @result
+    ///   A shared pointer to the breakpoint.  May contain a NULL pointer if the
+    ///   breakpoint doesn't exist.
+    //------------------------------------------------------------------
+    lldb::BreakpointSP
+    FindBreakpointByID (lldb::break_id_t breakID);
+
+    //------------------------------------------------------------------
+    /// Returns a shared pointer to the breakpoint with id \a breakID.  Const version.
+    ///
+    /// @param[in] breakID
+    ///   The breakpoint ID to seek for.
+    ///
+    /// @result
+    ///   A shared pointer to the breakpoint.  May contain a NULL pointer if the
+    ///   breakpoint doesn't exist.
+    //------------------------------------------------------------------
+    const lldb::BreakpointSP
+    FindBreakpointByID (lldb::break_id_t breakID) const;
+
+    //------------------------------------------------------------------
+    /// Returns a shared pointer to the breakpoint with index \a i.
+    ///
+    /// @param[in] i
+    ///   The breakpoint index to seek for.
+    ///
+    /// @result
+    ///   A shared pointer to the breakpoint.  May contain a NULL pointer if the
+    ///   breakpoint doesn't exist.
+    //------------------------------------------------------------------
+    lldb::BreakpointSP
+    GetBreakpointByIndex (uint32_t i);
+
+    //------------------------------------------------------------------
+    /// Returns a shared pointer to the breakpoint with index \a i, const version
+    ///
+    /// @param[in] i
+    ///   The breakpoint index to seek for.
+    ///
+    /// @result
+    ///   A shared pointer to the breakpoint.  May contain a NULL pointer if the
+    ///   breakpoint doesn't exist.
+    //------------------------------------------------------------------
+    const lldb::BreakpointSP
+    GetBreakpointByIndex (uint32_t i) const;
+
+    //------------------------------------------------------------------
+    /// Returns the number of elements in this breakpoint list.
+    ///
+    /// @result
+    ///   The number of elements.
+    //------------------------------------------------------------------
+    size_t
+    GetSize() const { return m_breakpoints.size(); }
+
+    //------------------------------------------------------------------
+    /// Removes the breakpoint given by \b breakID from this list.
+    ///
+    /// @param[in] breakID
+    ///   The breakpoint index to remove.
+    ///
+    /// @result
+    ///   \b true if the breakpoint \a breakID was in the list.
+    //------------------------------------------------------------------
+    bool
+    Remove (lldb::break_id_t breakID);
+
+    void
+    SetEnabledAll (bool enabled);
+
+    //------------------------------------------------------------------
+    /// Removes all the breakpoints from this list.
+    //------------------------------------------------------------------
+    void
+    RemoveAll ();
+
+    //------------------------------------------------------------------
+    /// Tell all the breakpoints to update themselves due to a change in the
+    /// modules in \a module_list.  \a added says whether the module was loaded
+    /// or unloaded.
+    ///
+    /// @param[in] module_list
+    ///   The module list that has changed.
+    ///
+    /// @param[in] added
+    ///   \b true if the modules are loaded, \b false if unloaded.
+    //------------------------------------------------------------------
+    void
+    UpdateBreakpoints (ModuleList &module_list, bool added);
+
+    void
+    ClearAllBreakpointSites ();
+
+protected:
+    typedef std::list<lldb::BreakpointSP> bp_collection;
+
+    bp_collection::iterator
+    GetBreakpointIDIterator(lldb::break_id_t breakID);
+
+    bp_collection::const_iterator
+    GetBreakpointIDConstIterator(lldb::break_id_t breakID) const;
+
+    mutable Mutex m_mutex;
+    bp_collection m_breakpoints;  // The breakpoint list, currently a list.
+    lldb::break_id_t m_next_break_id;
+    bool m_is_internal;
+
+private:
+    DISALLOW_COPY_AND_ASSIGN (BreakpointList);
+};
+
+} // namespace lldb_private
+
+#endif  // liblldb_BreakpointList_h_
diff --git a/lldb/include/lldb/Breakpoint/BreakpointLocation.h b/lldb/include/lldb/Breakpoint/BreakpointLocation.h
new file mode 100644 (file)
index 0000000..d51184d
--- /dev/null
@@ -0,0 +1,354 @@
+//===-- BreakpointLocation.h ------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef liblldb_BreakpointLocation_h_
+#define liblldb_BreakpointLocation_h_
+
+// C Includes
+
+// C++ Includes
+#include <list>
+#include <memory>
+
+// Other libraries and framework includes
+
+// Project includes
+#include "lldb/lldb-private.h"
+#include "lldb/Core/UserID.h"
+#include "lldb/Breakpoint/StoppointLocation.h"
+#include "lldb/Core/Address.h"
+#include "lldb/Breakpoint/Breakpoint.h"
+#include "lldb/Breakpoint/BreakpointOptions.h"
+#include "lldb/Target/Process.h"
+#include "lldb/Core/StringList.h"
+
+namespace lldb_private {
+
+//----------------------------------------------------------------------
+/// @class BreakpointLocation BreakpointLocation.h "lldb/Breakpoint/BreakpointLocation.h"
+/// @brief Class that manages one unique (by address) instance of a logical breakpoint.
+//----------------------------------------------------------------------
+
+//----------------------------------------------------------------------
+/// General Outline:
+/// A breakpoint location is defined by the breakpoint that produces it,
+/// and the address that resulted in this particular instantiation.
+/// Each breakpoint location also may have a breakpoint site if its
+/// address has been loaded into the program.
+/// Finally it has a settable options object.
+///
+/// FIXME: Should we also store some fingerprint for the location, so
+/// we can map one location to the "equivalent location" on rerun?  This
+/// would be useful if you've set options on the locations.
+//----------------------------------------------------------------------
+
+class BreakpointLocation : public StoppointLocation
+{
+public:
+
+    ~BreakpointLocation ();
+
+    //------------------------------------------------------------------
+    /// Gets the load address for this breakpoint location
+    /// @return
+    ///     Returns breakpoint location load address, \b
+    ///     LLDB_INVALID_ADDRESS if not yet set.
+    //------------------------------------------------------------------
+    lldb::addr_t
+    GetLoadAddress ();
+
+    //------------------------------------------------------------------
+    /// Gets the Address for this breakpoint location
+    /// @return
+    ///     Returns breakpoint location Address.
+    //------------------------------------------------------------------
+    Address &
+    GetAddress ();
+    //------------------------------------------------------------------
+    /// Gets the Breakpoint that created this breakpoint location
+    /// @return
+    ///     Returns the owning breakpoint.
+    //------------------------------------------------------------------
+    Breakpoint &
+    GetBreakpoint ();
+
+    //------------------------------------------------------------------
+    /// Determines whether we should stop due to a hit at this
+    /// breakpoint location.
+    ///
+    /// Side Effects: This may evaluate the breakpoint condition, and
+    /// run the callback.  So this command may do a considerable amount
+    /// of work.
+    ///
+    /// @return
+    ///     \b true if this breakpoint location thinks we should stop,
+    ///     \b false otherwise.
+    //------------------------------------------------------------------
+    bool
+    ShouldStop (StoppointCallbackContext *context);
+
+    //------------------------------------------------------------------
+    // The next section deals with various breakpoint options.
+    //------------------------------------------------------------------
+
+    //------------------------------------------------------------------
+    /// If \a enable is \b true, enable the breakpoint, if \b false
+    /// disable it.
+    //------------------------------------------------------------------
+    void
+    SetEnabled(bool enabled);
+
+    //------------------------------------------------------------------
+    /// Check the Enable/Disable state.
+    ///
+    /// @return
+    ///     \b true if the breakpoint is enabled, \b false if disabled.
+    //------------------------------------------------------------------
+    bool
+    IsEnabled ();
+
+    //------------------------------------------------------------------
+    /// Return the current Ignore Count.
+    ///
+    /// @return
+    ///     The number of breakpoint hits to be ignored.
+    //------------------------------------------------------------------
+    int32_t
+    GetIgnoreCount ();
+
+    //------------------------------------------------------------------
+    /// Set the breakpoint to ignore the next \a count breakpoint hits.
+    ///
+    /// @param[in] count
+    ///    The number of breakpoint hits to ignore.
+    //------------------------------------------------------------------
+    void
+    SetIgnoreCount (int32_t n);
+
+    //------------------------------------------------------------------
+    /// Set the callback action invoked when the breakpoint is hit.
+    ///
+    /// The callback will return a bool indicating whether the target
+    /// should stop at this breakpoint or not.
+    ///
+    /// @param[in] callback
+    ///     The method that will get called when the breakpoint is hit.
+    ///
+    /// @param[in] callback_baton_sp
+    ///     A shared pointer to a Baton that provides the void * needed
+    ///     for the callback.
+    ///
+    /// @see lldb_private::Baton
+    //------------------------------------------------------------------
+    void
+    SetCallback (BreakpointHitCallback callback, 
+                 const lldb::BatonSP &callback_baton_sp,
+                 bool is_synchronous);
+
+    void
+    SetCallback (BreakpointHitCallback callback, 
+                 void *baton,
+                 bool is_synchronous);
+    
+    void
+    ClearCallback ();
+
+    //------------------------------------------------------------------
+    /// Set the condition expression to be checked when the breakpoint is hit.
+    ///
+    /// @param[in] expression
+    ///    The method that will get called when the breakpoint is hit.
+    //------------------------------------------------------------------
+    void
+    SetCondition (void *condition);
+
+
+    //------------------------------------------------------------------
+    /// Set the valid thread to be checked when the breakpoint is hit.
+    ///
+    /// @param[in] thread_id
+    ///    If this thread hits the breakpoint, we stop, otherwise not.
+    //------------------------------------------------------------------
+    void
+    SetThreadID (lldb::tid_t thread_id);
+
+    //------------------------------------------------------------------
+    /// Return the current stop thread value.
+    ///
+    /// @return
+    ///     The thread id for which the breakpoint hit will stop,
+    ///     LLDB_INVALID_THREAD_ID for all threads.
+    //------------------------------------------------------------------
+    lldb::tid_t
+    GetThreadID ();
+
+    //------------------------------------------------------------------
+    // The next section deals with this location's breakpoint sites.
+    //------------------------------------------------------------------
+
+    //------------------------------------------------------------------
+    /// Try to resolve the breakpoint site for this location.
+    ///
+    /// @return
+    ///     \b true if we were successful at setting a breakpoint site,
+    ///     \b false otherwise.
+    //------------------------------------------------------------------
+    bool
+    ResolveBreakpointSite ();
+
+    //------------------------------------------------------------------
+    /// Clear this breakpoint location's breakpoint site - for instance
+    /// when disabling the breakpoint.
+    ///
+    /// @return
+    ///     \b true if there was a breakpoint site to be cleared, \b false
+    ///     otherwise.
+    //------------------------------------------------------------------
+    bool
+    ClearBreakpointSite ();
+
+    //------------------------------------------------------------------
+    /// Return whether this breakpoint location has a breakpoint site.
+    /// @return
+    ///     \b true if there was a breakpoint site for this breakpoint
+    ///     location, \b false otherwise.
+    //------------------------------------------------------------------
+    bool
+    IsResolved () const;
+
+    //------------------------------------------------------------------
+    // The next section are generic report functions.
+    //------------------------------------------------------------------
+
+    //------------------------------------------------------------------
+    /// Print a description of this breakpoint location to the stream
+    /// \a s.
+    ///
+    /// @param[in] s
+    ///     The stream to which to print the description.
+    ///
+    /// @param[in] level
+    ///     The description level that indicates the detail level to
+    ///     provide.
+    ///
+    /// @see lldb::DescriptionLevel
+    //------------------------------------------------------------------
+    void
+    GetDescription (Stream *s, lldb::DescriptionLevel level);
+
+    //------------------------------------------------------------------
+    /// Standard "Dump" method.  At present it does nothing.
+    //------------------------------------------------------------------
+    void
+    Dump (Stream *s) const;
+
+    //------------------------------------------------------------------
+    /// Use this to set location specific breakpoint options.
+    ///
+    /// It will create a copy of the containing breakpoint's options if
+    /// that hasn't been done already
+    ///
+    /// @return
+    ///    A pointer to the breakpoint options.
+    //------------------------------------------------------------------
+    BreakpointOptions *
+    GetLocationOptions ();
+
+    //------------------------------------------------------------------
+    /// Use this to access location specific breakpoint options.
+    ///
+    /// @return
+    ///     A pointer to the containing breakpoint's options if this
+    ///     location doesn't have its own copy.
+    //------------------------------------------------------------------
+    BreakpointOptions *
+    GetOptionsNoCopy ();
+
+protected:
+    friend class Breakpoint;
+    friend class CommandObjectBreakpointCommandAdd;
+    friend class Process;
+    
+    //------------------------------------------------------------------
+    /// Invoke the callback action when the breakpoint is hit.
+    ///
+    /// Meant to be used by the BreakpointLocation class.
+    ///
+    /// @param[in] context
+    ///    Described the breakpoint event.
+    ///
+    /// @param[in] bp_loc_id
+    ///    Which breakpoint location hit this breakpoint.
+    ///
+    /// @return
+    ///     \b true if the target should stop at this breakpoint and \b
+    ///     false not.
+    //------------------------------------------------------------------
+    bool
+    InvokeCallback (StoppointCallbackContext *context);
+
+    //------------------------------------------------------------------
+    /// Set the breakpoint site for this location to \a bp_site_sp.
+    ///
+    /// @param[in] bp_site_sp
+    ///      The breakpoint site we are setting for this location.
+    ///
+    /// @return
+    ///     \b true if we were successful at setting the breakpoint site,
+    ///     \b false otherwise.
+    //------------------------------------------------------------------
+    bool
+    SetBreakpointSite (lldb::BreakpointSiteSP& bp_site_sp);
+
+private:
+
+    //------------------------------------------------------------------
+    // Constructors and Destructors
+    //
+    // Only the Breakpoint can make breakpoint locations, and it owns
+    // them.
+    //------------------------------------------------------------------
+
+    //------------------------------------------------------------------
+    /// Constructor.
+    ///
+    /// @param[in] owner
+    ///     A back pointer to the breakpoint that owns this location.
+    ///
+    /// @param[in] addr
+    ///     The Address defining this location.
+    ///
+    /// @param[in] tid
+    ///     The thread for which this breakpoint location is valid, or
+    ///     LLDB_INVALID_THREAD_ID if it is valid for all threads.
+    ///
+    /// @param[in] hardware
+    ///     \b true if a hardware breakpoint is requested.
+    //------------------------------------------------------------------
+
+    BreakpointLocation (lldb::break_id_t bid,
+                        Breakpoint &owner,
+                        Address &addr,
+                        lldb::tid_t tid = LLDB_INVALID_THREAD_ID,
+                        bool hardware = false);
+
+    //------------------------------------------------------------------
+    // Data members:
+    //------------------------------------------------------------------
+    Address m_address; ///< The address defining this location.
+    Breakpoint &m_owner; ///< The breakpoint that produced this object.
+    std::auto_ptr<BreakpointOptions> m_options_ap; ///< Breakpoint options pointer, NULL if we're using our breakpoint's options.
+    lldb::BreakpointSiteSP m_bp_site_sp; ///< Our breakpoint site (it may be shared by more than one location.)
+
+    DISALLOW_COPY_AND_ASSIGN (BreakpointLocation);
+};
+
+} // namespace lldb_private
+
+#endif  // liblldb_BreakpointLocation_h_
diff --git a/lldb/include/lldb/Breakpoint/BreakpointLocationCollection.h b/lldb/include/lldb/Breakpoint/BreakpointLocationCollection.h
new file mode 100644 (file)
index 0000000..9e04a2c
--- /dev/null
@@ -0,0 +1,187 @@
+//===-- BreakpointLocationCollection.h --------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef liblldb_BreakpointLocationCollection_h_
+#define liblldb_BreakpointLocationCollection_h_
+
+// C Includes
+// C++ Includes
+#include <vector>
+// Other libraries and framework includes
+// Project includes
+#include "lldb/lldb-private.h"
+
+namespace lldb_private {
+
+class BreakpointLocationCollection
+{
+public:
+    BreakpointLocationCollection();
+
+    ~BreakpointLocationCollection();
+
+    //------------------------------------------------------------------
+    /// Add the breakpoint \a bp_loc_sp to the list.
+    ///
+    /// @param[in] bp_sp
+    ///     Shared pointer to the breakpoint location that will get added
+    ///     to the list.
+    ///
+    /// @result
+    ///     Returns breakpoint location id.
+    //------------------------------------------------------------------
+    void
+    Add (const lldb::BreakpointLocationSP& bp_loc_sp);
+
+    //------------------------------------------------------------------
+    /// Removes the breakpoint location given by \b breakID from this
+    /// list.
+    ///
+    /// @param[in] break_id
+    ///     The breakpoint index to remove.
+    ///
+    /// @param[in] break_loc_id
+    ///     The breakpoint location index in break_id to remove.
+    ///
+    /// @result
+    ///     \b true if the breakpoint was in the list.
+    //------------------------------------------------------------------
+    bool
+    Remove (lldb::user_id_t break_id, lldb::user_id_t break_loc_id);
+
+    //------------------------------------------------------------------
+    /// Returns a shared pointer to the breakpoint location with id \a
+    /// breakID.
+    ///
+    /// @param[in] break_id
+    ///     The breakpoint  ID to seek for.
+    ///
+    /// @param[in] break_loc_id
+    ///     The breakpoint location ID in \a break_id to seek for.
+    ///
+    /// @result
+    ///     A shared pointer to the breakpoint.  May contain a NULL
+    ///     pointer if the breakpoint doesn't exist.
+    //------------------------------------------------------------------
+    lldb::BreakpointLocationSP
+    FindByIDPair (lldb::user_id_t break_id, lldb::user_id_t break_loc_id);
+
+    //------------------------------------------------------------------
+    /// Returns a shared pointer to the breakpoint location with id \a
+    /// breakID, const version.
+    ///
+    /// @param[in] breakID
+    ///     The breakpoint location ID to seek for.
+    ///
+    /// @param[in] break_loc_id
+    ///     The breakpoint location ID in \a break_id to seek for.
+    ///
+    /// @result
+    ///     A shared pointer to the breakpoint.  May contain a NULL
+    ///     pointer if the breakpoint doesn't exist.
+    //------------------------------------------------------------------
+    const lldb::BreakpointLocationSP
+    FindByIDPair (lldb::user_id_t break_id, lldb::user_id_t break_loc_id) const;
+
+    //------------------------------------------------------------------
+    /// Returns a shared pointer to the breakpoint location with index
+    /// \a i.
+    ///
+    /// @param[in] i
+    ///     The breakpoint location index to seek for.
+    ///
+    /// @result
+    ///     A shared pointer to the breakpoint.  May contain a NULL
+    ///     pointer if the breakpoint doesn't exist.
+    //------------------------------------------------------------------
+    lldb::BreakpointLocationSP
+    GetByIndex (uint32_t i);
+
+    //------------------------------------------------------------------
+    /// Returns a shared pointer to the breakpoint location with index
+    /// \a i, const version.
+    ///
+    /// @param[in] i
+    ///     The breakpoint location index to seek for.
+    ///
+    /// @result
+    ///     A shared pointer to the breakpoint.  May contain a NULL
+    ///     pointer if the breakpoint doesn't exist.
+    //------------------------------------------------------------------
+    const lldb::BreakpointLocationSP
+    GetByIndex (uint32_t i) const;
+
+    //------------------------------------------------------------------
+    /// Returns the number of elements in this breakpoint location list.
+    ///
+    /// @result
+    ///     The number of elements.
+    //------------------------------------------------------------------
+    size_t
+    GetSize() const { return m_break_loc_collection.size(); }
+
+    //------------------------------------------------------------------
+    /// Enquires of all the breakpoint locations in this list whether
+    /// we should stop at a hit at \a breakID.
+    ///
+    /// @param[in] context
+    ///    This contains the information about this stop.
+    ///
+    /// @param[in] breakID
+    ///    This break ID that we hit.
+    ///
+    /// @return
+    ///    \b true if we should stop, \b false otherwise.
+    //------------------------------------------------------------------
+    bool
+    ShouldStop (StoppointCallbackContext *context);
+
+    //------------------------------------------------------------------
+    /// Print a description of the breakpoint locations in this list
+    /// to the stream \a s.
+    ///
+    /// @param[in] s
+    ///     The stream to which to print the description.
+    ///
+    /// @param[in] level
+    ///     The description level that indicates the detail level to
+    ///     provide.
+    ///
+    /// @see lldb::DescriptionLevel
+    //------------------------------------------------------------------
+    void GetDescription (Stream *s, lldb::DescriptionLevel level);
+
+
+
+protected:
+    //------------------------------------------------------------------
+    // Classes that inherit from BreakpointLocationCollection can see
+    // and modify these
+    //------------------------------------------------------------------
+
+private:
+    //------------------------------------------------------------------
+    // For BreakpointLocationCollection only
+    //------------------------------------------------------------------
+
+    typedef std::vector<lldb::BreakpointLocationSP> collection;
+
+    collection::iterator
+    GetIDPairIterator(lldb::user_id_t break_id, lldb::user_id_t break_loc_id);
+
+    collection::const_iterator
+    GetIDPairConstIterator(lldb::user_id_t break_id, lldb::user_id_t break_loc_id) const;
+
+    collection m_break_loc_collection;
+
+};
+
+} // namespace lldb_private
+
+#endif  // liblldb_BreakpointLocationCollection_h_
diff --git a/lldb/include/lldb/Breakpoint/BreakpointLocationList.h b/lldb/include/lldb/Breakpoint/BreakpointLocationList.h
new file mode 100644 (file)
index 0000000..5c1c8ff
--- /dev/null
@@ -0,0 +1,285 @@
+//===-- BreakpointLocationList.h --------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef liblldb_BreakpointLocationList_h_
+#define liblldb_BreakpointLocationList_h_
+
+// C Includes
+// C++ Includes
+#include <vector>
+#include <map>
+// Other libraries and framework includes
+// Project includes
+#include "lldb/lldb-private.h"
+#include "lldb/Core/Address.h"
+#include "lldb/Host/Mutex.h"
+
+namespace lldb_private {
+
+//----------------------------------------------------------------------
+/// @class BreakpointLocationList BreakpointLocationList.h "lldb/Breakpoint/BreakpointLocationList.h"
+/// @brief This class is used by Breakpoint to manage a list of breakpoint locations,
+//  each breakpoint location in the list
+/// has a unique ID, and is unique by Address as well.
+//----------------------------------------------------------------------
+
+class BreakpointLocationList
+{
+// Only Breakpoints can make the location list, or add elements to it.
+// This is not just some random collection of locations.  Rather, the act of adding the location
+// to this list sets its ID, and implicitly all the locations have the same breakpoint ID as
+// well.  If you need a generic container for breakpoint locations, use BreakpointLocationCollection.
+friend class Breakpoint;
+
+public:
+    ~BreakpointLocationList();
+
+    //------------------------------------------------------------------
+    /// Standard "Dump" method.  At present it does nothing.
+    //------------------------------------------------------------------
+    void
+    Dump (Stream *s) const;
+
+    //------------------------------------------------------------------
+    /// Returns a shared pointer to the breakpoint location at address
+    /// \a addr - const version.
+    ///
+    /// @param[in] addr
+    ///     The address to look for.
+    ///
+    /// @result
+    ///     A shared pointer to the breakpoint.  May contain a NULL
+    ///     pointer if the breakpoint doesn't exist.
+    //------------------------------------------------------------------
+    const lldb::BreakpointLocationSP
+    FindByAddress (Address &addr) const;
+
+    //------------------------------------------------------------------
+    /// Returns a shared pointer to the breakpoint location with id \a
+    /// breakID.
+    ///
+    /// @param[in] breakID
+    ///     The breakpoint location ID to seek for.
+    ///
+    /// @result
+    ///     A shared pointer to the breakpoint.  May contain a NULL
+    ///     pointer if the breakpoint doesn't exist.
+    //------------------------------------------------------------------
+    lldb::BreakpointLocationSP
+    FindByID (lldb::user_id_t breakID);
+
+    //------------------------------------------------------------------
+    /// Returns a shared pointer to the breakpoint location with id
+    /// \a breakID, const version.
+    ///
+    /// @param[in] breakID
+    ///     The breakpoint location ID to seek for.
+    ///
+    /// @result
+    ///     A shared pointer to the breakpoint.  May contain a NULL
+    ///     pointer if the breakpoint doesn't exist.
+    //------------------------------------------------------------------
+    const lldb::BreakpointLocationSP
+    FindByID (lldb::user_id_t breakID) const;
+
+    //------------------------------------------------------------------
+    /// Returns the breakpoint location id to the breakpoint location
+    /// at address \a addr.
+    ///
+    /// @param[in] addr
+    ///     The address to match.
+    ///
+    /// @result
+    ///     The ID of the breakpoint location, or LLDB_INVALID_BREAK_ID.
+    //------------------------------------------------------------------
+    lldb::user_id_t
+    FindIDByAddress (Address &addr);
+
+    //------------------------------------------------------------------
+    /// Returns a breakpoint location list of the breakpoint locations
+    /// in the module \a module.  This list is allocated, and owned by
+    /// the caller.
+    ///
+    /// @param[in] module
+    ///     The module to seek in.
+    ///
+    /// @param[in]
+    ///     A breakpoint collection that gets any breakpoint locations
+    ///     that match \a module appended to.
+    ///
+    /// @result
+    ///     The number of matches
+    //------------------------------------------------------------------
+    size_t
+    FindInModule (Module *module,
+                  BreakpointLocationCollection& bp_loc_list);
+
+    //------------------------------------------------------------------
+    /// Returns a shared pointer to the breakpoint location with
+    /// index \a i.
+    ///
+    /// @param[in] i
+    ///     The breakpoint location index to seek for.
+    ///
+    /// @result
+    ///     A shared pointer to the breakpoint.  May contain a NULL
+    ///     pointer if the breakpoint doesn't exist.
+    //------------------------------------------------------------------
+    lldb::BreakpointLocationSP
+    GetByIndex (uint32_t i);
+
+    //------------------------------------------------------------------
+    /// Returns a shared pointer to the breakpoint location with index
+    /// \a i, const version.
+    ///
+    /// @param[in] i
+    ///     The breakpoint location index to seek for.
+    ///
+    /// @result
+    ///     A shared pointer to the breakpoint.  May contain a NULL
+    ///     pointer if the breakpoint doesn't exist.
+    //------------------------------------------------------------------
+    const lldb::BreakpointLocationSP
+    GetByIndex (uint32_t i) const;
+
+    //------------------------------------------------------------------
+    /// Removes all the locations in this list from their breakpoint site
+    /// owners list.
+    //------------------------------------------------------------------
+    void
+    ClearAllBreakpointSites ();
+
+    //------------------------------------------------------------------
+    /// Tells all the breakopint locations in this list to attempt to
+    /// resolve any possible breakpoint sites.
+    //------------------------------------------------------------------
+    void
+    ResolveAllBreakpointSites ();
+
+    //------------------------------------------------------------------
+    /// Returns the number of breakpoint locations in this list with
+    /// resolved breakpoints.
+    ///
+    /// @result
+    ///     Number of qualifying breakpoint locations.
+    //------------------------------------------------------------------
+    size_t
+    GetNumResolvedLocations() const;
+
+    //------------------------------------------------------------------
+    /// Removes the breakpoint location given by \b breakID from this
+    /// list.
+    ///
+    /// @param[in] breakID
+    ///     The breakpoint location index to remove.
+    ///
+    /// @result
+    ///     \b true if the breakpoint \a breakID was in the list.
+    //------------------------------------------------------------------
+    bool
+    Remove (lldb::user_id_t breakID);
+
+    //------------------------------------------------------------------
+    /// Enquires of the breakpoint location in this list with ID \a
+    /// breakID whether we should stop.
+    ///
+    /// @param[in] context
+    ///     This contains the information about this stop.
+    ///
+    /// @param[in] breakID
+    ///     This break ID that we hit.
+    ///
+    /// @return
+    ///     \b true if we should stop, \b false otherwise.
+    //------------------------------------------------------------------
+    bool
+    ShouldStop (StoppointCallbackContext *context,
+                lldb::user_id_t breakID);
+
+    //------------------------------------------------------------------
+    /// Returns the number of elements in this breakpoint location list.
+    ///
+    /// @result
+    ///     The number of elements.
+    //------------------------------------------------------------------
+    size_t
+    GetSize() const
+    {
+        return m_locations.size();
+    }
+
+    //------------------------------------------------------------------
+    /// Print a description of the breakpoint locations in this list to
+    /// the stream \a s.
+    ///
+    /// @param[in] s
+    ///     The stream to which to print the description.
+    ///
+    /// @param[in] level
+    ///     The description level that indicates the detail level to
+    ///     provide.
+    ///
+    /// @see lldb::DescriptionLevel
+    //------------------------------------------------------------------
+    void
+    GetDescription (Stream *s,
+                    lldb::DescriptionLevel level);
+
+protected:
+
+    //------------------------------------------------------------------
+    /// This is the standard constructor.
+    ///
+    /// It creates an empty breakpoint location list. It is protected
+    /// here because only Breakpoints are allowed to create the
+    /// breakpoint location list.
+    //------------------------------------------------------------------
+    BreakpointLocationList();
+
+    //------------------------------------------------------------------
+    /// Add the breakpoint \a bp_loc_sp to the list.
+    ///
+    /// @param[in] bp_sp
+    ///     Shared pointer to the breakpoint location that will get
+    ///     added to the list.
+    ///
+    /// @result
+    ///     Returns breakpoint location id.
+    //------------------------------------------------------------------
+    virtual lldb::user_id_t
+    Add (lldb::BreakpointLocationSP& bp_loc_sp);
+
+    typedef std::vector<lldb::BreakpointLocationSP> collection;
+    typedef std::map<lldb_private::Address,
+                     lldb::BreakpointLocationSP,
+                     Address::ModulePointerAndOffsetLessThanFunctionObject> addr_map;
+
+    // The breakpoint locations are stored in their Parent Breakpoint's location list by an
+    // index that is unique to this list, and not across all breakpoint location lists.
+    // This is only set in the Breakpoint's AddLocation method.
+    // There is another breakpoint location list, the owner's list in the BreakpointSite,
+    // but that should not reset the ID.  Unfortunately UserID's SetID method is public.
+    lldb::break_id_t
+    GetNextID();
+
+    collection::iterator
+    GetIDIterator(lldb::user_id_t breakID);
+
+    collection::const_iterator
+    GetIDConstIterator(lldb::user_id_t breakID) const;
+
+    collection m_locations;
+    addr_map m_address_to_location;
+    mutable Mutex m_mutex;
+    lldb::break_id_t m_next_id;
+};
+
+} // namespace lldb_private
+
+#endif  // liblldb_BreakpointLocationList_h_
diff --git a/lldb/include/lldb/Breakpoint/BreakpointOptions.h b/lldb/include/lldb/Breakpoint/BreakpointOptions.h
new file mode 100644 (file)
index 0000000..e7a3e3b
--- /dev/null
@@ -0,0 +1,210 @@
+//===-- BreakpointOptions.h -------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef liblldb_BreakpointOptions_h_
+#define liblldb_BreakpointOptions_h_
+
+// C Includes
+// C++ Includes
+// Other libraries and framework includes
+// Project includes
+#include "lldb/lldb-private.h"
+#include "lldb/Core/Baton.h"
+#include "lldb/Core/StringList.h"
+
+namespace lldb_private {
+
+//----------------------------------------------------------------------
+/// @class BreakpointOptions BreakpointOptions.h "lldb/Breakpoint/BreakpointOptions.h"
+/// @brief Class that manages the options on a breakpoint or breakpoint location.
+//----------------------------------------------------------------------
+
+class BreakpointOptions
+{
+public:
+    //------------------------------------------------------------------
+    // Constructors and Destructors
+    //------------------------------------------------------------------
+    //------------------------------------------------------------------
+    /// Default constructor.  The breakpoint is enabled, and has no condition,
+    /// callback, ignore count, etc...
+    //------------------------------------------------------------------
+    BreakpointOptions();
+    BreakpointOptions(const BreakpointOptions& rhs);
+
+    
+    //------------------------------------------------------------------
+    /// This constructor allows you to specify all the breakpoint options.
+    ///
+    /// @param[in] condition
+    ///    The expression which if it evaluates to \b true if we are to stop
+    ///
+    /// @param[in] callback
+    ///    This is the plugin for some code that gets run, returns \b true if we are to stop.
+    ///
+    /// @param[in] baton
+    ///    Client data that will get passed to the callback.
+    ///
+    /// @param[in] enabled
+    ///    Is this breakpoint enabled.
+    ///
+    /// @param[in] ignore
+    ///    How many breakpoint hits we should ignore before stopping.
+    ///
+    /// @param[in] thread_id
+    ///    Only stop if \a thread_id hits the breakpoint.
+    //------------------------------------------------------------------
+    BreakpointOptions(void *condition,
+                      BreakpointHitCallback callback,
+                      void *baton,
+                      bool enabled = true,
+                      int32_t ignore = 0,
+                      lldb::tid_t thread_id = LLDB_INVALID_THREAD_ID);
+
+    virtual ~BreakpointOptions();
+
+    //------------------------------------------------------------------
+    // Operators
+    //------------------------------------------------------------------
+    const BreakpointOptions&
+    operator=(const BreakpointOptions& rhs);
+
+    //------------------------------------------------------------------
+    // Callbacks
+    //------------------------------------------------------------------
+    void SetCallback (BreakpointHitCallback callback, const lldb::BatonSP &baton_sp, bool synchronous = false);
+    bool InvokeCallback (StoppointCallbackContext *context, lldb::user_id_t break_id, lldb::user_id_t break_loc_id);
+    bool IsCallbackSynchronous () {
+        return m_callback_is_synchronous;
+    };
+    Baton *GetBaton ();
+    void ClearCallback ();
+
+    //------------------------------------------------------------------
+    // Enabled/Ignore Count
+    //------------------------------------------------------------------
+
+    //------------------------------------------------------------------
+    /// Check the Enable/Disable state.
+    /// @return
+    ///     \b true if the breakpoint is enabled, \b false if disabled.
+    //------------------------------------------------------------------
+    bool         
+    IsEnabled () const;
+
+    //------------------------------------------------------------------
+    /// If \a enable is \b true, enable the breakpoint, if \b false disable it.
+    //------------------------------------------------------------------
+    void
+    SetEnabled (bool enabled);
+
+    void
+    SetIgnoreCount (int32_t n);
+
+    //------------------------------------------------------------------
+    /// Return the current Ignore Count.
+    /// @return
+    ///     The number of breakpoint hits to be ignored.
+    //------------------------------------------------------------------
+    int32_t
+    GetIgnoreCount () const;
+
+    //------------------------------------------------------------------
+    /// Set the breakpoint to ignore the next \a count breakpoint hits.
+    /// @param[in] count
+    ///    The number of breakpoint hits to ignore.
+    //------------------------------------------------------------------
+
+    //------------------------------------------------------------------
+    /// Return the current stop thread value.
+    /// @return
+    ///     The thread id for which the breakpoint hit will stop, 
+    ///     LLDB_INVALID_THREAD_ID for all threads.
+    //------------------------------------------------------------------
+    lldb::tid_t
+    GetThreadID () const;
+
+    //------------------------------------------------------------------
+    /// Set the valid thread to be checked when the breakpoint is hit.
+    /// @param[in] thread_id
+    ///    If this thread hits the breakpoint, we stop, otherwise not.
+    //------------------------------------------------------------------
+    void
+    SetThreadID (lldb::tid_t thread_id);
+
+    //------------------------------------------------------------------
+    /// This is the default empty callback.
+    /// @return
+    ///     The thread id for which the breakpoint hit will stop, 
+    ///     LLDB_INVALID_THREAD_ID for all threads.
+    //------------------------------------------------------------------
+    static bool 
+    NullCallback (void *baton, 
+                  StoppointCallbackContext *context, 
+                  lldb::user_id_t break_id,
+                  lldb::user_id_t break_loc_id);
+    
+    
+    struct CommandData
+    {
+        CommandData () :
+            user_source(),
+            script_source()
+        {
+        }
+
+        ~CommandData ()
+        {
+        }
+        
+        StringList user_source;
+        StringList script_source;
+    };
+
+    class CommandBaton : public Baton
+    {
+    public:
+        CommandBaton (CommandData *data) :
+            Baton (data)
+        {
+        }
+
+        virtual
+        ~CommandBaton ()
+        {
+            delete ((CommandData *)m_data);
+            m_data = NULL;
+        }
+        
+        virtual void
+        GetDescription (Stream *s, lldb::DescriptionLevel level) const;
+
+    };
+
+protected:
+    //------------------------------------------------------------------
+    // Classes that inherit from BreakpointOptions can see and modify these
+    //------------------------------------------------------------------
+
+private:
+    //------------------------------------------------------------------
+    // For BreakpointOptions only
+    //------------------------------------------------------------------
+    BreakpointHitCallback m_callback; // This is the callback function pointer
+    lldb::BatonSP m_callback_baton_sp; // This is the client data for the callback
+    bool m_callback_is_synchronous;
+    bool m_enabled;
+    int32_t m_ignore_count; // Number of times to ignore this breakpoint
+    lldb::tid_t m_thread_id; // Thread for which this breakpoint will take
+
+};
+
+} // namespace lldb_private
+
+#endif  // liblldb_BreakpointOptions_h_
diff --git a/lldb/include/lldb/Breakpoint/BreakpointResolver.h b/lldb/include/lldb/Breakpoint/BreakpointResolver.h
new file mode 100644 (file)
index 0000000..1b1284f
--- /dev/null
@@ -0,0 +1,123 @@
+//===-- BreakpointResolver.h ------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef liblldb_BreakpointResolver_h_
+#define liblldb_BreakpointResolver_h_
+
+// C Includes
+// C++ Includes
+// Other libraries and framework includes
+// Project includes
+#include "lldb/lldb-private.h"
+#include "lldb/Core/Address.h"
+#include "lldb/Breakpoint/Breakpoint.h"
+#include "lldb/Breakpoint/BreakpointResolver.h"
+#include "lldb/Core/FileSpec.h"
+#include "lldb/Core/RegularExpression.h"
+#include "lldb/Core/SearchFilter.h"
+#include "lldb/Core/ConstString.h"
+
+namespace lldb_private {
+
+//----------------------------------------------------------------------
+/// @class BreakpointResolver BreakpointResolver.h "lldb/Breakpoint/BreakpointResolver.h"
+/// @brief This class works with SearchFilter to resolve logical breakpoints to their
+/// of concrete breakpoint locations.
+//----------------------------------------------------------------------
+
+//----------------------------------------------------------------------
+/// General Outline:
+/// The BreakpointResolver is a Searcher.  In that protocol,
+/// the SearchFilter asks the question "At what depth of the symbol context
+/// descent do you want your callback to get called?" of the filter.  The resolver
+/// answers this question (in the GetDepth method) and provides the resolution callback.
+/// Each Breakpoint has a BreakpointResolver, and it calls either ResolveBreakpoint
+/// or ResolveBreakpointInModules to tell it to look for new breakpoint locations.
+//----------------------------------------------------------------------
+
+class BreakpointResolver :
+   public Searcher
+{
+public:
+    //------------------------------------------------------------------
+    /// The breakpoint resolver need to have a breakpoint for "ResolveBreakpoint
+    /// to make sense.  It can be constructed without a breakpoint, but you have to
+    /// call SetBreakpoint before ResolveBreakpoint.
+    ///
+    /// @param[in] bkpt
+    ///   The breakpoint that owns this resolver.
+    ///
+    /// @result
+    ///   Returns breakpoint location id.
+    //------------------------------------------------------------------
+    BreakpointResolver (Breakpoint *bkpt);
+
+    //------------------------------------------------------------------
+    /// The Destructor is virtual, all significant breakpoint resolvers derive
+    /// from this class.
+    //------------------------------------------------------------------
+    virtual
+    ~BreakpointResolver ();
+
+    //------------------------------------------------------------------
+    /// This sets the breakpoint for this resolver.
+    ///
+    /// @param[in] bkpt
+    ///   The breakpoint that owns this resolver.
+    //------------------------------------------------------------------
+    void
+    SetBreakpoint (Breakpoint *bkpt);
+
+    //------------------------------------------------------------------
+    /// In response to this method the resolver scans all the modules in the breakpoint's
+    /// target, and adds any new locations it finds.
+    ///
+    /// @param[in] filter
+    ///   The filter that will manage the search for this resolver.
+    //------------------------------------------------------------------
+    virtual void
+    ResolveBreakpoint (SearchFilter &filter);
+
+    //------------------------------------------------------------------
+    /// In response to this method the resolver scans the modules in the module list
+    /// \a modules, and adds any new locations it finds.
+    ///
+    /// @param[in] filter
+    ///   The filter that will manage the search for this resolver.
+    //------------------------------------------------------------------
+    virtual void
+    ResolveBreakpointInModules (SearchFilter &filter,
+                                ModuleList &modules);
+
+    //------------------------------------------------------------------
+    /// Prints a canonical description for the breakpoint to the stream \a s.
+    ///
+    /// @param[in] s
+    ///   Stream to which the output is copied.
+    //------------------------------------------------------------------
+    virtual void
+    GetDescription (Stream *s) = 0;
+
+    //------------------------------------------------------------------
+    /// Standard "Dump" method.  At present it does nothing.
+    //------------------------------------------------------------------
+    virtual void
+    Dump (Stream *s) const = 0;
+
+protected:
+    Target *m_target;          // Every resolver has a target.
+    Breakpoint *m_breakpoint;  // This is the breakpoint we add locations to.
+
+private:
+    DISALLOW_COPY_AND_ASSIGN(BreakpointResolver);
+};
+
+} // namespace lldb_private
+
+#endif  // liblldb_BreakpointResolver_h_
diff --git a/lldb/include/lldb/Breakpoint/BreakpointResolverAddress.h b/lldb/include/lldb/Breakpoint/BreakpointResolverAddress.h
new file mode 100644 (file)
index 0000000..6807bc0
--- /dev/null
@@ -0,0 +1,68 @@
+//===-- BreakpointResolverAddress.h -----------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef liblldb_BreakpointResolverAddress_h_
+#define liblldb_BreakpointResolverAddress_h_
+
+// C Includes
+// C++ Includes
+// Other libraries and framework includes
+// Project includes
+#include "lldb/Breakpoint/BreakpointResolver.h"
+
+namespace lldb_private {
+
+//----------------------------------------------------------------------
+/// @class BreakpointResolverAddress BreakpointResolverAddress.h "lldb/Breakpoint/BreakpointResolverAddress.h"
+/// @brief This class sets breakpoints on a given Address.  This breakpoint only takes
+/// once, and then it won't attempt to reset itself.
+//----------------------------------------------------------------------
+
+class BreakpointResolverAddress:
+    public BreakpointResolver
+{
+public:
+    BreakpointResolverAddress (Breakpoint *bkpt,
+                       const Address &addr);
+
+    virtual
+    ~BreakpointResolverAddress ();
+
+    virtual void
+    ResolveBreakpoint (SearchFilter &filter);
+
+    virtual void
+    ResolveBreakpointInModules (SearchFilter &filter,
+                                ModuleList &modules);
+
+    virtual Searcher::CallbackReturn
+    SearchCallback (SearchFilter &filter,
+                    SymbolContext &context,
+                    Address *addr,
+                    bool containing);
+
+    virtual Searcher::Depth
+    GetDepth ();
+
+    virtual void
+    GetDescription (Stream *s);
+
+    virtual void
+    Dump (Stream *s) const;
+
+protected:
+    Address m_addr;
+
+private:
+    DISALLOW_COPY_AND_ASSIGN(BreakpointResolverAddress);
+};
+
+} // namespace lldb_private
+
+#endif  // liblldb_BreakpointResolverAddress_h_
diff --git a/lldb/include/lldb/Breakpoint/BreakpointResolverFileLine.h b/lldb/include/lldb/Breakpoint/BreakpointResolverFileLine.h
new file mode 100644 (file)
index 0000000..285ef52
--- /dev/null
@@ -0,0 +1,65 @@
+//===-- BreakpointResolverFileLine.h ----------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef liblldb_BreakpointResolverFileLine_h_
+#define liblldb_BreakpointResolverFileLine_h_
+
+// C Includes
+// C++ Includes
+// Other libraries and framework includes
+// Project includes
+#include "lldb/Breakpoint/BreakpointResolver.h"
+
+namespace lldb_private {
+
+//----------------------------------------------------------------------
+/// @class BreakpointResolverFileLine BreakpointResolverFileLine.h "lldb/Breakpoint/BreakpointResolverFileLine.h"
+/// @brief This class sets breakpoints by file and line.  Optionally, it will look for inlined
+/// instances of the file and line specification.
+//----------------------------------------------------------------------
+
+class BreakpointResolverFileLine :
+    public BreakpointResolver
+{
+public:
+    BreakpointResolverFileLine (Breakpoint *bkpt,
+                           const FileSpec &resolver,
+                           uint32_t line_no,
+                           bool check_inlines);
+
+    virtual
+    ~BreakpointResolverFileLine ();
+
+    virtual Searcher::CallbackReturn
+    SearchCallback (SearchFilter &filter,
+                    SymbolContext &context,
+                    Address *addr,
+                    bool containing);
+
+    virtual Searcher::Depth
+    GetDepth ();
+
+    virtual void
+    GetDescription (Stream *s);
+
+    virtual void
+    Dump (Stream *s) const;
+
+protected:
+    FileSpec m_file_spec; // This is the file spec we are looking for.
+    uint32_t m_line_number; // This is the line number that we are looking for.
+    bool m_inlines; // This determines whether the resolver looks for inlined functions or not.
+
+private:
+    DISALLOW_COPY_AND_ASSIGN(BreakpointResolverFileLine);
+};
+
+} // namespace lldb_private
+
+#endif  // liblldb_BreakpointResolverFileLine_h_
diff --git a/lldb/include/lldb/Breakpoint/BreakpointResolverName.h b/lldb/include/lldb/Breakpoint/BreakpointResolverName.h
new file mode 100644 (file)
index 0000000..63e6b86
--- /dev/null
@@ -0,0 +1,75 @@
+//===-- BreakpointResolverName.h --------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef liblldb_BreakpointResolverName_h_
+#define liblldb_BreakpointResolverName_h_
+
+// C Includes
+// C++ Includes
+// Other libraries and framework includes
+// Project includes
+#include "lldb/Breakpoint/BreakpointResolver.h"
+
+namespace lldb_private {
+
+//----------------------------------------------------------------------
+/// @class BreakpointResolverName BreakpointResolverName.h "lldb/Breakpoint/BreakpointResolverName.h"
+/// @brief This class sets breakpoints on a given function name, either by exact match
+/// or by regular expression.
+//----------------------------------------------------------------------
+
+class BreakpointResolverName:
+    public BreakpointResolver
+{
+public:
+
+    BreakpointResolverName (Breakpoint *bkpt,
+                        const char *func_name,
+                        Breakpoint::MatchType type = Breakpoint::Exact);
+
+    // Creates a function breakpoint by regular expression.  Takes over control of the lifespan of func_regex.
+    BreakpointResolverName (Breakpoint *bkpt,
+                        RegularExpression &func_regex);
+
+    BreakpointResolverName (Breakpoint *bkpt,
+                        const char *class_name,
+                        const char *method,
+                        Breakpoint::MatchType type);
+
+    virtual
+    ~BreakpointResolverName ();
+
+    virtual Searcher::CallbackReturn
+    SearchCallback (SearchFilter &filter,
+                    SymbolContext &context,
+                    Address *addr,
+                    bool containing);
+
+    virtual Searcher::Depth
+    GetDepth ();
+
+    virtual void
+    GetDescription (Stream *s);
+
+    virtual void
+    Dump (Stream *s) const;
+
+protected:
+    ConstString m_func_name;
+    ConstString m_class_name;  // FIXME: Not used yet.  The idea would be to stop on methods of this class.
+    RegularExpression m_regex;
+    Breakpoint::MatchType m_match_type;
+
+private:
+    DISALLOW_COPY_AND_ASSIGN(BreakpointResolverName);
+};
+
+} // namespace lldb_private
+
+#endif  // liblldb_BreakpointResolverName_h_
diff --git a/lldb/include/lldb/Breakpoint/BreakpointSite.h b/lldb/include/lldb/Breakpoint/BreakpointSite.h
new file mode 100644 (file)
index 0000000..aeb385b
--- /dev/null
@@ -0,0 +1,258 @@
+//===-- BreakpointSite.h ----------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef liblldb_BreakpointSite_h_
+#define liblldb_BreakpointSite_h_
+
+// C Includes
+
+// C++ Includes
+#include <list>
+
+// Other libraries and framework includes
+
+// Project includes
+#include "lldb/lldb-private.h"
+#include "lldb/Core/UserID.h"
+#include "lldb/Breakpoint/StoppointLocation.h"
+#include "lldb/Breakpoint/BreakpointLocationCollection.h"
+
+namespace lldb_private {
+
+//----------------------------------------------------------------------
+/// @class BreakpointSite BreakpointSite.h "lldb/Breakpoint/BreakpointSite.h"
+/// @brief Class that manages the actual breakpoint that will be inserted
+/// into the running program.
+///
+/// The BreakpointSite class handles the physical breakpoint that is
+/// actually inserted in the target program.  As such, it is also the
+/// one that  gets hit, when the program stops. It keeps a list of all
+/// BreakpointLocations that share this phsyical site. When the
+/// breakpoint is hit, all the locations are informed by the breakpoint
+/// site. Breakpoint sites are owned by the process.
+//----------------------------------------------------------------------
+
+class BreakpointSite : public StoppointLocation
+{
+public:
+
+    enum Type
+    {
+        eSoftware,  // Breakpoint opcode has been written to memory and m_saved_opcode
+                    // and m_trap_opcode contain the saved and written opcode.
+        eHardware,  // Breakpoint site is set as a hardware breakpoint
+        eExternal   // Breakpoint site is managed by an external debug nub or
+                    // debug interface where memory reads trasparently will not
+                    // display any breakpoint opcodes.
+    };
+
+    virtual ~BreakpointSite ();
+
+    //----------------------------------------------------------------------
+    // This section manages the breakpoint traps
+    //----------------------------------------------------------------------
+
+    //------------------------------------------------------------------
+    /// Returns the Opcode Bytes for this breakpoint
+    //------------------------------------------------------------------
+    uint8_t *
+    GetTrapOpcodeBytes ();
+
+    //------------------------------------------------------------------
+    /// Returns the Opcode Bytes for this breakpoint - const version
+    //------------------------------------------------------------------
+    const uint8_t *
+    GetTrapOpcodeBytes () const;
+
+    //------------------------------------------------------------------
+    /// Get the size of the trap opcode for this address
+    //------------------------------------------------------------------
+    size_t
+    GetTrapOpcodeMaxByteSize () const;
+
+    //------------------------------------------------------------------
+    /// Sets the trap opcode
+    //------------------------------------------------------------------
+    bool
+    SetTrapOpcode (const uint8_t *trap_opcode,
+                   size_t trap_opcode_size);
+
+    //------------------------------------------------------------------
+    /// Gets the original instruction bytes that were overwritten by the trap
+    //------------------------------------------------------------------
+    uint8_t *
+    GetSavedOpcodeBytes ();
+
+    //------------------------------------------------------------------
+    /// Gets the original instruction bytes that were overwritten by the trap const version
+    //------------------------------------------------------------------
+    const uint8_t *
+    GetSavedOpcodeBytes () const;
+
+    //------------------------------------------------------------------
+    /// Says whether \a addr and size \a size intersects with the address \a intersect_addr
+    //------------------------------------------------------------------
+    bool
+    IntersectsRange (lldb::addr_t addr,
+                     size_t size,
+                     lldb::addr_t *intersect_addr,
+                     size_t *intersect_size,
+                     size_t *opcode_offset) const;
+
+    //------------------------------------------------------------------
+    /// Tells whether the current breakpoint site is enabled or not
+    ///
+    /// This is a low-level enable bit for the breakpoint sites.  If a
+    /// breakpoint site has no enabled owners, it should just get
+    /// removed.  This enable/disable is for the low-level target code
+    /// to enable and disable breakpoint sites when single stepping,
+    /// etc.
+    //------------------------------------------------------------------
+    bool
+    IsEnabled () const;
+
+    //------------------------------------------------------------------
+    /// Sets whether the current breakpoint site is enabled or not
+    ///
+    /// @param[in] enabled
+    ///    \b true if the breakoint is enabled, \b false otherwise.
+    //------------------------------------------------------------------
+    void
+    SetEnabled (bool enabled);
+
+    //------------------------------------------------------------------
+    /// Enquires of the breakpoint locations that produced this breakpoint site whether
+    /// we should stop at this location.
+    ///
+    /// @param[in] context
+    ///    This contains the information about this stop.
+    ///
+    /// @return
+    ///    \b true if we should stop, \b false otherwise.
+    //------------------------------------------------------------------
+    virtual bool
+    ShouldStop (StoppointCallbackContext *context);
+
+    //------------------------------------------------------------------
+    /// Standard Dump method
+    ///
+    /// @param[in] context
+    ///    The stream to dump this output.
+    //------------------------------------------------------------------
+    void
+    Dump (Stream *s) const;
+
+    //------------------------------------------------------------------
+    /// The "Owners" are the breakpoint locations that share this
+    /// breakpoint site. The method adds the \a owner to this breakpoint
+    /// site's owner list.
+    ///
+    /// @param[in] context
+    ///    \a owner is the Breakpoint Location to add.
+    //------------------------------------------------------------------
+    void
+    AddOwner (lldb::BreakpointLocationSP &owner);
+
+    //------------------------------------------------------------------
+    /// This method returns the number of breakpoint locations currently
+    /// located at this breakpoint site.
+    ///
+    /// @return
+    ///    The number of owners.
+    //------------------------------------------------------------------
+    uint32_t
+    GetNumberOfOwners ();
+
+    //------------------------------------------------------------------
+    /// This method returns the the breakpoint location at index \a index
+    /// located at this breakpoint site.  The owners are listed ordinally
+    /// from 0 to GetNumberOfOwners() - 1 so you can use this method to iterate
+    /// over the owners
+    ///
+    /// @param[in] index
+    ///     The index in the list of owners for which you wish the owner location.
+    /// @return
+    ///    A shared pointer to the breakpoint location at that index.
+    //------------------------------------------------------------------
+    lldb::BreakpointLocationSP
+    GetOwnerAtIndex (uint32_t index);
+
+    //------------------------------------------------------------------
+    /// Print a description of this breakpoint site to the stream \a s.
+    /// GetDescription tells you about the breakpoint site's owners.
+    /// Use BreakpointSite::Dump(Stream *) to get information about the
+    /// breakpoint site itself.
+    ///
+    /// @param[in] s
+    ///     The stream to which to print the description.
+    ///
+    /// @param[in] level
+    ///     The description level that indicates the detail level to
+    ///     provide.
+    ///
+    /// @see lldb::DescriptionLevel
+    //------------------------------------------------------------------
+    void
+    GetDescription (Stream *s,
+                    lldb::DescriptionLevel level);
+
+    bool
+    IsBreakpointAtThisSite (lldb::break_id_t bp_id);
+
+    BreakpointSite::Type
+    GetType () const
+    {
+        return m_type;
+    }
+
+    void
+    SetType (BreakpointSite::Type type)
+    {
+        m_type = type;
+    }
+
+private:
+    friend class Process;
+
+    //------------------------------------------------------------------
+    /// The method removes the owner at \a break_loc_id from this breakpoint list.
+    ///
+    /// @param[in] context
+    ///    \a break_loc_id is the Breakpoint Location to remove.
+    //------------------------------------------------------------------
+    uint32_t
+    RemoveOwner (lldb::user_id_t break_id,
+                 lldb::user_id_t break_loc_id);
+
+    BreakpointSite::Type m_type;///< The type of this breakpoint site.
+    uint8_t m_saved_opcode[8];  ///< The saved opcode bytes if this breakpoint site uses trap opcodes.
+    uint8_t m_trap_opcode[8];   ///< The opcode that was used to create the breakpoint if it is a software breakpoint site.
+    bool m_enabled;             ///< Boolean indicating if this breakpoint site enabled or not.
+
+    // Consider adding an optimization where if there is only one
+    // owner, we don't store a list.  The usual case will be only one owner...
+    BreakpointLocationCollection m_owners; ///< This has the BreakpointLocations that share this breakpoint site.
+
+    static lldb::break_id_t
+    GetNextID();
+
+    // Only the Process can create breakpoint sites in
+    // Process::CreateBreakpointSite (lldb::BreakpointLocationSP &, bool).
+    BreakpointSite (BreakpointSiteList *list,
+                    lldb::BreakpointLocationSP& owner,
+                    lldb::addr_t m_addr,
+                    lldb::tid_t tid,
+                    bool use_hardware);
+
+    DISALLOW_COPY_AND_ASSIGN(BreakpointSite);
+};
+
+} // namespace lldb_private
+
+#endif  // liblldb_BreakpointSite_h_
diff --git a/lldb/include/lldb/Breakpoint/BreakpointSiteList.h b/lldb/include/lldb/Breakpoint/BreakpointSiteList.h
new file mode 100644 (file)
index 0000000..bfa8c51
--- /dev/null
@@ -0,0 +1,217 @@
+//===-- BreakpointSiteList.h ------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef liblldb_BreakpointSiteList_h_
+#define liblldb_BreakpointSiteList_h_
+
+// C Includes
+// C++ Includes
+#include <map>
+// Other libraries and framework includes
+// Project includes
+#include "lldb/Breakpoint/BreakpointSite.h"
+
+namespace lldb_private {
+
+//----------------------------------------------------------------------
+/// @class BreakpointSiteList BreakpointSiteList.h "lldb/Breakpoint/BreakpointSiteList.h"
+/// @brief Class that manages lists of BreakpointSite shared pointers.
+//----------------------------------------------------------------------
+class BreakpointSiteList
+{
+// At present Process directly accesses the map of BreakpointSites so it can
+// do quick lookups into the map (using GetMap).
+// FIXME: Find a better interface for this.
+friend class Process;
+
+public:
+    //------------------------------------------------------------------
+    /// Default constructor makes an empty list.
+    //------------------------------------------------------------------
+    BreakpointSiteList();
+
+    //------------------------------------------------------------------
+    /// Destructor, currently does nothing.
+    //------------------------------------------------------------------
+    ~BreakpointSiteList();
+
+    //------------------------------------------------------------------
+    /// Add a BreakpointSite to the list.
+    ///
+    /// @param[in] bp_site_sp
+    ///    A shared pointer to a breakpoint site being added to the list.
+    ///
+    /// @return
+    ///    The ID of the BreakpointSite in the list.
+    //------------------------------------------------------------------
+    lldb::user_id_t
+    Add (const lldb::BreakpointSiteSP& bp_site_sp);
+
+    //------------------------------------------------------------------
+    /// Standard Dump routine, doesn't do anything at present.
+    /// @param[in] s
+    ///     Stream into which to dump the description.
+    //------------------------------------------------------------------
+    void
+    Dump (Stream *s) const;
+
+    //------------------------------------------------------------------
+    /// Returns a shared pointer to the breakpoint site at address
+    /// \a addr.
+    ///
+    /// @param[in] addr
+    ///     The address to look for.
+    ///
+    /// @result
+    ///     A shared pointer to the breakpoint site. May contain a NULL
+    ///     pointer if no breakpoint site exists with a matching address.
+    //------------------------------------------------------------------
+    lldb::BreakpointSiteSP
+    FindByAddress (lldb::addr_t addr);
+
+    //------------------------------------------------------------------
+    /// Returns a shared pointer to the breakpoint site with id \a breakID.
+    ///
+    /// @param[in] breakID
+    ///   The breakpoint site ID to seek for.
+    ///
+    /// @result
+    ///   A shared pointer to the breakpoint site.  May contain a NULL pointer if the
+    ///   breakpoint doesn't exist.
+    //------------------------------------------------------------------
+    lldb::BreakpointSiteSP
+    FindByID (lldb::user_id_t breakID);
+
+    //------------------------------------------------------------------
+    /// Returns a shared pointer to the breakpoint site with id \a breakID - const version.
+    ///
+    /// @param[in] breakID
+    ///   The breakpoint site ID to seek for.
+    ///
+    /// @result
+    ///   A shared pointer to the breakpoint site.  May contain a NULL pointer if the
+    ///   breakpoint doesn't exist.
+    //------------------------------------------------------------------
+    const lldb::BreakpointSiteSP
+    FindByID (lldb::user_id_t breakID) const;
+
+    //------------------------------------------------------------------
+    /// Returns the breakpoint site id to the breakpoint site at address \a addr.
+    ///
+    /// @param[in] addr
+    ///   The address to match.
+    ///
+    /// @result
+    ///   The ID of the breakpoint site, or LLDB_INVALID_BREAK_ID.
+    //------------------------------------------------------------------
+    lldb::user_id_t
+    FindIDByAddress (lldb::addr_t addr);
+
+    //------------------------------------------------------------------
+    /// Returns a shared pointer to the breakpoint site with index \a i.
+    ///
+    /// @param[in] i
+    ///   The breakpoint site index to seek for.
+    ///
+    /// @result
+    ///   A shared pointer to the breakpoint site.  May contain a NULL pointer if the
+    ///   breakpoint doesn't exist.
+    //------------------------------------------------------------------
+    lldb::BreakpointSiteSP
+    GetByIndex (uint32_t i);
+
+    //------------------------------------------------------------------
+    /// Returns a shared pointer to the breakpoint site with index \a i - const version.
+    ///
+    /// @param[in] i
+    ///   The breakpoint site index to seek for.
+    ///
+    /// @result
+    ///   A shared pointer to the breakpoint site.  May contain a NULL pointer if the
+    ///   breakpoint doesn't exist.
+    //------------------------------------------------------------------
+    const lldb::BreakpointSiteSP
+    GetByIndex (uint32_t i) const;
+
+    //------------------------------------------------------------------
+    /// Removes the breakpoint site given by \b breakID from this list.
+    ///
+    /// @param[in] breakID
+    ///   The breakpoint site index to remove.
+    ///
+    /// @result
+    ///   \b true if the breakpoint site \a breakID was in the list.
+    //------------------------------------------------------------------
+    bool
+    Remove (lldb::user_id_t breakID);
+
+    //------------------------------------------------------------------
+    /// Removes the breakpoint site at address \a addr from this list.
+    ///
+    /// @param[in] addr
+    ///   The address from which to remove a breakpoint site.
+    ///
+    /// @result
+    ///   \b true if \a addr had a breakpoint site to remove from the list.
+    //------------------------------------------------------------------
+    bool
+    RemoveByAddress (lldb::addr_t addr);
+
+    void
+    SetEnabledForAll(const bool enable, const lldb::user_id_t except_id = LLDB_INVALID_BREAK_ID);
+
+    typedef void (*BreakpointSiteSPMapFunc) (lldb::BreakpointSiteSP &bp, void *baton);
+
+    //------------------------------------------------------------------
+    /// Enquires of the breakpoint site on in this list with ID \a breakID whether
+    /// we should stop for the breakpoint or not.
+    ///
+    /// @param[in] context
+    ///    This contains the information about this stop.
+    ///
+    /// @param[in] breakID
+    ///    This break ID that we hit.
+    ///
+    /// @return
+    ///    \b true if we should stop, \b false otherwise.
+    //------------------------------------------------------------------
+    bool
+    ShouldStop (StoppointCallbackContext *context, lldb::user_id_t breakID);
+
+    //------------------------------------------------------------------
+    /// Returns the number of elements in the list.
+    ///
+    /// @result
+    ///   The number of elements.
+    //------------------------------------------------------------------
+    size_t
+    GetSize() const { return m_bp_site_list.size(); }
+
+protected:
+    typedef std::map<lldb::addr_t, lldb::BreakpointSiteSP> collection;
+
+    collection::iterator
+    GetIDIterator(lldb::user_id_t breakID);
+
+    collection::const_iterator
+    GetIDConstIterator(lldb::user_id_t breakID) const;
+
+    // This function exposes the m_bp_site_list.  I use the in Process because there
+    // are places there where you want to iterate over the list, and it is less efficient
+    // to do it by index.  FIXME: Find a better way to do this.
+
+    const collection *
+    GetMap ();
+
+    collection m_bp_site_list;  // The breakpoint site list.
+};
+
+} // namespace lldb_private
+
+#endif  // liblldb_BreakpointSiteList_h_
diff --git a/lldb/include/lldb/Breakpoint/Stoppoint.h b/lldb/include/lldb/Breakpoint/Stoppoint.h
new file mode 100644 (file)
index 0000000..c294830
--- /dev/null