[llvm-branch-commits] [lldb] r179679 - Merge trunk rev 179594 back into the Windows branch.

Carlo Kok ck at remobjects.com
Wed Apr 17 01:38:53 PDT 2013


Author: carlokok
Date: Wed Apr 17 03:38:48 2013
New Revision: 179679

URL: http://llvm.org/viewvc/llvm-project?rev=179679&view=rev
Log:
Merge trunk rev 179594 back into the Windows branch.

Added:
    lldb/branches/windows/examples/python/jump.py
      - copied unchanged from r179594, lldb/trunk/examples/python/jump.py
    lldb/branches/windows/examples/python/lldb_module_utils.py
      - copied unchanged from r179594, lldb/trunk/examples/python/lldb_module_utils.py
    lldb/branches/windows/examples/python/performance.py
      - copied unchanged from r179594, lldb/trunk/examples/python/performance.py
    lldb/branches/windows/include/lldb/DataFormatters/
      - copied from r179594, lldb/trunk/include/lldb/DataFormatters/
    lldb/branches/windows/include/lldb/Expression/IRExecutionUnit.h
      - copied unchanged from r179594, lldb/trunk/include/lldb/Expression/IRExecutionUnit.h
    lldb/branches/windows/include/lldb/Expression/IRMemoryMap.h
      - copied, changed from r179594, lldb/trunk/include/lldb/Expression/IRMemoryMap.h
    lldb/branches/windows/include/lldb/Expression/Materializer.h
      - copied unchanged from r179594, lldb/trunk/include/lldb/Expression/Materializer.h
    lldb/branches/windows/source/DataFormatters/
      - copied from r179594, lldb/trunk/source/DataFormatters/
    lldb/branches/windows/source/Expression/IRExecutionUnit.cpp
      - copied unchanged from r179594, lldb/trunk/source/Expression/IRExecutionUnit.cpp
    lldb/branches/windows/source/Expression/IRMemoryMap.cpp
      - copied unchanged from r179594, lldb/trunk/source/Expression/IRMemoryMap.cpp
    lldb/branches/windows/source/Expression/Materializer.cpp
      - copied unchanged from r179594, lldb/trunk/source/Expression/Materializer.cpp
    lldb/branches/windows/source/Host/freebsd/CMakeLists.txt
      - copied unchanged from r179594, lldb/trunk/source/Host/freebsd/CMakeLists.txt
    lldb/branches/windows/source/Host/macosx/CMakeLists.txt
      - copied unchanged from r179594, lldb/trunk/source/Host/macosx/CMakeLists.txt
    lldb/branches/windows/source/Plugins/OperatingSystem/Python/CMakeLists.txt
      - copied unchanged from r179594, lldb/trunk/source/Plugins/OperatingSystem/Python/CMakeLists.txt
    lldb/branches/windows/source/Plugins/Platform/FreeBSD/CMakeLists.txt
      - copied unchanged from r179594, lldb/trunk/source/Plugins/Platform/FreeBSD/CMakeLists.txt
    lldb/branches/windows/source/Plugins/Platform/Linux/CMakeLists.txt
      - copied unchanged from r179594, lldb/trunk/source/Plugins/Platform/Linux/CMakeLists.txt
    lldb/branches/windows/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.cpp
      - copied unchanged from r179594, lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.cpp
    lldb/branches/windows/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.h
      - copied unchanged from r179594, lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.h
    lldb/branches/windows/source/Plugins/Process/FreeBSD/CMakeLists.txt
      - copied unchanged from r179594, lldb/trunk/source/Plugins/Process/FreeBSD/CMakeLists.txt
    lldb/branches/windows/source/Plugins/Process/Linux/CMakeLists.txt
      - copied unchanged from r179594, lldb/trunk/source/Plugins/Process/Linux/CMakeLists.txt
    lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/CMakeLists.txt
      - copied unchanged from r179594, lldb/trunk/source/Plugins/Process/MacOSX-Kernel/CMakeLists.txt
    lldb/branches/windows/source/Plugins/Process/POSIX/CMakeLists.txt
      - copied unchanged from r179594, lldb/trunk/source/Plugins/Process/POSIX/CMakeLists.txt
    lldb/branches/windows/source/Plugins/Process/POSIX/RegisterContext_x86.h
      - copied unchanged from r179594, lldb/trunk/source/Plugins/Process/POSIX/RegisterContext_x86.h
    lldb/branches/windows/source/Plugins/Process/mach-core/CMakeLists.txt
      - copied unchanged from r179594, lldb/trunk/source/Plugins/Process/mach-core/CMakeLists.txt
    lldb/branches/windows/source/Utility/KQueue.cpp
      - copied unchanged from r179594, lldb/trunk/source/Utility/KQueue.cpp
    lldb/branches/windows/source/Utility/KQueue.h
      - copied unchanged from r179594, lldb/trunk/source/Utility/KQueue.h
    lldb/branches/windows/source/Utility/TimeSpecTimeout.cpp
      - copied unchanged from r179594, lldb/trunk/source/Utility/TimeSpecTimeout.cpp
    lldb/branches/windows/source/Utility/TimeSpecTimeout.h
      - copied, changed from r179594, lldb/trunk/source/Utility/TimeSpecTimeout.h
    lldb/branches/windows/test/CMakeLists.txt
      - copied unchanged from r179594, lldb/trunk/test/CMakeLists.txt
    lldb/branches/windows/test/argparse_compat.py
      - copied unchanged from r179594, lldb/trunk/test/argparse_compat.py
    lldb/branches/windows/test/expression_command/call-restarts/
      - copied from r179594, lldb/trunk/test/expression_command/call-restarts/
    lldb/branches/windows/test/expression_command/call-throws/
      - copied from r179594, lldb/trunk/test/expression_command/call-throws/
    lldb/branches/windows/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/
      - copied from r179594, lldb/trunk/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/
    lldb/branches/windows/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/
      - copied from r179594, lldb/trunk/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/
    lldb/branches/windows/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/
      - copied from r179594, lldb/trunk/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/
    lldb/branches/windows/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/
      - copied from r179594, lldb/trunk/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/
    lldb/branches/windows/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/
      - copied from r179594, lldb/trunk/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/
    lldb/branches/windows/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vbool/
      - copied from r179594, lldb/trunk/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vbool/
    lldb/branches/windows/test/functionalities/data-formatter/rdar-12529957/
      - copied from r179594, lldb/trunk/test/functionalities/data-formatter/rdar-12529957/
    lldb/branches/windows/test/functionalities/set-data/
      - copied from r179594, lldb/trunk/test/functionalities/set-data/
    lldb/branches/windows/test/functionalities/thread/
      - copied from r179594, lldb/trunk/test/functionalities/thread/
    lldb/branches/windows/test/lang/c/const_variables/
      - copied from r179594, lldb/trunk/test/lang/c/const_variables/
    lldb/branches/windows/test/lang/cpp/char1632_t/
      - copied from r179594, lldb/trunk/test/lang/cpp/char1632_t/
    lldb/branches/windows/test/lang/cpp/enum_types/
      - copied from r179594, lldb/trunk/test/lang/cpp/enum_types/
    lldb/branches/windows/test/lang/cpp/rdar12991846/
      - copied from r179594, lldb/trunk/test/lang/cpp/rdar12991846/
    lldb/branches/windows/test/lang/cpp/static_members/
      - copied from r179594, lldb/trunk/test/lang/cpp/static_members/
    lldb/branches/windows/test/lang/cpp/wchar_t/
      - copied from r179594, lldb/trunk/test/lang/cpp/wchar_t/
    lldb/branches/windows/test/progress.py
      - copied unchanged from r179594, lldb/trunk/test/progress.py
    lldb/branches/windows/tools/debugserver/source/libdebugserver.cpp
      - copied unchanged from r179594, lldb/trunk/tools/debugserver/source/libdebugserver.cpp
    lldb/branches/windows/tools/debugserver/source/libdebugserver.h
      - copied unchanged from r179594, lldb/trunk/tools/debugserver/source/libdebugserver.h
    lldb/branches/windows/tools/lldb-perf/
      - copied from r179594, lldb/trunk/tools/lldb-perf/
    lldb/branches/windows/utils/vim-lldb/
      - copied from r179594, lldb/trunk/utils/vim-lldb/
Removed:
    lldb/branches/windows/include/lldb/Core/CXXFormatterFunctions.h
    lldb/branches/windows/include/lldb/Core/DataVisualization.h
    lldb/branches/windows/include/lldb/Core/FormatClasses.h
    lldb/branches/windows/include/lldb/Core/FormatManager.h
    lldb/branches/windows/include/lldb/Core/FormatNavigator.h
    lldb/branches/windows/include/lldb/Expression/ProcessDataAllocator.h
    lldb/branches/windows/include/lldb/Expression/RecordingMemoryManager.h
    lldb/branches/windows/include/lldb/Interpreter/CommandObjectCrossref.h
    lldb/branches/windows/source/Commands/CommandObjectCrossref.cpp
    lldb/branches/windows/source/Core/CXXFormatterFunctions.cpp
    lldb/branches/windows/source/Core/DataVisualization.cpp
    lldb/branches/windows/source/Core/FormatClasses.cpp
    lldb/branches/windows/source/Core/FormatManager.cpp
    lldb/branches/windows/source/Expression/ProcessDataAllocator.cpp
    lldb/branches/windows/source/Expression/RecordingMemoryManager.cpp
    lldb/branches/windows/test/warnings/uuid/TestUUIDMismatchWanring.py
    lldb/branches/windows/tools/debugserver/source/FunctionProfiler.cpp
    lldb/branches/windows/tools/debugserver/source/FunctionProfiler.h
    lldb/branches/windows/tools/debugserver/source/ProfileObjectiveC.cpp
    lldb/branches/windows/tools/debugserver/source/ProfileObjectiveC.h
Modified:
    lldb/branches/windows/   (props changed)
    lldb/branches/windows/CMakeLists.txt
    lldb/branches/windows/INSTALL.txt
    lldb/branches/windows/Makefile
    lldb/branches/windows/docs/code-signing.txt
    lldb/branches/windows/docs/lldb-for-gdb-users.txt
    lldb/branches/windows/docs/lldb-gdb-remote.txt
    lldb/branches/windows/examples/darwin/heap_find/heap.py
    lldb/branches/windows/examples/darwin/heap_find/heap/heap_find.cpp
    lldb/branches/windows/examples/python/cmdtemplate.py
    lldb/branches/windows/examples/python/crashlog.py
    lldb/branches/windows/examples/python/operating_system.py
    lldb/branches/windows/examples/python/process_events.py
    lldb/branches/windows/examples/python/symbolication.py
    lldb/branches/windows/examples/summaries/cocoa/CFBag.py
    lldb/branches/windows/examples/summaries/cocoa/CFBinaryHeap.py
    lldb/branches/windows/examples/summaries/cocoa/Logger.py
    lldb/branches/windows/examples/summaries/cocoa/NSBundle.py
    lldb/branches/windows/examples/summaries/cocoa/NSDate.py
    lldb/branches/windows/examples/summaries/cocoa/NSIndexSet.py
    lldb/branches/windows/examples/summaries/cocoa/NSMachPort.py
    lldb/branches/windows/examples/summaries/cocoa/NSNotification.py
    lldb/branches/windows/examples/summaries/cocoa/objc_runtime.py
    lldb/branches/windows/examples/synthetic/libcxx.py
    lldb/branches/windows/include/lldb/API/SBCommandInterpreter.h
    lldb/branches/windows/include/lldb/API/SBData.h
    lldb/branches/windows/include/lldb/API/SBExpressionOptions.h
    lldb/branches/windows/include/lldb/API/SBFunction.h
    lldb/branches/windows/include/lldb/API/SBModule.h
    lldb/branches/windows/include/lldb/API/SBProcess.h
    lldb/branches/windows/include/lldb/API/SBSymbol.h
    lldb/branches/windows/include/lldb/API/SBTarget.h
    lldb/branches/windows/include/lldb/API/SBThread.h
    lldb/branches/windows/include/lldb/API/SBType.h
    lldb/branches/windows/include/lldb/API/SBTypeSynthetic.h
    lldb/branches/windows/include/lldb/API/SBValue.h
    lldb/branches/windows/include/lldb/API/SBValueList.h
    lldb/branches/windows/include/lldb/Breakpoint/Breakpoint.h
    lldb/branches/windows/include/lldb/Breakpoint/BreakpointIDList.h
    lldb/branches/windows/include/lldb/Breakpoint/BreakpointList.h
    lldb/branches/windows/include/lldb/Breakpoint/BreakpointLocationCollection.h
    lldb/branches/windows/include/lldb/Breakpoint/BreakpointLocationList.h
    lldb/branches/windows/include/lldb/Breakpoint/BreakpointResolver.h
    lldb/branches/windows/include/lldb/Breakpoint/BreakpointResolverName.h
    lldb/branches/windows/include/lldb/Breakpoint/BreakpointSite.h
    lldb/branches/windows/include/lldb/Breakpoint/Watchpoint.h
    lldb/branches/windows/include/lldb/Core/Address.h
    lldb/branches/windows/include/lldb/Core/ArchSpec.h
    lldb/branches/windows/include/lldb/Core/DataBuffer.h
    lldb/branches/windows/include/lldb/Core/DataBufferHeap.h
    lldb/branches/windows/include/lldb/Core/DataBufferMemoryMap.h
    lldb/branches/windows/include/lldb/Core/DataEncoder.h
    lldb/branches/windows/include/lldb/Core/DataExtractor.h
    lldb/branches/windows/include/lldb/Core/Debugger.h
    lldb/branches/windows/include/lldb/Core/Disassembler.h
    lldb/branches/windows/include/lldb/Core/FileSpecList.h
    lldb/branches/windows/include/lldb/Core/Log.h
    lldb/branches/windows/include/lldb/Core/MappedHash.h
    lldb/branches/windows/include/lldb/Core/Module.h
    lldb/branches/windows/include/lldb/Core/ModuleList.h
    lldb/branches/windows/include/lldb/Core/PluginManager.h
    lldb/branches/windows/include/lldb/Core/RangeMap.h
    lldb/branches/windows/include/lldb/Core/RegisterValue.h
    lldb/branches/windows/include/lldb/Core/RegularExpression.h
    lldb/branches/windows/include/lldb/Core/Scalar.h
    lldb/branches/windows/include/lldb/Core/SearchFilter.h
    lldb/branches/windows/include/lldb/Core/Section.h
    lldb/branches/windows/include/lldb/Core/SourceManager.h
    lldb/branches/windows/include/lldb/Core/Stream.h
    lldb/branches/windows/include/lldb/Core/StreamAsynchronousIO.h
    lldb/branches/windows/include/lldb/Core/StreamBuffer.h
    lldb/branches/windows/include/lldb/Core/StreamCallback.h
    lldb/branches/windows/include/lldb/Core/StreamFile.h
    lldb/branches/windows/include/lldb/Core/StreamString.h
    lldb/branches/windows/include/lldb/Core/StreamTee.h
    lldb/branches/windows/include/lldb/Core/StringList.h
    lldb/branches/windows/include/lldb/Core/Timer.h
    lldb/branches/windows/include/lldb/Core/VMRange.h
    lldb/branches/windows/include/lldb/Core/Value.h
    lldb/branches/windows/include/lldb/Core/ValueObject.h
    lldb/branches/windows/include/lldb/Core/ValueObjectCast.h
    lldb/branches/windows/include/lldb/Core/ValueObjectChild.h
    lldb/branches/windows/include/lldb/Core/ValueObjectConstResult.h
    lldb/branches/windows/include/lldb/Core/ValueObjectConstResultChild.h
    lldb/branches/windows/include/lldb/Core/ValueObjectConstResultImpl.h
    lldb/branches/windows/include/lldb/Core/ValueObjectDynamicValue.h
    lldb/branches/windows/include/lldb/Core/ValueObjectList.h
    lldb/branches/windows/include/lldb/Core/ValueObjectMemory.h
    lldb/branches/windows/include/lldb/Core/ValueObjectRegister.h
    lldb/branches/windows/include/lldb/Core/ValueObjectSyntheticFilter.h
    lldb/branches/windows/include/lldb/Core/ValueObjectVariable.h
    lldb/branches/windows/include/lldb/Core/dwarf.h
    lldb/branches/windows/include/lldb/DataFormatters/CXXFormatterFunctions.h
    lldb/branches/windows/include/lldb/DataFormatters/FormatClasses.h
    lldb/branches/windows/include/lldb/DataFormatters/FormatManager.h
    lldb/branches/windows/include/lldb/DataFormatters/TypeSummary.h
    lldb/branches/windows/include/lldb/DataFormatters/TypeSynthetic.h
    lldb/branches/windows/include/lldb/Expression/ASTDumper.h
    lldb/branches/windows/include/lldb/Expression/ClangASTSource.h
    lldb/branches/windows/include/lldb/Expression/ClangExpression.h
    lldb/branches/windows/include/lldb/Expression/ClangExpressionDeclMap.h
    lldb/branches/windows/include/lldb/Expression/ClangExpressionParser.h
    lldb/branches/windows/include/lldb/Expression/ClangExpressionVariable.h
    lldb/branches/windows/include/lldb/Expression/ClangFunction.h
    lldb/branches/windows/include/lldb/Expression/ClangUserExpression.h
    lldb/branches/windows/include/lldb/Expression/ClangUtilityFunction.h
    lldb/branches/windows/include/lldb/Expression/DWARFExpression.h
    lldb/branches/windows/include/lldb/Expression/ExpressionSourceCode.h
    lldb/branches/windows/include/lldb/Expression/IRForTarget.h
    lldb/branches/windows/include/lldb/Host/File.h
    lldb/branches/windows/include/lldb/Host/Host.h
    lldb/branches/windows/include/lldb/Host/ReadWriteLock.h
    lldb/branches/windows/include/lldb/Host/TimeValue.h
    lldb/branches/windows/include/lldb/Interpreter/Args.h
    lldb/branches/windows/include/lldb/Interpreter/CommandInterpreter.h
    lldb/branches/windows/include/lldb/Interpreter/CommandObject.h
    lldb/branches/windows/include/lldb/Interpreter/CommandObjectMultiword.h
    lldb/branches/windows/include/lldb/Interpreter/CommandObjectRegexCommand.h
    lldb/branches/windows/include/lldb/Interpreter/CommandReturnObject.h
    lldb/branches/windows/include/lldb/Interpreter/OptionGroupFormat.h
    lldb/branches/windows/include/lldb/Interpreter/OptionGroupValueObjectDisplay.h
    lldb/branches/windows/include/lldb/Interpreter/OptionValueArray.h
    lldb/branches/windows/include/lldb/Interpreter/OptionValueDictionary.h
    lldb/branches/windows/include/lldb/Interpreter/Options.h
    lldb/branches/windows/include/lldb/Interpreter/PythonDataObjects.h
    lldb/branches/windows/include/lldb/Interpreter/ScriptInterpreter.h
    lldb/branches/windows/include/lldb/Interpreter/ScriptInterpreterPython.h
    lldb/branches/windows/include/lldb/Symbol/Block.h
    lldb/branches/windows/include/lldb/Symbol/ClangASTContext.h
    lldb/branches/windows/include/lldb/Symbol/ClangASTImporter.h
    lldb/branches/windows/include/lldb/Symbol/ClangASTType.h
    lldb/branches/windows/include/lldb/Symbol/ClangExternalASTSourceCallbacks.h
    lldb/branches/windows/include/lldb/Symbol/ClangExternalASTSourceCommon.h
    lldb/branches/windows/include/lldb/Symbol/DWARFCallFrameInfo.h
    lldb/branches/windows/include/lldb/Symbol/LineTable.h
    lldb/branches/windows/include/lldb/Symbol/ObjectContainer.h
    lldb/branches/windows/include/lldb/Symbol/ObjectFile.h
    lldb/branches/windows/include/lldb/Symbol/Symbol.h
    lldb/branches/windows/include/lldb/Symbol/SymbolContext.h
    lldb/branches/windows/include/lldb/Symbol/SymbolVendor.h
    lldb/branches/windows/include/lldb/Symbol/Symtab.h
    lldb/branches/windows/include/lldb/Symbol/Type.h
    lldb/branches/windows/include/lldb/Symbol/Variable.h
    lldb/branches/windows/include/lldb/Symbol/VariableList.h
    lldb/branches/windows/include/lldb/Target/CPPLanguageRuntime.h
    lldb/branches/windows/include/lldb/Target/DynamicLoader.h
    lldb/branches/windows/include/lldb/Target/ExecutionContext.h
    lldb/branches/windows/include/lldb/Target/LanguageRuntime.h
    lldb/branches/windows/include/lldb/Target/ObjCLanguageRuntime.h
    lldb/branches/windows/include/lldb/Target/OperatingSystem.h
    lldb/branches/windows/include/lldb/Target/PathMappingList.h
    lldb/branches/windows/include/lldb/Target/Platform.h
    lldb/branches/windows/include/lldb/Target/Process.h
    lldb/branches/windows/include/lldb/Target/RegisterContext.h
    lldb/branches/windows/include/lldb/Target/SectionLoadList.h
    lldb/branches/windows/include/lldb/Target/StopInfo.h
    lldb/branches/windows/include/lldb/Target/Target.h
    lldb/branches/windows/include/lldb/Target/Thread.h
    lldb/branches/windows/include/lldb/Target/ThreadList.h
    lldb/branches/windows/include/lldb/Target/ThreadPlan.h
    lldb/branches/windows/include/lldb/Target/ThreadPlanBase.h
    lldb/branches/windows/include/lldb/Target/ThreadPlanCallFunction.h
    lldb/branches/windows/include/lldb/Target/ThreadPlanCallUserExpression.h
    lldb/branches/windows/include/lldb/Target/ThreadPlanRunToAddress.h
    lldb/branches/windows/include/lldb/Target/ThreadPlanStepInRange.h
    lldb/branches/windows/include/lldb/Target/ThreadPlanStepInstruction.h
    lldb/branches/windows/include/lldb/Target/ThreadPlanStepOut.h
    lldb/branches/windows/include/lldb/Target/ThreadPlanStepOverBreakpoint.h
    lldb/branches/windows/include/lldb/Target/ThreadPlanStepOverRange.h
    lldb/branches/windows/include/lldb/Target/ThreadPlanStepRange.h
    lldb/branches/windows/include/lldb/Target/ThreadPlanStepThrough.h
    lldb/branches/windows/include/lldb/Target/ThreadPlanStepUntil.h
    lldb/branches/windows/include/lldb/lldb-defines.h
    lldb/branches/windows/include/lldb/lldb-enumerations.h
    lldb/branches/windows/include/lldb/lldb-forward.h
    lldb/branches/windows/include/lldb/lldb-private-enumerations.h
    lldb/branches/windows/include/lldb/lldb-private-interfaces.h
    lldb/branches/windows/include/lldb/lldb-private-log.h
    lldb/branches/windows/include/lldb/lldb-types.h
    lldb/branches/windows/include/lldb/lldb-windows.h
    lldb/branches/windows/lib/Makefile
    lldb/branches/windows/lldb.xcodeproj/project.pbxproj
    lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/LLDB.xcscheme
    lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/darwin-debug.xcscheme
    lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/launcherRootXPCService.xcscheme
    lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/launcherXPCService.xcscheme
    lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/lldb-tool.xcscheme
    lldb/branches/windows/lldb.xcworkspace/contents.xcworkspacedata
    lldb/branches/windows/resources/LLDB-Info.plist
    lldb/branches/windows/scripts/CMakeLists.txt
    lldb/branches/windows/scripts/Python/finish-swig-Python-LLDB.sh
    lldb/branches/windows/scripts/Python/interface/SBBlock.i
    lldb/branches/windows/scripts/Python/interface/SBCommandReturnObject.i
    lldb/branches/windows/scripts/Python/interface/SBData.i
    lldb/branches/windows/scripts/Python/interface/SBDebugger.i
    lldb/branches/windows/scripts/Python/interface/SBExpressionOptions.i
    lldb/branches/windows/scripts/Python/interface/SBFunction.i
    lldb/branches/windows/scripts/Python/interface/SBModule.i
    lldb/branches/windows/scripts/Python/interface/SBProcess.i
    lldb/branches/windows/scripts/Python/interface/SBSymbol.i
    lldb/branches/windows/scripts/Python/interface/SBTarget.i
    lldb/branches/windows/scripts/Python/interface/SBThread.i
    lldb/branches/windows/scripts/Python/interface/SBType.i
    lldb/branches/windows/scripts/Python/interface/SBValue.i
    lldb/branches/windows/scripts/Python/python-extensions.swig
    lldb/branches/windows/scripts/Python/python-wrapper.swig
    lldb/branches/windows/scripts/build-llvm.pl
    lldb/branches/windows/scripts/disasm-gdb-remote.pl
    lldb/branches/windows/scripts/generate-vers.pl
    lldb/branches/windows/source/API/SBAddress.cpp
    lldb/branches/windows/source/API/SBBreakpoint.cpp
    lldb/branches/windows/source/API/SBBreakpointLocation.cpp
    lldb/branches/windows/source/API/SBBroadcaster.cpp
    lldb/branches/windows/source/API/SBCommandInterpreter.cpp
    lldb/branches/windows/source/API/SBCommandReturnObject.cpp
    lldb/branches/windows/source/API/SBCommunication.cpp
    lldb/branches/windows/source/API/SBCompileUnit.cpp
    lldb/branches/windows/source/API/SBData.cpp
    lldb/branches/windows/source/API/SBDebugger.cpp
    lldb/branches/windows/source/API/SBDeclaration.cpp
    lldb/branches/windows/source/API/SBError.cpp
    lldb/branches/windows/source/API/SBEvent.cpp
    lldb/branches/windows/source/API/SBExpressionOptions.cpp
    lldb/branches/windows/source/API/SBFileSpec.cpp
    lldb/branches/windows/source/API/SBFileSpecList.cpp
    lldb/branches/windows/source/API/SBFrame.cpp
    lldb/branches/windows/source/API/SBFunction.cpp
    lldb/branches/windows/source/API/SBHostOS.cpp
    lldb/branches/windows/source/API/SBInputReader.cpp
    lldb/branches/windows/source/API/SBLineEntry.cpp
    lldb/branches/windows/source/API/SBListener.cpp
    lldb/branches/windows/source/API/SBModule.cpp
    lldb/branches/windows/source/API/SBProcess.cpp
    lldb/branches/windows/source/API/SBSection.cpp
    lldb/branches/windows/source/API/SBSourceManager.cpp
    lldb/branches/windows/source/API/SBSymbol.cpp
    lldb/branches/windows/source/API/SBSymbolContext.cpp
    lldb/branches/windows/source/API/SBTarget.cpp
    lldb/branches/windows/source/API/SBThread.cpp
    lldb/branches/windows/source/API/SBType.cpp
    lldb/branches/windows/source/API/SBTypeCategory.cpp
    lldb/branches/windows/source/API/SBTypeFilter.cpp
    lldb/branches/windows/source/API/SBTypeFormat.cpp
    lldb/branches/windows/source/API/SBTypeNameSpecifier.cpp
    lldb/branches/windows/source/API/SBTypeSummary.cpp
    lldb/branches/windows/source/API/SBTypeSynthetic.cpp
    lldb/branches/windows/source/API/SBValue.cpp
    lldb/branches/windows/source/API/SBValueList.cpp
    lldb/branches/windows/source/API/SBWatchpoint.cpp
    lldb/branches/windows/source/Breakpoint/Breakpoint.cpp
    lldb/branches/windows/source/Breakpoint/BreakpointIDList.cpp
    lldb/branches/windows/source/Breakpoint/BreakpointList.cpp
    lldb/branches/windows/source/Breakpoint/BreakpointLocation.cpp
    lldb/branches/windows/source/Breakpoint/BreakpointLocationCollection.cpp
    lldb/branches/windows/source/Breakpoint/BreakpointLocationList.cpp
    lldb/branches/windows/source/Breakpoint/BreakpointResolverAddress.cpp
    lldb/branches/windows/source/Breakpoint/BreakpointResolverFileLine.cpp
    lldb/branches/windows/source/Breakpoint/BreakpointResolverFileRegex.cpp
    lldb/branches/windows/source/Breakpoint/BreakpointResolverName.cpp
    lldb/branches/windows/source/Breakpoint/BreakpointSite.cpp
    lldb/branches/windows/source/Breakpoint/BreakpointSiteList.cpp
    lldb/branches/windows/source/Breakpoint/Watchpoint.cpp
    lldb/branches/windows/source/CMakeLists.txt
    lldb/branches/windows/source/Commands/CMakeLists.txt
    lldb/branches/windows/source/Commands/CommandCompletions.cpp
    lldb/branches/windows/source/Commands/CommandObjectApropos.cpp
    lldb/branches/windows/source/Commands/CommandObjectArgs.cpp
    lldb/branches/windows/source/Commands/CommandObjectBreakpoint.cpp
    lldb/branches/windows/source/Commands/CommandObjectBreakpointCommand.cpp
    lldb/branches/windows/source/Commands/CommandObjectCommands.cpp
    lldb/branches/windows/source/Commands/CommandObjectDisassemble.cpp
    lldb/branches/windows/source/Commands/CommandObjectDisassemble.h
    lldb/branches/windows/source/Commands/CommandObjectExpression.cpp
    lldb/branches/windows/source/Commands/CommandObjectExpression.h
    lldb/branches/windows/source/Commands/CommandObjectFrame.cpp
    lldb/branches/windows/source/Commands/CommandObjectHelp.cpp
    lldb/branches/windows/source/Commands/CommandObjectMemory.cpp
    lldb/branches/windows/source/Commands/CommandObjectMultiword.cpp
    lldb/branches/windows/source/Commands/CommandObjectPlatform.cpp
    lldb/branches/windows/source/Commands/CommandObjectProcess.cpp
    lldb/branches/windows/source/Commands/CommandObjectQuit.cpp
    lldb/branches/windows/source/Commands/CommandObjectQuit.h
    lldb/branches/windows/source/Commands/CommandObjectRegister.cpp
    lldb/branches/windows/source/Commands/CommandObjectSettings.cpp
    lldb/branches/windows/source/Commands/CommandObjectSource.cpp
    lldb/branches/windows/source/Commands/CommandObjectSyntax.cpp
    lldb/branches/windows/source/Commands/CommandObjectTarget.cpp
    lldb/branches/windows/source/Commands/CommandObjectThread.cpp
    lldb/branches/windows/source/Commands/CommandObjectType.cpp
    lldb/branches/windows/source/Commands/CommandObjectWatchpoint.cpp
    lldb/branches/windows/source/Core/Address.cpp
    lldb/branches/windows/source/Core/AddressResolverFileLine.cpp
    lldb/branches/windows/source/Core/AddressResolverName.cpp
    lldb/branches/windows/source/Core/ArchSpec.cpp
    lldb/branches/windows/source/Core/Broadcaster.cpp
    lldb/branches/windows/source/Core/CMakeLists.txt
    lldb/branches/windows/source/Core/Communication.cpp
    lldb/branches/windows/source/Core/ConnectionFileDescriptor.cpp
    lldb/branches/windows/source/Core/ConstString.cpp
    lldb/branches/windows/source/Core/DataBufferHeap.cpp
    lldb/branches/windows/source/Core/DataBufferMemoryMap.cpp
    lldb/branches/windows/source/Core/DataEncoder.cpp
    lldb/branches/windows/source/Core/DataExtractor.cpp
    lldb/branches/windows/source/Core/Debugger.cpp
    lldb/branches/windows/source/Core/Disassembler.cpp
    lldb/branches/windows/source/Core/DynamicLoader.cpp
    lldb/branches/windows/source/Core/EmulateInstruction.cpp
    lldb/branches/windows/source/Core/Error.cpp
    lldb/branches/windows/source/Core/FileSpecList.cpp
    lldb/branches/windows/source/Core/History.cpp
    lldb/branches/windows/source/Core/Listener.cpp
    lldb/branches/windows/source/Core/Log.cpp
    lldb/branches/windows/source/Core/Makefile
    lldb/branches/windows/source/Core/Module.cpp
    lldb/branches/windows/source/Core/ModuleList.cpp
    lldb/branches/windows/source/Core/PluginManager.cpp
    lldb/branches/windows/source/Core/RegisterValue.cpp
    lldb/branches/windows/source/Core/RegularExpression.cpp
    lldb/branches/windows/source/Core/Scalar.cpp
    lldb/branches/windows/source/Core/SearchFilter.cpp
    lldb/branches/windows/source/Core/Section.cpp
    lldb/branches/windows/source/Core/SourceManager.cpp
    lldb/branches/windows/source/Core/Stream.cpp
    lldb/branches/windows/source/Core/StreamAsynchronousIO.cpp
    lldb/branches/windows/source/Core/StreamCallback.cpp
    lldb/branches/windows/source/Core/StreamFile.cpp
    lldb/branches/windows/source/Core/StreamString.cpp
    lldb/branches/windows/source/Core/StringList.cpp
    lldb/branches/windows/source/Core/Timer.cpp
    lldb/branches/windows/source/Core/UUID.cpp
    lldb/branches/windows/source/Core/UserID.cpp
    lldb/branches/windows/source/Core/VMRange.cpp
    lldb/branches/windows/source/Core/Value.cpp
    lldb/branches/windows/source/Core/ValueObject.cpp
    lldb/branches/windows/source/Core/ValueObjectCast.cpp
    lldb/branches/windows/source/Core/ValueObjectChild.cpp
    lldb/branches/windows/source/Core/ValueObjectConstResult.cpp
    lldb/branches/windows/source/Core/ValueObjectConstResultChild.cpp
    lldb/branches/windows/source/Core/ValueObjectConstResultImpl.cpp
    lldb/branches/windows/source/Core/ValueObjectDynamicValue.cpp
    lldb/branches/windows/source/Core/ValueObjectList.cpp
    lldb/branches/windows/source/Core/ValueObjectMemory.cpp
    lldb/branches/windows/source/Core/ValueObjectRegister.cpp
    lldb/branches/windows/source/Core/ValueObjectSyntheticFilter.cpp
    lldb/branches/windows/source/Core/ValueObjectVariable.cpp
    lldb/branches/windows/source/DataFormatters/CXXFormatterFunctions.cpp
    lldb/branches/windows/source/Expression/ASTDumper.cpp
    lldb/branches/windows/source/Expression/ASTResultSynthesizer.cpp
    lldb/branches/windows/source/Expression/CMakeLists.txt
    lldb/branches/windows/source/Expression/ClangASTSource.cpp
    lldb/branches/windows/source/Expression/ClangExpressionDeclMap.cpp
    lldb/branches/windows/source/Expression/ClangExpressionParser.cpp
    lldb/branches/windows/source/Expression/ClangFunction.cpp
    lldb/branches/windows/source/Expression/ClangUserExpression.cpp
    lldb/branches/windows/source/Expression/ClangUtilityFunction.cpp
    lldb/branches/windows/source/Expression/DWARFExpression.cpp
    lldb/branches/windows/source/Expression/ExpressionSourceCode.cpp
    lldb/branches/windows/source/Expression/IRDynamicChecks.cpp
    lldb/branches/windows/source/Expression/IRForTarget.cpp
    lldb/branches/windows/source/Expression/IRInterpreter.cpp
    lldb/branches/windows/source/Host/CMakeLists.txt
    lldb/branches/windows/source/Host/common/File.cpp
    lldb/branches/windows/source/Host/common/FileSpec.cpp
    lldb/branches/windows/source/Host/common/Host.cpp
    lldb/branches/windows/source/Host/linux/Host.cpp
    lldb/branches/windows/source/Host/macosx/Host.mm
    lldb/branches/windows/source/Host/macosx/Symbols.cpp
    lldb/branches/windows/source/Host/macosx/cfcpp/CFCMutableDictionary.cpp
    lldb/branches/windows/source/Host/macosx/cfcpp/CFCMutableDictionary.h
    lldb/branches/windows/source/Host/macosx/launcherXPCService/LauncherRootXPCService-Info.plist
    lldb/branches/windows/source/Host/macosx/launcherXPCService/LauncherXPCService-Info.plist
    lldb/branches/windows/source/Host/macosx/launcherXPCService/main.mm
    lldb/branches/windows/source/Interpreter/Args.cpp
    lldb/branches/windows/source/Interpreter/CommandInterpreter.cpp
    lldb/branches/windows/source/Interpreter/CommandObject.cpp
    lldb/branches/windows/source/Interpreter/CommandObjectRegexCommand.cpp
    lldb/branches/windows/source/Interpreter/CommandObjectScript.cpp
    lldb/branches/windows/source/Interpreter/CommandReturnObject.cpp
    lldb/branches/windows/source/Interpreter/OptionGroupFormat.cpp
    lldb/branches/windows/source/Interpreter/OptionGroupPlatform.cpp
    lldb/branches/windows/source/Interpreter/OptionGroupValueObjectDisplay.cpp
    lldb/branches/windows/source/Interpreter/OptionGroupVariable.cpp
    lldb/branches/windows/source/Interpreter/OptionValueArch.cpp
    lldb/branches/windows/source/Interpreter/OptionValueDictionary.cpp
    lldb/branches/windows/source/Interpreter/OptionValueFileSpec.cpp
    lldb/branches/windows/source/Interpreter/OptionValueFormat.cpp
    lldb/branches/windows/source/Interpreter/OptionValueString.cpp
    lldb/branches/windows/source/Interpreter/Options.cpp
    lldb/branches/windows/source/Interpreter/PythonDataObjects.cpp
    lldb/branches/windows/source/Interpreter/ScriptInterpreter.cpp
    lldb/branches/windows/source/Interpreter/ScriptInterpreterPython.cpp
    lldb/branches/windows/source/Makefile
    lldb/branches/windows/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp
    lldb/branches/windows/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.cpp
    lldb/branches/windows/source/Plugins/ABI/SysV-x86_64/ABISysV_x86_64.cpp
    lldb/branches/windows/source/Plugins/ABI/SysV-x86_64/ABISysV_x86_64.h
    lldb/branches/windows/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp
    lldb/branches/windows/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.h
    lldb/branches/windows/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp
    lldb/branches/windows/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.h
    lldb/branches/windows/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
    lldb/branches/windows/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.h
    lldb/branches/windows/source/Plugins/DynamicLoader/POSIX-DYLD/AuxVector.cpp
    lldb/branches/windows/source/Plugins/DynamicLoader/POSIX-DYLD/AuxVector.h
    lldb/branches/windows/source/Plugins/DynamicLoader/POSIX-DYLD/DYLDRendezvous.cpp
    lldb/branches/windows/source/Plugins/DynamicLoader/POSIX-DYLD/DYLDRendezvous.h
    lldb/branches/windows/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp
    lldb/branches/windows/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.h
    lldb/branches/windows/source/Plugins/DynamicLoader/Static/DynamicLoaderStatic.cpp
    lldb/branches/windows/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.cpp
    lldb/branches/windows/source/Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.h
    lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.cpp
    lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.h
    lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.cpp
    lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h
    lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
    lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h
    lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp
    lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.h
    lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeVendor.cpp
    lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleThreadPlanStepThroughObjCTrampoline.cpp
    lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleThreadPlanStepThroughObjCTrampoline.h
    lldb/branches/windows/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp
    lldb/branches/windows/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.h
    lldb/branches/windows/source/Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.cpp
    lldb/branches/windows/source/Plugins/ObjectContainer/Universal-Mach-O/ObjectContainerUniversalMachO.h
    lldb/branches/windows/source/Plugins/ObjectFile/ELF/ELFHeader.cpp
    lldb/branches/windows/source/Plugins/ObjectFile/ELF/ELFHeader.h
    lldb/branches/windows/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
    lldb/branches/windows/source/Plugins/ObjectFile/ELF/ObjectFileELF.h
    lldb/branches/windows/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
    lldb/branches/windows/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h
    lldb/branches/windows/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp
    lldb/branches/windows/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h
    lldb/branches/windows/source/Plugins/OperatingSystem/CMakeLists.txt
    lldb/branches/windows/source/Plugins/OperatingSystem/Python/OperatingSystemPython.cpp
    lldb/branches/windows/source/Plugins/OperatingSystem/Python/OperatingSystemPython.h
    lldb/branches/windows/source/Plugins/Platform/CMakeLists.txt
    lldb/branches/windows/source/Plugins/Platform/FreeBSD/PlatformFreeBSD.cpp
    lldb/branches/windows/source/Plugins/Platform/Linux/PlatformLinux.cpp
    lldb/branches/windows/source/Plugins/Platform/MacOSX/CMakeLists.txt
    lldb/branches/windows/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
    lldb/branches/windows/source/Plugins/Platform/MacOSX/PlatformDarwin.h
    lldb/branches/windows/source/Plugins/Process/CMakeLists.txt
    lldb/branches/windows/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
    lldb/branches/windows/source/Plugins/Process/FreeBSD/ProcessMonitor.h
    lldb/branches/windows/source/Plugins/Process/Linux/ProcessLinux.cpp
    lldb/branches/windows/source/Plugins/Process/Linux/ProcessMonitor.cpp
    lldb/branches/windows/source/Plugins/Process/Linux/ProcessMonitor.h
    lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp
    lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
    lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp
    lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h
    lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/ProcessKDPLog.cpp
    lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/ProcessKDPLog.h
    lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/ThreadKDP.cpp
    lldb/branches/windows/source/Plugins/Process/POSIX/POSIXStopInfo.cpp
    lldb/branches/windows/source/Plugins/Process/POSIX/POSIXStopInfo.h
    lldb/branches/windows/source/Plugins/Process/POSIX/POSIXThread.cpp
    lldb/branches/windows/source/Plugins/Process/POSIX/POSIXThread.h
    lldb/branches/windows/source/Plugins/Process/POSIX/ProcessMessage.cpp
    lldb/branches/windows/source/Plugins/Process/POSIX/ProcessMessage.h
    lldb/branches/windows/source/Plugins/Process/POSIX/ProcessPOSIX.cpp
    lldb/branches/windows/source/Plugins/Process/POSIX/ProcessPOSIX.h
    lldb/branches/windows/source/Plugins/Process/POSIX/ProcessPOSIXLog.cpp
    lldb/branches/windows/source/Plugins/Process/POSIX/ProcessPOSIXLog.h
    lldb/branches/windows/source/Plugins/Process/POSIX/RegisterContext_i386.cpp
    lldb/branches/windows/source/Plugins/Process/POSIX/RegisterContext_i386.h
    lldb/branches/windows/source/Plugins/Process/POSIX/RegisterContext_x86_64.cpp
    lldb/branches/windows/source/Plugins/Process/POSIX/RegisterContext_x86_64.h
    lldb/branches/windows/source/Plugins/Process/Utility/DynamicRegisterInfo.cpp
    lldb/branches/windows/source/Plugins/Process/Utility/DynamicRegisterInfo.h
    lldb/branches/windows/source/Plugins/Process/Utility/InferiorCallPOSIX.cpp
    lldb/branches/windows/source/Plugins/Process/Utility/InferiorCallPOSIX.h
    lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextDarwin_arm.cpp
    lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextDarwin_arm.h
    lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextDarwin_i386.cpp
    lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextDarwin_i386.h
    lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextDarwin_x86_64.cpp
    lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextDarwin_x86_64.h
    lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextLLDB.cpp
    lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextLLDB.h
    lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextMacOSXFrameBackchain.cpp
    lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextMacOSXFrameBackchain.h
    lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextMemory.cpp
    lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextMemory.h
    lldb/branches/windows/source/Plugins/Process/Utility/StopInfoMachException.cpp
    lldb/branches/windows/source/Plugins/Process/Utility/ThreadMemory.cpp
    lldb/branches/windows/source/Plugins/Process/Utility/ThreadMemory.h
    lldb/branches/windows/source/Plugins/Process/Utility/UnwindLLDB.cpp
    lldb/branches/windows/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp
    lldb/branches/windows/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
    lldb/branches/windows/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h
    lldb/branches/windows/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp
    lldb/branches/windows/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp
    lldb/branches/windows/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.h
    lldb/branches/windows/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
    lldb/branches/windows/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
    lldb/branches/windows/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.cpp
    lldb/branches/windows/source/Plugins/Process/gdb-remote/ProcessGDBRemoteLog.h
    lldb/branches/windows/source/Plugins/Process/gdb-remote/ThreadGDBRemote.cpp
    lldb/branches/windows/source/Plugins/Process/mach-core/ProcessMachCore.cpp
    lldb/branches/windows/source/Plugins/Process/mach-core/ProcessMachCore.h
    lldb/branches/windows/source/Plugins/Process/mach-core/ThreadMachCore.cpp
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.cpp
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFAbbreviationDeclaration.h
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFAttribute.h
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.h
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugAbbrev.cpp
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugAbbrev.h
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugArangeSet.cpp
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugArangeSet.h
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugAranges.cpp
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugAranges.h
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.cpp
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugInfo.h
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugLine.cpp
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugLine.h
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugMacinfo.cpp
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugMacinfo.h
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugMacinfoEntry.cpp
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugMacinfoEntry.h
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugPubnames.cpp
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugPubnamesSet.cpp
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugPubnamesSet.h
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.h
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDeclContext.cpp
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFFormValue.h
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFLocationDescription.cpp
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFLocationList.cpp
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFLocationList.h
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/HashedNameToDIE.h
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/LogChannelDWARF.cpp
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/LogChannelDWARF.h
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
    lldb/branches/windows/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
    lldb/branches/windows/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp
    lldb/branches/windows/source/Plugins/UnwindAssembly/InstEmulation/UnwindAssemblyInstEmulation.cpp
    lldb/branches/windows/source/Symbol/Block.cpp
    lldb/branches/windows/source/Symbol/ClangASTContext.cpp
    lldb/branches/windows/source/Symbol/ClangASTImporter.cpp
    lldb/branches/windows/source/Symbol/ClangASTType.cpp
    lldb/branches/windows/source/Symbol/ClangExternalASTSourceCallbacks.cpp
    lldb/branches/windows/source/Symbol/ClangExternalASTSourceCommon.cpp
    lldb/branches/windows/source/Symbol/DWARFCallFrameInfo.cpp
    lldb/branches/windows/source/Symbol/Function.cpp
    lldb/branches/windows/source/Symbol/LineTable.cpp
    lldb/branches/windows/source/Symbol/ObjectFile.cpp
    lldb/branches/windows/source/Symbol/Symbol.cpp
    lldb/branches/windows/source/Symbol/SymbolContext.cpp
    lldb/branches/windows/source/Symbol/SymbolVendor.cpp
    lldb/branches/windows/source/Symbol/Symtab.cpp
    lldb/branches/windows/source/Symbol/Type.cpp
    lldb/branches/windows/source/Symbol/Variable.cpp
    lldb/branches/windows/source/Symbol/VariableList.cpp
    lldb/branches/windows/source/Target/CMakeLists.txt
    lldb/branches/windows/source/Target/CPPLanguageRuntime.cpp
    lldb/branches/windows/source/Target/ExecutionContext.cpp
    lldb/branches/windows/source/Target/LanguageRuntime.cpp
    lldb/branches/windows/source/Target/Memory.cpp
    lldb/branches/windows/source/Target/ObjCLanguageRuntime.cpp
    lldb/branches/windows/source/Target/PathMappingList.cpp
    lldb/branches/windows/source/Target/Platform.cpp
    lldb/branches/windows/source/Target/Process.cpp
    lldb/branches/windows/source/Target/SectionLoadList.cpp
    lldb/branches/windows/source/Target/StackFrame.cpp
    lldb/branches/windows/source/Target/StackFrameList.cpp
    lldb/branches/windows/source/Target/StopInfo.cpp
    lldb/branches/windows/source/Target/Target.cpp
    lldb/branches/windows/source/Target/TargetList.cpp
    lldb/branches/windows/source/Target/Thread.cpp
    lldb/branches/windows/source/Target/ThreadList.cpp
    lldb/branches/windows/source/Target/ThreadPlan.cpp
    lldb/branches/windows/source/Target/ThreadPlanBase.cpp
    lldb/branches/windows/source/Target/ThreadPlanCallFunction.cpp
    lldb/branches/windows/source/Target/ThreadPlanCallUserExpression.cpp
    lldb/branches/windows/source/Target/ThreadPlanRunToAddress.cpp
    lldb/branches/windows/source/Target/ThreadPlanShouldStopHere.cpp
    lldb/branches/windows/source/Target/ThreadPlanStepInRange.cpp
    lldb/branches/windows/source/Target/ThreadPlanStepInstruction.cpp
    lldb/branches/windows/source/Target/ThreadPlanStepOut.cpp
    lldb/branches/windows/source/Target/ThreadPlanStepOverBreakpoint.cpp
    lldb/branches/windows/source/Target/ThreadPlanStepOverRange.cpp
    lldb/branches/windows/source/Target/ThreadPlanStepRange.cpp
    lldb/branches/windows/source/Target/ThreadPlanStepThrough.cpp
    lldb/branches/windows/source/Target/ThreadPlanStepUntil.cpp
    lldb/branches/windows/source/Target/ThreadPlanTracer.cpp
    lldb/branches/windows/source/Utility/ARM_DWARF_Registers.cpp
    lldb/branches/windows/source/Utility/ARM_DWARF_Registers.h
    lldb/branches/windows/source/Utility/CMakeLists.txt
    lldb/branches/windows/source/Utility/Makefile
    lldb/branches/windows/source/Utility/StringExtractor.cpp
    lldb/branches/windows/source/Utility/StringExtractor.h
    lldb/branches/windows/source/lldb-log.cpp
    lldb/branches/windows/source/lldb.cpp
    lldb/branches/windows/test/Makefile
    lldb/branches/windows/test/api/check_public_api_headers/Makefile
    lldb/branches/windows/test/api/check_public_api_headers/TestPublicAPIHeaders.py
    lldb/branches/windows/test/dosep.ty
    lldb/branches/windows/test/dotest.py
    lldb/branches/windows/test/expression_command/call-function/TestCallStdStringFunction.py
    lldb/branches/windows/test/expression_command/formatters/TestFormatters.py
    lldb/branches/windows/test/expression_command/issue_11588/Test11588.py
    lldb/branches/windows/test/expression_command/issue_11588/main.cpp
    lldb/branches/windows/test/expression_command/radar_9673664/TestExprHelpExamples.py
    lldb/branches/windows/test/expression_command/test/TestExprs.py
    lldb/branches/windows/test/expression_command/test/main.cpp
    lldb/branches/windows/test/functionalities/abbreviation/TestAbbreviations.py
    lldb/branches/windows/test/functionalities/abbreviation/change_prompt.lldb
    lldb/branches/windows/test/functionalities/alias/TestAliases.py
    lldb/branches/windows/test/functionalities/breakpoint/breakpoint_conditions/TestBreakpointConditions.py
    lldb/branches/windows/test/functionalities/breakpoint/breakpoint_ignore_count/TestBreakpointIgnoreCount.py
    lldb/branches/windows/test/functionalities/command_script/TestCommandScript.py
    lldb/branches/windows/test/functionalities/command_script/import/TestImport.py
    lldb/branches/windows/test/functionalities/command_script/import/bar/bar.py
    lldb/branches/windows/test/functionalities/command_script/import/foo/bar/foobar.py
    lldb/branches/windows/test/functionalities/command_script/import/foo/foo.py
    lldb/branches/windows/test/functionalities/command_script/import/foo/foo2.py
    lldb/branches/windows/test/functionalities/command_script/mysto.py
    lldb/branches/windows/test/functionalities/command_script/welcome.py
    lldb/branches/windows/test/functionalities/completion/TestCompletion.py
    lldb/branches/windows/test/functionalities/conditional_break/.lldb
    lldb/branches/windows/test/functionalities/conditional_break/TestConditionalBreak.py
    lldb/branches/windows/test/functionalities/conditional_break/conditional_break.py
    lldb/branches/windows/test/functionalities/connect_remote/TestConnectRemote.py
    lldb/branches/windows/test/functionalities/data-formatter/data-formatter-objc/.categories
    lldb/branches/windows/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py
    lldb/branches/windows/test/functionalities/data-formatter/data-formatter-skip-summary/Makefile
    lldb/branches/windows/test/functionalities/data-formatter/data-formatter-smart-array/TestDataFormatterSmartArray.py
    lldb/branches/windows/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/list/Makefile
    lldb/branches/windows/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/list/TestDataFormatterStdList.py
    lldb/branches/windows/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/map/Makefile
    lldb/branches/windows/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/map/TestDataFormatterStdMap.py
    lldb/branches/windows/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vector/Makefile
    lldb/branches/windows/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/vector/TestDataFormatterStdVector.py
    lldb/branches/windows/test/functionalities/data-formatter/rdar-10887661/TestRdar10887661.py
    lldb/branches/windows/test/functionalities/data-formatter/rdar-12437442/TestRdar12437442.py
    lldb/branches/windows/test/functionalities/embedded_interpreter/TestConvenienceVariables.py
    lldb/branches/windows/test/functionalities/expr-doesnt-deadlock/TestExprDoesntBlock.py
    lldb/branches/windows/test/functionalities/inferior-changed/TestInferiorChanged.py
    lldb/branches/windows/test/functionalities/inline-stepping/TestInlineStepping.py
    lldb/branches/windows/test/functionalities/load_unload/Makefile
    lldb/branches/windows/test/functionalities/load_unload/TestLoadUnload.py
    lldb/branches/windows/test/functionalities/process_launch/TestProcessLaunch.py
    lldb/branches/windows/test/functionalities/register/TestRegisters.py
    lldb/branches/windows/test/functionalities/return-value/TestReturnValue.py
    lldb/branches/windows/test/functionalities/return-value/call-func.c
    lldb/branches/windows/test/functionalities/single-quote-in-filename-to-lldb/TestSingleQuoteInFilename.py
    lldb/branches/windows/test/functionalities/stop-hook/TestStopHookMechanism.py
    lldb/branches/windows/test/functionalities/stop-hook/multiple_threads/Makefile
    lldb/branches/windows/test/functionalities/type_completion/TestTypeCompletion.py
    lldb/branches/windows/test/functionalities/watchpoint/hello_watchlocation/Makefile
    lldb/branches/windows/test/functionalities/watchpoint/hello_watchlocation/TestWatchLocation.py
    lldb/branches/windows/test/functionalities/watchpoint/hello_watchpoint/TestMyFirstWatchpoint.py
    lldb/branches/windows/test/functionalities/watchpoint/multiple_threads/Makefile
    lldb/branches/windows/test/functionalities/watchpoint/watchpoint_set_command/Makefile
    lldb/branches/windows/test/functionalities/watchpoint/watchpoint_set_command/TestWatchLocationWithWatchSet.py
    lldb/branches/windows/test/functionalities/watchpoint/watchpoint_set_command/TestWatchpointSetErrorCases.py
    lldb/branches/windows/test/help/TestHelp.py
    lldb/branches/windows/test/lang/c/anonymous/TestAnonymous.py
    lldb/branches/windows/test/lang/c/array_types/TestArrayTypes.py
    lldb/branches/windows/test/lang/c/bitfields/TestBitfields.py
    lldb/branches/windows/test/lang/c/enum_types/TestEnumTypes.py
    lldb/branches/windows/test/lang/c/enum_types/main.c
    lldb/branches/windows/test/lang/c/forward/TestForwardDeclaration.py
    lldb/branches/windows/test/lang/c/shared_lib/TestSharedLib.py
    lldb/branches/windows/test/lang/c/stepping/TestStepAndBreakpoints.py
    lldb/branches/windows/test/lang/c/stepping/main.c
    lldb/branches/windows/test/lang/c/strings/TestCStrings.py
    lldb/branches/windows/test/lang/c/struct_types/TestStructTypes.py
    lldb/branches/windows/test/lang/cpp/bool/TestCPPBool.py
    lldb/branches/windows/test/lang/cpp/class_static/TestStaticVariables.py
    lldb/branches/windows/test/lang/cpp/dynamic-value/TestDynamicValue.py
    lldb/branches/windows/test/lang/cpp/namespace/TestNamespace.py
    lldb/branches/windows/test/lang/cpp/rvalue-references/Makefile
    lldb/branches/windows/test/lang/cpp/rvalue-references/TestRvalueReferences.py
    lldb/branches/windows/test/lang/cpp/stl/Makefile
    lldb/branches/windows/test/lang/cpp/stl/TestSTL.py
    lldb/branches/windows/test/lang/cpp/this/TestCPPThis.py
    lldb/branches/windows/test/lang/cpp/this/main.cpp
    lldb/branches/windows/test/lang/cpp/unique-types/TestUniqueTypes.py
    lldb/branches/windows/test/lang/cpp/unsigned_types/TestUnsignedTypes.py
    lldb/branches/windows/test/lang/objc/blocks/TestObjCIvarsInBlocks.py
    lldb/branches/windows/test/lang/objc/blocks/ivars-in-blocks.h
    lldb/branches/windows/test/lang/objc/blocks/ivars-in-blocks.m
    lldb/branches/windows/test/lang/objc/forward-decl/Makefile
    lldb/branches/windows/test/lang/objc/foundation/TestObjCMethods2.py
    lldb/branches/windows/test/lang/objc/objc-dynamic-value/TestObjCDynamicValue.py
    lldb/branches/windows/test/lang/objc/objc-optimized/Makefile
    lldb/branches/windows/test/lang/objc/objc-stepping/TestObjCStepping.py
    lldb/branches/windows/test/lang/objc/rdar-11355592/TestRdar11355592.py
    lldb/branches/windows/test/lang/objc/rdar-12408181/main.m
    lldb/branches/windows/test/lldbtest.py
    lldb/branches/windows/test/lldbutil.py
    lldb/branches/windows/test/logging/TestLogging.py
    lldb/branches/windows/test/make/Makefile.rules
    lldb/branches/windows/test/plugins/builder_base.py
    lldb/branches/windows/test/python_api/function_symbol/TestDisasmAPI.py
    lldb/branches/windows/test/python_api/function_symbol/TestSymbolAPI.py
    lldb/branches/windows/test/python_api/hello_world/TestHelloWorld.py
    lldb/branches/windows/test/python_api/lldbutil/iter/Makefile
    lldb/branches/windows/test/python_api/lldbutil/iter/TestLLDBIterator.py
    lldb/branches/windows/test/python_api/lldbutil/iter/TestRegistersIterator.py
    lldb/branches/windows/test/python_api/lldbutil/process/Makefile
    lldb/branches/windows/test/python_api/module_section/Makefile
    lldb/branches/windows/test/python_api/process/TestProcessAPI.py
    lldb/branches/windows/test/python_api/process/io/TestProcessIO.py
    lldb/branches/windows/test/python_api/sbdata/TestSBData.py
    lldb/branches/windows/test/python_api/symbol-context/TestSymbolContext.py
    lldb/branches/windows/test/python_api/target/TestTargetAPI.py
    lldb/branches/windows/test/python_api/thread/TestThreadAPI.py
    lldb/branches/windows/test/python_api/type/TestTypeList.py
    lldb/branches/windows/test/python_api/value/TestValueAPI.py
    lldb/branches/windows/test/python_api/value/change_values/TestChangeValueAPI.py
    lldb/branches/windows/test/python_api/value/change_values/main.c
    lldb/branches/windows/test/python_api/value/linked_list/TestValueAPILinkedList.py
    lldb/branches/windows/test/python_api/watchpoint/watchlocation/Makefile
    lldb/branches/windows/test/settings/TestSettings.py
    lldb/branches/windows/test/source-manager/TestSourceManager.py
    lldb/branches/windows/test/unittest2/case.py
    lldb/branches/windows/test/unittest2/result.py
    lldb/branches/windows/test/unittest2/runner.py
    lldb/branches/windows/tools/darwin-debug/darwin-debug.cpp
    lldb/branches/windows/tools/darwin-threads/examine-threads.c
    lldb/branches/windows/tools/debugserver/debugserver.xcodeproj/project.pbxproj
    lldb/branches/windows/tools/debugserver/debugserver.xcodeproj/xcshareddata/xcschemes/debugserver.xcscheme
    lldb/branches/windows/tools/debugserver/source/ARM_DWARF_Registers.h
    lldb/branches/windows/tools/debugserver/source/ARM_GCC_Registers.h
    lldb/branches/windows/tools/debugserver/source/DNB.cpp
    lldb/branches/windows/tools/debugserver/source/DNB.h
    lldb/branches/windows/tools/debugserver/source/DNBBreakpoint.cpp
    lldb/branches/windows/tools/debugserver/source/DNBDataRef.cpp
    lldb/branches/windows/tools/debugserver/source/DNBDataRef.h
    lldb/branches/windows/tools/debugserver/source/DNBDefs.h
    lldb/branches/windows/tools/debugserver/source/DNBLog.cpp
    lldb/branches/windows/tools/debugserver/source/DNBLog.h
    lldb/branches/windows/tools/debugserver/source/MacOSX/MachException.cpp
    lldb/branches/windows/tools/debugserver/source/MacOSX/MachProcess.cpp
    lldb/branches/windows/tools/debugserver/source/MacOSX/MachProcess.h
    lldb/branches/windows/tools/debugserver/source/MacOSX/MachTask.cpp
    lldb/branches/windows/tools/debugserver/source/MacOSX/MachTask.h
    lldb/branches/windows/tools/debugserver/source/MacOSX/MachThread.cpp
    lldb/branches/windows/tools/debugserver/source/MacOSX/MachThread.h
    lldb/branches/windows/tools/debugserver/source/MacOSX/MachThreadList.cpp
    lldb/branches/windows/tools/debugserver/source/MacOSX/MachThreadList.h
    lldb/branches/windows/tools/debugserver/source/MacOSX/MachVMMemory.cpp
    lldb/branches/windows/tools/debugserver/source/MacOSX/MachVMMemory.h
    lldb/branches/windows/tools/debugserver/source/MacOSX/arm/DNBArchImpl.cpp
    lldb/branches/windows/tools/debugserver/source/MacOSX/arm/DNBArchImpl.h
    lldb/branches/windows/tools/debugserver/source/MacOSX/i386/DNBArchImplI386.cpp
    lldb/branches/windows/tools/debugserver/source/MacOSX/ppc/DNBArchImpl.cpp
    lldb/branches/windows/tools/debugserver/source/MacOSX/x86_64/DNBArchImplX86_64.cpp
    lldb/branches/windows/tools/debugserver/source/RNBRemote.cpp
    lldb/branches/windows/tools/debugserver/source/RNBRemote.h
    lldb/branches/windows/tools/debugserver/source/RNBSocket.cpp
    lldb/branches/windows/tools/debugserver/source/RNBSocket.h
    lldb/branches/windows/tools/debugserver/source/debugserver.cpp
    lldb/branches/windows/tools/driver/CMakeLists.txt
    lldb/branches/windows/tools/driver/Driver.cpp
    lldb/branches/windows/tools/driver/Driver.h
    lldb/branches/windows/tools/driver/IOChannel.cpp
    lldb/branches/windows/tools/driver/IOChannel.h
    lldb/branches/windows/tools/install-headers/Makefile
    lldb/branches/windows/tools/lldb-platform/lldb-platform.cpp
    lldb/branches/windows/www/architecture.html
    lldb/branches/windows/www/build.html
    lldb/branches/windows/www/lldb-gdb.html
    lldb/branches/windows/www/python-reference.html
    lldb/branches/windows/www/status.html
    lldb/branches/windows/www/tutorial.html
    lldb/branches/windows/www/varformats.html

Propchange: lldb/branches/windows/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Apr 17 03:38:48 2013
@@ -1,2 +1,2 @@
 /lldb/branches/apple/python-GIL:156467-162159
-/lldb/trunk:163223-171846
+/lldb/trunk:163223-179594

Modified: lldb/branches/windows/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/CMakeLists.txt?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/CMakeLists.txt (original)
+++ lldb/branches/windows/CMakeLists.txt Wed Apr 17 03:38:48 2013
@@ -79,6 +79,22 @@ macro(add_lldb_definitions)
   add_definitions( ${ARGN} )
 endmacro(add_lldb_definitions)
 
+include_directories(/usr/include/python2.7)
+include_directories(../clang/include)
+include_directories("${CMAKE_CURRENT_BINARY_DIR}/../clang/include")
+
+if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+  if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.7")
+    set(CMAKE_CXX_FLAGS "-std=c++0x")
+  else()
+    set(CMAKE_CXX_FLAGS "-std=c++11")
+  endif()
+else()
+  if (NOT( CMAKE_SYSTEM_NAME MATCHES "Windows" ))
+    set(CMAKE_CXX_FLAGS "-std=c++11")
+  endif()
+endif()
+
 # Disable MSVC warnings
 if( MSVC )
   add_lldb_definitions(
@@ -89,6 +105,14 @@ if( MSVC )
   )
 endif() 
 
+# If building on a 32-bit system, make sure off_t can store offsets > 2GB
+if( CMAKE_SIZEOF_VOID_P EQUAL 4 )
+  add_lldb_definitions(
+    -D_LARGEFILE_SOURCE
+    -D_FILE_OFFSET_BITS=64
+    )
+endif()
+
 set(LLDB_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
 set(LLDB_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
 
@@ -114,18 +138,35 @@ macro(add_lldb_library name)
   elseif (SHARED_LIBRARY)
     set(libkind SHARED)
   else()
-    set(libkind)
+    set(libkind STATIC)
   endif()
-  add_library(${name} ${libkind} ${srcs})
-  if (LLVM_COMMON_DEPENDS)
-    add_dependencies(${name} ${LLVM_COMMON_DEPENDS})
+  if (NOT(CMAKE_SYSTEM_NAME MATCHES "Windows" ))
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
   endif()
+  add_library(${name} ${libkind} ${srcs})
+  #if (LLVM_COMMON_DEPENDS)
+  ##add_dependencies(${name} ${LLVM_COMMON_DEPENDS})
+  #endif()
 
+  if(LLDB_USED_LIBS)
+    target_link_libraries(${name} -Wl,--start-group ${LLDB_USED_LIBS} -Wl,--end-group)
+  endif()
+  target_link_libraries(${name} ${CLANG_USED_LIBS})
   target_link_libraries(${name} ${LLVM_USED_LIBS})
   llvm_config(${name} ${LLVM_LINK_COMPONENTS})
   target_link_libraries(${name} ${LLVM_COMMON_LIBS})
-  #target_link_libraries(${name} ${CLANG_USED_LIBS})
   link_system_libs(${name})
+  if (LLVM_COMMON_DEPENDS)
+    add_dependencies(${name} ${LLVM_COMMON_DEPENDS})
+  endif()
+
+  # Hack: only some LLDB libraries depend on the clang autogenerated headers,
+  # but it is simple enough to make all of LLDB depend on some of those
+  # headers without negatively impacting much of anything.
+  set (LLDB_DEPENDENCIES
+    libclang
+    )
+  add_dependencies(${name} ${LLDB_DEPENDENCIES})
 
   install(TARGETS ${name}
     LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
@@ -134,9 +175,15 @@ macro(add_lldb_library name)
 endmacro(add_lldb_library)
 
 macro(add_lldb_executable name)
-  add_llvm_executable(${name} ${ARGN})
-  target_link_libraries(${name} ${LLDB_USED_LIBS})
-  target_link_libraries(${name} ${CLANG_USED_LIBS})
+  #add_llvm_executable(${name} ${ARGN})
+  llvm_process_sources( ALL_FILES ${ARGN} )
+  add_executable(${name} ${ALL_FILES})
+  #target_link_libraries(${name} ${CLANG_USED_LIBS})
+  #llvm_config( ${name} ${LLVM_LINK_COMPONENTS} )
+  #link_system_libs( ${name} )
+  #if (LLVM_COMMON_DEPENDS)
+  #add_dependencies(${name} ${LLVM_COMMON_DEPENDS})
+  #endif()
   set_target_properties(${name} PROPERTIES FOLDER "lldb executables")
 endmacro(add_lldb_executable)
 
@@ -153,7 +200,7 @@ install(DIRECTORY include/
   )
 
 #add_subdirectory(include)
-#add_subdirectory(scripts)
+add_subdirectory(scripts)
 add_subdirectory(source)
-#add_subdirectory(test)
+add_subdirectory(test)
 add_subdirectory(tools)

Modified: lldb/branches/windows/INSTALL.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/INSTALL.txt?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/INSTALL.txt (original)
+++ lldb/branches/windows/INSTALL.txt Wed Apr 17 03:38:48 2013
@@ -1,9 +1,13 @@
 LLDB Installation Instructions
 ==============================
 
-Note that LLDB currently only builds out of the box on Mac OS X with Xcode, but
-patches to improve portability are definitely welcome.
+LLDB builds on Mac OS X (with Xcode) and Linux (with GCC or Clang).
 
-In addition to using Xcode you'll need to enable code signing on your system
-to either build lldb or debug using lldb.  Please see the code signing
-documentation in docs/code-signing.txt for more detailed directions.
+On Mac OS X, in addition to using Xcode you'll need to enable code signing
+on your system to either build lldb or debug using lldb.  Please see the code
+signing documentation in docs/code-signing.txt for more detailed directions.
+
+For instructions to build LLDB on Linux, or more details about supported
+compiler versions, other dependencies, and build flags, see:
+
+    http://lldb.llvm.org/build.html

Modified: lldb/branches/windows/Makefile
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/Makefile?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/Makefile (original)
+++ lldb/branches/windows/Makefile Wed Apr 17 03:38:48 2013
@@ -48,6 +48,11 @@ ifdef LLDB_VENDOR
 CPP.Flags += -DLLDB_VENDOR='"$(LLDB_VENDOR) "'
 endif
 
+# If building on a 32-bit system, make sure off_t can store offsets > 2GB
+ifneq "$(HOST_ARCH)" "x86_64"
+CPP.Flags += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+endif
+
 # Disable -fstrict-aliasing. Darwin disables it by default (and LLVM doesn't
 # work with it enabled with GCC), Clang/llvm-gc don't support it yet, and newer
 # GCC's have false positive warnings with it on Linux (which prove a pain to

Modified: lldb/branches/windows/docs/code-signing.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/docs/code-signing.txt?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/docs/code-signing.txt (original)
+++ lldb/branches/windows/docs/code-signing.txt Wed Apr 17 03:38:48 2013
@@ -1,6 +1,6 @@
 On MacOSX lldb needs to be code signed. The Debug, DebugClang and Release 
 builds  are set to code sign using a code signing certificate named 
-lldb_codesign. 
+"lldb_codesign". 
 
 If you have re-installed a new OS, please delete all old lldb_codesign items
 from your keychain. There will be 3: a code signing certification and a public
@@ -30,38 +30,32 @@ If you don't have one yet you will need
 - 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.
-[Note: These also apply for Lion and Mountain Lion.]
-
-- 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.
-- Make sure there is no "~/Desktop/lldb_codesign.cer" file on your desktop,
-  if there is one, delete it first, otherwise when you drag a copy of the
-  lldb_codesign certificate to your desktop it will get renamed as
-  "lldb_codesign_1.cer" and the security command you run below will trust the
-  old incorrect certificate.
-- Switch to the System keychain, and drag the copy of lldb_codesign you just
-  made there onto the desktop.
+- Turn down the "Trust" disclosure triangle, scroll to the "Code Signing" trust
+  pulldown menu and select "Always Trust" and authenticate as needed using your
+  username and password.
+- Drag the new "lldb_codesign" code signing certificate (not the public or private
+  keys of the same name) from the "login" keychain to the "System" keychain in the 
+  Keychains pane on the left hand side of the main Keychain Access window. This will
+  move this certificate to the "System" keychain. You'll have to authorize a few
+  more times, set it to be "Always trusted" when asked.
+- Remove "~/Desktop/lldb_codesign.cer" file on your desktop if there is one.
+- In the Keychain Access GUI, click and drag "lldb_codesign" in the "System" keychain
+  onto the desktop. The drag will create a "~/Desktop/lldb_codesign.cer" file used in
+  the next step.
 - 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
 rm -f ~/Desktop/lldb_codesign.cer
 
-- Right click on the "lldb_codesign" certificate in the "System" keychain (NOT
-  "login", but the one in "System"), and select "Delete" to delete it from
-  the "System" keychain.
+- Drag the "lldb_codesign" certificate from the "System" keychain back into the
+  "login" keychain
+- Quit Keychain Access
 - Reboot
-- Clean by removing all previously creating code signed binarires and rebuild
+- Clean by removing all previously creating code signed binaries and rebuild
   lldb and you should be able to debug.
 
-That should do it.
+When you build your LLDB for the first time, the Xcode GUI will prompt you for permission
+to use the "lldb_codesign" keychain. Be sure to click "Always Allow" on your first
+build. From here on out, the "lldb_codesign" will be trusted and you can build from the
+command line without having to authorize. Also the first time you debug using a LLDB that
+was built with this code signing certificate, you will need to authenticate once.

Modified: lldb/branches/windows/docs/lldb-for-gdb-users.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/docs/lldb-for-gdb-users.txt?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/docs/lldb-for-gdb-users.txt (original)
+++ lldb/branches/windows/docs/lldb-for-gdb-users.txt Wed Apr 17 03:38:48 2013
@@ -204,7 +204,7 @@ Enter your debugger command(s).  Type 'D
 > DONE
 
 The "-c" option specifies that the breakpoint command is a set of lldb
-commmand interpreter commands.  Use "-s" if you want to implement your
+command interpreter commands.  Use "-s" if you want to implement your
 breakpoint command using the Python interface instead.
 
 
@@ -434,7 +434,7 @@ $4 = (SKTGraphicView *) 0x00000001001354
 
 f) Customization:
 
-You can use the embedded Python interprter to add the following 'pwd' and 'cd' commands
+You can use the embedded Python interpreter to add the following 'pwd' and 'cd' commands
 for your lldb session:
 
 (lldb) script import os

Modified: lldb/branches/windows/docs/lldb-gdb-remote.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/docs/lldb-gdb-remote.txt?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/docs/lldb-gdb-remote.txt (original)
+++ lldb/branches/windows/docs/lldb-gdb-remote.txt Wed Apr 17 03:38:48 2013
@@ -27,7 +27,7 @@ added above and beyond the standard GDB
 //  the performance of the connection.
 //----------------------------------------------------------------------
 Having to send an ACK/NACK after every packet slows things down a bit, so we
-have a way to disable ACK packets to mimize the traffic for reliable
+have a way to disable ACK packets to minimize the traffic for reliable
 communication interfaces (like sockets). Below GDB or LLDB will send this
 packet to try and disable ACKs. All lines that start with "send packet: " are
 from GDB/LLDB, and all lines that start with "read packet: " are from the GDB
@@ -336,17 +336,21 @@ format      The preferred format for dis
                 vector-float32
                 vector-uint128
 
-set         The regiter set name as a string that this register belongs to.
+set         The register set name as a string that this register belongs to.
 
 gcc         The GCC compiler registers number for this register (used for
             EH frame and other compiler information that is encoded in the
-            executable files). 
+            executable files). The supplied number will be decoded like a
+            string passed to strtoul() with a base of zero, so the number
+            can be decimal, or hex if it is prefixed with "0x".
 
             NOTE: If the compiler doesn't have a register number for this 
             register, this key/value pair should be omitted.
 
 dwarf       The DWARF register number for this register that is used for this
-            register in the debug information. 
+            register in the debug information. The supplied number will be decoded
+            like a string passed to strtoul() with a base of zero, so the number
+            can be decimal, or hex if it is prefixed with "0x".
 
             NOTE: If the compiler doesn't have a register number for this 
             register, this key/value pair should be omitted.
@@ -370,6 +374,52 @@ generic     If the register is a generic
              arg1 - arg8 (specified for registers that contain function 
                       arguments when the argument fits into a register)
 
+container-regs
+            The value for this key is a comma separated list of raw hex (optional 
+            leading "0x") register numbers.
+
+            This specifies that this register is contained in other concrete
+            register values. For example "eax" is in the lower 32 bits of the
+            "rax" register value for x86_64, so "eax" could specify that it is
+            contained in "rax" by specifying the register number for "rax" (whose
+            register number is 0x00)
+            
+            "container-regs:00;"
+            
+            If a register is comprised of one or more registers, like "d0" is ARM
+            which is a 64 bit register, it might be made up of "s0" and "s1". If
+            the register number for "s0" is 0x20, and the register number of "s1"
+            is "0x21", the "container-regs" key/value pair would be:
+            
+            "container-regs:20,21;"
+            
+            This is handy for defining what GDB used to call "pseudo" registers.
+            These registers are never requested by LLDB via the register read
+            or write packets, the container registers will be requested on behalf
+            of this register.
+            
+invalidate-regs
+            The value for this key is a comma separated list of raw hex (optional 
+            leading "0x") register numbers.
+            
+            This specifies which register values should be invalidated when this
+            register is modified. For example if modifying "eax" would cause "rax",
+            "eax", "ax", "ah", and "al" to be modified where rax is 0x0, eax is 0x15,
+            ax is 0x25, ah is 0x35, and al is 0x39, the "invalidate-regs" key/value
+            pair would be:
+
+            "invalidate-regs:0,15,25,35,39;"
+            
+            If there is a single register that gets invalidated, then omit the comma
+            and just list a single register:
+            
+            "invalidate-regs:0;"
+            
+            This is handy when modifying a specific register can cause other
+            register values to change. For example, when debugging an ARM target,
+            modifying the CPSR register can cause the r8 - r14 and cpsr value to
+            change depending on if the mode has changed. 
+
 //----------------------------------------------------------------------
 // "qHostInfo"
 //
@@ -392,7 +442,7 @@ Key value pairs are one of:
 
 cputype: is a number that is the mach-o CPU type that is being debugged
 cpusubtype: is a number that is the mach-o CPU subtype type that is being debugged
-ostype: is a string the represents the OS being debugged (darwin, lunix, freebsd)
+ostype: is a string the represents the OS being debugged (darwin, linux, freebsd)
 vendor: is a string that represents the vendor (apple)
 endian: is one of "little", "big", or "pdp"
 ptrsize: is a number that represents how big pointers are in bytes on the debug target
@@ -408,7 +458,7 @@ ptrsize: is a number that represents how
 //  the qHostInfo may not disambiguate sufficiently to know what kind of 
 //  process is being debugged.
 //  e.g. on a 64-bit x86 Mac system both 32-bit and 64-bit user processes are possible,
-//  and with Mach-O univeral files, the executable file may contain both 32- and 
+//  and with Mach-O universal files, the executable file may contain both 32- and 
 //  64-bit slices so it may be impossible to know until you're attached to a real
 //  process to know what you're working with.
 //
@@ -435,7 +485,7 @@ effective-uid: the effective user id of
 effective-gid: the effective group id of the process
 cputype: the Mach-O CPU type of the process
 cpusubtype: the Mach-O CPU subtype of the process
-ostype: is a string the represents the OS being debugged (darwin, lunix, freebsd)
+ostype: is a string the represents the OS being debugged (darwin, linux, freebsd)
 vendor: is a string that represents the vendor (apple)
 endian: is one of "little", "big", or "pdp"
 ptrsize: is a number that represents how big pointers are in bytes
@@ -461,8 +511,8 @@ ptrsize: is a number that represents how
 
 LLDB and GDB both support the "qShlibInfoAddr" packet which is a hint to each
 debugger as to where to find the dynamic loader information. For darwin
-binaires that run in user land this is the address of the "all_image_infos"
-stucture in the "/usr/lib/dyld" executable, or the result of a TASK_DYLD_INFO
+binaries that run in user land this is the address of the "all_image_infos"
+structure in the "/usr/lib/dyld" executable, or the result of a TASK_DYLD_INFO
 call. The result is returned as big endian hex bytes that are the address
 value:
 
@@ -513,7 +563,7 @@ to implement better multi-threaded debug
 //----------------------------------------------------------------------
 
 When reading thread registers, you currently need to set the current
-thread,then read the registers. This is kind of cumbersome, so we added the
+thread, then read the registers. This is kind of cumbersome, so we added the
 ability to query if the remote GDB server supports adding a "thread:<tid>;"
 suffix to all packets that request information for a thread. To test if the
 remote GDB server supports this feature:
@@ -674,7 +724,7 @@ for this region.
 //        the hex value of the register in debuggee endian byte order.
 //      - If key == "thread", then the value is the big endian hex
 //        thread-id of the stopped thread.
-//      - If key == "core", then value is a hex nujber of the core on
+//      - If key == "core", then value is a hex number of the core on
 //        which the stop was detected.
 //      - If key == "watch" or key == "rwatch" or key == "awatch", then
 //        value is the data address in big endian hex
@@ -744,7 +794,7 @@ for this region.
 //
 // BEST PRACTICES:
 //  Since register values can be supplied with this packet, it is often useful
-//  to return the PC, SP, FP, LR (if any), and FLAGS regsiters so that separate
+//  to return the PC, SP, FP, LR (if any), and FLAGS registers so that separate
 //  packets don't need to be sent to read each of these registers from each
 //  thread.
 //
@@ -753,7 +803,7 @@ for this region.
 //  "T" packet with "00" as the signal number and fill in as many key values 
 //  and registers as possible.
 //
-//  LLDB likes to know why a thread stopped since many thread contol 
+//  LLDB likes to know why a thread stopped since many thread control 
 //  operations like stepping over a source line, actually are implemented
 //  by running the process multiple times. If a breakpoint is hit while
 //  trying to step over a source line and LLDB finds out that a breakpoint
@@ -763,14 +813,14 @@ for this region.
 //  at the current PC and do an instruction single step, knowing that
 //  we stopped due to a "trace" helps us know that we can continue
 //  running versus stopping due to a "breakpoint" (if we have two 
-//  breakpoint instruction on consucutive instructions). So the more info
+//  breakpoint instruction on consecutive instructions). So the more info
 //  we can get about the reason a thread stops, the better job LLDB can
 //  do when controlling your process. A typical GDB server behavior is 
 //  to send a SIGTRAP for breakpoints _and_ also when instruction single
 //  stepping, in this case the debugger doesn't really know why we 
 //  stopped and it can make it hard for the debugger to control your
 //  program correctly. What if a real SIGTRAP was delivered to a thread
-//  while we were trying to single step? We woudn't know the difference
+//  while we were trying to single step? We wouldn't know the difference
 //  with a standard GDB remote server and we could do the wrong thing.
 //
 // PRIORITY TO IMPLEMENT

Modified: lldb/branches/windows/examples/darwin/heap_find/heap.py
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/examples/darwin/heap_find/heap.py?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/examples/darwin/heap_find/heap.py (original)
+++ lldb/branches/windows/examples/darwin/heap_find/heap.py Wed Apr 17 03:38:48 2013
@@ -21,62 +21,158 @@ import lldb.utils.symbolication
 
 g_libheap_dylib_dir = None
 g_libheap_dylib_dict = dict()
-g_verbose = False
 
-def load_dylib():
-    if lldb.target:
-        global g_libheap_dylib_dir
-        global g_libheap_dylib_dict
-        triple = lldb.target.triple
-        if triple in g_libheap_dylib_dict:
-            libheap_dylib_path = g_libheap_dylib_dict[triple]
-        else:
-            if not g_libheap_dylib_dir:
-                g_libheap_dylib_dir = tempfile.gettempdir() + '/lldb-dylibs'
-            triple_dir = g_libheap_dylib_dir + '/' + triple + '/' + __name__
-            if not os.path.exists(triple_dir):
-                os.makedirs(triple_dir)
-            libheap_dylib_path = triple_dir + '/libheap.dylib'
-            g_libheap_dylib_dict[triple] = libheap_dylib_path
-        heap_code_directory = os.path.dirname(__file__) + '/heap'
-        heap_source_file = heap_code_directory + '/heap_find.cpp'
-        # Check if the dylib doesn't exist, or if "heap_find.cpp" is newer than the dylib
-        if not os.path.exists(libheap_dylib_path) or os.stat(heap_source_file).st_mtime > os.stat(libheap_dylib_path).st_mtime:
-            # Remake the dylib
-            make_command = '(cd "%s" ; make EXE="%s" ARCH=%s)' % (heap_code_directory, libheap_dylib_path, string.split(triple, '-')[0])
-            (make_exit_status, make_output) = commands.getstatusoutput(make_command)
-            if make_exit_status != 0:
-                return 'error: make failed: %s' % (make_output)
-        if os.path.exists(libheap_dylib_path):
-            libheap_dylib_spec = lldb.SBFileSpec(libheap_dylib_path)
-            if lldb.target.FindModule(libheap_dylib_spec):
-                return None # success, 'libheap.dylib' already loaded
-            if lldb.process:
-                state = lldb.process.state
-                if state == lldb.eStateStopped:
-                    (libheap_dylib_path)
-                    error = lldb.SBError()
-                    image_idx = lldb.process.LoadImage(libheap_dylib_spec, error)
-                    if error.Success():
-                        return None
-                    else:
-                        if error:
-                            return 'error: %s' % error
-                        else:
-                            return 'error: "process load \'%s\'" failed' % libheap_dylib_spec
-                else:
-                    return 'error: process is not stopped'
-            else:
-                return 'error: invalid process'
-        else:
-            return 'error: file does not exist "%s"' % libheap_dylib_path
+def get_iterate_memory_expr(options, process, user_init_code, user_return_code):
+    expr = '''
+typedef unsigned natural_t;
+typedef uintptr_t vm_size_t;
+typedef uintptr_t vm_address_t;
+typedef natural_t task_t;
+typedef int kern_return_t;
+#define KERN_SUCCESS 0
+typedef void (*range_callback_t)(task_t task, void *baton, unsigned type, uintptr_t ptr_addr, uintptr_t ptr_size);
+''';
+    if options.search_vm_regions:
+        expr += '''
+typedef int vm_prot_t;
+typedef unsigned int vm_inherit_t;
+typedef unsigned long long	memory_object_offset_t;
+typedef unsigned int boolean_t;
+typedef int vm_behavior_t;
+typedef uint32_t vm32_object_id_t;
+typedef natural_t mach_msg_type_number_t;
+typedef uint64_t mach_vm_address_t;
+typedef uint64_t mach_vm_offset_t;
+typedef uint64_t mach_vm_size_t;
+typedef uint64_t vm_map_offset_t;
+typedef uint64_t vm_map_address_t;
+typedef uint64_t vm_map_size_t;
+#define	VM_PROT_NONE ((vm_prot_t) 0x00)
+#define VM_PROT_READ ((vm_prot_t) 0x01)
+#define VM_PROT_WRITE ((vm_prot_t) 0x02)
+#define VM_PROT_EXECUTE ((vm_prot_t) 0x04)
+typedef struct vm_region_submap_short_info_data_64_t {
+    vm_prot_t protection;
+    vm_prot_t max_protection;
+    vm_inherit_t inheritance;
+    memory_object_offset_t offset;		// offset into object/map
+    unsigned int user_tag;	// user tag on map entry
+    unsigned int ref_count;	 // obj/map mappers, etc
+    unsigned short shadow_depth; 	// only for obj
+    unsigned char external_pager;  // only for obj
+    unsigned char share_mode;	// see enumeration
+    boolean_t is_submap;	// submap vs obj
+    vm_behavior_t behavior;	// access behavior hint
+    vm32_object_id_t object_id;	// obj/map name, not a handle
+    unsigned short user_wired_count; 
+} vm_region_submap_short_info_data_64_t;
+#define VM_REGION_SUBMAP_SHORT_INFO_COUNT_64 ((mach_msg_type_number_t)(sizeof(vm_region_submap_short_info_data_64_t)/sizeof(int)))''';
+        if user_init_code:
+            expr += user_init_code;
+        expr += '''
+task_t task = (task_t)mach_task_self();
+mach_vm_address_t vm_region_base_addr;
+mach_vm_size_t vm_region_size;
+natural_t vm_region_depth;
+vm_region_submap_short_info_data_64_t vm_region_info;
+kern_return_t err;
+for (vm_region_base_addr = 0, vm_region_size = 1; vm_region_size != 0; vm_region_base_addr += vm_region_size)
+{
+    mach_msg_type_number_t vm_region_info_size = VM_REGION_SUBMAP_SHORT_INFO_COUNT_64;
+    err = (kern_return_t)mach_vm_region_recurse (task,
+                                                 &vm_region_base_addr,
+                                                 &vm_region_size,
+                                                 &vm_region_depth,
+                                                 &vm_region_info,
+                                                 &vm_region_info_size);
+    if (err)
+        break;
+    // Check all read + write regions. This will cover the thread stacks 
+    // and any regions of memory like __DATA segments, that might contain
+    // data we are looking for
+    if (vm_region_info.protection & VM_PROT_WRITE && 
+        vm_region_info.protection & VM_PROT_READ)
+    {
+        baton.callback (task, 
+                        &baton, 
+                        64, 
+                        vm_region_base_addr, 
+                        vm_region_size);
+    }
+}'''
     else:
-        return 'error: invalid target'
-        
-    debugger.HandleCommand('process load "%s"' % libheap_dylib_path)
-    if lldb.target.FindModule(libheap_dylib_spec):
-        return None # success, 'libheap.dylib' already loaded
-    return 'error: failed to load "%s"' % libheap_dylib_path
+        if options.search_stack:
+            expr += get_thread_stack_ranges_struct (process)
+        if options.search_segments:
+            expr += get_sections_ranges_struct (process)
+        if user_init_code:
+            expr += user_init_code
+        if options.search_heap:
+            expr += '''
+#define MALLOC_PTR_IN_USE_RANGE_TYPE 1
+typedef struct vm_range_t {
+    vm_address_t	address;
+    vm_size_t		size;
+} vm_range_t;
+typedef kern_return_t (*memory_reader_t)(task_t task, vm_address_t remote_address, vm_size_t size, void **local_memory);
+typedef void (*vm_range_recorder_t)(task_t task, void *baton, unsigned type, vm_range_t *range, unsigned size);
+typedef struct malloc_introspection_t {
+    kern_return_t (*enumerator)(task_t task, void *, unsigned type_mask, vm_address_t zone_address, memory_reader_t reader, vm_range_recorder_t recorder); /* enumerates all the malloc pointers in use */
+} malloc_introspection_t;
+typedef struct malloc_zone_t {
+    void *reserved1[12];
+    struct malloc_introspection_t	*introspect;
+} malloc_zone_t;
+memory_reader_t task_peek = [](task_t task, vm_address_t remote_address, vm_size_t size, void **local_memory) -> kern_return_t {
+    *local_memory = (void*) remote_address;
+    return KERN_SUCCESS;
+};
+vm_address_t *zones = 0;
+unsigned int num_zones = 0;task_t task = 0;
+kern_return_t err = (kern_return_t)malloc_get_all_zones (task, task_peek, &zones, &num_zones);
+if (KERN_SUCCESS == err)
+{
+    for (unsigned int i=0; i<num_zones; ++i)
+    {
+        const malloc_zone_t *zone = (const malloc_zone_t *)zones[i];
+        if (zone && zone->introspect)
+            zone->introspect->enumerator (task, 
+                                          &baton, 
+                                          MALLOC_PTR_IN_USE_RANGE_TYPE, 
+                                          (vm_address_t)zone, 
+                                          task_peek, 
+                                          [] (task_t task, void *baton, unsigned type, vm_range_t *ranges, unsigned size) -> void
+                                          {
+                                              range_callback_t callback = ((callback_baton_t *)baton)->callback;
+                                              for (unsigned i=0; i<size; ++i)
+                                              {
+                                                  callback (task, baton, type, ranges[i].address, ranges[i].size);
+                                              }
+                                          });    
+    }
+}'''
+
+        if options.search_stack:
+            expr += '''
+// Call the callback for the thread stack ranges
+for (uint32_t i=0; i<NUM_STACKS; ++i) {
+    range_callback(task, &baton, 8, stacks[i].base, stacks[i].size);
+    if (STACK_RED_ZONE_SIZE > 0) {
+        range_callback(task, &baton, 16, stacks[i].base - STACK_RED_ZONE_SIZE, STACK_RED_ZONE_SIZE);
+    }
+}
+    '''
+    
+        if options.search_segments:
+            expr += '''
+// Call the callback for all segments
+for (uint32_t i=0; i<NUM_SEGMENTS; ++i)
+    range_callback(task, &baton, 32, segments[i].base, segments[i].size);'''
+
+    if user_return_code:
+        expr += "\n%s" % (user_return_code,)
+    
+    return expr
 
 def get_member_types_for_offset(value_type, offset, member_list):
     member = value_type.GetFieldAtIndex(0)
@@ -131,28 +227,67 @@ def add_common_options(parser):
     parser.add_option('-I', '--omit-ivar-regex', type='string', action='callback', callback=append_regex_callback, dest='ivar_regex_blacklist', default=[], help='specify one or more regular expressions used to backlist any matches that are in ivars')
     parser.add_option('-s', '--stack', action='store_true', dest='stack', help='gets the stack that allocated each malloc block if MallocStackLogging is enabled', default=False)
     parser.add_option('-S', '--stack-history', action='store_true', dest='stack_history', help='gets the stack history for all allocations whose start address matches each malloc block if MallocStackLogging is enabled', default=False)
-    parser.add_option('-M', '--max-matches', type='int', dest='max_matches', help='the maximum number of matches to print', default=256)
+    parser.add_option('-F', '--max-frames', type='int', dest='max_frames', help='the maximum number of stack frames to print when using the --stack or --stack-history options (default=128)', default=128)
+    parser.add_option('-H', '--max-history', type='int', dest='max_history', help='the maximum number of stack history backtraces to print for each allocation when using the --stack-history option (default=16)', default=16)
+    parser.add_option('-M', '--max-matches', type='int', dest='max_matches', help='the maximum number of matches to print', default=32)
     parser.add_option('-O', '--offset', type='int', dest='offset', help='the matching data must be at this offset', default=-1)
-    parser.add_option('-V', '--vm-regions', action='store_true', dest='check_vm_regions', help='Also check the VM regions', default=False)
+    parser.add_option('--ignore-stack', action='store_false', dest='search_stack', help="Don't search the stack when enumerating memory", default=True)
+    parser.add_option('--ignore-heap', action='store_false', dest='search_heap', help="Don't search the heap allocations when enumerating memory", default=True)
+    parser.add_option('--ignore-segments', action='store_false', dest='search_segments', help="Don't search readable executable segments enumerating memory", default=True)
+    parser.add_option('-V', '--vm-regions', action='store_true', dest='search_vm_regions', help='Check all VM regions instead of searching the heap, stack and segments', default=False)
+
+def type_flags_to_string(type_flags):
+    if type_flags == 0:
+        type_str = 'free'
+    elif type_flags & 2:
+        type_str = 'malloc'
+    elif type_flags & 4:
+        type_str = 'free'
+    elif type_flags & 1:
+        type_str = 'generic'
+    elif type_flags & 8:
+        type_str = 'stack'
+    elif type_flags & 16:
+        type_str = 'stack (red zone)'
+    elif type_flags & 32:
+        type_str = 'segment'
+    elif type_flags & 64:
+        type_str = 'vm_region'
+    else:
+        type_str = hex(type_flags)
+    return type_str
 
-def dump_stack_history_entry(result, stack_history_entry, idx):
+def type_flags_to_description(type_flags, ptr_addr, ptr_size, offset):
+    show_offset = False
+    if type_flags == 0 or type_flags & 4:
+        type_str = 'free(%#x)' % (ptr_addr,)
+    elif type_flags & 2 or type_flags & 1:
+        type_str = 'malloc(%6u) -> %#x' % (ptr_size, ptr_addr)
+        show_offset = True
+    elif type_flags & 8:
+        type_str = 'stack'
+    elif type_flags & 16:
+        type_str = 'stack (red zone)'
+    elif type_flags & 32:
+        sb_addr = lldb.debugger.GetSelectedTarget().ResolveLoadAddress(ptr_addr + offset)
+        type_str = 'segment [%#x - %#x), %s + %u, %s' % (ptr_addr, ptr_addr + ptr_size, sb_addr.section.name, sb_addr.offset, sb_addr)
+    elif type_flags & 64:
+        sb_addr = lldb.debugger.GetSelectedTarget().ResolveLoadAddress(ptr_addr + offset)
+        type_str = 'vm_region [%#x - %#x), %s + %u, %s' % (ptr_addr, ptr_addr + ptr_size, sb_addr.section.name, sb_addr.offset, sb_addr)
+    else:
+        type_str = '%#x' % (ptr_addr,)
+        show_offset = True
+    if show_offset and offset != 0:
+        type_str += ' + %-6u' % (offset,)
+    return type_str
+    
+def dump_stack_history_entry(options, result, stack_history_entry, idx):
     address = int(stack_history_entry.address)
     if address:
         type_flags = int(stack_history_entry.type_flags)
         symbolicator = lldb.utils.symbolication.Symbolicator()
-        symbolicator.target = lldb.target
-        type_str = ''
-        if type_flags == 0:
-            type_str = 'free'
-        else:
-            if type_flags & 2:
-                type_str = 'alloc'
-            elif type_flags & 4:
-                type_str = 'free'
-            elif type_flags & 1:
-                type_str = 'generic'
-            else:
-                type_str = hex(type_flags)
+        symbolicator.target = lldb.debugger.GetSelectedTarget()
+        type_str = type_flags_to_string(type_flags)
         result.AppendMessage('stack[%u]: addr = 0x%x, type=%s, frames:' % (idx, address, type_str))
         frame_idx = 0
         idx = 0
@@ -171,28 +306,146 @@ def dump_stack_history_entry(result, sta
                 pc = int(stack_history_entry.frames[idx])
             else:
                 pc = 0
+        if idx >= options.max_frames:
+            result.AppendMessage('warning: the max number of stack frames (%u) was reached, use the "--max-frames=<COUNT>" option to see more frames' % (options.max_frames))
+            
         result.AppendMessage('')
             
-def dump_stack_history_entries(result, addr, history):
+def dump_stack_history_entries(options, result, addr, history):
     # malloc_stack_entry *get_stack_history_for_address (const void * addr)
-    expr = 'get_stack_history_for_address((void *)0x%x, %u)' % (addr, history)
-    expr_sbvalue = lldb.frame.EvaluateExpression (expr)
+    single_expr = '''
+typedef int kern_return_t;
+#define MAX_FRAMES %u
+typedef struct $malloc_stack_entry {
+    uint64_t address;
+    uint64_t argument;
+    uint32_t type_flags;
+    uint32_t num_frames;
+    uint64_t frames[512];
+    kern_return_t err;
+} $malloc_stack_entry;
+typedef unsigned task_t;
+$malloc_stack_entry stack;
+stack.address = 0x%x;
+stack.type_flags = 2;
+stack.num_frames = 0;
+stack.frames[0] = 0;
+uint32_t max_stack_frames = MAX_FRAMES;
+stack.err = (kern_return_t)__mach_stack_logging_get_frames (
+    (task_t)mach_task_self(), 
+    stack.address, 
+    &stack.frames[0], 
+    max_stack_frames, 
+    &stack.num_frames);
+if (stack.num_frames < MAX_FRAMES)
+    stack.frames[stack.num_frames] = 0;
+else
+    stack.frames[MAX_FRAMES-1] = 0;
+stack''' % (options.max_frames, addr);
+
+    history_expr = '''
+typedef int kern_return_t;
+typedef unsigned task_t;
+#define MAX_FRAMES %u
+#define MAX_HISTORY %u
+typedef struct mach_stack_logging_record_t {
+	uint32_t type_flags;
+	uint64_t stack_identifier;
+	uint64_t argument;
+	uint64_t address;
+} mach_stack_logging_record_t;
+typedef void (*enumerate_callback_t)(mach_stack_logging_record_t, void *);
+typedef struct malloc_stack_entry {
+    uint64_t address;
+    uint64_t argument;
+    uint32_t type_flags;
+    uint32_t num_frames;
+    uint64_t frames[MAX_FRAMES];
+    kern_return_t frames_err;    
+} malloc_stack_entry;
+typedef struct $malloc_stack_history {
+    task_t task;
+    unsigned idx;
+    malloc_stack_entry entries[MAX_HISTORY];
+} $malloc_stack_history;
+$malloc_stack_history info = { (task_t)mach_task_self(), 0 };
+uint32_t max_stack_frames = MAX_FRAMES;
+enumerate_callback_t callback = [] (mach_stack_logging_record_t stack_record, void *baton) -> void {
+    $malloc_stack_history *info = ($malloc_stack_history *)baton;
+    if (info->idx < MAX_HISTORY) {
+        malloc_stack_entry *stack_entry = &(info->entries[info->idx]);
+        stack_entry->address = stack_record.address;
+        stack_entry->type_flags = stack_record.type_flags;
+        stack_entry->argument = stack_record.argument;
+        stack_entry->num_frames = 0;
+        stack_entry->frames[0] = 0;
+        stack_entry->frames_err = (kern_return_t)__mach_stack_logging_frames_for_uniqued_stack (
+            info->task, 
+            stack_record.stack_identifier,
+            stack_entry->frames,
+            (uint32_t)MAX_FRAMES,
+            &stack_entry->num_frames);
+        // Terminate the frames with zero if there is room
+        if (stack_entry->num_frames < MAX_FRAMES)
+            stack_entry->frames[stack_entry->num_frames] = 0; 
+    }
+    ++info->idx;
+};
+(kern_return_t)__mach_stack_logging_enumerate_records (info.task, (uint64_t)0x%x, callback, &info);
+info''' % (options.max_frames, options.max_history, addr);
+
+    frame = lldb.debugger.GetSelectedTarget().GetProcess().GetSelectedThread().GetSelectedFrame()
+    if history:
+        expr = history_expr
+    else:
+        expr = single_expr
+    expr_options = lldb.SBExpressionOptions()
+    expr_options.SetIgnoreBreakpoints(True);
+    expr_options.SetTimeoutInMicroSeconds (5*1000*1000) # 5 second timeout
+    expr_options.SetTryAllThreads (True)
+    expr_sbvalue = frame.EvaluateExpression (expr, expr_options)
+    if options.verbose:
+        print "expression:"
+        print expr
+        print "expression result:"
+        print expr_sbvalue
     if expr_sbvalue.error.Success():
-        if expr_sbvalue.unsigned:
-            expr_value = lldb.value(expr_sbvalue)  
-            idx = 0;
-            stack_history_entry = expr_value[idx]
-            while int(stack_history_entry.address) != 0:
-                dump_stack_history_entry(result, stack_history_entry, idx)
-                idx = idx + 1
-                stack_history_entry = expr_value[idx]
+        if history:
+            malloc_stack_history = lldb.value(expr_sbvalue)
+            num_stacks = int(malloc_stack_history.idx)
+            if num_stacks <= options.max_history:
+                i_max = num_stacks
+            else:
+                i_max = options.max_history
+            for i in range(i_max):
+                stack_history_entry = malloc_stack_history.entries[i]
+                dump_stack_history_entry(options, result, stack_history_entry, i)
+            if num_stacks > options.max_history:
+                result.AppendMessage('warning: the max number of stacks (%u) was reached, use the "--max-history=%u" option to see all of the stacks' % (options.max_history, num_stacks))
         else:
-            result.AppendMessage('"%s" returned zero' % (expr))
+            stack_history_entry = lldb.value(expr_sbvalue)
+            dump_stack_history_entry(options, result, stack_history_entry, 0)
+            
     else:
         result.AppendMessage('error: expression failed "%s" => %s' % (expr, expr_sbvalue.error))
-    
 
-def display_match_results (result, options, arg_str_description, expr_sbvalue, print_no_matches = True):
+
+def display_match_results (result, options, arg_str_description, expr, print_no_matches = True):
+    frame = lldb.debugger.GetSelectedTarget().GetProcess().GetSelectedThread().GetSelectedFrame()
+    if not frame:
+        result.AppendMessage('error: invalid frame')
+        return 0
+    expr_options = lldb.SBExpressionOptions()
+    expr_options.SetIgnoreBreakpoints(True);
+    expr_options.SetFetchDynamicValue(lldb.eNoDynamicValues);
+    expr_options.SetTimeoutInMicroSeconds (30*1000*1000) # 30 second timeout
+    expr_options.SetTryAllThreads (False)
+    expr_sbvalue = frame.EvaluateExpression (expr, expr_options)
+    if options.verbose:
+        print "expression:"
+        print expr
+        print "expression result:"
+        print expr_sbvalue
     if expr_sbvalue.error.Success():
         if expr_sbvalue.unsigned:
             match_value = lldb.value(expr_sbvalue)  
@@ -201,8 +454,8 @@ def display_match_results (result, optio
             while 1:
                 print_entry = True
                 match_entry = match_value[i]; i += 1
-                if i >= options.max_matches:
-                    result.AppendMessage('error: the max number of matches (%u) was reached, use the --max-matches option to get more results' % (options.max_matches))
+                if i > options.max_matches:
+                    result.AppendMessage('warning: the max number of matches (%u) was reached, use the --max-matches option to get more results' % (options.max_matches))
                     break
                 malloc_addr = match_entry.addr.sbvalue.unsigned
                 if malloc_addr == 0:
@@ -214,75 +467,90 @@ def display_match_results (result, optio
                     print_entry = False
                 else:                    
                     match_addr = malloc_addr + offset
-                    dynamic_value = match_entry.addr.sbvalue.GetDynamicValue(lldb.eDynamicCanRunTarget)
-                    description = '%#x: ' % (match_addr)
-                    if options.show_size:
-                        description += '<%5u> ' % (malloc_size)
-                    if options.show_range:
-                        if offset > 0:
-                            description += '[%#x - %#x) + %-6u ' % (malloc_addr, malloc_addr + malloc_size, offset)
+                    type_flags = int(match_entry.type)
+                    #result.AppendMessage (hex(malloc_addr + offset))
+                    if type_flags == 64:
+                        search_stack_old = options.search_stack
+                        search_segments_old = options.search_segments
+                        search_heap_old = options.search_heap
+                        search_vm_regions = options.search_vm_regions
+                        options.search_stack = True
+                        options.search_segments = True
+                        options.search_heap = True
+                        options.search_vm_regions = False
+                        if malloc_info_impl (lldb.debugger, result, options, [hex(malloc_addr + offset)]):
+                            print_entry = False
+                        options.search_stack = search_stack_old
+                        options.search_segments = search_segments_old
+                        options.search_heap = search_heap_old
+                        options.search_vm_regions = search_vm_regions
+                    if print_entry:
+                        description = '%#16.16x: %s' % (match_addr, type_flags_to_description(type_flags, malloc_addr, malloc_size, offset))
+                        if options.show_size:
+                            description += ' <%5u>' % (malloc_size)
+                        if options.show_range:
+                            description += ' [%#x - %#x)' % (malloc_addr, malloc_addr + malloc_size)
+                        derefed_dynamic_value = None
+                        dynamic_value = match_entry.addr.sbvalue.GetDynamicValue(lldb.eDynamicCanRunTarget)
+                        if dynamic_value.type.name == 'void *':
+                            if options.type == 'pointer' and malloc_size == 4096:
+                                error = lldb.SBError()
+                                process = expr_sbvalue.GetProcess()
+                                target = expr_sbvalue.GetTarget()
+                                data = bytearray(process.ReadMemory(malloc_addr, 16, error))
+                                if data == '\xa1\xa1\xa1\xa1AUTORELEASE!':
+                                    ptr_size = target.addr_size
+                                    thread = process.ReadUnsignedFromMemory (malloc_addr + 16 + ptr_size, ptr_size, error)
+                                    #   4 bytes  0xa1a1a1a1
+                                    #  12 bytes  'AUTORELEASE!'
+                                    # ptr bytes  autorelease insertion point
+                                    # ptr bytes  pthread_t
+                                    # ptr bytes  next colder page
+                                    # ptr bytes  next hotter page
+                                    #   4 bytes  this page's depth in the list
+                                    #   4 bytes  high-water mark
+                                    description += ' AUTORELEASE! for pthread_t %#x' % (thread)
+                            #     else:
+                            #         description += 'malloc(%u)' % (malloc_size)
+                            # else:
+                            #     description += 'malloc(%u)' % (malloc_size)
                         else:
-                            description += '[%#x - %#x)' % (malloc_addr, malloc_addr + malloc_size)
-                    else:
-                        if options.type != 'isa':
-                            description += '%#x + %-6u ' % (malloc_addr, offset)
-                    derefed_dynamic_value = None
-                    if dynamic_value.type.name == 'void *':
-                        if options.type == 'pointer' and malloc_size == 4096:
-                            error = lldb.SBError()
-                            data = bytearray(lldb.process.ReadMemory(malloc_addr, 16, error))
-                            if data == '\xa1\xa1\xa1\xa1AUTORELEASE!':
-                                ptr_size = lldb.target.addr_size
-                                thread = lldb.process.ReadUnsignedFromMemory (malloc_addr + 16 + ptr_size, ptr_size, error)
-                                #   4 bytes  0xa1a1a1a1
-                                #  12 bytes  'AUTORELEASE!'
-                                # ptr bytes  autorelease insertion point
-                                # ptr bytes  pthread_t
-                                # ptr bytes  next colder page
-                                # ptr bytes  next hotter page
-                                #   4 bytes  this page's depth in the list
-                                #   4 bytes  high-water mark
-                                description += 'AUTORELEASE! for pthread_t %#x' % (thread)
+                            derefed_dynamic_value = dynamic_value.deref
+                            if derefed_dynamic_value:                        
+                                derefed_dynamic_type = derefed_dynamic_value.type
+                                derefed_dynamic_type_size = derefed_dynamic_type.size
+                                derefed_dynamic_type_name = derefed_dynamic_type.name
+                                description += ' '
+                                description += derefed_dynamic_type_name
+                                if offset < derefed_dynamic_type_size:
+                                    member_list = list();
+                                    get_member_types_for_offset (derefed_dynamic_type, offset, member_list)
+                                    if member_list:
+                                        member_path = ''
+                                        for member in member_list:
+                                            member_name = member.name
+                                            if member_name: 
+                                                if member_path:
+                                                    member_path += '.'
+                                                member_path += member_name
+                                        if member_path:
+                                            if options.ivar_regex_blacklist:
+                                                for ivar_regex in options.ivar_regex_blacklist:
+                                                    if ivar_regex.match(member_path):
+                                                        print_entry = False
+                                            description += '.%s' % (member_path)
+                                else:
+                                    description += '%u bytes after %s' % (offset - derefed_dynamic_type_size, derefed_dynamic_type_name)
                             else:
-                                description += 'malloc(%u)' % (malloc_size)
-                        else:
-                            description += 'malloc(%u)' % (malloc_size)
-                    else:
-                        derefed_dynamic_value = dynamic_value.deref
-                        if derefed_dynamic_value:                        
-                            derefed_dynamic_type = derefed_dynamic_value.type
-                            derefed_dynamic_type_size = derefed_dynamic_type.size
-                            derefed_dynamic_type_name = derefed_dynamic_type.name
-                            description += derefed_dynamic_type_name
-                            if offset < derefed_dynamic_type_size:
-                                member_list = list();
-                                get_member_types_for_offset (derefed_dynamic_type, offset, member_list)
-                                if member_list:
-                                    member_path = ''
-                                    for member in member_list:
-                                        member_name = member.name
-                                        if member_name: 
-                                            if member_path:
-                                                member_path += '.'
-                                            member_path += member_name
-                                    if member_path:
-                                        if options.ivar_regex_blacklist:
-                                            for ivar_regex in options.ivar_regex_blacklist:
-                                                if ivar_regex.match(member_path):
-                                                    print_entry = False
-                                        description += '.%s' % (member_path)
-                            else:
-                                description += '%u bytes after %s' % (offset - derefed_dynamic_type_size, derefed_dynamic_type_name)
-                        else:
-                            # strip the "*" from the end of the name since we were unable to dereference this
-                            description += dynamic_value.type.name[0:-1]
+                                # strip the "*" from the end of the name since we were unable to dereference this
+                                description += dynamic_value.type.name[0:-1]
                 if print_entry:
                     match_idx += 1
                     result_output = ''
                     if description:
                         result_output += description
                         if options.print_type and derefed_dynamic_value:
-                            result_output += '%s' % (derefed_dynamic_value)
+                            result_output += ' %s' % (derefed_dynamic_value)
                         if options.print_object_description and dynamic_value:
                             desc = dynamic_value.GetObjectDescription()
                             if desc:
@@ -291,13 +559,18 @@ def display_match_results (result, optio
                         result.AppendMessage(result_output)
                     if options.memory:
                         cmd_result = lldb.SBCommandReturnObject()
-                        memory_command = "memory read -f %s 0x%x 0x%x" % (options.format, malloc_addr, malloc_addr + malloc_size)
+                        if options.format == None:
+                            memory_command = "memory read --force 0x%x 0x%x" % (malloc_addr, malloc_addr + malloc_size)
+                        else:
+                            memory_command = "memory read --force -f %s 0x%x 0x%x" % (options.format, malloc_addr, malloc_addr + malloc_size)
+                        if options.verbose:
+                            result.AppendMessage(memory_command)
                         lldb.debugger.GetCommandInterpreter().HandleCommand(memory_command, cmd_result)
                         result.AppendMessage(cmd_result.GetOutput())
                     if options.stack_history:
-                        dump_stack_history_entries(result, malloc_addr, 1)
+                        dump_stack_history_entries(options, result, malloc_addr, 1)
                     elif options.stack:
-                        dump_stack_history_entries(result, malloc_addr, 0)
+                        dump_stack_history_entries(options, result, malloc_addr, 0)
             return i
         elif print_no_matches:
             result.AppendMessage('no matches found for %s' % (arg_str_description))
@@ -305,181 +578,332 @@ def display_match_results (result, optio
         result.AppendMessage(str(expr_sbvalue.error))
     return 0
     
-def heap_search(result, options, arg_str):
-    dylid_load_err = load_dylib()
-    if dylid_load_err:
-        result.AppendMessage(dylid_load_err)
-        return
-    expr = None
-    print_no_matches = True
-    arg_str_description = arg_str
-    if options.type == 'pointer':
-        expr = 'find_pointer_in_heap((void *)%s, (int)%u)' % (arg_str, options.check_vm_regions)
-        arg_str_description = 'malloc block containing pointer %s' % arg_str
-        if options.format == None: 
-            options.format = "A" # 'A' is "address" format
-    elif options.type == 'isa':
-        expr = 'find_objc_objects_in_memory ((void *)%s, (int)%u)' % (arg_str, options.check_vm_regions)
-        #result.AppendMessage ('expr -u0 -- %s' % expr) # REMOVE THIS LINE
-        arg_str_description = 'objective C classes with isa %s' % arg_str
-        options.offset = 0
-        if options.format == None: 
-            options.format = "A" # 'A' is "address" format
-    elif options.type == 'cstr':
-        expr = 'find_cstring_in_heap("%s", (int)%u)' % (arg_str, options.check_vm_regions)
-        arg_str_description = 'malloc block containing "%s"' % arg_str
-    elif options.type == 'addr':
-        expr = 'find_block_for_address((void *)%s, (int)%u)' % (arg_str, options.check_vm_regions)
-        arg_str_description = 'malloc block for %s' % arg_str
-    elif options.type == 'all':
-        expr = 'get_heap_info(1)'
-        arg_str_description = None
-        print_no_matches = False
-    else:
-        result.AppendMessage('error: invalid type "%s"\nvalid values are "pointer", "cstr"' % options.type)
-        return
-    if options.format == None: 
-        options.format = "Y" # 'Y' is "bytes with ASCII" format
-    
-    display_match_results (result, options, arg_str_description, lldb.frame.EvaluateExpression (expr))
-    
-def ptr_refs(debugger, command, result, dict):
-    command_args = shlex.split(command)
+def get_ptr_refs_options ():
     usage = "usage: %prog [options] <EXPR> [EXPR ...]"
-    description='''Searches the heap for pointer references on darwin user space programs. 
-    
-    Any matches that were found will dump the malloc blocks that contain the pointers 
-    and might be able to print what kind of objects the pointers are contained in using 
-    dynamic type information in the program.'''
+    description='''Searches all allocations on the heap for pointer values on 
+darwin user space programs. Any matches that were found will dump the malloc 
+blocks that contain the pointers and might be able to print what kind of 
+objects the pointers are contained in using dynamic type information in the
+program.'''
     parser = optparse.OptionParser(description=description, prog='ptr_refs',usage=usage)
     add_common_options(parser)
+    return parser
+    
+def ptr_refs(debugger, command, result, dict):
+    command_args = shlex.split(command)
+    parser = get_ptr_refs_options()
     try:
         (options, args) = parser.parse_args(command_args)
     except:
         return
 
+    process = lldb.debugger.GetSelectedTarget().GetProcess()
+    if not process:
+        result.AppendMessage('error: invalid process')
+        return
+    frame = process.GetSelectedThread().GetSelectedFrame()
+    if not frame:
+        result.AppendMessage('error: invalid frame')
+        return
+
     options.type = 'pointer'
-    
+    if options.format == None: 
+        options.format = "A" # 'A' is "address" format
+
     if args:
-        
-        for data in args:
-            heap_search (result, options, data)
+        # When we initialize the expression, we must define any types that
+        # we will need when looking at every allocation. We must also define
+        # a type named callback_baton_t and make an instance named "baton" 
+        # and initialize it how ever we want to. The address of "baton" will
+        # be passed into our range callback. callback_baton_t must contain
+        # a member named "callback" whose type is "range_callback_t". This
+        # will be used by our zone callbacks to call the range callback for
+        # each malloc range.
+        user_init_code_format = '''
+#define MAX_MATCHES %u
+struct $malloc_match {
+    void *addr;
+    uintptr_t size;
+    uintptr_t offset;
+    uintptr_t type;
+};
+typedef struct callback_baton_t {
+    range_callback_t callback;
+    unsigned num_matches;
+    $malloc_match matches[MAX_MATCHES];
+    void *ptr;
+} callback_baton_t;
+range_callback_t range_callback = [](task_t task, void *baton, unsigned type, uintptr_t ptr_addr, uintptr_t ptr_size) -> void {
+    callback_baton_t *info = (callback_baton_t *)baton;
+    typedef void* T;
+    const unsigned size = sizeof(T);
+    T *array = (T*)ptr_addr;
+    for (unsigned idx = 0; ((idx + 1) * sizeof(T)) <= ptr_size; ++idx) {  
+        if (array[idx] == info->ptr) {
+            if (info->num_matches < MAX_MATCHES) {
+                info->matches[info->num_matches].addr = (void*)ptr_addr;
+                info->matches[info->num_matches].size = ptr_size;
+                info->matches[info->num_matches].offset = idx*sizeof(T);
+                info->matches[info->num_matches].type = type;
+                ++info->num_matches;
+            }
+        }
+    }
+};
+callback_baton_t baton = { range_callback, 0, {0}, (void *)%s };
+'''
+        # We must also define a snippet of code to be run that returns
+        # the result of the expression we run.
+        # Here we return NULL if our pointer was not found in any malloc blocks,
+        # and we return the address of the matches array so we can then access
+        # the matching results
+        user_return_code = '''if (baton.num_matches < MAX_MATCHES)
+    baton.matches[baton.num_matches].addr = 0; // Terminate the matches array
+baton.matches'''
+        # Iterate through all of our pointer expressions and display the results
+        for ptr_expr in args:
+            user_init_code = user_init_code_format % (options.max_matches, ptr_expr)
+            expr = get_iterate_memory_expr(options, process, user_init_code, user_return_code)          
+            arg_str_description = 'malloc block containing pointer %s' % ptr_expr
+            display_match_results (result, options, arg_str_description, expr)
     else:
-        resultresult.AppendMessage('error: no pointer arguments were given')
+        result.AppendMessage('error: no pointer arguments were given')
 
-def cstr_refs(debugger, command, result, dict):
-    command_args = shlex.split(command)
+def get_cstr_refs_options():
     usage = "usage: %prog [options] <CSTR> [CSTR ...]"
-    description='''Searches the heap for C string references on darwin user space programs. 
-    
-    Any matches that were found will dump the malloc blocks that contain the C strings 
-    and might be able to print what kind of objects the pointers are contained in using 
-    dynamic type information in the program.'''
+    description='''Searches all allocations on the heap for C string values on
+darwin user space programs. Any matches that were found will dump the malloc
+blocks that contain the C strings and might be able to print what kind of
+objects the pointers are contained in using dynamic type information in the
+program.'''
     parser = optparse.OptionParser(description=description, prog='cstr_refs',usage=usage)
     add_common_options(parser)
+    return parser
+
+def cstr_refs(debugger, command, result, dict):
+    command_args = shlex.split(command)
+    parser = get_cstr_refs_options();
     try:
         (options, args) = parser.parse_args(command_args)
     except:
         return
 
+    process = lldb.debugger.GetSelectedTarget().GetProcess()
+    if not process:
+        result.AppendMessage('error: invalid process')
+        return
+    frame = process.GetSelectedThread().GetSelectedFrame()
+    if not frame:
+        result.AppendMessage('error: invalid frame')
+        return
+
+
     options.type = 'cstr'
+    if options.format == None: 
+        options.format = "Y" # 'Y' is "bytes with ASCII" format
 
     if args:
-
-        for data in args:
-            heap_search (result, options, data)
+        # When we initialize the expression, we must define any types that
+        # we will need when looking at every allocation. We must also define
+        # a type named callback_baton_t and make an instance named "baton" 
+        # and initialize it how ever we want to. The address of "baton" will
+        # be passed into our range callback. callback_baton_t must contain
+        # a member named "callback" whose type is "range_callback_t". This
+        # will be used by our zone callbacks to call the range callback for
+        # each malloc range.
+        user_init_code_format = '''
+#define MAX_MATCHES %u
+struct $malloc_match {
+    void *addr;
+    uintptr_t size;
+    uintptr_t offset;
+    uintptr_t type;
+};
+typedef struct callback_baton_t {
+    range_callback_t callback;
+    unsigned num_matches;
+    $malloc_match matches[MAX_MATCHES];
+    const char *cstr;
+    unsigned cstr_len;
+} callback_baton_t;
+range_callback_t range_callback = [](task_t task, void *baton, unsigned type, uintptr_t ptr_addr, uintptr_t ptr_size) -> void {
+    callback_baton_t *info = (callback_baton_t *)baton;
+    if (info->cstr_len < ptr_size) {
+        const char *begin = (const char *)ptr_addr;
+        const char *end = begin + ptr_size - info->cstr_len;
+        for (const char *s = begin; s < end; ++s) {
+            if ((int)memcmp(s, info->cstr, info->cstr_len) == 0) {
+                if (info->num_matches < MAX_MATCHES) {
+                    info->matches[info->num_matches].addr = (void*)ptr_addr;
+                    info->matches[info->num_matches].size = ptr_size;
+                    info->matches[info->num_matches].offset = s - begin;
+                    info->matches[info->num_matches].type = type;
+                    ++info->num_matches;
+                }
+            }
+        }
+    }
+};
+const char *cstr = "%s";
+callback_baton_t baton = { range_callback, 0, {0}, cstr, (unsigned)strlen(cstr) };'''
+        # We must also define a snippet of code to be run that returns
+        # the result of the expression we run.
+        # Here we return NULL if our pointer was not found in any malloc blocks,
+        # and we return the address of the matches array so we can then access
+        # the matching results
+        user_return_code = '''if (baton.num_matches < MAX_MATCHES)
+    baton.matches[baton.num_matches].addr = 0; // Terminate the matches array
+baton.matches'''
+        # Iterate through all of our pointer expressions and display the results
+        for cstr in args:
+            user_init_code = user_init_code_format % (options.max_matches, cstr)
+            expr = get_iterate_memory_expr(options, process, user_init_code, user_return_code)          
+            arg_str_description = 'malloc block containing "%s"' % cstr            
+            display_match_results (result, options, arg_str_description, expr)
     else:
-        result.AppendMessage('error: no c string arguments were given to search for');
+        result.AppendMessage('error: command takes one or more C string arguments')
 
-def malloc_info(debugger, command, result, dict):
-    command_args = shlex.split(command)
-    usage = "usage: %prog [options] <EXPR> [EXPR ...]"
-    description='''Searches the heap a malloc block that contains the addresses specified as arguments. 
 
-    Any matches that were found will dump the malloc blocks that match or contain
-    the specified address. The matching blocks might be able to show what kind 
-    of objects they are using dynamic type information in the program.'''
-    parser = optparse.OptionParser(description=description, prog='cstr_refs',usage=usage)
+def get_malloc_info_options():
+    usage = "usage: %prog [options] <EXPR> [EXPR ...]"
+    description='''Searches the heap a malloc block that contains the addresses
+specified as one or more address expressions. Any matches that were found will
+dump the malloc blocks that match or contain the specified address. The matching
+blocks might be able to show what kind of objects they are using dynamic type
+information in the program.'''
+    parser = optparse.OptionParser(description=description, prog='malloc_info',usage=usage)
     add_common_options(parser)
-    try:
-        (options, args) = parser.parse_args(command_args)
-    except:
-        return
-    options.type = 'addr'
-    if args:
-        for data in args:
-            heap_search (result, options, data)
-    else:
-        result.AppendMessage('error: no c string arguments were given to search for')
+    return parser
 
-def heap(debugger, command, result, dict):
+def malloc_info(debugger, command, result, dict):
     command_args = shlex.split(command)
-    usage = "usage: %prog [options] <EXPR> [EXPR ...]"
-    description='''Traverse all allocations on the heap and report statistics.
-
-    If programs set the MallocStackLogging=1 in the environment, then stack
-    history is available for any allocations. '''
-    parser = optparse.OptionParser(description=description, prog='cstr_refs',usage=usage)
-    add_common_options(parser)
+    parser = get_malloc_info_options()
     try:
         (options, args) = parser.parse_args(command_args)
     except:
         return
-    options.type = 'all'
+    malloc_info_impl (debugger, result, options, args)
+
+def malloc_info_impl (debugger, result, options, args):
+    # We are specifically looking for something on the heap only
+    options.type = 'malloc_info'
+
+    process = lldb.debugger.GetSelectedTarget().GetProcess()
+    if not process:
+        result.AppendMessage('error: invalid process')
+        return
+    frame = process.GetSelectedThread().GetSelectedFrame()
+    if not frame:
+        result.AppendMessage('error: invalid frame')
+        return
+    
+    user_init_code_format = '''
+struct $malloc_match {
+    void *addr;
+    uintptr_t size;
+    uintptr_t offset;
+    uintptr_t type;
+};
+typedef struct callback_baton_t {
+    range_callback_t callback;
+    unsigned num_matches;
+    $malloc_match matches[2]; // Two items so they can be NULL terminated
+    void *ptr;
+} callback_baton_t;
+range_callback_t range_callback = [](task_t task, void *baton, unsigned type, uintptr_t ptr_addr, uintptr_t ptr_size) -> void {
+    callback_baton_t *info = (callback_baton_t *)baton;
+    if (info->num_matches == 0) {
+        uint8_t *p = (uint8_t *)info->ptr;
+        uint8_t *lo = (uint8_t *)ptr_addr;
+        uint8_t *hi = lo + ptr_size;
+        if (lo <= p && p < hi) {
+            info->matches[info->num_matches].addr = (void*)ptr_addr;
+            info->matches[info->num_matches].size = ptr_size;
+            info->matches[info->num_matches].offset = p - lo;
+            info->matches[info->num_matches].type = type;
+            info->num_matches = 1;
+        }
+    }
+};
+callback_baton_t baton = { range_callback, 0, {0}, (void *)%s };
+baton.matches[0].addr = 0;
+baton.matches[1].addr = 0;'''
     if args:
-        result.AppendMessage('error: heap command takes no arguments, only options')
+        total_matches = 0
+        for ptr_expr in args:
+            user_init_code = user_init_code_format % (ptr_expr)
+            expr = get_iterate_memory_expr(options, process, user_init_code, 'baton.matches')          
+            arg_str_description = 'malloc block that contains %s' % ptr_expr
+            total_matches += display_match_results (result, options, arg_str_description, expr)
+        return total_matches
     else:
-        heap_search (result, options, None)
+        result.AppendMessage('error: command takes one or more pointer expressions')
+        return 0
 
-def stack_ptr_refs(debugger, command, result, dict):
-    command_args = shlex.split(command)
-    usage = "usage: %prog [options] <EXPR> [EXPR ...]"
-    description='''Searches thread stack contents for pointer values in darwin user space programs.'''
-    parser = optparse.OptionParser(description=description, prog='section_ptr_refs',usage=usage)
-    add_common_options(parser)
-    try:
-        (options, args) = parser.parse_args(command_args)
-    except:
-        return
+def get_thread_stack_ranges_struct (process):
+    '''Create code that defines a structure that represents threads stack bounds
+    for all  threads. It returns a static sized array initialized with all of
+    the tid, base, size structs for all the threads.'''
+    stack_dicts = list()
+    if process:
+        i = 0;
+        for thread in process:
+            min_sp = thread.frame[0].sp
+            max_sp = min_sp
+            for frame in thread.frames:
+                sp = frame.sp
+                if sp < min_sp: min_sp = sp
+                if sp > max_sp: max_sp = sp
+            if min_sp < max_sp:
+                stack_dicts.append ({ 'tid' : thread.GetThreadID(), 'base' : min_sp  , 'size' : max_sp-min_sp, 'index' : i })
+                i += 1
+    stack_dicts_len = len(stack_dicts)
+    if stack_dicts_len > 0:
+        result = '''
+#define NUM_STACKS %u
+#define STACK_RED_ZONE_SIZE %u
+typedef struct thread_stack_t { uint64_t tid, base, size; } thread_stack_t;
+thread_stack_t stacks[NUM_STACKS];''' % (stack_dicts_len, process.target.GetStackRedZoneSize())
+        for stack_dict in stack_dicts:
+            result += '''
+stacks[%(index)u].tid  = 0x%(tid)x;
+stacks[%(index)u].base = 0x%(base)x;
+stacks[%(index)u].size = 0x%(size)x;''' % stack_dict
+        return result
+    else:
+        return None
 
-    options.type = 'pointer'
-    
-    stack_threads = list()
-    stack_bases = list()
-    stack_sizes = list()
-    for thread in lldb.process:
-        min_sp = thread.frame[0].sp
-        max_sp = min_sp
-        for frame in thread.frames:
-            sp = frame.sp
-            if sp < min_sp: min_sp = sp
-            if sp > max_sp: max_sp = sp
-        result.AppendMessage ('%s stack [%#x - %#x)' % (thread, min_sp, max_sp))
-        if min_sp < max_sp:
-            stack_threads.append (thread)
-            stack_bases.append (min_sp)
-            stack_sizes.append (max_sp-min_sp)
-        
-    if stack_bases:
-        dylid_load_err = load_dylib()
-        if dylid_load_err:
-            result.AppendMessage(dylid_load_err)
-            return
-        for expr_str in args:
-            for (idx, stack_base) in enumerate(stack_bases):
-                stack_size = stack_sizes[idx]
-                expr = 'find_pointer_in_memory(0x%xllu, %ullu, (void *)%s)' % (stack_base, stack_size, expr_str)
-                arg_str_description = 'thead %s stack containing "%s"' % (stack_threads[idx], expr_str)
-                num_matches = display_match_results (result, options, arg_str_description, lldb.frame.EvaluateExpression (expr), False)
-                if num_matches:
-                    if num_matches < options.max_matches:
-                        options.max_matches = options.max_matches - num_matches
-                    else:
-                        options.max_matches = 0
-                if options.max_matches == 0:
-                    return
+def get_sections_ranges_struct (process):
+    '''Create code that defines a structure that represents all segments that
+    can contain data for all images in "target". It returns a static sized 
+    array initialized with all of base, size structs for all the threads.'''
+    target = process.target
+    segment_dicts = list()
+    for (module_idx, module) in enumerate(target.modules):
+        for sect_idx in range(module.GetNumSections()):
+            section = module.GetSectionAtIndex(sect_idx)
+            if not section:
+                break
+            name = section.name
+            if name != '__TEXT' and name != '__LINKEDIT' and name != '__PAGEZERO':
+                base = section.GetLoadAddress(target)
+                size = section.GetByteSize()
+                if base != lldb.LLDB_INVALID_ADDRESS and size > 0:
+                    segment_dicts.append ({ 'base' : base, 'size' : size })
+    segment_dicts_len = len(segment_dicts)
+    if segment_dicts_len > 0:
+        result = '''
+#define NUM_SEGMENTS %u
+typedef struct segment_range_t { uint64_t base; uint32_t size; } segment_range_t;
+segment_range_t segments[NUM_SEGMENTS];''' % (segment_dicts_len,)
+        for (idx, segment_dict) in enumerate(segment_dicts):
+            segment_dict['index'] = idx
+            result += '''
+segments[%(index)u].base = 0x%(base)x;
+segments[%(index)u].size = 0x%(size)x;''' % segment_dict
+        return result
     else:
-        result.AppendMessage('error: no thread stacks were found that match any of %s' % (', '.join(options.section_names)))
+        return None
 
 def section_ptr_refs(debugger, command, result, dict):
     command_args = shlex.split(command)
@@ -501,7 +925,8 @@ def section_ptr_refs(debugger, command,
         result.AppendMessage('error: at least one section must be specified with the --section option')
         return
 
-    for module in lldb.target.modules:
+    target = lldb.debugger.GetSelectedTarget()
+    for module in target.modules:
         for section_name in options.section_names:
             section = module.section[section_name]
             if section:
@@ -512,11 +937,12 @@ def section_ptr_refs(debugger, command,
         if dylid_load_err:
             result.AppendMessage(dylid_load_err)
             return
+        frame = target.GetProcess().GetSelectedThread().GetSelectedFrame()
         for expr_str in args:
             for (idx, section) in enumerate(sections):
                 expr = 'find_pointer_in_memory(0x%xllu, %ullu, (void *)%s)' % (section.addr.load_addr, section.size, expr_str)
                 arg_str_description = 'section %s.%s containing "%s"' % (section_modules[idx].file.fullpath, section.name, expr_str)
-                num_matches = display_match_results (result, options, arg_str_description, lldb.frame.EvaluateExpression (expr), False)
+                num_matches = display_match_results (result, options, arg_str_description, expr, False)
                 if num_matches:
                     if num_matches < options.max_matches:
                         options.max_matches = options.max_matches - num_matches
@@ -527,53 +953,180 @@ def section_ptr_refs(debugger, command,
     else:
         result.AppendMessage('error: no sections were found that match any of %s' % (', '.join(options.section_names)))
 
+def get_objc_refs_options():
+    usage = "usage: %prog [options] <CLASS> [CLASS ...]"
+    description='''Searches all allocations on the heap for instances of 
+objective C classes, or any classes that inherit from the specified classes
+in darwin user space programs. Any matches that were found will dump the malloc
+blocks that contain the C strings and might be able to print what kind of
+objects the pointers are contained in using dynamic type information in the
+program.'''
+    parser = optparse.OptionParser(description=description, prog='objc_refs',usage=usage)
+    add_common_options(parser)
+    return parser
+
 def objc_refs(debugger, command, result, dict):
     command_args = shlex.split(command)
-    usage = "usage: %prog [options] <EXPR> [EXPR ...]"
-    description='''Find all heap allocations given one or more objective C class names.'''
-    parser = optparse.OptionParser(description=description, prog='object_refs',usage=usage)
-    add_common_options(parser)
+    parser = get_objc_refs_options()
     try:
         (options, args) = parser.parse_args(command_args)
     except:
         return
 
-    dylid_load_err = load_dylib()
-    if dylid_load_err:
-        result.AppendMessage(dylid_load_err)
-    else:
-        if args:
-            for class_name in args:
-                addr_expr_str = "(void *)[%s class]" % class_name
-                expr_sbvalue = lldb.frame.EvaluateExpression (addr_expr_str)
-                if expr_sbvalue.error.Success():
-                    isa = expr_sbvalue.unsigned
-                    if isa:
-                        options.type = 'isa'
-                        result.AppendMessage('Searching for all instances of classes or subclasses of %s (isa=0x%x)' % (class_name, isa))
-                        heap_search (result, options, '0x%x' % isa)
-                    else:
-                        result.AppendMessage('error: Can\'t find isa for an ObjC class named "%s"' % (class_name))
+    process = lldb.debugger.GetSelectedTarget().GetProcess()
+    if not process:
+        result.AppendMessage('error: invalid process')
+        return
+    frame = process.GetSelectedThread().GetSelectedFrame()
+    if not frame:
+        result.AppendMessage('error: invalid frame')
+        return
+
+    options.type = 'isa'
+    if options.format == None: 
+        options.format = "A" # 'A' is "address" format
+
+    expr_options = lldb.SBExpressionOptions()
+    expr_options.SetIgnoreBreakpoints(True);
+    expr_options.SetTimeoutInMicroSeconds (3*1000*1000) # 3 second infinite timeout
+    expr_options.SetTryAllThreads (True)
+    num_objc_classes_value = frame.EvaluateExpression("(int)objc_getClassList((void *)0, (int)0)", expr_options)
+    if not num_objc_classes_value.error.Success():
+        result.AppendMessage('error: %s' % num_objc_classes_value.error.GetCString())
+        return
+    
+    num_objc_classes = num_objc_classes_value.GetValueAsUnsigned()
+    if num_objc_classes == 0:
+        result.AppendMessage('error: no objective C classes in program')
+        return
+        
+    if args:
+        # When we initialize the expression, we must define any types that
+        # we will need when looking at every allocation. We must also define
+        # a type named callback_baton_t and make an instance named "baton" 
+        # and initialize it how ever we want to. The address of "baton" will
+        # be passed into our range callback. callback_baton_t must contain
+        # a member named "callback" whose type is "range_callback_t". This
+        # will be used by our zone callbacks to call the range callback for
+        # each malloc range.
+        user_init_code_format = '''
+#define MAX_MATCHES %u
+struct $malloc_match {
+    void *addr;
+    uintptr_t size;
+    uintptr_t offset;
+    uintptr_t type;
+};
+typedef int (*compare_callback_t)(const void *a, const void *b);
+typedef struct callback_baton_t {
+    range_callback_t callback;
+    compare_callback_t compare_callback;
+    unsigned num_matches;
+    $malloc_match matches[MAX_MATCHES];
+    void *isa;
+    Class classes[%u];
+} callback_baton_t;
+compare_callback_t compare_callback = [](const void *a, const void *b) -> int {
+     Class a_ptr = *(Class *)a;
+     Class b_ptr = *(Class *)b;
+     if (a_ptr < b_ptr) return -1;
+     if (a_ptr > b_ptr) return +1;
+     return 0;
+};
+range_callback_t range_callback = [](task_t task, void *baton, unsigned type, uintptr_t ptr_addr, uintptr_t ptr_size) -> void {
+    callback_baton_t *info = (callback_baton_t *)baton;
+    if (sizeof(Class) <= ptr_size) {
+        Class *curr_class_ptr = (Class *)ptr_addr;
+        Class *matching_class_ptr = (Class *)bsearch (curr_class_ptr, 
+                                                      (const void *)info->classes, 
+                                                      sizeof(info->classes)/sizeof(Class), 
+                                                      sizeof(Class), 
+                                                      info->compare_callback);
+        if (matching_class_ptr) {
+            bool match = false;
+            if (info->isa) {
+                Class isa = *curr_class_ptr;
+                if (info->isa == isa)
+                    match = true;
+                else { // if (info->objc.match_superclasses) {
+                    Class super = (Class)class_getSuperclass(isa);
+                    while (super) {
+                        if (super == info->isa) {
+                            match = true;
+                            break;
+                        }
+                        super = (Class)class_getSuperclass(super);
+                    }
+                }
+            }
+            else
+                match = true;
+            if (match) {
+                if (info->num_matches < MAX_MATCHES) {
+                    info->matches[info->num_matches].addr = (void*)ptr_addr;
+                    info->matches[info->num_matches].size = ptr_size;
+                    info->matches[info->num_matches].offset = 0;
+                    info->matches[info->num_matches].type = type;
+                    ++info->num_matches;
+                }
+            }
+        }
+    }
+};
+callback_baton_t baton = { range_callback, compare_callback, 0, {0}, (void *)0x%x, {0} };
+int nc = (int)objc_getClassList(baton.classes, sizeof(baton.classes)/sizeof(Class));
+(void)qsort (baton.classes, sizeof(baton.classes)/sizeof(Class), sizeof(Class), compare_callback);'''
+        # We must also define a snippet of code to be run that returns
+        # the result of the expression we run.
+        # Here we return NULL if our pointer was not found in any malloc blocks,
+        # and we return the address of the matches array so we can then access
+        # the matching results
+        user_return_code = '''if (baton.num_matches < MAX_MATCHES)
+    baton.matches[baton.num_matches].addr = 0; // Terminate the matches array
+        baton.matches'''
+        # Iterate through all of our ObjC class name arguments
+        for class_name in args:
+            addr_expr_str = "(void *)[%s class]" % class_name
+            expr_options = lldb.SBExpressionOptions()
+            expr_options.SetIgnoreBreakpoints(True);
+            expr_options.SetTimeoutInMicroSeconds (1*1000*1000) # 1 second timeout
+            expr_options.SetTryAllThreads (True)
+            expr_sbvalue = frame.EvaluateExpression (addr_expr_str, expr_options)
+            if expr_sbvalue.error.Success():
+                isa = expr_sbvalue.unsigned
+                if isa:
+                    options.type = 'isa'
+                    result.AppendMessage('Searching for all instances of classes or subclasses of "%s" (isa=0x%x)' % (class_name, isa))
+                    user_init_code = user_init_code_format % (options.max_matches, num_objc_classes, isa)
+                    expr = get_iterate_memory_expr(options, process, user_init_code, user_return_code)          
+                    arg_str_description = 'objective C classes with isa 0x%x' % isa
+                    display_match_results (result, options, arg_str_description, expr)
                 else:
-                    result.AppendMessage('error: expression error for "%s": %s' % (addr_expr_str, expr_sbvalue.error))
-        else:
-            # Find all objective C objects by not specifying an isa
-            options.type = 'isa'
-            heap_search (result, options, '0x0')
+                    result.AppendMessage('error: Can\'t find isa for an ObjC class named "%s"' % (class_name))
+            else:
+                result.AppendMessage('error: expression error for "%s": %s' % (addr_expr_str, expr_sbvalue.error))
+    else:
+        result.AppendMessage('error: command takes one or more C string arguments');
 
 if __name__ == '__main__':
     lldb.debugger = lldb.SBDebugger.Create()
 
-# This initializer is being run from LLDB in the embedded command interpreter
-# Add any commands contained in this module to LLDB
-lldb.debugger.HandleCommand('command script add -f lldb.macosx.heap.ptr_refs ptr_refs')
-lldb.debugger.HandleCommand('command script add -f lldb.macosx.heap.cstr_refs cstr_refs')
-lldb.debugger.HandleCommand('command script add -f lldb.macosx.heap.malloc_info malloc_info')
-lldb.debugger.HandleCommand('command script add -f lldb.macosx.heap.heap heap')
-lldb.debugger.HandleCommand('command script add -f lldb.macosx.heap.section_ptr_refs section_ptr_refs')
-lldb.debugger.HandleCommand('command script add -f lldb.macosx.heap.stack_ptr_refs stack_ptr_refs')
-lldb.debugger.HandleCommand('command script add -f lldb.macosx.heap.objc_refs objc_refs')
-print '"ptr_refs", "cstr_refs", "malloc_info", "heap", "section_ptr_refs" and "stack_ptr_refs" commands have been installed, use the "--help" options on these commands for detailed help.'
+# Make the options so we can generate the help text for the new LLDB 
+# command line command prior to registering it with LLDB below. This way
+# if clients in LLDB type "help malloc_info", they will see the exact same
+# output as typing "malloc_info --help".
+ptr_refs.__doc__ = get_ptr_refs_options().format_help()
+cstr_refs.__doc__ = get_cstr_refs_options().format_help()
+malloc_info.__doc__ = get_malloc_info_options().format_help()
+objc_refs.__doc__ = get_objc_refs_options().format_help()
+lldb.debugger.HandleCommand('command script add -f %s.ptr_refs ptr_refs' % __name__)
+lldb.debugger.HandleCommand('command script add -f %s.cstr_refs cstr_refs' % __name__)
+lldb.debugger.HandleCommand('command script add -f %s.malloc_info malloc_info' % __name__)
+# lldb.debugger.HandleCommand('command script add -f %s.heap heap' % package_name)
+# lldb.debugger.HandleCommand('command script add -f %s.section_ptr_refs section_ptr_refs' % package_name)
+# lldb.debugger.HandleCommand('command script add -f %s.stack_ptr_refs stack_ptr_refs' % package_name)
+lldb.debugger.HandleCommand('command script add -f %s.objc_refs objc_refs' % __name__)
+print '"malloc_info", "ptr_refs", "cstr_refs", and "objc_refs" commands have been installed, use the "--help" options on these commands for detailed help.'
 
 
 

Modified: lldb/branches/windows/examples/darwin/heap_find/heap/heap_find.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/examples/darwin/heap_find/heap/heap_find.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/examples/darwin/heap_find/heap/heap_find.cpp (original)
+++ lldb/branches/windows/examples/darwin/heap_find/heap/heap_find.cpp Wed Apr 17 03:38:48 2013
@@ -63,7 +63,7 @@
 //
 // This is a clue that the 0x104008000 is a "lldb_private::Process *".
 //===----------------------------------------------------------------------===//
-
+// C includes
 #include <assert.h>
 #include <ctype.h>
 #include <dlfcn.h>
@@ -73,6 +73,9 @@
 #include <objc/objc-runtime.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <unistd.h>
+
+// C++ includes
 #include <vector>
 
 //----------------------------------------------------------------------
@@ -362,7 +365,7 @@ safe_malloc(size_t n_bytes)
     {
         const int k_page_size = getpagesize();
         const mach_vm_size_t vm_size = ((n_bytes + k_page_size - 1)/k_page_size) * k_page_size;
-        vm_address_t address = NULL;
+        vm_address_t address = 0;
         kern_return_t kerr = vm_allocate (mach_task_self(), &address, vm_size, true);
         if (kerr == KERN_SUCCESS)
             return (void *)address;

Modified: lldb/branches/windows/examples/python/cmdtemplate.py
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/examples/python/cmdtemplate.py?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/examples/python/cmdtemplate.py (original)
+++ lldb/branches/windows/examples/python/cmdtemplate.py Wed Apr 17 03:38:48 2013
@@ -38,6 +38,9 @@ def ls(debugger, command, result, dict):
     try:
         (options, args) = parser.parse_args(command_args)
     except:
+        # if you don't handle exceptions, passing an incorrect argument to the OptionParser will cause LLDB to exit
+        # (courtesy of OptParse dealing with argument errors by throwing SystemExit)
+        result.SetStatus (lldb.eReturnStatusFailed)
         return
     
     for arg in args:

Modified: lldb/branches/windows/examples/python/crashlog.py
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/examples/python/crashlog.py?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/examples/python/crashlog.py (original)
+++ lldb/branches/windows/examples/python/crashlog.py Wed Apr 17 03:38:48 2013
@@ -83,6 +83,7 @@ PARSE_MODE_SYSTEM = 4
 
 class CrashLog(symbolication.Symbolicator):
     """Class that does parses darwin crash logs"""
+    parent_process_regex = re.compile('^Parent Process:\s*(.*)\[(\d+)\]');
     thread_state_regex = re.compile('^Thread ([0-9]+) crashed with')
     thread_regex = re.compile('^Thread ([0-9]+)([^:]*):(.*)')
     frame_regex = re.compile('^([0-9]+) +([^ ]+) *\t?(0x[0-9a-fA-F]+) +(.*)')
@@ -265,9 +266,10 @@ class CrashLog(symbolication.Symbolicato
                     else:
                         self.process = version_string
                         self.process_compatability_version = version_string
-                elif line.startswith ('Parent Process:'):
-                    (self.parent_process_name, pid_with_brackets) = line[15:].strip().split()
-                    self.parent_process_id = pid_with_brackets.strip('[]') 
+                elif self.parent_process_regex.search(line):
+                    parent_process_match = self.parent_process_regex.search(line)
+                    self.parent_process_name = parent_process_match.group(1)
+                    self.parent_process_id = parent_process_match.group(2)
                 elif line.startswith ('Exception Type:'):
                     self.thread_exception = line[15:].strip()
                     continue
@@ -678,10 +680,10 @@ def SymbolicateCrashLog(crash_log, optio
         for frame_idx, frame in enumerate(thread.frames):
             disassemble = (this_thread_crashed or options.disassemble_all_threads) and frame_idx < options.disassemble_depth;
             if frame_idx == 0:
-                symbolicated_frame_addresses = crash_log.symbolicate (frame.pc, options.verbose)
+                symbolicated_frame_addresses = crash_log.symbolicate (frame.pc & crash_log.addr_mask, options.verbose)
             else:
                 # Any frame above frame zero and we have to subtract one to get the previous line entry
-                symbolicated_frame_addresses = crash_log.symbolicate (frame.pc - 1, options.verbose)
+                symbolicated_frame_addresses = crash_log.symbolicate ((frame.pc & crash_log.addr_mask) - 1, options.verbose)
             
             if symbolicated_frame_addresses:
                 symbolicated_frame_address_idx = 0

Modified: lldb/branches/windows/examples/python/operating_system.py
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/examples/python/operating_system.py?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/examples/python/operating_system.py (original)
+++ lldb/branches/windows/examples/python/operating_system.py Wed Apr 17 03:38:48 2013
@@ -23,6 +23,14 @@ class OperatingSystemPlugIn(object):
         # tracks the current target in the LLDB command interpreter which isn't the
         # correct thing to use for this plug-in.
         return self.process.target
+
+    def create_thread(self, tid, context):
+        print 'tid type is: ' + str(type(tid))
+        if tid == 0x444444444:
+            thread_info = { 'tid' : tid, 'name' : 'four'  , 'queue' : 'queue4', 'state' : 'stopped', 'stop_reason' : 'none' }
+            self.threads.append(thread_info)
+            return thread_info
+        return None
         
     def get_thread_info(self):
         if not self.threads:
@@ -37,6 +45,11 @@ class OperatingSystemPlugIn(object):
             #   'none' thread is just stopped because the process is stopped
             #   'trace' the thread just single stepped
             #   The usual value for this while threads are in memory is 'none'
+            # register_data_addr => the address of the register data in memory (optional key/value pair)
+            #   Specifying this key/value pair for a thread will avoid a call to get_register_data()
+            #   and can be used when your registers are in a thread context structure that is contiguous
+            #   in memory. Don't specify this if your register layout in memory doesn't match the layout
+            #   described by the dictionary returned from a call to the get_register_info() method.
             self.threads = [
                     { 'tid' : 0x111111111, 'name' : 'one'  , 'queue' : 'queue1', 'state' : 'stopped', 'stop_reason' : 'breakpoint'},
                     { 'tid' : 0x222222222, 'name' : 'two'  , 'queue' : 'queue2', 'state' : 'stopped', 'stop_reason' : 'none'      },
@@ -84,4 +97,9 @@ class OperatingSystemPlugIn(object):
             return struct.pack('21Q',11,12,13,14,15,16,17,18,19,110,111,112,113,114,115,116,117,118,119,120,121);
         elif tid == 0x333333333:
             return struct.pack('21Q',21,22,23,24,25,26,27,28,29,210,211,212,213,214,215,216,217,218,219,220,221);
+        elif tid == 0x444444444:
+            return struct.pack('21Q',31,32,33,34,35,36,37,38,39,310,311,312,313,314,315,316,317,318,319,320,321);
+        else:
+            return struct.pack('21Q',41,42,43,44,45,46,47,48,49,410,411,412,413,414,415,416,417,418,419,420,421);
+        return None
     

Modified: lldb/branches/windows/examples/python/process_events.py
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/examples/python/process_events.py?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/examples/python/process_events.py (original)
+++ lldb/branches/windows/examples/python/process_events.py Wed Apr 17 03:38:48 2013
@@ -184,6 +184,7 @@ def main(argv):
                     event = lldb.SBEvent()
                     if listener.WaitForEvent (options.event_timeout, event):
                         state = lldb.SBProcess.GetStateFromEvent (event)
+                        print "event %s" % (lldb.SBDebugger.StateAsCString(state))
                         if state == lldb.eStateStopped:
                             if stop_idx == 0:
                                 if launch_info:
@@ -203,6 +204,7 @@ def main(argv):
                                 run_commands (command_interpreter, options.stop_commands)
                             stop_idx += 1
                             print_threads (process, options)
+                            print "continuing process %u" % (pid)
                             process.Continue()
                         elif state == lldb.eStateExited:
                             exit_desc = process.GetExitDescription()

Modified: lldb/branches/windows/examples/python/symbolication.py
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/examples/python/symbolication.py?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/examples/python/symbolication.py (original)
+++ lldb/branches/windows/examples/python/symbolication.py Wed Apr 17 03:38:48 2013
@@ -211,6 +211,7 @@ class Image:
         self.module = None
         self.symfile = None
         self.slide = None
+        
     
     def dump(self, prefix):
         print "%s%s" % (prefix, self)
@@ -377,7 +378,7 @@ class Symbolicator:
         """A class the represents the information needed to symbolicate addresses in a program"""
         self.target = None
         self.images = list() # a list of images to be used when symbolicating
-
+        self.addr_mask = 0xffffffffffffffff
     
     def __str__(self):
         s = "Symbolicator:\n"
@@ -412,6 +413,12 @@ class Symbolicator:
             for image in self.images:
                 self.target = image.create_target ()
                 if self.target:
+                    if self.target.GetAddressByteSize() == 4:
+                        triple = self.target.triple
+                        if triple:
+                            arch = triple.split('-')[0]
+                            if "arm" in arch:
+                                self.addr_mask = 0xfffffffffffffffe
                     return self.target
         return None
     
@@ -419,9 +426,19 @@ class Symbolicator:
         if not self.target:
             self.create_target()
         if self.target:
-            image = self.find_image_containing_load_addr (load_addr)
-            if image:
-                image.add_module (self.target)
+            live_process = False
+            process = self.target.process
+            if process:
+                state = process.state
+                if state > lldb.eStateUnloaded and state < lldb.eStateDetached:
+                    live_process = True
+            # If we don't have a live process, we can attempt to find the image
+            # that a load address belongs to and lazily load its module in the
+            # target, but we shouldn't do any of this if we have a live process
+            if not live_process:
+                image = self.find_image_containing_load_addr (load_addr)
+                if image:
+                    image.add_module (self.target)
             symbolicated_address = Address(self.target, load_addr)
             if symbolicated_address.symbolicate (verbose):
                 if symbolicated_address.so_addr:

Modified: lldb/branches/windows/examples/summaries/cocoa/CFBag.py
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/examples/summaries/cocoa/CFBag.py?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/examples/summaries/cocoa/CFBag.py (original)
+++ lldb/branches/windows/examples/summaries/cocoa/CFBag.py Wed Apr 17 03:38:48 2013
@@ -5,7 +5,8 @@ part of The LLVM Compiler Infrastructure
 This file is distributed under the University of Illinois Open Source
 License. See LICENSE.TXT for details.
 """
-# summary provider for CFBag
+# example summary provider for CFBag
+# the real summary is now C++ code built into LLDB
 import lldb
 import ctypes
 import lldb.runtime.objc.objc_runtime

Modified: lldb/branches/windows/examples/summaries/cocoa/CFBinaryHeap.py
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/examples/summaries/cocoa/CFBinaryHeap.py?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/examples/summaries/cocoa/CFBinaryHeap.py (original)
+++ lldb/branches/windows/examples/summaries/cocoa/CFBinaryHeap.py Wed Apr 17 03:38:48 2013
@@ -5,7 +5,8 @@ part of The LLVM Compiler Infrastructure
 This file is distributed under the University of Illinois Open Source
 License. See LICENSE.TXT for details.
 """
-# summary provider for CFBinaryHeap
+# example summary provider for CFBinaryHeap
+# the real summary is now C++ code built into LLDB
 import lldb
 import ctypes
 import lldb.runtime.objc.objc_runtime

Modified: lldb/branches/windows/examples/summaries/cocoa/Logger.py
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/examples/summaries/cocoa/Logger.py?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/examples/summaries/cocoa/Logger.py (original)
+++ lldb/branches/windows/examples/summaries/cocoa/Logger.py Wed Apr 17 03:38:48 2013
@@ -58,10 +58,10 @@ class FileLogger:
 			self.file = None
 
 # to enable logging:
-# define Logger._lldb_formatters_debug_level to any number greater than 0
+# define lldb.formatters.Logger._lldb_formatters_debug_level to any number greater than 0
 # if you define it to any value greater than 1, the log will be automatically flushed after each write (slower but should make sure most of the stuff makes it to the log even if we crash)
 # if you define it to any value greater than 2, the calling function's details will automatically be logged (even slower, but provides additional details)
-# if you need the log to go to a file instead of on screen, define Logger._lldb_formatters_debug_filename to a valid filename
+# if you need the log to go to a file instead of on screen, define lldb.formatters.Logger._lldb_formatters_debug_filename to a valid filename
 class Logger:
 	def __init__(self,autoflush=False,logcaller=False):
 		global _lldb_formatters_debug_level

Modified: lldb/branches/windows/examples/summaries/cocoa/NSBundle.py
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/examples/summaries/cocoa/NSBundle.py?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/examples/summaries/cocoa/NSBundle.py (original)
+++ lldb/branches/windows/examples/summaries/cocoa/NSBundle.py Wed Apr 17 03:38:48 2013
@@ -5,7 +5,8 @@ part of The LLVM Compiler Infrastructure
 This file is distributed under the University of Illinois Open Source
 License. See LICENSE.TXT for details.
 """
-# summary provider for NSBundle
+# example summary provider for NSBundle
+# the real summary is now C++ code built into LLDB
 import lldb
 import ctypes
 import lldb.runtime.objc.objc_runtime

Modified: lldb/branches/windows/examples/summaries/cocoa/NSDate.py
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/examples/summaries/cocoa/NSDate.py?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/examples/summaries/cocoa/NSDate.py (original)
+++ lldb/branches/windows/examples/summaries/cocoa/NSDate.py Wed Apr 17 03:38:48 2013
@@ -5,7 +5,8 @@ part of The LLVM Compiler Infrastructure
 This file is distributed under the University of Illinois Open Source
 License. See LICENSE.TXT for details.
 """
-# summary provider for NSDate
+# example summary provider for NSDate
+# the real summary is now C++ code built into LLDB
 import lldb
 import ctypes
 import lldb.runtime.objc.objc_runtime

Modified: lldb/branches/windows/examples/summaries/cocoa/NSIndexSet.py
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/examples/summaries/cocoa/NSIndexSet.py?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/examples/summaries/cocoa/NSIndexSet.py (original)
+++ lldb/branches/windows/examples/summaries/cocoa/NSIndexSet.py Wed Apr 17 03:38:48 2013
@@ -5,7 +5,8 @@ part of The LLVM Compiler Infrastructure
 This file is distributed under the University of Illinois Open Source
 License. See LICENSE.TXT for details.
 """
-# summary provider for NS(Mutable)IndexSet
+# example summary provider for NS(Mutable)IndexSet
+# the real summary is now C++ code built into LLDB
 import lldb
 import ctypes
 import lldb.runtime.objc.objc_runtime

Modified: lldb/branches/windows/examples/summaries/cocoa/NSMachPort.py
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/examples/summaries/cocoa/NSMachPort.py?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/examples/summaries/cocoa/NSMachPort.py (original)
+++ lldb/branches/windows/examples/summaries/cocoa/NSMachPort.py Wed Apr 17 03:38:48 2013
@@ -5,7 +5,8 @@ part of The LLVM Compiler Infrastructure
 This file is distributed under the University of Illinois Open Source
 License. See LICENSE.TXT for details.
 """
-# summary provider for NSData
+# example summary provider for NSMachPort
+# the real summary is now C++ code built into LLDB
 import lldb
 import ctypes
 import lldb.runtime.objc.objc_runtime

Modified: lldb/branches/windows/examples/summaries/cocoa/NSNotification.py
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/examples/summaries/cocoa/NSNotification.py?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/examples/summaries/cocoa/NSNotification.py (original)
+++ lldb/branches/windows/examples/summaries/cocoa/NSNotification.py Wed Apr 17 03:38:48 2013
@@ -5,7 +5,8 @@ part of The LLVM Compiler Infrastructure
 This file is distributed under the University of Illinois Open Source
 License. See LICENSE.TXT for details.
 """
-# summary provider for class NSNotification
+# example summary provider for NSNotification
+# the real summary is now C++ code built into LLDB
 import lldb.runtime.objc.objc_runtime
 import lldb.formatters.metrics
 import CFString

Modified: lldb/branches/windows/examples/summaries/cocoa/objc_runtime.py
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/examples/summaries/cocoa/objc_runtime.py?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/examples/summaries/cocoa/objc_runtime.py (original)
+++ lldb/branches/windows/examples/summaries/cocoa/objc_runtime.py Wed Apr 17 03:38:48 2013
@@ -242,17 +242,6 @@ class Class_Data_V2:
 			logger >> "Marking as invalid - cachePointer is not allowed"
 			self.valid = 0
 			return
-
-		self.vtablePointer = Utilities.read_child_of(self.valobj,3*self.sys_params.pointer_size,self.sys_params.types_cache.addr_ptr_type)
-		if not(Utilities.is_valid_pointer(self.vtablePointer,self.sys_params.pointer_size,allow_tagged=0)):
-			logger >> "Marking as invalid - vtablePointer is invalid"
-			self.valid = 0
-			return
-		if not(Utilities.is_allowed_pointer(self.vtablePointer)):
-			logger >> "Marking as invalid - vtablePointer is not allowed"
-			self.valid = 0
-			return
-
 		self.dataPointer = Utilities.read_child_of(self.valobj,4*self.sys_params.pointer_size,self.sys_params.types_cache.addr_ptr_type)
 		if not(Utilities.is_valid_pointer(self.dataPointer,self.sys_params.pointer_size,allow_tagged=0)):
 			logger >> "Marking as invalid - dataPointer is invalid"
@@ -321,7 +310,6 @@ class Class_Data_V2:
 		return 'isaPointer = ' + hex(self.isaPointer) + "\n" + \
 		 "superclassIsaPointer = " + hex(self.superclassIsaPointer) + "\n" + \
 		 "cachePointer = " + hex(self.cachePointer) + "\n" + \
-		 "vtablePointer = " + hex(self.vtablePointer) + "\n" + \
 		 "data = " + hex(self.dataPointer)
 
 	def is_tagged(self):
@@ -594,7 +582,7 @@ class SystemParameters:
 		global isa_caches
 
 		process = valobj.GetTarget().GetProcess()
-		self.pid = process.GetProcessID()
+		self.pid = process.GetUniqueID() # using the unique ID for added guarantees (see svn revision 172628 for further details)
 
 		if runtime_version.look_for_key(self.pid):
 			self.runtime_version = runtime_version.get_value(self.pid)

Modified: lldb/branches/windows/examples/synthetic/libcxx.py
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/examples/synthetic/libcxx.py?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/examples/synthetic/libcxx.py (original)
+++ lldb/branches/windows/examples/synthetic/libcxx.py Wed Apr 17 03:38:48 2013
@@ -6,6 +6,9 @@ import lldb.formatters.Logger
 # ships with current releases of OS X - They will not work for other implementations
 # of the standard C++ library - and they are bound to use the libc++-specific namespace
 
+# the std::string summary is just an example for your convenience
+# the actual summary that LLDB uses is C++ code inside the debugger's own core
+
 # this could probably be made more efficient but since it only reads a handful of bytes at a time
 # we probably don't need to worry too much about this for the time being
 def make_string(F,L):
@@ -558,8 +561,12 @@ class stdmap_SynthProvider:
 				else:
 					# FIXME we need to have accessed item 0 before accessing any other item!
 					if self.skip_size == None:
-						logger >> "You asked for item > 0 before asking for item == 0, too bad - I have no clue"
-						return None
+						logger >> "You asked for item > 0 before asking for item == 0, I will fetch 0 now then retry"
+						if self.get_child_at_index(0):
+							return self.get_child_at_index(index)
+						else:
+							logger >> "item == 0 could not be found. sorry, nothing can be done here."
+							return None
 					return current.CreateChildAtOffset('[' + str(index) + ']',self.skip_size,self.data_type)
 			else:
 				logger >> "Unable to infer data-type - returning None (should mark tree as garbage here?)"

Modified: lldb/branches/windows/include/lldb/API/SBCommandInterpreter.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/API/SBCommandInterpreter.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/API/SBCommandInterpreter.h (original)
+++ lldb/branches/windows/include/lldb/API/SBCommandInterpreter.h Wed Apr 17 03:38:48 2013
@@ -87,8 +87,18 @@ public:
     lldb::ReturnStatus
     HandleCommand (const char *command_line, lldb::SBCommandReturnObject &result, bool add_to_history = false);
 
-    // This interface is not useful in SWIG, since the cursor & last_char arguments are string pointers INTO current_line
-    // and you can't do that in a scripting language interface in general... 
+    // The pointer based interface is not useful in SWIG, since the cursor & last_char arguments are string pointers INTO current_line
+    // and you can't do that in a scripting language interface in general...
+    
+    // In either case, the way this works is that the you give it a line and cursor position in the line.  The function
+    // will return the number of completions.  The matches list will contain number_of_completions + 1 elements.  The first
+    // element is the common substring after the cursor position for all the matches.  The rest of the elements are the
+    // matches.  The first element is useful if you are emulating the common shell behavior where the tab completes
+    // to the string that is common among all the matches, then you should first check if the first element is non-empty,
+    // and if so just insert it and move the cursor to the end of the insertion.  The next tab will return an empty
+    // common substring, and a list of choices (if any), at which point you should display the choices and let the user
+    // type further to disambiguate.
+    
     int
     HandleCompletion (const char *current_line,
                       const char *cursor,

Modified: lldb/branches/windows/include/lldb/API/SBData.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/API/SBData.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/API/SBData.h (original)
+++ lldb/branches/windows/include/lldb/API/SBData.h Wed Apr 17 03:38:48 2013
@@ -49,47 +49,47 @@ public:
     SetByteOrder (lldb::ByteOrder endian);
     
     float
-    GetFloat (lldb::SBError& error, uint32_t offset);
+    GetFloat (lldb::SBError& error, lldb::offset_t offset);
     
     double
-    GetDouble (lldb::SBError& error, uint32_t offset);
+    GetDouble (lldb::SBError& error, lldb::offset_t offset);
 
     long double
-    GetLongDouble (lldb::SBError& error, uint32_t offset);
+    GetLongDouble (lldb::SBError& error, lldb::offset_t offset);
     
     lldb::addr_t
-    GetAddress (lldb::SBError& error, uint32_t offset);
+    GetAddress (lldb::SBError& error, lldb::offset_t offset);
     
     uint8_t
-    GetUnsignedInt8 (lldb::SBError& error, uint32_t offset);
+    GetUnsignedInt8 (lldb::SBError& error, lldb::offset_t offset);
 
     uint16_t
-    GetUnsignedInt16 (lldb::SBError& error, uint32_t offset);
+    GetUnsignedInt16 (lldb::SBError& error, lldb::offset_t offset);
 
     uint32_t
-    GetUnsignedInt32 (lldb::SBError& error, uint32_t offset);
+    GetUnsignedInt32 (lldb::SBError& error, lldb::offset_t offset);
 
     uint64_t
-    GetUnsignedInt64 (lldb::SBError& error, uint32_t offset);
+    GetUnsignedInt64 (lldb::SBError& error, lldb::offset_t offset);
     
     int8_t
-    GetSignedInt8 (lldb::SBError& error, uint32_t offset);
+    GetSignedInt8 (lldb::SBError& error, lldb::offset_t offset);
     
     int16_t
-    GetSignedInt16 (lldb::SBError& error, uint32_t offset);
+    GetSignedInt16 (lldb::SBError& error, lldb::offset_t offset);
     
     int32_t
-    GetSignedInt32 (lldb::SBError& error, uint32_t offset);
+    GetSignedInt32 (lldb::SBError& error, lldb::offset_t offset);
     
     int64_t
-    GetSignedInt64 (lldb::SBError& error, uint32_t offset);
+    GetSignedInt64 (lldb::SBError& error, lldb::offset_t offset);
     
     const char*
-    GetString (lldb::SBError& error, uint32_t offset);
+    GetString (lldb::SBError& error, lldb::offset_t offset);
     
     size_t
     ReadRawData (lldb::SBError& error,
-                 uint32_t offset,
+                 lldb::offset_t offset,
                  void *buf,
                  size_t size);
     

Modified: lldb/branches/windows/include/lldb/API/SBExpressionOptions.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/API/SBExpressionOptions.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/API/SBExpressionOptions.h (original)
+++ lldb/branches/windows/include/lldb/API/SBExpressionOptions.h Wed Apr 17 03:38:48 2013
@@ -40,7 +40,13 @@ public:
     GetUnwindOnError () const;
     
     void
-    SetUnwindOnError (bool unwind = false);
+    SetUnwindOnError (bool unwind = true);
+    
+    bool
+    GetIgnoreBreakpoints () const;
+    
+    void
+    SetIgnoreBreakpoints (bool ignore = true);
     
     lldb::DynamicValueType
     GetFetchDynamicValue () const;

Modified: lldb/branches/windows/include/lldb/API/SBFunction.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/API/SBFunction.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/API/SBFunction.h (original)
+++ lldb/branches/windows/include/lldb/API/SBFunction.h Wed Apr 17 03:38:48 2013
@@ -41,6 +41,9 @@ public:
     lldb::SBInstructionList
     GetInstructions (lldb::SBTarget target);
 
+    lldb::SBInstructionList
+    GetInstructions (lldb::SBTarget target, const char *flavor);
+
     lldb::SBAddress
     GetStartAddress ();
 

Modified: lldb/branches/windows/include/lldb/API/SBModule.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/API/SBModule.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/API/SBModule.h (original)
+++ lldb/branches/windows/include/lldb/API/SBModule.h Wed Apr 17 03:38:48 2013
@@ -175,6 +175,22 @@ public:
                          const char *name, 
                          uint32_t max_matches);
     
+    //------------------------------------------------------------------
+    /// Find the first global (or static) variable by name.
+    ///
+    /// @param[in] target
+    ///     A valid SBTarget instance representing the debuggee.
+    ///
+    /// @param[in] name
+    ///     The name of the global or static variable we are looking
+    ///     for.
+    ///
+    /// @return
+    ///     An SBValue that gets filled in with the found variable (if any).
+    //------------------------------------------------------------------
+    lldb::SBValue
+    FindFirstGlobalVariable (lldb::SBTarget &target, const char *name);
+    
     lldb::SBType
     FindFirstType (const char* name);
     

Modified: lldb/branches/windows/include/lldb/API/SBProcess.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/API/SBProcess.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/API/SBProcess.h (original)
+++ lldb/branches/windows/include/lldb/API/SBProcess.h Wed Apr 17 03:38:48 2013
@@ -122,6 +122,15 @@ public:
     lldb::SBThread
     GetSelectedThread () const;
 
+    //------------------------------------------------------------------
+    // Function for lazily creating a thread using the current OS
+    // plug-in. This function will be removed in the future when there
+    // are APIs to create SBThread objects through the interface and add
+    // them to the process through the SBProcess API.
+    //------------------------------------------------------------------
+    lldb::SBThread
+    CreateOSPluginThread (lldb::tid_t tid, lldb::addr_t context);
+
     bool
     SetSelectedThread (const lldb::SBThread &thread);
 
@@ -144,9 +153,39 @@ public:
     const char *
     GetExitDescription ();
 
+    //------------------------------------------------------------------
+    /// Gets the process ID
+    ///
+    /// Returns the process identifier for the process as it is known
+    /// on the system on which the process is running. For unix systems
+    /// this is typically the same as if you called "getpid()" in the
+    /// process.
+    ///
+    /// @return
+    ///     Returns LLDB_INVALID_PROCESS_ID if this object does not
+    ///     contain a valid process object, or if the process has not
+    ///     been launched. Returns a valid process ID if the process is
+    ///     valid.
+    //------------------------------------------------------------------
     lldb::pid_t
     GetProcessID ();
 
+    //------------------------------------------------------------------
+    /// Gets the unique ID associated with this process object
+    ///
+    /// Unique IDs start at 1 and increment up with each new process
+    /// instance. Since starting a process on a system might always
+    /// create a process with the same process ID, there needs to be a
+    /// way to tell two process instances apart.
+    ///
+    /// @return
+    ///     Returns a non-zero integer ID if this object contains a
+    ///     valid process object, zero if this object does not contain
+    ///     a valid process object.
+    //------------------------------------------------------------------
+    uint32_t
+    GetUniqueID();
+
     uint32_t
     GetAddressByteSize() const;
 
@@ -171,6 +210,9 @@ public:
     void
     SendAsyncInterrupt();
     
+    uint32_t
+    GetStopID(bool include_expression_stops = false);
+    
     size_t
     ReadMemory (addr_t addr, void *buf, size_t size, lldb::SBError &error);
 
@@ -192,6 +234,12 @@ public:
 
     static bool
     GetRestartedFromEvent (const lldb::SBEvent &event);
+    
+    static size_t
+    GetNumRestartedReasonsFromEvent (const lldb::SBEvent &event);
+    
+    static const char *
+    GetRestartedReasonAtIndexFromEvent (const lldb::SBEvent &event, size_t idx);
 
     static lldb::SBProcess
     GetProcessFromEvent (const lldb::SBEvent &event);

Modified: lldb/branches/windows/include/lldb/API/SBSymbol.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/API/SBSymbol.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/API/SBSymbol.h (original)
+++ lldb/branches/windows/include/lldb/API/SBSymbol.h Wed Apr 17 03:38:48 2013
@@ -43,6 +43,9 @@ public:
     lldb::SBInstructionList
     GetInstructions (lldb::SBTarget target);
 
+    lldb::SBInstructionList
+    GetInstructions (lldb::SBTarget target, const char *flavor_string);
+
     SBAddress
     GetStartAddress ();
     

Modified: lldb/branches/windows/include/lldb/API/SBTarget.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/API/SBTarget.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/API/SBTarget.h (original)
+++ lldb/branches/windows/include/lldb/API/SBTarget.h Wed Apr 17 03:38:48 2013
@@ -237,7 +237,8 @@ public:
         eBroadcastBitBreakpointChanged  = (1 << 0),
         eBroadcastBitModulesLoaded      = (1 << 1),
         eBroadcastBitModulesUnloaded    = (1 << 2),
-        eBroadcastBitWatchpointChanged  = (1 << 3)
+        eBroadcastBitWatchpointChanged  = (1 << 3),
+        eBroadcastBitSymbolsLoaded      = (1 << 4)
     };
 
     //------------------------------------------------------------------
@@ -366,6 +367,9 @@ public:
     
     SBProcess
     Launch (SBLaunchInfo &launch_info, SBError& error);
+    
+    SBProcess
+    LoadCore (const char *core_file);
 
     SBProcess
     Attach (SBAttachInfo &attach_info, SBError& error);
@@ -603,6 +607,19 @@ public:
     FindGlobalVariables (const char *name, 
                          uint32_t max_matches);
 
+    //------------------------------------------------------------------
+    /// Find the first global (or static) variable by name.
+    ///
+    /// @param[in] name
+    ///     The name of the global or static variable we are looking
+    ///     for.
+    ///
+    /// @return
+    ///     An SBValue that gets filled in with the found variable (if any).
+    //------------------------------------------------------------------
+    lldb::SBValue
+    FindFirstGlobalVariable (const char* name);
+    
     void
     Clear ();
 
@@ -731,11 +748,23 @@ public:
     ReadInstructions (lldb::SBAddress base_addr, uint32_t count);
 
     lldb::SBInstructionList
+    ReadInstructions (lldb::SBAddress base_addr, uint32_t count, const char *flavor_string);
+
+    lldb::SBInstructionList
     GetInstructions (lldb::SBAddress base_addr, const void *buf, size_t size);
     
+    // The "WithFlavor" is necessary to keep SWIG from getting confused about overloaded arguments when
+    // using the buf + size -> Python Object magic.
+    
+    lldb::SBInstructionList
+    GetInstructionsWithFlavor (lldb::SBAddress base_addr,  const char *flavor_string, const void *buf, size_t size);
+    
     lldb::SBInstructionList
     GetInstructions (lldb::addr_t base_addr, const void *buf, size_t size);
 
+    lldb::SBInstructionList
+    GetInstructionsWithFlavor (lldb::addr_t base_addr, const char *flavor_string, const void *buf, size_t size);
+
     lldb::SBSymbolContextList
     FindSymbols (const char *name,
                  lldb::SymbolType type = eSymbolTypeAny);
@@ -752,6 +781,9 @@ public:
     lldb::SBValue
     EvaluateExpression (const char *expr, const SBExpressionOptions &options);
 
+    lldb::addr_t
+    GetStackRedZoneSize();
+    
 protected:
     friend class SBAddress;
     friend class SBBlock;

Modified: lldb/branches/windows/include/lldb/API/SBThread.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/API/SBThread.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/API/SBThread.h (original)
+++ lldb/branches/windows/include/lldb/API/SBThread.h Wed Apr 17 03:38:48 2013
@@ -151,6 +151,9 @@ public:
     bool
     IsSuspended();
 
+    bool
+    IsStopped();
+
     uint32_t
     GetNumFrames ();
 

Modified: lldb/branches/windows/include/lldb/API/SBType.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/API/SBType.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/API/SBType.h (original)
+++ lldb/branches/windows/include/lldb/API/SBType.h Wed Apr 17 03:38:48 2013
@@ -81,7 +81,7 @@ public:
     bool
     IsValid() const;
     
-    size_t
+    uint64_t
     GetByteSize();
 
     bool

Modified: lldb/branches/windows/include/lldb/API/SBTypeSynthetic.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/API/SBTypeSynthetic.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/API/SBTypeSynthetic.h (original)
+++ lldb/branches/windows/include/lldb/API/SBTypeSynthetic.h Wed Apr 17 03:38:48 2013
@@ -79,15 +79,15 @@ namespace lldb {
         friend class SBTypeCategory;
         friend class SBValue;
         
-        lldb::TypeSyntheticImplSP
+        lldb::ScriptedSyntheticChildrenSP
         GetSP ();
         
         void
-        SetSP (const lldb::TypeSyntheticImplSP &typefilter_impl_sp);    
+        SetSP (const lldb::ScriptedSyntheticChildrenSP &typefilter_impl_sp);    
         
-        lldb::TypeSyntheticImplSP m_opaque_sp;
+        lldb::ScriptedSyntheticChildrenSP m_opaque_sp;
         
-        SBTypeSynthetic (const lldb::TypeSyntheticImplSP &);
+        SBTypeSynthetic (const lldb::ScriptedSyntheticChildrenSP &);
         
         bool
         CopyOnWrite_Impl();

Modified: lldb/branches/windows/include/lldb/API/SBValue.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/API/SBValue.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/API/SBValue.h (original)
+++ lldb/branches/windows/include/lldb/API/SBValue.h Wed Apr 17 03:38:48 2013
@@ -290,6 +290,9 @@ public:
     lldb::SBData
     GetData ();
     
+    bool
+    SetData (lldb::SBData &data, lldb::SBError& error);
+    
     lldb::SBDeclaration
     GetDeclaration ();
     

Modified: lldb/branches/windows/include/lldb/API/SBValueList.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/API/SBValueList.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/API/SBValueList.h (original)
+++ lldb/branches/windows/include/lldb/API/SBValueList.h Wed Apr 17 03:38:48 2013
@@ -12,6 +12,10 @@
 
 #include "lldb/API/SBDefines.h"
 
+namespace {
+    class ValueListImpl;
+}
+
 namespace lldb {
 
 class SBValueList
@@ -48,28 +52,17 @@ public:
     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;
+protected:
     
-    lldb_private::ValueObjectList *
-    get ();
-
-    lldb_private::ValueObjectList &
-    ref ();
+    // only useful for visualizing the pointer or comparing two SBValueLists
+    // to see if they are backed by the same underlying Impl.
+    void *
+    opaque_ptr ();
 
 private:
     friend class SBFrame;
-
-    SBValueList (const lldb_private::ValueObjectList *lldb_object_ptr);
+    
+    SBValueList (const ValueListImpl *lldb_object_ptr);
 
     void
     Append (lldb::ValueObjectSP& val_obj_sp);
@@ -77,7 +70,23 @@ private:
     void
     CreateIfNeeded ();
 
-    std::auto_ptr<lldb_private::ValueObjectList> m_opaque_ap;
+    ValueListImpl *
+    operator -> ();
+    
+    ValueListImpl &
+    operator* ();
+    
+    const ValueListImpl *
+    operator -> () const;
+    
+    const ValueListImpl &
+    operator* () const;
+    
+    
+    ValueListImpl &
+    ref ();
+    
+    std::unique_ptr<ValueListImpl> m_opaque_ap;
 };
 
 

Modified: lldb/branches/windows/include/lldb/Breakpoint/Breakpoint.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Breakpoint/Breakpoint.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Breakpoint/Breakpoint.h (original)
+++ lldb/branches/windows/include/lldb/Breakpoint/Breakpoint.h Wed Apr 17 03:38:48 2013
@@ -136,7 +136,7 @@ public:
         static lldb::BreakpointLocationSP
         GetBreakpointLocationAtIndexFromEvent (const lldb::EventSP &event_sp, uint32_t loc_idx);
         
-        static uint32_t
+        static size_t
         GetNumBreakpointLocationsFromEvent (const lldb::EventSP &event_sp);
 
         static const BreakpointEventData *
@@ -310,7 +310,7 @@ public:
     ///     greater than then number of actual locations.
     //------------------------------------------------------------------
     lldb::BreakpointLocationSP
-    GetLocationAtIndex (uint32_t index);
+    GetLocationAtIndex (size_t index);
 
     //------------------------------------------------------------------
     // The next section deals with various breakpoint options.
@@ -489,6 +489,32 @@ public:
     GetDescription (Stream *s, lldb::DescriptionLevel level, bool show_locations = false);
 
     //------------------------------------------------------------------
+    /// Set the "kind" description for a breakpoint.  If the breakpoint is hit
+    /// the stop info will show this "kind" description instead of the breakpoint
+    /// number.  Mostly useful for internal breakpoints, where the breakpoint number
+    /// doesn't have meaning to the user.
+    ///
+    /// @param[in] kind
+    ///     New "kind" description.
+    //------------------------------------------------------------------
+    void
+    SetBreakpointKind (const char *kind)
+    {
+        m_kind_description.assign (kind);
+    }
+    
+    //------------------------------------------------------------------
+    /// Return the "kind" description for a breakpoint.
+    ///
+    /// @return
+    ///     The breakpoint kind, or NULL if none is set.
+    //------------------------------------------------------------------
+    const char *GetBreakpointKind () const
+    {
+        return m_kind_description.c_str();
+    }
+
+    //------------------------------------------------------------------
     /// Accessor for the breakpoint Target.
     /// @return
     ///     This breakpoint's Target.
@@ -588,6 +614,7 @@ private:
     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.
+    std::string            m_kind_description;
     
     void
     SendBreakpointChangedEvent (lldb::BreakpointEventType eventKind);

Modified: lldb/branches/windows/include/lldb/Breakpoint/BreakpointIDList.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Breakpoint/BreakpointIDList.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Breakpoint/BreakpointIDList.h (original)
+++ lldb/branches/windows/include/lldb/Breakpoint/BreakpointIDList.h Wed Apr 17 03:38:48 2013
@@ -41,10 +41,10 @@ public:
     GetSize();
 
     BreakpointID &
-    GetBreakpointIDAtIndex (uint32_t index);
+    GetBreakpointIDAtIndex (size_t index);
 
     bool
-    RemoveBreakpointIDAtIndex (uint32_t index);
+    RemoveBreakpointIDAtIndex (size_t index);
 
     void
     Clear();
@@ -56,16 +56,16 @@ public:
     AddBreakpointID (const char *bp_id);
 
     bool
-    FindBreakpointID (BreakpointID &bp_id, uint32_t *position);
+    FindBreakpointID (BreakpointID &bp_id, size_t *position);
 
     bool
-    FindBreakpointID (const char *bp_id, uint32_t *position);
+    FindBreakpointID (const char *bp_id, size_t *position);
 
     void
-    InsertStringArray (const char **string_array, uint32_t array_size, CommandReturnObject &result);
+    InsertStringArray (const char **string_array, size_t array_size, CommandReturnObject &result);
 
     static bool
-    StringContainsIDRangeExpression (const char *in_string, uint32_t *range_start_len, uint32_t *range_end_pos);
+    StringContainsIDRangeExpression (const char *in_string, size_t *range_start_len, size_t *range_end_pos);
 
     static void
     FindAndReplaceIDRanges (Args &old_args, Target *target, CommandReturnObject &result, Args &new_args);

Modified: lldb/branches/windows/include/lldb/Breakpoint/BreakpointList.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Breakpoint/BreakpointList.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Breakpoint/BreakpointList.h (original)
+++ lldb/branches/windows/include/lldb/Breakpoint/BreakpointList.h Wed Apr 17 03:38:48 2013
@@ -92,7 +92,7 @@ public:
     ///   breakpoint doesn't exist.
     //------------------------------------------------------------------
     lldb::BreakpointSP
-    GetBreakpointAtIndex (uint32_t i);
+    GetBreakpointAtIndex (size_t i);
 
     //------------------------------------------------------------------
     /// Returns a shared pointer to the breakpoint with index \a i, const version
@@ -105,7 +105,7 @@ public:
     ///   breakpoint doesn't exist.
     //------------------------------------------------------------------
     const lldb::BreakpointSP
-    GetBreakpointAtIndex (uint32_t i) const;
+    GetBreakpointAtIndex (size_t i) const;
 
     //------------------------------------------------------------------
     /// Returns the number of elements in this breakpoint list.

Modified: lldb/branches/windows/include/lldb/Breakpoint/BreakpointLocationCollection.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Breakpoint/BreakpointLocationCollection.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Breakpoint/BreakpointLocationCollection.h (original)
+++ lldb/branches/windows/include/lldb/Breakpoint/BreakpointLocationCollection.h Wed Apr 17 03:38:48 2013
@@ -101,7 +101,7 @@ public:
     ///     pointer if the breakpoint doesn't exist.
     //------------------------------------------------------------------
     lldb::BreakpointLocationSP
-    GetByIndex (uint32_t i);
+    GetByIndex (size_t i);
 
     //------------------------------------------------------------------
     /// Returns a shared pointer to the breakpoint location with index
@@ -115,7 +115,7 @@ public:
     ///     pointer if the breakpoint doesn't exist.
     //------------------------------------------------------------------
     const lldb::BreakpointLocationSP
-    GetByIndex (uint32_t i) const;
+    GetByIndex (size_t i) const;
 
     //------------------------------------------------------------------
     /// Returns the number of elements in this breakpoint location list.
@@ -171,6 +171,14 @@ public:
     //------------------------------------------------------------------
     bool ValidForThisThread (Thread *thread);
 
+    //------------------------------------------------------------------
+    /// Tell whether ALL the breakpoints in the location collection are internal.
+    ///
+    /// @result
+    ///     \b true if all breakpoint locations are owned by internal breakpoints,
+    ///     \b false otherwise.
+    //------------------------------------------------------------------
+    bool IsInternal() const;
 
 
 protected:

Modified: lldb/branches/windows/include/lldb/Breakpoint/BreakpointLocationList.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Breakpoint/BreakpointLocationList.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Breakpoint/BreakpointLocationList.h (original)
+++ lldb/branches/windows/include/lldb/Breakpoint/BreakpointLocationList.h Wed Apr 17 03:38:48 2013
@@ -119,7 +119,7 @@ public:
     ///     pointer if the breakpoint doesn't exist.
     //------------------------------------------------------------------
     lldb::BreakpointLocationSP
-    GetByIndex (uint32_t i);
+    GetByIndex (size_t i);
 
     //------------------------------------------------------------------
     /// Returns a shared pointer to the breakpoint location with index
@@ -133,7 +133,7 @@ public:
     ///     pointer if the breakpoint doesn't exist.
     //------------------------------------------------------------------
     const lldb::BreakpointLocationSP
-    GetByIndex (uint32_t i) const;
+    GetByIndex (size_t i) const;
 
     //------------------------------------------------------------------
     /// Removes all the locations in this list from their breakpoint site

Modified: lldb/branches/windows/include/lldb/Breakpoint/BreakpointResolver.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Breakpoint/BreakpointResolver.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Breakpoint/BreakpointResolver.h (original)
+++ lldb/branches/windows/include/lldb/Breakpoint/BreakpointResolver.h Wed Apr 17 03:38:48 2013
@@ -134,7 +134,6 @@ public:
     }
 
 protected:
-    Target *m_target;          // Every resolver has a target.
     Breakpoint *m_breakpoint;  // This is the breakpoint we add locations to.
 
 private:

Modified: lldb/branches/windows/include/lldb/Breakpoint/BreakpointResolverName.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Breakpoint/BreakpointResolverName.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Breakpoint/BreakpointResolverName.h (original)
+++ lldb/branches/windows/include/lldb/Breakpoint/BreakpointResolverName.h Wed Apr 17 03:38:48 2013
@@ -86,13 +86,33 @@ public:
     }
 
 protected:
-    std::vector<ConstString> m_func_names;
-    uint32_t m_func_name_type_mask;  // See FunctionNameType
-    ConstString m_class_name;  // FIXME: Not used yet.  The idea would be to stop on methods of this class.
+    struct LookupInfo
+    {
+        ConstString name;
+        ConstString lookup_name;
+        uint32_t name_type_mask; // See FunctionNameType
+        bool match_name_after_lookup;
+        
+        LookupInfo () :
+            name(),
+            lookup_name(),
+            name_type_mask (0),
+            match_name_after_lookup (false)
+        {
+        }
+        
+        void
+        Prune (SymbolContextList &sc_list,
+               size_t start_idx) const;
+    };
+    std::vector<LookupInfo> m_lookups;
+    ConstString m_class_name;
     RegularExpression m_regex;
     Breakpoint::MatchType m_match_type;
     bool m_skip_prologue;
 
+    void
+    AddNameLookup (const ConstString &name, uint32_t name_type_mask);
 private:
     DISALLOW_COPY_AND_ASSIGN(BreakpointResolverName);
 };

Modified: lldb/branches/windows/include/lldb/Breakpoint/BreakpointSite.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Breakpoint/BreakpointSite.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Breakpoint/BreakpointSite.h (original)
+++ lldb/branches/windows/include/lldb/Breakpoint/BreakpointSite.h Wed Apr 17 03:38:48 2013
@@ -83,7 +83,7 @@ public:
     //------------------------------------------------------------------
     bool
     SetTrapOpcode (const uint8_t *trap_opcode,
-                   size_t trap_opcode_size);
+                   uint32_t trap_opcode_size);
 
     //------------------------------------------------------------------
     /// Gets the original instruction bytes that were overwritten by the trap
@@ -168,7 +168,7 @@ public:
     /// @return
     ///    The number of owners.
     //------------------------------------------------------------------
-    uint32_t
+    size_t
     GetNumberOfOwners ();
 
     //------------------------------------------------------------------
@@ -183,7 +183,7 @@ public:
     ///    A shared pointer to the breakpoint location at that index.
     //------------------------------------------------------------------
     lldb::BreakpointLocationSP
-    GetOwnerAtIndex (uint32_t index);
+    GetOwnerAtIndex (size_t idx);
     
     //------------------------------------------------------------------
     /// Check whether the owners of this breakpoint site have any
@@ -220,9 +220,29 @@ public:
     GetDescription (Stream *s,
                     lldb::DescriptionLevel level);
 
+    //------------------------------------------------------------------
+    /// Tell whether a breakpoint has a location at this site.
+    ///
+    /// @param[in] bp_id
+    ///     The breakpoint id to query.
+    ///
+    /// @result
+    ///     \b true if bp_id has a location that is at this site,
+    ///     \b false otherwise.
+    //------------------------------------------------------------------
     bool
     IsBreakpointAtThisSite (lldb::break_id_t bp_id);
 
+    //------------------------------------------------------------------
+    /// Tell whether ALL the breakpoints in the location collection are internal.
+    ///
+    /// @result
+    ///     \b true if all breakpoint locations are owned by internal breakpoints,
+    ///     \b false otherwise.
+    //------------------------------------------------------------------
+    bool
+    IsInternal () const;
+    
     BreakpointSite::Type
     GetType () const
     {
@@ -244,7 +264,7 @@ private:
     /// @param[in] context
     ///    \a break_loc_id is the Breakpoint Location to remove.
     //------------------------------------------------------------------
-    uint32_t
+    size_t
     RemoveOwner (lldb::break_id_t break_id,
                  lldb::break_id_t break_loc_id);
 
@@ -265,7 +285,6 @@ private:
     BreakpointSite (BreakpointSiteList *list,
                     const lldb::BreakpointLocationSP& owner,
                     lldb::addr_t m_addr,
-                    lldb::tid_t tid,
                     bool use_hardware);
 
     DISALLOW_COPY_AND_ASSIGN(BreakpointSite);

Modified: lldb/branches/windows/include/lldb/Breakpoint/Watchpoint.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Breakpoint/Watchpoint.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Breakpoint/Watchpoint.h (original)
+++ lldb/branches/windows/include/lldb/Breakpoint/Watchpoint.h Wed Apr 17 03:38:48 2013
@@ -76,7 +76,7 @@ public:
         DISALLOW_COPY_AND_ASSIGN (WatchpointEventData);
     };
 
-    Watchpoint (Target& target, lldb::addr_t addr, size_t size, const ClangASTType *type, bool hardware = true);
+    Watchpoint (Target& target, lldb::addr_t addr, uint32_t size, const ClangASTType *type, bool hardware = true);
     ~Watchpoint ();
 
     void

Modified: lldb/branches/windows/include/lldb/Core/Address.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/Address.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/Address.h (original)
+++ lldb/branches/windows/include/lldb/Core/Address.h Wed Apr 17 03:38:48 2013
@@ -302,7 +302,7 @@ public:
     ///     the address is currently not loaded.
     //------------------------------------------------------------------
     lldb::addr_t
-    GetCallableLoadAddress (Target *target) const;
+    GetCallableLoadAddress (Target *target, bool is_indirect = false) const;
 
     //------------------------------------------------------------------
     /// Get the load address as an opcode load address.
@@ -393,12 +393,6 @@ public:
     bool
     ResolveAddressUsingFileSections (lldb::addr_t addr, const SectionList *sections);
 
-    bool
-    IsLinkedAddress () const;
-
-    void
-    ResolveLinkedAddress ();
-
     //------------------------------------------------------------------
     /// Set the address to represent \a load_addr.
     ///

Modified: lldb/branches/windows/include/lldb/Core/ArchSpec.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/ArchSpec.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/ArchSpec.h (original)
+++ lldb/branches/windows/include/lldb/Core/ArchSpec.h Wed Apr 17 03:38:48 2013
@@ -43,8 +43,10 @@ public:
         eCore_arm_armv6,
         eCore_arm_armv7,
         eCore_arm_armv7f,
-        eCore_arm_armv7k,
         eCore_arm_armv7s,
+        eCore_arm_armv7k,
+        eCore_arm_armv7m,
+        eCore_arm_armv7em,
         eCore_arm_xscale,  
         eCore_thumb,
         eCore_thumbv4t,
@@ -53,8 +55,10 @@ public:
         eCore_thumbv6,
         eCore_thumbv7,
         eCore_thumbv7f,
-        eCore_thumbv7k,
         eCore_thumbv7s,
+        eCore_thumbv7k,
+        eCore_thumbv7m,
+        eCore_thumbv7em,
         
         eCore_ppc_generic,
         eCore_ppc_ppc601,
@@ -98,7 +102,7 @@ public:
         kCore_arm_last      = eCore_arm_xscale,
 
         kCore_thumb_first   = eCore_thumb,
-        kCore_thumb_last    = eCore_thumbv7s,
+        kCore_thumb_last    = eCore_thumbv7em,
 
         kCore_ppc_first     = eCore_ppc_generic,
         kCore_ppc_last      = eCore_ppc_ppc970,
@@ -159,7 +163,7 @@ public:
     const ArchSpec&
     operator= (const ArchSpec& rhs);
 
-    static uint32_t
+    static size_t
     AutoComplete (const char *name, 
                   StringList &matches);
 

Removed: lldb/branches/windows/include/lldb/Core/CXXFormatterFunctions.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/CXXFormatterFunctions.h?rev=179678&view=auto
==============================================================================
--- lldb/branches/windows/include/lldb/Core/CXXFormatterFunctions.h (original)
+++ lldb/branches/windows/include/lldb/Core/CXXFormatterFunctions.h (removed)
@@ -1,334 +0,0 @@
-//===-- CXXFormatterFunctions.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_CXXFormatterFunctions_h_
-#define liblldb_CXXFormatterFunctions_h_
-
-#include <stdint.h>
-#include "lldb/lldb-forward.h"
-#ifdef _MSC_VER
-typedef unsigned __int64 uint64_t;
-#endif
-
-#include "lldb/Core/ConstString.h"
-#include "lldb/Core/FormatClasses.h"
-
-#include "clang/AST/ASTContext.h"
-
-namespace lldb_private {
-    namespace formatters
-    {
-        
-        bool
-        ExtractValueFromObjCExpression (ValueObject &valobj,
-                                        const char* target_type,
-                                        const char* selector,
-                                        uint64_t &value);
-        
-        lldb::ValueObjectSP
-        CallSelectorOnObject (ValueObject &valobj,
-                              const char* return_type,
-                              const char* selector,
-                              uint64_t index);
-        
-        lldb::ValueObjectSP
-        CallSelectorOnObject (ValueObject &valobj,
-                              const char* return_type,
-                              const char* selector,
-                              const char* key);
-        
-        template<bool name_entries>
-        bool
-        NSDictionarySummaryProvider (ValueObject& valobj, Stream& stream);
-        
-        bool
-        NSArraySummaryProvider (ValueObject& valobj, Stream& stream);
-        
-        template<bool needs_at>
-        bool
-        NSDataSummaryProvider (ValueObject& valobj, Stream& stream);
-        
-        bool
-        NSNumberSummaryProvider (ValueObject& valobj, Stream& stream);
-
-        bool
-        NSStringSummaryProvider (ValueObject& valobj, Stream& stream);
-        
-        bool
-        ObjCBOOLSummaryProvider (ValueObject& valobj, Stream& stream);
-        
-        template <bool is_sel_ptr>
-        bool
-        ObjCSELSummaryProvider (ValueObject& valobj, Stream& stream);
-        
-        bool
-        RuntimeSpecificDescriptionSummaryProvider (ValueObject& valobj, Stream& stream);
-        
-        template bool
-        NSDictionarySummaryProvider<true> (ValueObject&, Stream&) ;
-        
-        template bool
-        NSDictionarySummaryProvider<false> (ValueObject&, Stream&) ;
-        
-        template bool
-        NSDataSummaryProvider<true> (ValueObject&, Stream&) ;
-        
-        template bool
-        NSDataSummaryProvider<false> (ValueObject&, Stream&) ;
-        
-        template bool
-        ObjCSELSummaryProvider<true> (ValueObject&, Stream&);
-
-        template bool
-        ObjCSELSummaryProvider<false> (ValueObject&, Stream&);
-        
-        class NSArrayMSyntheticFrontEnd : public SyntheticChildrenFrontEnd
-        {
-        private:
-            struct DataDescriptor_32
-            {
-                uint32_t _used;
-                uint32_t _priv1 : 2 ;
-                uint32_t _size : 30;
-                uint32_t _priv2 : 2;
-                uint32_t offset : 30;
-                uint32_t _priv3;
-                uint32_t _data;
-            };
-            struct DataDescriptor_64
-            {
-                uint64_t _used;
-                uint64_t _priv1 : 2 ;
-                uint64_t _size : 62;
-                uint64_t _priv2 : 2;
-                uint64_t offset : 62;
-                uint32_t _priv3;
-                uint64_t _data;
-            };
-        public:
-            NSArrayMSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp);
-            
-            virtual uint32_t
-            CalculateNumChildren ();
-            
-            virtual lldb::ValueObjectSP
-            GetChildAtIndex (uint32_t idx);
-            
-            virtual bool
-            Update();
-            
-            virtual bool
-            MightHaveChildren ();
-            
-            virtual uint32_t
-            GetIndexOfChildWithName (const ConstString &name);
-            
-            virtual
-            ~NSArrayMSyntheticFrontEnd ();
-        private:
-            ExecutionContextRef m_exe_ctx_ref;
-            uint8_t m_ptr_size;
-            DataDescriptor_32 *m_data_32;
-            DataDescriptor_64 *m_data_64;
-            ClangASTType m_id_type;
-            std::vector<lldb::ValueObjectSP> m_children;
-        };
-        
-        class NSArrayISyntheticFrontEnd : public SyntheticChildrenFrontEnd
-        {
-        public:
-            NSArrayISyntheticFrontEnd (lldb::ValueObjectSP valobj_sp);
-            
-            virtual uint32_t
-            CalculateNumChildren ();
-            
-            virtual lldb::ValueObjectSP
-            GetChildAtIndex (uint32_t idx);
-            
-            virtual bool
-            Update();
-            
-            virtual bool
-            MightHaveChildren ();
-            
-            virtual uint32_t
-            GetIndexOfChildWithName (const ConstString &name);
-            
-            virtual
-            ~NSArrayISyntheticFrontEnd ();
-        private:
-            ExecutionContextRef m_exe_ctx_ref;
-            uint8_t m_ptr_size;
-            uint64_t m_items;
-            lldb::addr_t m_data_ptr;
-            ClangASTType m_id_type;
-            std::vector<lldb::ValueObjectSP> m_children;
-        };
-        
-        class NSArrayCodeRunningSyntheticFrontEnd : public SyntheticChildrenFrontEnd
-        {
-        public:
-            NSArrayCodeRunningSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp);
-            
-            virtual uint32_t
-            CalculateNumChildren ();
-            
-            virtual lldb::ValueObjectSP
-            GetChildAtIndex (uint32_t idx);
-            
-            virtual bool
-            Update();
-            
-            virtual bool
-            MightHaveChildren ();
-            
-            virtual uint32_t
-            GetIndexOfChildWithName (const ConstString &name);
-            
-            virtual
-            ~NSArrayCodeRunningSyntheticFrontEnd ();
-        };
-        
-        SyntheticChildrenFrontEnd* NSArraySyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
-        
-        class NSDictionaryISyntheticFrontEnd : public SyntheticChildrenFrontEnd
-        {
-        private:
-            struct DataDescriptor_32
-            {
-                uint32_t _used : 26;
-                uint32_t _szidx : 6;
-            };
-            struct DataDescriptor_64
-            {
-                uint64_t _used : 58;
-                uint32_t _szidx : 6;
-            };
-            
-            struct DictionaryItemDescriptor
-            {
-                lldb::addr_t key_ptr;
-                lldb::addr_t val_ptr;
-                lldb::ValueObjectSP valobj_sp;
-            };
-            
-        public:
-            NSDictionaryISyntheticFrontEnd (lldb::ValueObjectSP valobj_sp);
-            
-            virtual uint32_t
-            CalculateNumChildren ();
-            
-            virtual lldb::ValueObjectSP
-            GetChildAtIndex (uint32_t idx);
-            
-            virtual bool
-            Update();
-            
-            virtual bool
-            MightHaveChildren ();
-            
-            virtual uint32_t
-            GetIndexOfChildWithName (const ConstString &name);
-            
-            virtual
-            ~NSDictionaryISyntheticFrontEnd ();
-        private:
-            ExecutionContextRef m_exe_ctx_ref;
-            uint8_t m_ptr_size;
-            DataDescriptor_32 *m_data_32;
-            DataDescriptor_64 *m_data_64;
-            lldb::addr_t m_data_ptr;
-            std::vector<DictionaryItemDescriptor> m_children;
-        };
-        
-        class NSDictionaryMSyntheticFrontEnd : public SyntheticChildrenFrontEnd
-        {
-        private:
-            struct DataDescriptor_32
-            {
-                uint32_t _used : 26;
-                uint32_t _kvo : 1;
-                uint32_t _size;
-                uint32_t _mutations;
-                uint32_t _objs_addr;
-                uint32_t _keys_addr;
-            };
-            struct DataDescriptor_64
-            {
-                uint64_t _used : 58;
-                uint32_t _kvo : 1;
-                uint64_t _size;
-                uint64_t _mutations;
-                uint64_t _objs_addr;
-                uint64_t _keys_addr;
-            };
-            struct DictionaryItemDescriptor
-            {
-                lldb::addr_t key_ptr;
-                lldb::addr_t val_ptr;
-                lldb::ValueObjectSP valobj_sp;
-            };
-        public:
-            NSDictionaryMSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp);
-            
-            virtual uint32_t
-            CalculateNumChildren ();
-            
-            virtual lldb::ValueObjectSP
-            GetChildAtIndex (uint32_t idx);
-            
-            virtual bool
-            Update();
-            
-            virtual bool
-            MightHaveChildren ();
-            
-            virtual uint32_t
-            GetIndexOfChildWithName (const ConstString &name);
-            
-            virtual
-            ~NSDictionaryMSyntheticFrontEnd ();
-        private:
-            ExecutionContextRef m_exe_ctx_ref;
-            uint8_t m_ptr_size;
-            DataDescriptor_32 *m_data_32;
-            DataDescriptor_64 *m_data_64;
-            std::vector<DictionaryItemDescriptor> m_children;
-        };
-        
-        class NSDictionaryCodeRunningSyntheticFrontEnd : public SyntheticChildrenFrontEnd
-        {
-        public:
-            NSDictionaryCodeRunningSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp);
-            
-            virtual uint32_t
-            CalculateNumChildren ();
-            
-            virtual lldb::ValueObjectSP
-            GetChildAtIndex (uint32_t idx);
-            
-            virtual bool
-            Update();
-            
-            virtual bool
-            MightHaveChildren ();
-            
-            virtual uint32_t
-            GetIndexOfChildWithName (const ConstString &name);
-            
-            virtual
-            ~NSDictionaryCodeRunningSyntheticFrontEnd ();
-        };
-        
-        SyntheticChildrenFrontEnd* NSDictionarySyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
-        
-    }
-}
-
-#endif

Modified: lldb/branches/windows/include/lldb/Core/DataBuffer.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/DataBuffer.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/DataBuffer.h (original)
+++ lldb/branches/windows/include/lldb/Core/DataBuffer.h Wed Apr 17 03:38:48 2013
@@ -84,7 +84,7 @@ public:
     /// @return
     ///     The number of bytes this object currently contains.
     //------------------------------------------------------------------
-    virtual size_t
+    virtual lldb::offset_t
     GetByteSize() const = 0;
 };
 

Modified: lldb/branches/windows/include/lldb/Core/DataBufferHeap.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/DataBufferHeap.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/DataBufferHeap.h (original)
+++ lldb/branches/windows/include/lldb/Core/DataBufferHeap.h Wed Apr 17 03:38:48 2013
@@ -50,7 +50,7 @@ public:
     /// @param[in] ch
     ///     The character to use when filling the buffer initially.
     //------------------------------------------------------------------
-    DataBufferHeap (size_t n, uint8_t ch);
+    DataBufferHeap (lldb::offset_t n, uint8_t ch);
 
     //------------------------------------------------------------------
     /// Construct by making a copy of \a src_len bytes from \a src.
@@ -61,7 +61,7 @@ public:
     /// @param[in] src_len
     ///     The number of bytes in \a src to copy.
     //------------------------------------------------------------------
-    DataBufferHeap (const void *src, size_t src_len);
+    DataBufferHeap (const void *src, lldb::offset_t src_len);
 
     //------------------------------------------------------------------
     /// Destructor.
@@ -87,7 +87,7 @@ public:
     //------------------------------------------------------------------
     /// @copydoc DataBuffer::GetByteSize() const
     //------------------------------------------------------------------
-    virtual size_t
+    virtual lldb::offset_t
     GetByteSize () const;
 
     //------------------------------------------------------------------
@@ -104,8 +104,8 @@ public:
     ///     The size in bytes after that this heap buffer was
     ///     successfully resized to.
     //------------------------------------------------------------------
-    size_t
-    SetByteSize (size_t byte_size);
+    lldb::offset_t
+    SetByteSize (lldb::offset_t byte_size);
 
     //------------------------------------------------------------------
     /// Makes a copy of the \a src_len bytes in \a src.
@@ -119,7 +119,7 @@ public:
     ///     The number of bytes in \a src to copy.
     //------------------------------------------------------------------
     void
-    CopyData (const void *src, size_t src_len);
+    CopyData (const void *src, lldb::offset_t src_len);
 
 private:
     //------------------------------------------------------------------

Modified: lldb/branches/windows/include/lldb/Core/DataBufferMemoryMap.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/DataBufferMemoryMap.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/DataBufferMemoryMap.h (original)
+++ lldb/branches/windows/include/lldb/Core/DataBufferMemoryMap.h Wed Apr 17 03:38:48 2013
@@ -70,7 +70,7 @@ public:
     //------------------------------------------------------------------
     /// @copydoc DataBuffer::GetByteSize() const
     //------------------------------------------------------------------
-    virtual size_t
+    virtual lldb::offset_t
     GetByteSize () const;
 
     //------------------------------------------------------------------
@@ -107,8 +107,8 @@ public:
     //------------------------------------------------------------------
     size_t
     MemoryMapFromFileSpec (const FileSpec* file,
-                           off_t offset = 0,
-                           size_t length = SIZE_MAX,
+                           lldb::offset_t offset = 0,
+                           lldb::offset_t length = SIZE_MAX,
                            bool writeable = false);
 
     //------------------------------------------------------------------
@@ -136,8 +136,8 @@ public:
     //------------------------------------------------------------------
     size_t
     MemoryMapFromFileDescriptor (int fd, 
-                                 off_t offset,
-                                 size_t length,
+                                 lldb::offset_t offset,
+                                 lldb::offset_t length,
                                  bool write,
                                  bool fd_is_file);
 
@@ -148,7 +148,7 @@ protected:
     uint8_t * m_mmap_addr;  ///< The actual pointer that was returned from \c mmap()
     size_t m_mmap_size;     ///< The actual number of bytes that were mapped when \c mmap() was called
     uint8_t *m_data;        ///< The data the user requested somewhere within the memory mapped data.
-    size_t m_size;          ///< The size of the data the user got when data was requested
+    lldb::offset_t m_size;  ///< The size of the data the user got when data was requested
 #ifdef _WIN32
     HANDLE m_mmap_handle;
 #endif

Modified: lldb/branches/windows/include/lldb/Core/DataEncoder.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/DataEncoder.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/DataEncoder.h (original)
+++ lldb/branches/windows/include/lldb/Core/DataEncoder.h Wed Apr 17 03:38:48 2013
@@ -424,7 +424,19 @@ public:
     ///     length bytes available at that offset, \b false otherwise.
     //------------------------------------------------------------------
     bool
-    ValidOffsetForDataOfSize (uint32_t offset, uint32_t length) const;
+    ValidOffsetForDataOfSize (uint32_t offset, uint32_t length) const
+    {
+        return length <= BytesLeft (offset);
+    }
+
+    uint32_t
+    BytesLeft (uint32_t offset) const
+    {
+        const uint32_t size = GetByteSize();
+        if (size > offset)
+            return size - offset;
+        return 0;
+    }
 
 protected:
     //------------------------------------------------------------------

Modified: lldb/branches/windows/include/lldb/Core/DataExtractor.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/DataExtractor.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/DataExtractor.h (original)
+++ lldb/branches/windows/include/lldb/Core/DataExtractor.h Wed Apr 17 03:38:48 2013
@@ -86,7 +86,7 @@ public:
     /// @param[in] addr_size
     ///     A new address byte size value.
     //------------------------------------------------------------------
-    DataExtractor (const void* data, uint32_t data_length, lldb::ByteOrder byte_order, uint8_t addr_size);
+    DataExtractor (const void* data, lldb::offset_t data_length, lldb::ByteOrder byte_order, uint32_t addr_size);
 
     //------------------------------------------------------------------
     /// Construct with shared data.
@@ -105,7 +105,7 @@ public:
     /// @param[in] addr_size
     ///     A new address byte size value.
     //------------------------------------------------------------------
-    DataExtractor (const lldb::DataBufferSP& data_sp, lldb::ByteOrder byte_order, uint8_t addr_size);
+    DataExtractor (const lldb::DataBufferSP& data_sp, lldb::ByteOrder byte_order, uint32_t addr_size);
 
     //------------------------------------------------------------------
     /// Construct with a subset of \a data.
@@ -130,7 +130,7 @@ public:
     /// @param[in] length
     ///     The length in bytes of the subset of data.
     //------------------------------------------------------------------
-    DataExtractor (const DataExtractor& data, uint32_t offset, uint32_t length);
+    DataExtractor (const DataExtractor& data, lldb::offset_t offset, lldb::offset_t length);
 
     DataExtractor (const DataExtractor& rhs);
     //------------------------------------------------------------------
@@ -204,10 +204,10 @@ public:
     /// @return
     ///     The offset at which dumping ended.
     //------------------------------------------------------------------
-    uint32_t
+    lldb::offset_t
     PutToLog (Log *log,
-              uint32_t offset,
-              uint32_t length,
+              lldb::offset_t offset,
+              lldb::offset_t length,
               uint64_t base_addr,
               uint32_t num_per_line,
               Type type,
@@ -273,13 +273,13 @@ public:
     /// @return
     ///     The offset at which dumping ended.
     //------------------------------------------------------------------
-    uint32_t
+    lldb::offset_t
     Dump (Stream *s,
-          uint32_t offset,
+          lldb::offset_t offset,
           lldb::Format item_format,
-          uint32_t item_byte_size,
-          uint32_t item_count,
-          uint32_t num_per_line,
+          size_t item_byte_size,
+          size_t item_count,
+          size_t num_per_line,
           uint64_t base_addr,
           uint32_t item_bit_size,
           uint32_t item_bit_offset,
@@ -300,7 +300,7 @@ public:
     ///     UUID value.
     //------------------------------------------------------------------
     void
-    DumpUUID (Stream *s, uint32_t offset) const;
+    DumpUUID (Stream *s, lldb::offset_t offset) const;
 
     //------------------------------------------------------------------
     /// Extract an arbitrary number of bytes in the specified byte
@@ -332,7 +332,7 @@ public:
     ///     if there aren't enough bytes at the specified offset.
     //------------------------------------------------------------------
     size_t
-    ExtractBytes (uint32_t offset, uint32_t length, lldb::ByteOrder dst_byte_order, void *dst) const;
+    ExtractBytes (lldb::offset_t offset, lldb::offset_t length, lldb::ByteOrder dst_byte_order, void *dst) const;
 
     //------------------------------------------------------------------
     /// Extract an address from \a *offset_ptr.
@@ -353,10 +353,10 @@ public:
     ///     The extracted address value.
     //------------------------------------------------------------------
     uint64_t
-    GetAddress (uint32_t *offset_ptr) const;
+    GetAddress (lldb::offset_t *offset_ptr) const;
     
     uint64_t
-    GetAddress_unchecked (uint32_t *offset_ptr) const;
+    GetAddress_unchecked (lldb::offset_t *offset_ptr) const;
 
     //------------------------------------------------------------------
     /// Get the current address size.
@@ -367,7 +367,7 @@ public:
     /// @return
     ///     The size in bytes of address values that will be extracted.
     //------------------------------------------------------------------
-    uint8_t
+    uint32_t
     GetAddressByteSize () const
     {
         return m_addr_size;
@@ -379,7 +379,7 @@ public:
     /// @return
     ///     The total number of bytes of data this object refers to.
     //------------------------------------------------------------------
-    size_t
+    uint64_t
     GetByteSize () const
     {
         return m_end - m_start;
@@ -408,7 +408,7 @@ public:
     ///     NULL will be returned.
     //------------------------------------------------------------------
     const char *
-    GetCStr (uint32_t *offset_ptr) const;
+    GetCStr (lldb::offset_t *offset_ptr) const;
 
     //------------------------------------------------------------------
     /// Extract \a length bytes from \a *offset_ptr.
@@ -434,7 +434,13 @@ public:
     ///     and length are valid, or NULL otherwise.
     //------------------------------------------------------------------
     const void*
-    GetData (uint32_t *offset_ptr, uint32_t length) const;
+    GetData (lldb::offset_t *offset_ptr, lldb::offset_t length) const
+    {
+        const uint8_t *ptr = PeekData (*offset_ptr, length);
+        if (ptr)
+            *offset_ptr += length;
+        return ptr;
+    }
     
     //------------------------------------------------------------------
     /// Copy \a dst_len bytes from \a *offset_ptr and ensure the copied
@@ -475,11 +481,11 @@ public:
     ///     Returns the number of bytes that were copied, or zero if 
     ///     anything goes wrong.
     //------------------------------------------------------------------
-    uint32_t
-    CopyByteOrderedData (uint32_t src_offset, 
-                         uint32_t src_len,
+    lldb::offset_t
+    CopyByteOrderedData (lldb::offset_t src_offset,
+                         lldb::offset_t src_len,
                          void *dst, 
-                         uint32_t dst_len, 
+                         lldb::offset_t dst_len,
                          lldb::ByteOrder dst_byte_order) const;
 
     //------------------------------------------------------------------
@@ -538,13 +544,13 @@ public:
     ///     The floating value that was extracted, or zero on failure.
     //------------------------------------------------------------------
     float
-    GetFloat (uint32_t *offset_ptr) const;
+    GetFloat (lldb::offset_t *offset_ptr) const;
 
     double
-    GetDouble (uint32_t *offset_ptr) const;
+    GetDouble (lldb::offset_t *offset_ptr) const;
 
     long double
-    GetLongDouble (uint32_t *offset_ptr) const;
+    GetLongDouble (lldb::offset_t *offset_ptr) const;
 
     //------------------------------------------------------------------
     /// Extract a GNU encoded pointer value from \a *offset_ptr.
@@ -575,7 +581,11 @@ public:
     ///     The extracted GNU encoded pointer value.
     //------------------------------------------------------------------
     uint64_t
-    GetGNUEHPointer (uint32_t *offset_ptr, uint32_t eh_ptr_enc, lldb::addr_t pc_rel_addr, lldb::addr_t text_addr, lldb::addr_t data_addr);
+    GetGNUEHPointer (lldb::offset_t *offset_ptr,
+                     uint32_t eh_ptr_enc,
+                     lldb::addr_t pc_rel_addr,
+                     lldb::addr_t text_addr,
+                     lldb::addr_t data_addr);
 
     //------------------------------------------------------------------
     /// Extract an integer of size \a byte_size from \a *offset_ptr.
@@ -601,7 +611,7 @@ public:
     ///     The integer value that was extracted, or zero on failure.
     //------------------------------------------------------------------
     uint32_t
-    GetMaxU32 (uint32_t *offset_ptr, uint32_t byte_size) const;
+    GetMaxU32 (lldb::offset_t *offset_ptr, size_t byte_size) const;
 
     //------------------------------------------------------------------
     /// Extract an unsigned integer of size \a byte_size from \a
@@ -630,10 +640,10 @@ public:
     ///     failure.
     //------------------------------------------------------------------
     uint64_t
-    GetMaxU64 (uint32_t *offset_ptr, uint32_t byte_size) const;
+    GetMaxU64 (lldb::offset_t *offset_ptr, size_t byte_size) const;
 
     uint64_t
-    GetMaxU64_unchecked (uint32_t *offset_ptr, uint32_t byte_size) const;
+    GetMaxU64_unchecked (lldb::offset_t *offset_ptr, size_t byte_size) const;
 
     //------------------------------------------------------------------
     /// Extract an signed integer of size \a byte_size from \a *offset_ptr.
@@ -661,7 +671,7 @@ public:
     ///     or zero on failure.
     //------------------------------------------------------------------
     int64_t
-    GetMaxS64 (uint32_t *offset_ptr, uint32_t size) const;
+    GetMaxS64 (lldb::offset_t *offset_ptr, size_t size) const;
 
     //------------------------------------------------------------------
     /// Extract an unsigned integer of size \a byte_size from \a
@@ -700,7 +710,10 @@ public:
     ///     zero on failure.
     //------------------------------------------------------------------
     uint64_t
-    GetMaxU64Bitfield (uint32_t *offset_ptr, uint32_t size, uint32_t bitfield_bit_size, uint32_t bitfield_bit_offset) const;
+    GetMaxU64Bitfield (lldb::offset_t *offset_ptr,
+                       size_t size,
+                       uint32_t bitfield_bit_size,
+                       uint32_t bitfield_bit_offset) const;
 
     //------------------------------------------------------------------
     /// Extract an signed integer of size \a byte_size from \a
@@ -739,7 +752,10 @@ public:
     ///     zero on failure.
     //------------------------------------------------------------------
     int64_t
-    GetMaxS64Bitfield (uint32_t *offset_ptr, uint32_t size, uint32_t bitfield_bit_size, uint32_t bitfield_bit_offset) const;
+    GetMaxS64Bitfield (lldb::offset_t *offset_ptr,
+                       size_t size,
+                       uint32_t bitfield_bit_size,
+                       uint32_t bitfield_bit_offset) const;
 
     //------------------------------------------------------------------
     /// Extract an pointer from \a *offset_ptr.
@@ -760,7 +776,7 @@ public:
     ///     The extracted pointer value as a 64 integer.
     //------------------------------------------------------------------
     uint64_t
-    GetPointer (uint32_t *offset_ptr) const;
+    GetPointer (lldb::offset_t *offset_ptr) const;
 
     //------------------------------------------------------------------
     /// Get the current byte order value.
@@ -792,10 +808,10 @@ public:
     ///     The extracted uint8_t value.
     //------------------------------------------------------------------
     uint8_t
-    GetU8 ( uint32_t *offset_ptr) const;
+    GetU8 ( lldb::offset_t *offset_ptr) const;
 
     uint8_t
-    GetU8_unchecked (uint32_t *offset_ptr) const
+    GetU8_unchecked (lldb::offset_t *offset_ptr) const
     {
         uint8_t val = m_start[*offset_ptr];
         *offset_ptr += 1;
@@ -803,13 +819,13 @@ public:
     }
     
     uint16_t
-    GetU16_unchecked (uint32_t *offset_ptr) const;
+    GetU16_unchecked (lldb::offset_t *offset_ptr) const;
 
     uint32_t
-    GetU32_unchecked (uint32_t *offset_ptr) const;
+    GetU32_unchecked (lldb::offset_t *offset_ptr) const;
 
     uint64_t
-    GetU64_unchecked (uint32_t *offset_ptr) const;
+    GetU64_unchecked (lldb::offset_t *offset_ptr) const;
     //------------------------------------------------------------------
     /// Extract \a count uint8_t values from \a *offset_ptr.
     ///
@@ -836,7 +852,7 @@ public:
     ///     NULL otherise.
     //------------------------------------------------------------------
     void *
-    GetU8 ( uint32_t *offset_ptr, void *dst, uint32_t count) const;
+    GetU8 (lldb::offset_t *offset_ptr, void *dst, uint32_t count) const;
 
     //------------------------------------------------------------------
     /// Extract a uint16_t value from \a *offset_ptr.
@@ -855,7 +871,7 @@ public:
     ///     The extracted uint16_t value.
     //------------------------------------------------------------------
     uint16_t
-    GetU16 (uint32_t *offset_ptr) const;
+    GetU16 (lldb::offset_t *offset_ptr) const;
 
     //------------------------------------------------------------------
     /// Extract \a count uint16_t values from \a *offset_ptr.
@@ -883,7 +899,7 @@ public:
     ///     NULL otherise.
     //------------------------------------------------------------------
     void *
-    GetU16 (uint32_t *offset_ptr, void *dst, uint32_t count) const;
+    GetU16 (lldb::offset_t *offset_ptr, void *dst, uint32_t count) const;
 
     //------------------------------------------------------------------
     /// Extract a uint32_t value from \a *offset_ptr.
@@ -902,7 +918,7 @@ public:
     ///     The extracted uint32_t value.
     //------------------------------------------------------------------
     uint32_t
-    GetU32 (uint32_t *offset_ptr) const;
+    GetU32 (lldb::offset_t *offset_ptr) const;
 
     //------------------------------------------------------------------
     /// Extract \a count uint32_t values from \a *offset_ptr.
@@ -930,7 +946,7 @@ public:
     ///     NULL otherise.
     //------------------------------------------------------------------
     void *
-    GetU32 (uint32_t *offset_ptr, void *dst, uint32_t count) const;
+    GetU32 (lldb::offset_t *offset_ptr, void *dst, uint32_t count) const;
 
     //------------------------------------------------------------------
     /// Extract a uint64_t value from \a *offset_ptr.
@@ -949,7 +965,7 @@ public:
     ///     The extracted uint64_t value.
     //------------------------------------------------------------------
     uint64_t
-    GetU64 (uint32_t *offset_ptr) const;
+    GetU64 (lldb::offset_t *offset_ptr) const;
 
     //------------------------------------------------------------------
     /// Extract \a count uint64_t values from \a *offset_ptr.
@@ -977,7 +993,7 @@ public:
     ///     NULL otherise.
     //------------------------------------------------------------------
     void *
-    GetU64 ( uint32_t *offset_ptr, void *dst, uint32_t count) const;
+    GetU64 ( lldb::offset_t *offset_ptr, void *dst, uint32_t count) const;
 
     //------------------------------------------------------------------
     /// Extract a signed LEB128 value from \a *offset_ptr.
@@ -998,7 +1014,7 @@ public:
     ///     The extracted signed integer value.
     //------------------------------------------------------------------
     int64_t
-    GetSLEB128 (uint32_t *offset_ptr) const;
+    GetSLEB128 (lldb::offset_t *offset_ptr) const;
 
     //------------------------------------------------------------------
     /// Extract a unsigned LEB128 value from \a *offset_ptr.
@@ -1019,7 +1035,7 @@ public:
     ///     The extracted unsigned integer value.
     //------------------------------------------------------------------
     uint64_t
-    GetULEB128 (uint32_t *offset_ptr) const;
+    GetULEB128 (lldb::offset_t *offset_ptr) const;
 
     lldb::DataBufferSP &
     GetSharedDataBuffer ()
@@ -1042,7 +1058,7 @@ public:
     ///     NULL otherwise.
     //------------------------------------------------------------------
     const char *
-    PeekCStr (uint32_t offset) const;
+    PeekCStr (lldb::offset_t offset) const;
 
     //------------------------------------------------------------------
     /// Peek at a bytes at \a offset.
@@ -1056,7 +1072,12 @@ public:
     ///     otherwise.
     //------------------------------------------------------------------
     const uint8_t*
-    PeekData (uint32_t offset, uint32_t length) const;
+    PeekData (lldb::offset_t offset, lldb::offset_t length) const
+    {
+        if (length > 0 && ValidOffsetForDataOfSize(offset, length))
+            return m_start + offset;
+        return NULL;
+    }
 
     //------------------------------------------------------------------
     /// Set the address byte size.
@@ -1068,7 +1089,7 @@ public:
     ///     The size in bytes to use when extracting addresses.
     //------------------------------------------------------------------
     void
-    SetAddressByteSize (uint8_t addr_size)
+    SetAddressByteSize (uint32_t addr_size)
     {
         m_addr_size = addr_size;
     }
@@ -1094,8 +1115,8 @@ public:
     /// @return
     ///     The number of bytes that this object now contains.
     //------------------------------------------------------------------
-    uint32_t
-    SetData (const void *bytes, uint32_t length, lldb::ByteOrder byte_order);
+    lldb::offset_t
+    SetData (const void *bytes, lldb::offset_t length, lldb::ByteOrder byte_order);
 
     //------------------------------------------------------------------
     /// Adopt a subset of \a data.
@@ -1123,8 +1144,8 @@ public:
     /// @return
     ///     The number of bytes that this object now contains.
     //------------------------------------------------------------------
-    uint32_t
-    SetData (const DataExtractor& data, uint32_t offset, uint32_t length);
+    lldb::offset_t
+    SetData (const DataExtractor& data, lldb::offset_t offset, lldb::offset_t length);
 
     //------------------------------------------------------------------
     /// Adopt a subset of shared data in \a data_sp.
@@ -1151,8 +1172,8 @@ public:
     /// @return
     ///     The number of bytes that this object now contains.
     //------------------------------------------------------------------
-    uint32_t
-    SetData (const lldb::DataBufferSP& data_sp, uint32_t offset = 0, uint32_t length = UINT32_MAX);
+    lldb::offset_t
+    SetData (const lldb::DataBufferSP& data_sp, lldb::offset_t offset = 0, lldb::offset_t length = LLDB_INVALID_OFFSET);
 
     //------------------------------------------------------------------
     /// Set the byte_order value.
@@ -1188,7 +1209,7 @@ public:
     //      The number of bytes consumed during the extraction.
     //------------------------------------------------------------------
     uint32_t
-    Skip_LEB128 (uint32_t *offset_ptr) const;
+    Skip_LEB128 (lldb::offset_t *offset_ptr) const;
 
     //------------------------------------------------------------------
     /// Test the validity of \a offset.
@@ -1198,7 +1219,7 @@ public:
     ///     object, \b false otherwise.
     //------------------------------------------------------------------
     bool
-    ValidOffset (uint32_t offset) const
+    ValidOffset (lldb::offset_t offset) const
     {
         return offset < GetByteSize();
     }
@@ -1211,7 +1232,10 @@ public:
     ///     length bytes available at that offset, \b false otherwise.
     //------------------------------------------------------------------
     bool
-    ValidOffsetForDataOfSize (uint32_t offset, uint32_t length) const;
+    ValidOffsetForDataOfSize (lldb::offset_t offset, lldb::offset_t length) const
+    {
+        return length <= BytesLeft (offset);
+    }
 
     size_t
     Copy (DataExtractor& dest_data) const;
@@ -1220,16 +1244,26 @@ public:
     Append (DataExtractor& rhs);
     
     bool
-    Append (void* bytes, uint32_t length);
-    
+    Append (void* bytes, lldb::offset_t length);
+
+    lldb::offset_t
+    BytesLeft (lldb::offset_t offset) const
+    {
+        const lldb::offset_t size = GetByteSize();
+        if (size > offset)
+            return size - offset;
+        return 0;
+    }
+
 protected:
+    
     //------------------------------------------------------------------
     // Member variables
     //------------------------------------------------------------------
     const uint8_t * m_start;        ///< A pointer to the first byte of data.
     const uint8_t * m_end;          ///< A pointer to the byte that is past the end of the data.
     lldb::ByteOrder m_byte_order;   ///< The byte order of the data we are extracting from.
-    uint8_t         m_addr_size;    ///< The address size to use when extracting pointers or addresses
+    uint32_t m_addr_size;           ///< The address size to use when extracting pointers or addresses
     mutable lldb::DataBufferSP m_data_sp; ///< The shared pointer to data that can be shared among multilple instances
 };
 

Removed: lldb/branches/windows/include/lldb/Core/DataVisualization.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/DataVisualization.h?rev=179678&view=auto
==============================================================================
--- lldb/branches/windows/include/lldb/Core/DataVisualization.h (original)
+++ lldb/branches/windows/include/lldb/Core/DataVisualization.h (removed)
@@ -1,174 +0,0 @@
-//===-- DataVisualization.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_DataVisualization_h_
-#define lldb_DataVisualization_h_
-
-// C Includes
-// C++ Includes
-
-// Other libraries and framework includes
-// Project includes
-#include "lldb/Core/ConstString.h"
-#include "lldb/Core/FormatClasses.h"
-#include "lldb/Core/FormatManager.h"
-
-namespace lldb_private {
-
-// this class is the high-level front-end of LLDB Data Visualization
-// code in FormatManager.h/cpp is the low-level implementation of this feature
-// clients should refer to this class as the entry-point into the data formatters
-// unless they have a good reason to bypass this and go to the backend
-class DataVisualization
-{
-public:
-    
-    // use this call to force the FM to consider itself updated even when there is no apparent reason for that
-    static void
-    ForceUpdate();
-    
-    static uint32_t
-    GetCurrentRevision ();
-    
-    class ValueFormats
-    {
-    public:
-        static lldb::TypeFormatImplSP
-        GetFormat (ValueObject& valobj, lldb::DynamicValueType use_dynamic);
-        
-        static lldb::TypeFormatImplSP
-        GetFormat (const ConstString &type);
-        
-        static void
-        Add (const ConstString &type, const lldb::TypeFormatImplSP &entry);
-        
-        static bool
-        Delete (const ConstString &type);
-        
-        static void
-        Clear ();
-        
-        static void
-        LoopThrough (TypeFormatImpl::ValueCallback callback, void* callback_baton);
-        
-        static uint32_t
-        GetCount ();
-        
-        static lldb::TypeNameSpecifierImplSP
-        GetTypeNameSpecifierForFormatAtIndex (uint32_t);
-        
-        static lldb::TypeFormatImplSP
-        GetFormatAtIndex (uint32_t);
-    };
-    
-    static lldb::TypeSummaryImplSP
-    GetSummaryFormat(ValueObject& valobj,
-                     lldb::DynamicValueType use_dynamic);
-
-    static lldb::TypeSummaryImplSP
-    GetSummaryForType (lldb::TypeNameSpecifierImplSP type_sp);
-    
-#ifndef LLDB_DISABLE_PYTHON
-    static lldb::SyntheticChildrenSP
-    GetSyntheticChildrenForType (lldb::TypeNameSpecifierImplSP type_sp);
-#endif
-    
-    static lldb::TypeFilterImplSP
-    GetFilterForType (lldb::TypeNameSpecifierImplSP type_sp);
-
-#ifndef LLDB_DISABLE_PYTHON
-    static lldb::TypeSyntheticImplSP
-    GetSyntheticForType (lldb::TypeNameSpecifierImplSP type_sp);
-#endif
-    
-#ifndef LLDB_DISABLE_PYTHON
-    static lldb::SyntheticChildrenSP
-    GetSyntheticChildren(ValueObject& valobj,
-                         lldb::DynamicValueType use_dynamic);
-#endif
-    
-    static bool
-    AnyMatches(ConstString type_name,
-               TypeCategoryImpl::FormatCategoryItems items = TypeCategoryImpl::ALL_ITEM_TYPES,
-               bool only_enabled = true,
-               const char** matching_category = NULL,
-               TypeCategoryImpl::FormatCategoryItems* matching_type = NULL);
-    
-    class NamedSummaryFormats
-    {
-    public:
-        static bool
-        GetSummaryFormat (const ConstString &type, lldb::TypeSummaryImplSP &entry);
-        
-        static void
-        Add (const ConstString &type, const lldb::TypeSummaryImplSP &entry);
-        
-        static bool
-        Delete (const ConstString &type);
-        
-        static void
-        Clear ();
-        
-        static void
-        LoopThrough (TypeSummaryImpl::SummaryCallback callback, void* callback_baton);
-        
-        static uint32_t
-        GetCount ();
-    };
-    
-    class Categories
-    {
-    public:
-        
-        static bool
-        GetCategory (const ConstString &category,
-                     lldb::TypeCategoryImplSP &entry,
-                     bool allow_create = true);
-
-        static void
-        Add (const ConstString &category);
-        
-        static bool
-        Delete (const ConstString &category);
-        
-        static void
-        Clear ();
-        
-        static void
-        Clear (const ConstString &category);
-        
-        static void
-        Enable (const ConstString& category,
-                CategoryMap::Position = CategoryMap::Default);
-        
-        static void
-        Disable (const ConstString& category);
-
-        static void
-        Enable (const lldb::TypeCategoryImplSP& category,
-                CategoryMap::Position = CategoryMap::Default);
-        
-        static void
-        Disable (const lldb::TypeCategoryImplSP& category);
-        
-        static void
-        LoopThrough (FormatManager::CategoryCallback callback, void* callback_baton);
-        
-        static uint32_t
-        GetCount ();
-        
-        static lldb::TypeCategoryImplSP
-        GetCategoryAtIndex (uint32_t);
-    };
-};
-
-    
-} // namespace lldb_private
-
-#endif	// lldb_DataVisualization_h_

Modified: lldb/branches/windows/include/lldb/Core/Debugger.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/Debugger.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/Debugger.h (original)
+++ lldb/branches/windows/include/lldb/Core/Debugger.h Wed Apr 17 03:38:48 2013
@@ -22,13 +22,13 @@
 
 #include "lldb/Core/Broadcaster.h"
 #include "lldb/Core/Communication.h"
-#include "lldb/Core/FormatManager.h"
 #include "lldb/Core/InputReaderStack.h"
 #include "lldb/Core/Listener.h"
 #include "lldb/Core/StreamFile.h"
 #include "lldb/Core/SourceManager.h"
 #include "lldb/Core/UserID.h"
 #include "lldb/Core/UserSettingsController.h"
+#include "lldb/DataFormatters/FormatManager.h"
 #include "lldb/Host/Terminal.h"
 #include "lldb/Interpreter/OptionValueProperties.h"
 #include "lldb/Target/ExecutionContext.h"
@@ -158,10 +158,7 @@ public:
     // information, but it can look up files by absolute path and display them to you.
     // To get the target's source manager, call GetSourceManager on the target instead.
     SourceManager &
-    GetSourceManager ()
-    {
-        return m_source_manager;
-    }
+    GetSourceManager ();
 
 public:
     
@@ -226,11 +223,11 @@ public:
     static lldb::DebuggerSP
     FindDebuggerWithInstanceName (const ConstString &instance_name);
     
-    static uint32_t
+    static size_t
     GetNumDebuggers();
     
     static lldb::DebuggerSP
-    GetDebuggerAtIndex (uint32_t);
+    GetDebuggerAtIndex (size_t index);
 
     static bool
     FormatPrompt (const char *format,
@@ -361,7 +358,7 @@ protected:
     TargetList m_target_list;
     PlatformList m_platform_list;
     Listener m_listener;
-    SourceManager m_source_manager;    // This is a scratch source manager that we return if we have no targets.
+    std::auto_ptr<SourceManager> m_source_manager_ap;    // This is a scratch source manager that we return if we have no targets.
     SourceManager::SourceFileCache m_source_file_cache; // All the source managers for targets created in this debugger used this shared
                                                         // source file cache.
     std::auto_ptr<CommandInterpreter> m_command_interpreter_ap;

Modified: lldb/branches/windows/include/lldb/Core/Disassembler.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/Disassembler.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/Disassembler.h (original)
+++ lldb/branches/windows/include/lldb/Core/Disassembler.h Wed Apr 17 03:38:48 2013
@@ -13,6 +13,7 @@
 // C Includes
 // C++ Includes
 #include <vector>
+#include <string>
 
 // Other libraries and framework includes
 // Project includes
@@ -51,7 +52,7 @@ public:
     GetOperands (const ExecutionContext* exe_ctx)
     {
         CalculateMnemonicOperandsAndCommentIfNeeded (exe_ctx);
-        return m_mnemocics.c_str();
+        return m_mnemonics.c_str();
     }
     
     const char *
@@ -84,12 +85,12 @@ public:
           const ExecutionContext* exe_ctx);
     
     virtual bool
-    DoesBranch () const = 0;
+    DoesBranch () = 0;
 
     virtual size_t
     Decode (const Disassembler &disassembler, 
-            const DataExtractor& data, 
-            uint32_t data_offset) = 0;
+            const DataExtractor& data,
+            lldb::offset_t data_offset) = 0;
             
     virtual void
     SetDescription (const char *) {}  // May be overridden in sub-classes that have descriptions.
@@ -137,7 +138,7 @@ private:
 protected:
     Opcode m_opcode; // The opcode for this instruction
     std::string m_opcode_name;
-    std::string m_mnemocics;
+    std::string m_mnemonics;
     std::string m_comment;
     bool m_calculated_strings;
 
@@ -166,7 +167,7 @@ public:
     GetMaxOpcocdeByteSize () const;
 
     lldb::InstructionSP
-    GetInstructionAtIndex (uint32_t idx) const;
+    GetInstructionAtIndex (size_t idx) const;
     
     uint32_t
     GetIndexOfNextBranchInstruction(uint32_t start) const;
@@ -205,7 +206,7 @@ public:
      ~PseudoInstruction ();
      
     virtual bool
-    DoesBranch () const;
+    DoesBranch ();
 
     virtual void
     CalculateMnemonicOperandsAndComment (const ExecutionContext* exe_ctx)
@@ -218,7 +219,7 @@ public:
     virtual size_t
     Decode (const Disassembler &disassembler,
             const DataExtractor &data,
-            uint32_t data_offset);
+            lldb::offset_t data_offset);
             
     void
     SetOpcode (size_t opcode_size, void *opcode_data);
@@ -247,27 +248,39 @@ public:
         eOptionMarkPCAddress    = (1u << 3)  // Mark the disassembly line the contains the PC
     };
 
+    // FindPlugin should be lax about the flavor string (it is too annoying to have various internal uses of the
+    // disassembler fail because the global flavor string gets set wrong.  Instead, if you get a flavor string you
+    // don't understand, use the default.  Folks who care to check can use the FlavorValidForArchSpec method on the
+    // disassembler they got back.
     static lldb::DisassemblerSP
-    FindPlugin (const ArchSpec &arch, const char *plugin_name);
+    FindPlugin (const ArchSpec &arch, const char *flavor, const char *plugin_name);
+    
+    // This version will use the value in the Target settings if flavor is NULL;
+    static lldb::DisassemblerSP
+    FindPluginForTarget(const lldb::TargetSP target_sp, const ArchSpec &arch, const char *flavor, const char *plugin_name);
 
     static lldb::DisassemblerSP
     DisassembleRange (const ArchSpec &arch,
                       const char *plugin_name,
+                      const char *flavor,
                       const ExecutionContext &exe_ctx,
                       const AddressRange &disasm_range);
     
     static lldb::DisassemblerSP 
     DisassembleBytes (const ArchSpec &arch,
                       const char *plugin_name,
+                      const char *flavor,
                       const Address &start,
                       const void *bytes,
                       size_t length,
-                      uint32_t num_instructions = UINT32_MAX);
+                      uint32_t max_num_instructions,
+                      bool data_from_file);
 
     static bool
     Disassemble (Debugger &debugger,
                  const ArchSpec &arch,
                  const char *plugin_name,
+                 const char *flavor,
                  const ExecutionContext &exe_ctx,
                  const AddressRange &range,
                  uint32_t num_instructions,
@@ -279,6 +292,7 @@ public:
     Disassemble (Debugger &debugger,
                  const ArchSpec &arch,
                  const char *plugin_name,
+                 const char *flavor,
                  const ExecutionContext &exe_ctx,
                  const Address &start,
                  uint32_t num_instructions,
@@ -290,6 +304,7 @@ public:
     Disassemble (Debugger &debugger,
                  const ArchSpec &arch,
                  const char *plugin_name,
+                 const char *flavor,
                  const ExecutionContext &exe_ctx,
                  SymbolContextList &sc_list,
                  uint32_t num_instructions,
@@ -301,6 +316,7 @@ public:
     Disassemble (Debugger &debugger,
                  const ArchSpec &arch,
                  const char *plugin_name,
+                 const char *flavor,
                  const ExecutionContext &exe_ctx,
                  const ConstString &name,
                  Module *module,
@@ -313,16 +329,17 @@ public:
     Disassemble (Debugger &debugger,
                  const ArchSpec &arch,
                  const char *plugin_name,
+                 const char *flavor,
                  const ExecutionContext &exe_ctx,
                  uint32_t num_instructions,
                  uint32_t num_mixed_context_lines,
                  uint32_t options,
                  Stream &strm);
-
+    
     //------------------------------------------------------------------
     // Constructors and Destructors
     //------------------------------------------------------------------
-    Disassembler(const ArchSpec &arch);
+    Disassembler(const ArchSpec &arch, const char *flavor);
     virtual ~Disassembler();
 
     typedef const char * (*SummaryCallback)(const Instruction& inst, ExecutionContext *exe_context, void *user_data);
@@ -340,19 +357,22 @@ public:
     size_t
     ParseInstructions (const ExecutionContext *exe_ctx,
                        const AddressRange &range,
-                       Stream *error_strm_ptr);
+                       Stream *error_strm_ptr,
+                       bool prefer_file_cache);
 
     size_t
     ParseInstructions (const ExecutionContext *exe_ctx,
                        const Address &range,
-                       uint32_t num_instructions);
+                       uint32_t num_instructions,
+                       bool prefer_file_cache);
 
     virtual size_t
     DecodeInstructions (const Address &base_addr,
                         const DataExtractor& data,
-                        uint32_t data_offset,
-                        uint32_t num_instructions,
-                        bool append) = 0;
+                        lldb::offset_t data_offset,
+                        size_t num_instructions,
+                        bool append,
+                        bool data_from_file) = 0;
     
     InstructionList &
     GetInstructionList ();
@@ -365,6 +385,15 @@ public:
     {
         return m_arch;
     }
+    
+    const char *
+    GetFlavor () const
+    {
+        return m_flavor.c_str();
+    }
+    
+    virtual bool
+    FlavorValidForArchSpec (const lldb_private::ArchSpec &arch, const char *flavor) = 0;    
 
 protected:
     //------------------------------------------------------------------
@@ -373,6 +402,7 @@ protected:
     const ArchSpec m_arch;
     InstructionList m_instruction_list;
     lldb::addr_t m_base_addr;
+    std::string m_flavor;
 
 private:
     //------------------------------------------------------------------

Modified: lldb/branches/windows/include/lldb/Core/FileSpecList.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/FileSpecList.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/FileSpecList.h (original)
+++ lldb/branches/windows/include/lldb/Core/FileSpecList.h Wed Apr 17 03:38:48 2013
@@ -123,8 +123,8 @@ public:
     ///     The index of the file that matches \a file if it is found,
     ///     else UINT32_MAX is returned.
     //------------------------------------------------------------------
-    uint32_t
-    FindFileIndex (uint32_t idx, const FileSpec &file, bool full) const;
+    size_t
+    FindFileIndex (size_t idx, const FileSpec &file, bool full) const;
 
     //------------------------------------------------------------------
     /// Get file at index.
@@ -143,7 +143,7 @@ public:
     ///     returned.
     //------------------------------------------------------------------
     const FileSpec &
-    GetFileSpecAtIndex (uint32_t idx) const;
+    GetFileSpecAtIndex (size_t idx) const;
 
     //------------------------------------------------------------------
     /// Get file specification pointer at index.
@@ -159,7 +159,7 @@ public:
     ///     If \a idx is out of range, then an NULL is returned.
     //------------------------------------------------------------------
     const FileSpec *
-    GetFileSpecPointerAtIndex (uint32_t idx) const;
+    GetFileSpecPointerAtIndex (size_t idx) const;
 
     //------------------------------------------------------------------
     /// Get the memory cost of this object.
@@ -176,17 +176,23 @@ public:
     size_t
     MemorySize () const;
 
+    bool
+    IsEmpty() const
+    {
+        return m_files.empty();
+    }
+
     //------------------------------------------------------------------
     /// Get the number of files in the file list.
     ///
     /// @return
     ///     The number of files in the file spec list.
     //------------------------------------------------------------------
-    uint32_t
+    size_t
     GetSize () const;
 
     bool
-    Insert (uint32_t idx, const FileSpec &file)
+    Insert (size_t idx, const FileSpec &file)
     {
         if (idx < m_files.size())
         {
@@ -202,7 +208,7 @@ public:
     }
 
     bool
-    Replace (uint32_t idx, const FileSpec &file)
+    Replace (size_t idx, const FileSpec &file)
     {
         if (idx < m_files.size())
         {
@@ -213,7 +219,7 @@ public:
     }
 
     bool
-    Remove (uint32_t idx)
+    Remove (size_t idx)
     {
         if (idx < m_files.size())
         {

Removed: lldb/branches/windows/include/lldb/Core/FormatClasses.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/FormatClasses.h?rev=179678&view=auto
==============================================================================
--- lldb/branches/windows/include/lldb/Core/FormatClasses.h (original)
+++ lldb/branches/windows/include/lldb/Core/FormatClasses.h (removed)
@@ -1,1597 +0,0 @@
-//===-- FormatClasses.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_FormatClasses_h_
-#define lldb_FormatClasses_h_
-
-// C Includes
-#include <stdint.h>
-
-// C++ Includes
-#include <string>
-#include <vector>
-
-// Other libraries and framework includes
-
-// Project includes
-#include "lldb/lldb-public.h"
-#include "lldb/lldb-enumerations.h"
-
-#include "lldb/Core/ValueObject.h"
-#include "lldb/Interpreter/ScriptInterpreterPython.h"
-#include "lldb/Symbol/Type.h"
-
-namespace lldb_private {
-
-class TypeFormatImpl
-{
-public:
-    class Flags
-    {
-    public:
-        
-        Flags () :
-        m_flags (lldb::eTypeOptionCascade)
-        {}
-        
-        Flags (const Flags& other) :
-        m_flags (other.m_flags)
-        {}
-        
-        Flags (uint32_t value) :
-        m_flags (value)
-        {}
-        
-        Flags&
-        operator = (const Flags& rhs)
-        {
-            if (&rhs != this)
-                m_flags = rhs.m_flags;
-            
-            return *this;
-        }
-        
-        Flags&
-        operator = (const uint32_t& rhs)
-        {
-            m_flags = rhs;
-            return *this;
-        }
-        
-        Flags&
-        Clear()
-        {
-            m_flags = 0;
-            return *this;
-        }
-        
-        bool
-        GetCascades () const
-        {
-            return (m_flags & lldb::eTypeOptionCascade) == lldb::eTypeOptionCascade;
-        }
-        
-        Flags&
-        SetCascades (bool value = true)
-        {
-            if (value)
-                m_flags |= lldb::eTypeOptionCascade;
-            else
-                m_flags &= ~lldb::eTypeOptionCascade;
-            return *this;
-        }
-        
-        bool
-        GetSkipPointers () const
-        {
-            return (m_flags & lldb::eTypeOptionSkipPointers) == lldb::eTypeOptionSkipPointers;
-        }
-        
-        Flags&
-        SetSkipPointers (bool value = true)
-        {
-            if (value)
-                m_flags |= lldb::eTypeOptionSkipPointers;
-            else
-                m_flags &= ~lldb::eTypeOptionSkipPointers;
-            return *this;
-        }
-        
-        bool
-        GetSkipReferences () const
-        {
-            return (m_flags & lldb::eTypeOptionSkipReferences) == lldb::eTypeOptionSkipReferences;
-        }
-        
-        Flags&
-        SetSkipReferences (bool value = true)
-        {
-            if (value)
-                m_flags |= lldb::eTypeOptionSkipReferences;
-            else
-                m_flags &= ~lldb::eTypeOptionSkipReferences;
-            return *this;
-        }
-        
-        uint32_t
-        GetValue ()
-        {
-            return m_flags;
-        }
-        
-        void
-        SetValue (uint32_t value)
-        {
-            m_flags = value;
-        }
-
-    private:
-        uint32_t m_flags;
-    };
-    
-    TypeFormatImpl (lldb::Format f = lldb::eFormatInvalid,
-                 const Flags& flags = Flags());
-    
-    typedef STD_SHARED_PTR(TypeFormatImpl) SharedPointer;
-    typedef bool(*ValueCallback)(void*, ConstString, const lldb::TypeFormatImplSP&);
-    
-    ~TypeFormatImpl ()
-    {
-    }
-    
-    bool
-    Cascades () const
-    {
-        return m_flags.GetCascades();
-    }
-    bool
-    SkipsPointers () const
-    {
-        return m_flags.GetSkipPointers();
-    }
-    bool
-    SkipsReferences () const
-    {
-        return m_flags.GetSkipReferences();
-    }
-    
-    void
-    SetCascades (bool value)
-    {
-        m_flags.SetCascades(value);
-    }
-    
-    void
-    SetSkipsPointers (bool value)
-    {
-        m_flags.SetSkipPointers(value);
-    }
-    
-    void
-    SetSkipsReferences (bool value)
-    {
-        m_flags.SetSkipReferences(value);
-    }
-    
-    lldb::Format
-    GetFormat () const
-    {
-        return m_format;
-    }
-    
-    void
-    SetFormat (lldb::Format fmt)
-    {
-        m_format = fmt;
-    }
-    
-    uint32_t
-    GetOptions ()
-    {
-        return m_flags.GetValue();
-    }
-    
-    void
-    SetOptions (uint32_t value)
-    {
-        m_flags.SetValue(value);
-    }
-    
-    uint32_t&
-    GetRevision ()
-    {
-        return m_my_revision;
-    }
-    
-    std::string
-    GetDescription();
-    
-protected:
-    Flags m_flags;
-    lldb::Format m_format;
-    uint32_t m_my_revision;
-    
-private:
-    DISALLOW_COPY_AND_ASSIGN(TypeFormatImpl);
-};
-
-class SyntheticChildrenFrontEnd
-{
-protected:
-    ValueObject &m_backend;
-public:
-    
-    SyntheticChildrenFrontEnd (ValueObject &backend) :
-        m_backend(backend)
-    {}
-    
-    virtual
-    ~SyntheticChildrenFrontEnd ()
-    {
-    }
-    
-    virtual uint32_t
-    CalculateNumChildren () = 0;
-    
-    virtual lldb::ValueObjectSP
-    GetChildAtIndex (uint32_t idx) = 0;
-    
-    virtual uint32_t
-    GetIndexOfChildWithName (const ConstString &name) = 0;
-    
-    // this function is assumed to always succeed and it if fails, the front-end should know to deal
-    // with it in the correct way (most probably, by refusing to return any children)
-    // the return value of Update() should actually be interpreted as "ValueObjectSyntheticFilter cache is good/bad"
-    // if =true, ValueObjectSyntheticFilter is allowed to use the children it fetched previously and cached
-    // if =false, ValueObjectSyntheticFilter must throw away its cache, and query again for children
-    virtual bool
-    Update () = 0;
-    
-    // if this function returns false, then CalculateNumChildren() MUST return 0 since UI frontends
-    // might validly decide not to inquire for children given a false return value from this call
-    // if it returns true, then CalculateNumChildren() can return any number >= 0 (0 being valid)
-    // it should if at all possible be more efficient than CalculateNumChildren()
-    virtual bool
-    MightHaveChildren () = 0;
-    
-    typedef STD_SHARED_PTR(SyntheticChildrenFrontEnd) SharedPointer;
-    typedef std::auto_ptr<SyntheticChildrenFrontEnd> AutoPointer;
-    
-private:
-    DISALLOW_COPY_AND_ASSIGN(SyntheticChildrenFrontEnd);
-};
-
-class SyntheticChildren
-{
-public:
-    
-    class Flags
-    {
-    public:
-        
-        Flags () :
-        m_flags (lldb::eTypeOptionCascade)
-        {}
-        
-        Flags (const Flags& other) :
-        m_flags (other.m_flags)
-        {}
-        
-        Flags (uint32_t value) :
-        m_flags (value)
-        {}
-        
-        Flags&
-        operator = (const Flags& rhs)
-        {
-            if (&rhs != this)
-                m_flags = rhs.m_flags;
-            
-            return *this;
-        }
-        
-        Flags&
-        operator = (const uint32_t& rhs)
-        {
-            m_flags = rhs;
-            return *this;
-        }
-        
-        Flags&
-        Clear()
-        {
-            m_flags = 0;
-            return *this;
-        }
-        
-        bool
-        GetCascades () const
-        {
-            return (m_flags & lldb::eTypeOptionCascade) == lldb::eTypeOptionCascade;
-        }
-        
-        Flags&
-        SetCascades (bool value = true)
-        {
-            if (value)
-                m_flags |= lldb::eTypeOptionCascade;
-            else
-                m_flags &= ~lldb::eTypeOptionCascade;
-            return *this;
-        }
-        
-        bool
-        GetSkipPointers () const
-        {
-            return (m_flags & lldb::eTypeOptionSkipPointers) == lldb::eTypeOptionSkipPointers;
-        }
-        
-        Flags&
-        SetSkipPointers (bool value = true)
-        {
-            if (value)
-                m_flags |= lldb::eTypeOptionSkipPointers;
-            else
-                m_flags &= ~lldb::eTypeOptionSkipPointers;
-            return *this;
-        }
-        
-        bool
-        GetSkipReferences () const
-        {
-            return (m_flags & lldb::eTypeOptionSkipReferences) == lldb::eTypeOptionSkipReferences;
-        }
-        
-        Flags&
-        SetSkipReferences (bool value = true)
-        {
-            if (value)
-                m_flags |= lldb::eTypeOptionSkipReferences;
-            else
-                m_flags &= ~lldb::eTypeOptionSkipReferences;
-            return *this;
-        }
-        
-        uint32_t
-        GetValue ()
-        {
-            return m_flags;
-        }
-        
-        void
-        SetValue (uint32_t value)
-        {
-            m_flags = value;
-        }
-        
-    private:
-        uint32_t m_flags;
-    };
-    
-    SyntheticChildren (const Flags& flags) :
-        m_flags(flags)
-    {
-    }
-    
-    virtual
-    ~SyntheticChildren ()
-    {
-    }
-    
-    bool
-    Cascades () const
-    {
-        return m_flags.GetCascades();
-    }
-    bool
-    SkipsPointers () const
-    {
-        return m_flags.GetSkipPointers();
-    }
-    bool
-    SkipsReferences () const
-    {
-        return m_flags.GetSkipReferences();
-    }
-    
-    void
-    SetCascades (bool value)
-    {
-        m_flags.SetCascades(value);
-    }
-    
-    void
-    SetSkipsPointers (bool value)
-    {
-        m_flags.SetSkipPointers(value);
-    }
-    
-    void
-    SetSkipsReferences (bool value)
-    {
-        m_flags.SetSkipReferences(value);
-    }
-    
-    uint32_t
-    GetOptions ()
-    {
-        return m_flags.GetValue();
-    }
-    
-    void
-    SetOptions (uint32_t value)
-    {
-        m_flags.SetValue(value);
-    }
-    
-    virtual bool
-    IsScripted () = 0;
-    
-    virtual std::string
-    GetDescription () = 0;
-    
-    virtual SyntheticChildrenFrontEnd::AutoPointer
-    GetFrontEnd (ValueObject &backend) = 0;
-    
-    typedef STD_SHARED_PTR(SyntheticChildren) SharedPointer;
-    typedef bool(*SyntheticChildrenCallback)(void*, ConstString, const SyntheticChildren::SharedPointer&);
-    
-    uint32_t&
-    GetRevision ()
-    {
-        return m_my_revision;
-    }
-    
-protected:
-    uint32_t m_my_revision;
-    Flags m_flags;
-    
-private:
-    DISALLOW_COPY_AND_ASSIGN(SyntheticChildren);
-};
-
-class TypeFilterImpl : public SyntheticChildren
-{
-    std::vector<std::string> m_expression_paths;
-public:
-    TypeFilterImpl(const SyntheticChildren::Flags& flags) :
-        SyntheticChildren(flags),
-        m_expression_paths()
-    {
-    }
-    
-    void
-    AddExpressionPath (const char* path)
-    {
-        AddExpressionPath(std::string(path));
-    }
-        
-    void
-    Clear()
-    {
-        m_expression_paths.clear();
-    }
-    
-    int
-    GetCount() const
-    {
-        return m_expression_paths.size();
-    }
-    
-    const char*
-    GetExpressionPathAtIndex(int i) const
-    {
-        return m_expression_paths[i].c_str();
-    }
-    
-    bool
-    SetExpressionPathAtIndex (int i, const char* path)
-    {
-        return SetExpressionPathAtIndex(i, std::string(path));
-    }
-    
-    void
-    AddExpressionPath (std::string path)
-    {
-        bool need_add_dot = true;
-        if (path[0] == '.' ||
-            (path[0] == '-' && path[1] == '>') ||
-            path[0] == '[')
-            need_add_dot = false;
-        // add a '.' symbol to help forgetful users
-        if(!need_add_dot)
-            m_expression_paths.push_back(path);
-        else
-            m_expression_paths.push_back(std::string(".") + path);
-    }
-    
-    bool
-    SetExpressionPathAtIndex (int i, std::string path)
-    {
-        if (i >= GetCount())
-            return false;
-        bool need_add_dot = true;
-        if (path[0] == '.' ||
-            (path[0] == '-' && path[1] == '>') ||
-            path[0] == '[')
-            need_add_dot = false;
-        // add a '.' symbol to help forgetful users
-        if(!need_add_dot)
-            m_expression_paths[i] = path;
-        else
-            m_expression_paths[i] = std::string(".") + path;
-        return true;
-    }
-    
-    bool
-    IsScripted()
-    {
-        return false;
-    }
-    
-    std::string
-    GetDescription();
-    
-    class FrontEnd : public SyntheticChildrenFrontEnd
-    {
-    private:
-        TypeFilterImpl* filter;
-    public:
-        
-        FrontEnd(TypeFilterImpl* flt,
-                 ValueObject &backend) :
-        SyntheticChildrenFrontEnd(backend),
-        filter(flt)
-        {}
-        
-        virtual
-        ~FrontEnd()
-        {
-        }
-        
-        virtual uint32_t
-        CalculateNumChildren()
-        {
-            return filter->GetCount();
-        }
-        
-        virtual lldb::ValueObjectSP
-        GetChildAtIndex (uint32_t idx)
-        {
-            if (idx >= filter->GetCount())
-                return lldb::ValueObjectSP();
-            return m_backend.GetSyntheticExpressionPathChild(filter->GetExpressionPathAtIndex(idx), true);
-        }
-        
-        virtual bool
-        Update() { return false; }
-        
-        virtual bool
-        MightHaveChildren ()
-        {
-            return filter->GetCount() > 0;
-        }
-        
-        virtual uint32_t
-        GetIndexOfChildWithName (const ConstString &name)
-        {
-            const char* name_cstr = name.GetCString();
-            for (int i = 0; i < filter->GetCount(); i++)
-            {
-                const char* expr_cstr = filter->GetExpressionPathAtIndex(i);
-                if (expr_cstr)
-                {
-                    if (*expr_cstr == '.')
-                        expr_cstr++;
-                    else if (*expr_cstr == '-' && *(expr_cstr+1) == '>')
-                        expr_cstr += 2;
-                }
-                if (!::strcmp(name_cstr, expr_cstr))
-                    return i;
-            }
-            return UINT32_MAX;
-        }
-        
-        typedef STD_SHARED_PTR(SyntheticChildrenFrontEnd) SharedPointer;
-        
-    private:
-        DISALLOW_COPY_AND_ASSIGN(FrontEnd);
-    };
-    
-    virtual SyntheticChildrenFrontEnd::AutoPointer
-    GetFrontEnd(ValueObject &backend)
-    {
-        return SyntheticChildrenFrontEnd::AutoPointer(new FrontEnd(this, backend));
-    }
-    
-private:
-    DISALLOW_COPY_AND_ASSIGN(TypeFilterImpl);
-};
-
-    class CXXSyntheticChildren : public SyntheticChildren
-    {
-    public:
-        typedef SyntheticChildrenFrontEnd* (*CreateFrontEndCallback) (CXXSyntheticChildren*, lldb::ValueObjectSP);
-    protected:
-        CreateFrontEndCallback m_create_callback;
-        std::string m_description;
-    public:
-        CXXSyntheticChildren(const SyntheticChildren::Flags& flags,
-                             const char* description,
-                             CreateFrontEndCallback callback) :
-        SyntheticChildren(flags),
-        m_create_callback(callback),
-        m_description(description ? description : "")
-        {
-        }
-        
-        bool
-        IsScripted()
-        {
-            return false;
-        }
-        
-        std::string
-        GetDescription();
-                
-        virtual SyntheticChildrenFrontEnd::AutoPointer
-        GetFrontEnd(ValueObject &backend)
-        {
-            return SyntheticChildrenFrontEnd::AutoPointer(m_create_callback(this, backend.GetSP()));
-        }
-        
-    private:
-        DISALLOW_COPY_AND_ASSIGN(CXXSyntheticChildren);
-    };
-
-#ifndef LLDB_DISABLE_PYTHON
-
-class TypeSyntheticImpl : public SyntheticChildren
-{
-    std::string m_python_class;
-    std::string m_python_code;
-public:
-    
-    TypeSyntheticImpl(const SyntheticChildren::Flags& flags,
-                      const char* pclass,
-                      const char* pcode = NULL) :
-        SyntheticChildren(flags),
-        m_python_class(),
-        m_python_code()
-    {
-        if (pclass)
-                m_python_class = pclass;
-        if (pcode)
-                m_python_code = pcode;
-    }
-
-    const char*
-    GetPythonClassName()
-    {
-        return m_python_class.c_str();
-    }
-
-    const char*
-    GetPythonCode()
-    {
-        return m_python_code.c_str();
-    }
-    
-    void
-    SetPythonClassName (const char* fname)
-    {
-        m_python_class.assign(fname);
-        m_python_code.clear();
-    }
-    
-    void
-    SetPythonCode (const char* script)
-    {
-        m_python_code.assign(script);
-    }
-    
-    std::string
-    GetDescription();
-    
-    bool
-    IsScripted()
-    {
-        return true;
-    }
-
-    class FrontEnd : public SyntheticChildrenFrontEnd
-    {
-    private:
-        std::string m_python_class;
-        lldb::ScriptInterpreterObjectSP m_wrapper_sp;
-        ScriptInterpreter *m_interpreter;
-    public:
-        
-        FrontEnd(std::string pclass,
-                 ValueObject &backend);
-        
-        virtual
-        ~FrontEnd();
-        
-        virtual uint32_t
-        CalculateNumChildren()
-        {
-            if (!m_wrapper_sp || m_interpreter == NULL)
-                return 0;
-            return m_interpreter->CalculateNumChildren(m_wrapper_sp);
-        }
-        
-        virtual lldb::ValueObjectSP
-        GetChildAtIndex (uint32_t idx);
-        
-        virtual bool
-        Update()
-        {
-            if (!m_wrapper_sp || m_interpreter == NULL)
-                return false;
-            
-            return m_interpreter->UpdateSynthProviderInstance(m_wrapper_sp);
-        }
-        
-        virtual bool
-        MightHaveChildren()
-        {
-            if (!m_wrapper_sp || m_interpreter == NULL)
-                return false;
-            
-            return m_interpreter->MightHaveChildrenSynthProviderInstance(m_wrapper_sp);
-        }
-        
-        virtual uint32_t
-        GetIndexOfChildWithName (const ConstString &name)
-        {
-            if (!m_wrapper_sp || m_interpreter == NULL)
-                return UINT32_MAX;
-            return m_interpreter->GetIndexOfChildWithName(m_wrapper_sp, name.GetCString());
-        }
-        
-        typedef STD_SHARED_PTR(SyntheticChildrenFrontEnd) SharedPointer;
-
-    private:
-        DISALLOW_COPY_AND_ASSIGN(FrontEnd);
-    };
-    
-    virtual SyntheticChildrenFrontEnd::AutoPointer
-    GetFrontEnd(ValueObject &backend)
-    {
-        return SyntheticChildrenFrontEnd::AutoPointer(new FrontEnd(m_python_class, backend));
-    }    
-    
-private:
-    DISALLOW_COPY_AND_ASSIGN(TypeSyntheticImpl);
-};
-
-#endif // #ifndef LLDB_DISABLE_PYTHON
-class SyntheticArrayView : public SyntheticChildren
-{
-public:
-    
-    struct SyntheticArrayRange
-    {
-    private:
-        int m_low;
-        int m_high;
-        SyntheticArrayRange* m_next;
-        
-    public:
-        
-        SyntheticArrayRange () : 
-        m_low(-1),
-        m_high(-2),
-        m_next(NULL)
-        {}
-        
-        SyntheticArrayRange (int L) : 
-        m_low(L),
-        m_high(L),
-        m_next(NULL)
-        {}
-        
-        SyntheticArrayRange (int L, int H) : 
-        m_low(L),
-        m_high(H),
-        m_next(NULL)
-        {}
-        
-        SyntheticArrayRange (int L, int H, SyntheticArrayRange* N) : 
-        m_low(L),
-        m_high(H),
-        m_next(N)
-        {}
-        
-        inline int
-        GetLow ()
-        {
-            return m_low;
-        }
-        
-        inline int
-        GetHigh ()
-        {
-            return m_high;
-        }
-        
-        inline void
-        SetLow (int L)
-        {
-            m_low = L;
-        }
-        
-        inline void
-        SetHigh (int H)
-        {
-            m_high = H;
-        }
-        
-        inline  int
-        GetSelfCount()
-        {
-            return GetHigh() - GetLow() + 1;
-        }
-        
-        int
-        GetCount()
-        {
-            int count = GetSelfCount();
-            if (m_next)
-                count += m_next->GetCount();
-            return count;
-        }
-        
-        inline SyntheticArrayRange*
-        GetNext()
-        {
-            return m_next;
-        }
-        
-        void
-        SetNext(SyntheticArrayRange* N)
-        {
-            if (m_next)
-                delete m_next;
-            m_next = N;
-        }
-        
-        void
-        SetNext(int L, int H)
-        {
-            if (m_next)
-                delete m_next;
-            m_next = new SyntheticArrayRange(L, H);
-        }
-        
-        void
-        SetNext(int L)
-        {
-            if (m_next)
-                delete m_next;
-            m_next = new SyntheticArrayRange(L);
-        }
-        
-        ~SyntheticArrayRange()
-        {
-            delete m_next;
-            m_next = NULL;
-        }
-        
-    };
-    
-    SyntheticArrayView(const SyntheticChildren::Flags& flags) :
-        SyntheticChildren(flags),
-        m_head(),
-        m_tail(&m_head)
-    {
-    }
-    
-    void
-    AddRange(int L, int H)
-    {
-        m_tail->SetLow(L);
-        m_tail->SetHigh(H);
-        m_tail->SetNext(new SyntheticArrayRange());
-        m_tail = m_tail->GetNext();
-    }
-    
-    int
-    GetCount()
-    {
-        return m_head.GetCount();
-    }
-    
-    int
-    GetRealIndexForIndex(int i);
-    
-    bool
-    IsScripted()
-    {
-        return false;
-    }
-    
-    std::string
-    GetDescription();
-    
-    class FrontEnd : public SyntheticChildrenFrontEnd
-    {
-    private:
-        SyntheticArrayView* filter;
-    public:
-        
-        FrontEnd(SyntheticArrayView* flt,
-                 ValueObject &backend) :
-        SyntheticChildrenFrontEnd(backend),
-        filter(flt)
-        {}
-        
-        virtual
-        ~FrontEnd()
-        {
-        }
-        
-        virtual uint32_t
-        CalculateNumChildren()
-        {
-            return filter->GetCount();
-        }
-        
-        virtual bool
-        MightHaveChildren ()
-        {
-            return filter->GetCount() > 0;
-        }
-        
-        virtual lldb::ValueObjectSP
-        GetChildAtIndex (uint32_t idx)
-        {
-            if (idx >= filter->GetCount())
-                return lldb::ValueObjectSP();
-            return m_backend.GetSyntheticArrayMember(filter->GetRealIndexForIndex(idx), true);
-        }
-        
-        virtual bool
-        Update() { return false; }
-        
-        virtual uint32_t
-        GetIndexOfChildWithName (const ConstString &name_cs);
-        
-        typedef STD_SHARED_PTR(SyntheticChildrenFrontEnd) SharedPointer;
-    
-    private:
-        DISALLOW_COPY_AND_ASSIGN(FrontEnd);
-    };
-    
-    virtual SyntheticChildrenFrontEnd::AutoPointer
-    GetFrontEnd(ValueObject &backend)
-    {
-        return SyntheticChildrenFrontEnd::AutoPointer(new FrontEnd(this, backend));
-    }
-private:
-    SyntheticArrayRange m_head;
-    SyntheticArrayRange *m_tail;
-
-private:
-    DISALLOW_COPY_AND_ASSIGN(SyntheticArrayView);
-};
-
-
-class TypeSummaryImpl
-{
-public:
-    class Flags
-    {
-    public:
-        
-        Flags () :
-            m_flags (lldb::eTypeOptionCascade)
-        {}
-        
-        Flags (const Flags& other) :
-            m_flags (other.m_flags)
-        {}
-        
-        Flags (uint32_t value) :
-            m_flags (value)
-        {}
-        
-        Flags&
-        operator = (const Flags& rhs)
-        {
-            if (&rhs != this)
-                m_flags = rhs.m_flags;
-            
-            return *this;
-        }
-        
-        Flags&
-        operator = (const uint32_t& rhs)
-        {
-            m_flags = rhs;
-            return *this;
-        }
-        
-        Flags&
-        Clear()
-        {
-            m_flags = 0;
-            return *this;
-        }
-        
-        bool
-        GetCascades () const
-        {
-            return (m_flags & lldb::eTypeOptionCascade) == lldb::eTypeOptionCascade;
-        }
-        
-        Flags&
-        SetCascades (bool value = true)
-        {
-            if (value)
-                m_flags |= lldb::eTypeOptionCascade;
-            else
-                m_flags &= ~lldb::eTypeOptionCascade;
-            return *this;
-        }
-
-        bool
-        GetSkipPointers () const
-        {
-            return (m_flags & lldb::eTypeOptionSkipPointers) == lldb::eTypeOptionSkipPointers;
-        }
-
-        Flags&
-        SetSkipPointers (bool value = true)
-        {
-            if (value)
-                m_flags |= lldb::eTypeOptionSkipPointers;
-            else
-                m_flags &= ~lldb::eTypeOptionSkipPointers;
-            return *this;
-        }
-        
-        bool
-        GetSkipReferences () const
-        {
-            return (m_flags & lldb::eTypeOptionSkipReferences) == lldb::eTypeOptionSkipReferences;
-        }
-        
-        Flags&
-        SetSkipReferences (bool value = true)
-        {
-            if (value)
-                m_flags |= lldb::eTypeOptionSkipReferences;
-            else
-                m_flags &= ~lldb::eTypeOptionSkipReferences;
-            return *this;
-        }
-        
-        bool
-        GetDontShowChildren () const
-        {
-            return (m_flags & lldb::eTypeOptionHideChildren) == lldb::eTypeOptionHideChildren;
-        }
-        
-        Flags&
-        SetDontShowChildren (bool value = true)
-        {
-            if (value)
-                m_flags |= lldb::eTypeOptionHideChildren;
-            else
-                m_flags &= ~lldb::eTypeOptionHideChildren;
-            return *this;
-        }
-        
-        bool
-        GetDontShowValue () const
-        {
-            return (m_flags & lldb::eTypeOptionHideValue) == lldb::eTypeOptionHideValue;
-        }
-        
-        Flags&
-        SetDontShowValue (bool value = true)
-        {
-            if (value)
-                m_flags |= lldb::eTypeOptionHideValue;
-            else
-                m_flags &= ~lldb::eTypeOptionHideValue;
-            return *this;
-        }
-        
-        bool
-        GetShowMembersOneLiner () const
-        {
-            return (m_flags & lldb::eTypeOptionShowOneLiner) == lldb::eTypeOptionShowOneLiner;
-        }
-        
-        Flags&
-        SetShowMembersOneLiner (bool value = true)
-        {
-            if (value)
-                m_flags |= lldb::eTypeOptionShowOneLiner;
-            else
-                m_flags &= ~lldb::eTypeOptionShowOneLiner;
-            return *this;
-        }
-        
-        bool
-        GetHideItemNames () const
-        {
-            return (m_flags & lldb::eTypeOptionHideNames) == lldb::eTypeOptionHideNames;
-        }
-        
-        Flags&
-        SetHideItemNames (bool value = true)
-        {
-            if (value)
-                m_flags |= lldb::eTypeOptionHideNames;
-            else
-                m_flags &= ~lldb::eTypeOptionHideNames;
-            return *this;
-        }
-        
-        uint32_t
-        GetValue ()
-        {
-            return m_flags;
-        }
-        
-        void
-        SetValue (uint32_t value)
-        {
-            m_flags = value;
-        }
-                
-    private:
-        uint32_t m_flags;
-    };
-    
-    typedef enum Type
-    {
-        eTypeUnknown,
-        eTypeString,
-        eTypeScript,
-        eTypeCallback
-    } Type;
-    
-    TypeSummaryImpl (const TypeSummaryImpl::Flags& flags);
-    
-    bool
-    Cascades () const
-    {
-        return m_flags.GetCascades();
-    }
-    bool
-    SkipsPointers () const
-    {
-        return m_flags.GetSkipPointers();
-    }
-    bool
-    SkipsReferences () const
-    {
-        return m_flags.GetSkipReferences();
-    }
-    
-    bool
-    DoesPrintChildren () const
-    {
-        return !m_flags.GetDontShowChildren();
-    }
-    
-    bool
-    DoesPrintValue () const
-    {
-        return !m_flags.GetDontShowValue();
-    }
-    
-    bool
-    IsOneliner () const
-    {
-        return m_flags.GetShowMembersOneLiner();
-    }
-    
-    bool
-    HideNames () const
-    {
-        return m_flags.GetHideItemNames();
-    }
-    
-    void
-    SetCascades (bool value)
-    {
-        m_flags.SetCascades(value);
-    }
-    
-    void
-    SetSkipsPointers (bool value)
-    {
-        m_flags.SetSkipPointers(value);
-    }
-    
-    void
-    SetSkipsReferences (bool value)
-    {
-        m_flags.SetSkipReferences(value);
-    }
-    
-    void
-    SetDoesPrintChildren (bool value)
-    {
-        m_flags.SetDontShowChildren(!value);
-    }
-    
-    void
-    SetDoesPrintValue (bool value)
-    {
-        m_flags.SetDontShowValue(!value);
-    }
-    
-    void
-    SetIsOneliner (bool value)
-    {
-        m_flags.SetShowMembersOneLiner(value);
-    }
-    
-    void
-    SetHideNames (bool value)
-    {
-        m_flags.SetHideItemNames(value);
-    }
-    
-    uint32_t
-    GetOptions ()
-    {
-        return m_flags.GetValue();
-    }
-    
-    void
-    SetOptions (uint32_t value)
-    {
-        m_flags.SetValue(value);
-    }
-    
-    virtual
-    ~TypeSummaryImpl ()
-    {
-    }
-    
-    // we are using a ValueObject* instead of a ValueObjectSP because we do not need to hold on to this for
-    // extended periods of time and we trust the ValueObject to stay around for as long as it is required
-    // for us to generate its summary
-    virtual bool
-    FormatObject (ValueObject *valobj,
-                  std::string& dest) = 0;
-    
-    virtual std::string
-    GetDescription () = 0;
-    
-    virtual bool
-    IsScripted() = 0;
-    
-    virtual Type
-    GetType () = 0;
-    
-    uint32_t&
-    GetRevision ()
-    {
-        return m_my_revision;
-    }
-    
-    typedef STD_SHARED_PTR(TypeSummaryImpl) SharedPointer;
-    typedef bool(*SummaryCallback)(void*, ConstString, const lldb::TypeSummaryImplSP&);
-    typedef bool(*RegexSummaryCallback)(void*, lldb::RegularExpressionSP, const lldb::TypeSummaryImplSP&);
-
-protected:
-    uint32_t m_my_revision;
-    Flags m_flags;
-    
-private:
-    DISALLOW_COPY_AND_ASSIGN(TypeSummaryImpl);
-};
-
-// simple string-based summaries, using ${var to show data
-struct StringSummaryFormat : public TypeSummaryImpl
-{
-    std::string m_format;
-    
-    StringSummaryFormat(const TypeSummaryImpl::Flags& flags,
-                        const char* f);
-    
-    const char*
-    GetSummaryString () const
-    {
-        return m_format.c_str();
-    }
-    
-    void
-    SetSummaryString (const char* data)
-    {
-        if (data)
-                m_format.assign(data);
-        else
-                m_format.clear();
-    }
-    
-    virtual
-    ~StringSummaryFormat()
-    {
-    }
-    
-    virtual bool
-    FormatObject(ValueObject *valobj,
-                 std::string& dest);
-    
-    virtual std::string
-    GetDescription();
-    
-    virtual bool
-    IsScripted()
-    {
-        return false;
-    }
-
-    
-    virtual Type
-    GetType ()
-    {
-        return TypeSummaryImpl::eTypeString;
-    }
-    
-private:
-    DISALLOW_COPY_AND_ASSIGN(StringSummaryFormat);
-};
-
-// summaries implemented via a C++ function
-struct CXXFunctionSummaryFormat : public TypeSummaryImpl
-{
-    
-    // we should convert these to SBValue and SBStream if we ever cross
-    // the boundary towards the external world
-    typedef bool (*Callback)(ValueObject& valobj,
-                             Stream& dest);
-    
-    
-    Callback m_impl;
-    std::string m_description;
-    
-    CXXFunctionSummaryFormat(const TypeSummaryImpl::Flags& flags,
-                             Callback impl,
-                             const char* description);
-    
-    Callback
-    GetBackendFunction () const
-    {
-        return m_impl;
-    }
-    
-    const char*
-    GetTextualInfo () const
-    {
-        return m_description.c_str();
-    }
-    
-    void
-    SetBackendFunction (Callback cb_func)
-    {
-        m_impl = cb_func;
-    }
-    
-    void
-    SetTextualInfo (const char* descr)
-    {
-        if (descr)
-            m_description.assign(descr);
-        else
-            m_description.clear();
-    }
-    
-    virtual
-    ~CXXFunctionSummaryFormat()
-    {
-    }
-    
-    virtual bool
-    FormatObject(ValueObject *valobj,
-                 std::string& dest);
-    
-    virtual std::string
-    GetDescription();
-    
-    virtual bool
-    IsScripted()
-    {
-        return false;
-    }
-    
-    virtual Type
-    GetType ()
-    {
-        return TypeSummaryImpl::eTypeCallback;
-    }
-    
-    typedef STD_SHARED_PTR(CXXFunctionSummaryFormat) SharedPointer;
-
-private:
-    DISALLOW_COPY_AND_ASSIGN(CXXFunctionSummaryFormat);
-};
-    
-#ifndef LLDB_DISABLE_PYTHON
-
-// Python-based summaries, running script code to show data
-struct ScriptSummaryFormat : public TypeSummaryImpl
-{
-    std::string m_function_name;
-    std::string m_python_script;
-    lldb::ScriptInterpreterObjectSP m_script_function_sp;
-    
-    ScriptSummaryFormat(const TypeSummaryImpl::Flags& flags,
-                        const char *function_name,
-                        const char* python_script = NULL);
-    
-    const char*
-    GetFunctionName () const
-    {
-        return m_function_name.c_str();
-    }
-    
-    const char*
-    GetPythonScript () const
-    {
-        return m_python_script.c_str();
-    }
-    
-    void
-    SetFunctionName (const char* function_name)
-    {
-        if (function_name)
-                m_function_name.assign(function_name);
-        else
-                m_function_name.clear();
-        m_python_script.clear();
-    }
-    
-    void
-    SetPythonScript (const char* script)
-    {
-        if (script)
-                m_python_script.assign(script);
-        else
-                m_python_script.clear();
-    }
-    
-    virtual
-    ~ScriptSummaryFormat()
-    {
-    }
-    
-    virtual bool
-    FormatObject(ValueObject *valobj,
-                 std::string& dest);
-    
-    virtual std::string
-    GetDescription();
-    
-    virtual bool
-    IsScripted()
-    {
-        return true;
-    }
-    
-    virtual Type
-    GetType ()
-    {
-        return TypeSummaryImpl::eTypeScript;
-    }
-    
-    typedef STD_SHARED_PTR(ScriptSummaryFormat) SharedPointer;
-
-    
-private:
-    DISALLOW_COPY_AND_ASSIGN(ScriptSummaryFormat);
-};
-
-#endif // #ifndef LLDB_DISABLE_PYTHON
-
-// TODO: at the moment, this class is only used as a backing store for SBTypeNameSpecifier in the public API
-// In the future, this might be used as the basic unit for typename-to-formatter matching, replacing
-// the current plain/regexp distinction in FormatNavigator<>
-class TypeNameSpecifierImpl
-{
-public:
-    
-    TypeNameSpecifierImpl() :
-    m_is_regex(false),
-    m_type()
-    {
-    }
-    
-    TypeNameSpecifierImpl (const char* name, bool is_regex) :
-    m_is_regex(is_regex),
-    m_type()
-    {
-        if (name)
-            m_type.m_type_name.assign(name);
-    }
-    
-    // if constructing with a given type, is_regex cannot be true since we are
-    // giving an exact type to match
-    TypeNameSpecifierImpl (lldb::TypeSP type) :
-    m_is_regex(false),
-    m_type()
-    {
-        if (type)
-        {
-            m_type.m_type_name.assign(type->GetName().GetCString());
-            m_type.m_typeimpl_sp = lldb::TypeImplSP(new TypeImpl(type));
-        }
-    }
-
-    TypeNameSpecifierImpl (ClangASTType type) :
-    m_is_regex(false),
-    m_type()
-    {
-        if (type.IsValid())
-        {
-            m_type.m_type_name.assign(type.GetConstTypeName().GetCString());
-            m_type.m_typeimpl_sp = lldb::TypeImplSP(new TypeImpl(type));
-        }
-    }
-    
-    const char*
-    GetName()
-    {
-        if (m_type.m_type_name.size())
-            return m_type.m_type_name.c_str();
-        return NULL;
-    }
-    
-    lldb::TypeSP
-    GetTypeSP ()
-    {
-        if (m_type.m_typeimpl_sp && m_type.m_typeimpl_sp->IsValid())
-            return m_type.m_typeimpl_sp->GetTypeSP();
-        return lldb::TypeSP();
-    }
-    
-    ClangASTType
-    GetClangASTType ()
-    {
-        if (m_type.m_typeimpl_sp && m_type.m_typeimpl_sp->IsValid())
-            return m_type.m_typeimpl_sp->GetClangASTType();
-        return ClangASTType();
-    }
-    
-    bool
-    IsRegex()
-    {
-        return m_is_regex;
-    }
-    
-private:
-    bool m_is_regex;
-    // this works better than TypeAndOrName because the latter only wraps a TypeSP
-    // whereas TypeImplSP can also be backed by a ClangASTType which is more commonly
-    // used in LLDB. moreover, TypeImplSP is also what is currently backing SBType
-    struct TypeOrName
-    {
-        std::string m_type_name;
-        lldb::TypeImplSP m_typeimpl_sp;
-    };
-    TypeOrName m_type;
-    
-    
-private:
-    DISALLOW_COPY_AND_ASSIGN(TypeNameSpecifierImpl);
-};
-    
-} // namespace lldb_private
-
-#endif	// lldb_FormatClasses_h_

Removed: lldb/branches/windows/include/lldb/Core/FormatManager.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/FormatManager.h?rev=179678&view=auto
==============================================================================
--- lldb/branches/windows/include/lldb/Core/FormatManager.h (original)
+++ lldb/branches/windows/include/lldb/Core/FormatManager.h (removed)
@@ -1,780 +0,0 @@
-//===-- FormatManager.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_FormatManager_h_
-#define lldb_FormatManager_h_
-
-// C Includes
-// C++ Includes
-
-// Other libraries and framework includes
-// Project includes
-#include "lldb/lldb-public.h"
-#include "lldb/lldb-enumerations.h"
-
-#include "lldb/Core/FormatNavigator.h"
-#include "lldb/Interpreter/ScriptInterpreterPython.h"
-#include "lldb/Target/ExecutionContext.h"
-#include "lldb/Target/Platform.h"
-
-using lldb::LogSP;
-
-namespace lldb_private {
-    
-// this file (and its. cpp) contain the low-level implementation of LLDB Data Visualization
-// class DataVisualization is the high-level front-end of this feature
-// clients should refer to that class as the entry-point into the data formatters
-// unless they have a good reason to bypass it and prefer to use this file's objects directly
-    
-class CategoryMap;
-    
-class TypeCategoryImpl
-{
-private:
-    
-    typedef FormatNavigator<ConstString, TypeSummaryImpl> SummaryNavigator;
-    typedef FormatNavigator<lldb::RegularExpressionSP, TypeSummaryImpl> RegexSummaryNavigator;
-    
-    typedef FormatNavigator<ConstString, TypeFilterImpl> FilterNavigator;
-    typedef FormatNavigator<lldb::RegularExpressionSP, TypeFilterImpl> RegexFilterNavigator;
-    
-#ifndef LLDB_DISABLE_PYTHON
-    typedef FormatNavigator<ConstString, TypeSyntheticImpl> SynthNavigator;
-    typedef FormatNavigator<lldb::RegularExpressionSP, TypeSyntheticImpl> RegexSynthNavigator;
-#endif // #ifndef LLDB_DISABLE_PYTHON
-
-    typedef SummaryNavigator::MapType SummaryMap;
-    typedef RegexSummaryNavigator::MapType RegexSummaryMap;
-    typedef FilterNavigator::MapType FilterMap;
-    typedef RegexFilterNavigator::MapType RegexFilterMap;
-#ifndef LLDB_DISABLE_PYTHON
-    typedef SynthNavigator::MapType SynthMap;
-    typedef RegexSynthNavigator::MapType RegexSynthMap;
-#endif // #ifndef LLDB_DISABLE_PYTHON
-
-public:
-        
-    typedef uint16_t FormatCategoryItems;
-    static const uint16_t ALL_ITEM_TYPES = UINT16_MAX;
-    
-    typedef SummaryNavigator::SharedPointer SummaryNavigatorSP;
-    typedef RegexSummaryNavigator::SharedPointer RegexSummaryNavigatorSP;
-    typedef FilterNavigator::SharedPointer FilterNavigatorSP;
-    typedef RegexFilterNavigator::SharedPointer RegexFilterNavigatorSP;
-#ifndef LLDB_DISABLE_PYTHON
-    typedef SynthNavigator::SharedPointer SynthNavigatorSP;
-    typedef RegexSynthNavigator::SharedPointer RegexSynthNavigatorSP;
-#endif // #ifndef LLDB_DISABLE_PYTHON
-
-    TypeCategoryImpl (IFormatChangeListener* clist,
-                      ConstString name);
-    
-    SummaryNavigatorSP
-    GetSummaryNavigator ()
-    {
-        return SummaryNavigatorSP(m_summary_nav);
-    }
-    
-    RegexSummaryNavigatorSP
-    GetRegexSummaryNavigator ()
-    {
-        return RegexSummaryNavigatorSP(m_regex_summary_nav);
-    }
-    
-    FilterNavigatorSP
-    GetFilterNavigator ()
-    {
-        return FilterNavigatorSP(m_filter_nav);
-    }
-    
-    RegexFilterNavigatorSP
-    GetRegexFilterNavigator ()
-    {
-        return RegexFilterNavigatorSP(m_regex_filter_nav);
-    }
-    
-    SummaryNavigator::MapValueType
-    GetSummaryForType (lldb::TypeNameSpecifierImplSP type_sp)
-    {
-        SummaryNavigator::MapValueType retval;
-        
-        if (type_sp)
-        {
-            if (type_sp->IsRegex())
-                m_regex_summary_nav->GetExact(ConstString(type_sp->GetName()),retval);
-            else
-                m_summary_nav->GetExact(ConstString(type_sp->GetName()),retval);
-        }
-
-        return retval;
-    }
-    
-    FilterNavigator::MapValueType
-    GetFilterForType (lldb::TypeNameSpecifierImplSP type_sp)
-    {
-        FilterNavigator::MapValueType retval;
-        
-        if (type_sp)
-        {
-            if (type_sp->IsRegex())
-                m_regex_filter_nav->GetExact(ConstString(type_sp->GetName()),retval);
-            else
-                m_filter_nav->GetExact(ConstString(type_sp->GetName()),retval);
-        }
-        
-        return retval;
-    }
-    
-#ifndef LLDB_DISABLE_PYTHON
-    SynthNavigator::MapValueType
-    GetSyntheticForType (lldb::TypeNameSpecifierImplSP type_sp)
-    {
-        SynthNavigator::MapValueType retval;
-        
-        if (type_sp)
-        {
-            if (type_sp->IsRegex())
-                m_regex_synth_nav->GetExact(ConstString(type_sp->GetName()),retval);
-            else
-                m_synth_nav->GetExact(ConstString(type_sp->GetName()),retval);
-        }
-        
-        return retval;
-    }
-#endif
-    
-    lldb::TypeNameSpecifierImplSP
-    GetTypeNameSpecifierForSummaryAtIndex (uint32_t index)
-    {
-        if (index < m_summary_nav->GetCount())
-            return m_summary_nav->GetTypeNameSpecifierAtIndex(index);
-        else
-            return m_regex_summary_nav->GetTypeNameSpecifierAtIndex(index-m_summary_nav->GetCount());
-    }
-    
-    SummaryNavigator::MapValueType
-    GetSummaryAtIndex (uint32_t index)
-    {
-        if (index < m_summary_nav->GetCount())
-            return m_summary_nav->GetAtIndex(index);
-        else
-            return m_regex_summary_nav->GetAtIndex(index-m_summary_nav->GetCount());
-    }
-
-    FilterNavigator::MapValueType
-    GetFilterAtIndex (uint32_t index)
-    {
-        if (index < m_filter_nav->GetCount())
-            return m_filter_nav->GetAtIndex(index);
-        else
-            return m_regex_filter_nav->GetAtIndex(index-m_filter_nav->GetCount());
-    }
-    
-    lldb::TypeNameSpecifierImplSP
-    GetTypeNameSpecifierForFilterAtIndex (uint32_t index)
-    {
-        if (index < m_filter_nav->GetCount())
-            return m_filter_nav->GetTypeNameSpecifierAtIndex(index);
-        else
-            return m_regex_filter_nav->GetTypeNameSpecifierAtIndex(index-m_filter_nav->GetCount());
-    }
-
-#ifndef LLDB_DISABLE_PYTHON
-    SynthNavigatorSP
-    GetSyntheticNavigator ()
-    {
-        return SynthNavigatorSP(m_synth_nav);
-    }
-    
-    RegexSynthNavigatorSP
-    GetRegexSyntheticNavigator ()
-    {
-        return RegexSynthNavigatorSP(m_regex_synth_nav);
-    }
-    
-    SynthNavigator::MapValueType
-    GetSyntheticAtIndex (uint32_t index)
-    {
-        if (index < m_synth_nav->GetCount())
-            return m_synth_nav->GetAtIndex(index);
-        else
-            return m_regex_synth_nav->GetAtIndex(index-m_synth_nav->GetCount());
-    }
-    
-    lldb::TypeNameSpecifierImplSP
-    GetTypeNameSpecifierForSyntheticAtIndex (uint32_t index)
-    {
-        if (index < m_synth_nav->GetCount())
-            return m_synth_nav->GetTypeNameSpecifierAtIndex(index);
-        else
-            return m_regex_synth_nav->GetTypeNameSpecifierAtIndex(index - m_synth_nav->GetCount());
-    }
-    
-#endif // #ifndef LLDB_DISABLE_PYTHON
-
-    bool
-    IsEnabled () const
-    {
-        return m_enabled;
-    }
-    
-    uint32_t
-    GetEnabledPosition()
-    {
-        if (m_enabled == false)
-            return UINT32_MAX;
-        else
-            return m_enabled_position;
-    }
-    
-    bool
-    Get (ValueObject& valobj,
-         lldb::TypeSummaryImplSP& entry,
-         lldb::DynamicValueType use_dynamic,
-         uint32_t* reason = NULL);
-    
-    bool
-    Get (ValueObject& valobj,
-         lldb::SyntheticChildrenSP& entry,
-         lldb::DynamicValueType use_dynamic,
-         uint32_t* reason = NULL);
-        
-    void
-    Clear (FormatCategoryItems items = ALL_ITEM_TYPES);
-    
-    bool
-    Delete (ConstString name,
-            FormatCategoryItems items = ALL_ITEM_TYPES);
-    
-    uint32_t
-    GetCount (FormatCategoryItems items = ALL_ITEM_TYPES);
-    
-    const char*
-    GetName ()
-    {
-        return m_name.GetCString();
-    }
-    
-    bool
-    AnyMatches (ConstString type_name,
-                FormatCategoryItems items = ALL_ITEM_TYPES,
-                bool only_enabled = true,
-                const char** matching_category = NULL,
-                FormatCategoryItems* matching_type = NULL);
-    
-    typedef STD_SHARED_PTR(TypeCategoryImpl) SharedPointer;
-    
-private:
-    SummaryNavigator::SharedPointer m_summary_nav;
-    RegexSummaryNavigator::SharedPointer m_regex_summary_nav;
-    FilterNavigator::SharedPointer m_filter_nav;
-    RegexFilterNavigator::SharedPointer m_regex_filter_nav;
-#ifndef LLDB_DISABLE_PYTHON
-    SynthNavigator::SharedPointer m_synth_nav;
-    RegexSynthNavigator::SharedPointer m_regex_synth_nav;
-#endif // #ifndef LLDB_DISABLE_PYTHON
-    
-    bool m_enabled;
-    
-    IFormatChangeListener* m_change_listener;
-    
-    Mutex m_mutex;
-    
-    ConstString m_name;
-    
-    uint32_t m_enabled_position;
-    
-    void
-    Enable (bool value,
-            uint32_t position)
-    {
-        Mutex::Locker locker(m_mutex);
-        m_enabled = value;
-        m_enabled_position = position;
-        if (m_change_listener)
-            m_change_listener->Changed();
-    }
-    
-    void
-    Disable ()
-    {
-        Enable(false, UINT32_MAX);
-    }
-    
-    friend class CategoryMap;
-    
-    friend class FormatNavigator<ConstString, TypeSummaryImpl>;
-    friend class FormatNavigator<lldb::RegularExpressionSP, TypeSummaryImpl>;
-    
-    friend class FormatNavigator<ConstString, TypeFilterImpl>;
-    friend class FormatNavigator<lldb::RegularExpressionSP, TypeFilterImpl>;
-    
-#ifndef LLDB_DISABLE_PYTHON
-    friend class FormatNavigator<ConstString, TypeSyntheticImpl>;
-    friend class FormatNavigator<lldb::RegularExpressionSP, TypeSyntheticImpl>;
-#endif // #ifndef LLDB_DISABLE_PYTHON
-    
-
-};
-
-class CategoryMap
-{
-private:
-    typedef ConstString KeyType;
-    typedef TypeCategoryImpl ValueType;
-    typedef ValueType::SharedPointer ValueSP;
-    typedef std::list<lldb::TypeCategoryImplSP> ActiveCategoriesList;
-    typedef ActiveCategoriesList::iterator ActiveCategoriesIterator;
-        
-public:
-    typedef std::map<KeyType, ValueSP> MapType;
-    typedef MapType::iterator MapIterator;
-    typedef bool(*CallbackType)(void*, const ValueSP&);
-    typedef uint32_t Position;
-    
-    static const Position First = 0;
-    static const Position Default = 1;
-    static const Position Last = UINT32_MAX;
-    
-    CategoryMap (IFormatChangeListener* lst) :
-        m_map_mutex(Mutex::eMutexTypeRecursive),
-        listener(lst),
-        m_map(),
-        m_active_categories()
-    {
-        ConstString default_cs("default");
-        lldb::TypeCategoryImplSP default_sp = lldb::TypeCategoryImplSP(new TypeCategoryImpl(listener, default_cs));
-        Add(default_cs,default_sp);
-        Enable(default_cs,First);
-    }
-    
-    void
-    Add (KeyType name,
-         const ValueSP& entry)
-    {
-        Mutex::Locker locker(m_map_mutex);
-        m_map[name] = entry;
-        if (listener)
-            listener->Changed();
-    }
-    
-    bool
-    Delete (KeyType name)
-    {
-        Mutex::Locker locker(m_map_mutex);
-        MapIterator iter = m_map.find(name);
-        if (iter == m_map.end())
-            return false;
-        m_map.erase(name);
-        Disable(name);
-        if (listener)
-            listener->Changed();
-        return true;
-    }
-    
-    bool
-    Enable (KeyType category_name,
-            Position pos = Default)
-    {
-        Mutex::Locker locker(m_map_mutex);
-        ValueSP category;
-        if (!Get(category_name,category))
-            return false;
-        return Enable(category, pos);
-    }
-    
-    bool
-    Disable (KeyType category_name)
-    {
-        Mutex::Locker locker(m_map_mutex);
-        ValueSP category;
-        if (!Get(category_name,category))
-            return false;
-        return Disable(category);
-    }
-    
-    bool
-    Enable (ValueSP category,
-            Position pos = Default)
-    {
-        Mutex::Locker locker(m_map_mutex);
-        if (category.get())
-        {
-            Position pos_w = pos;
-            if (pos == First || m_active_categories.size() == 0)
-                m_active_categories.push_front(category);
-            else if (pos == Last || pos == m_active_categories.size())
-                m_active_categories.push_back(category);
-            else if (pos < m_active_categories.size())
-            {
-                ActiveCategoriesList::iterator iter = m_active_categories.begin();
-                while (pos_w)
-                {
-                    pos_w--,iter++;
-                }
-                m_active_categories.insert(iter,category);
-            }
-            else
-                return false;
-            category->Enable(true,
-                             pos);
-            return true;
-        }
-        return false;
-    }
-    
-    bool
-    Disable (ValueSP category)
-    {
-        Mutex::Locker locker(m_map_mutex);
-        if (category.get())
-        {
-            m_active_categories.remove_if(delete_matching_categories(category));
-            category->Disable();
-            return true;
-        }
-        return false;
-    }
-    
-    void
-    Clear ()
-    {
-        Mutex::Locker locker(m_map_mutex);
-        m_map.clear();
-        m_active_categories.clear();
-        if (listener)
-            listener->Changed();
-    }
-    
-    bool
-    Get (KeyType name,
-         ValueSP& entry)
-    {
-        Mutex::Locker locker(m_map_mutex);
-        MapIterator iter = m_map.find(name);
-        if (iter == m_map.end())
-            return false;
-        entry = iter->second;
-        return true;
-    }
-    
-    bool
-    Get (uint32_t pos,
-         ValueSP& entry)
-    {
-        Mutex::Locker locker(m_map_mutex);
-        MapIterator iter = m_map.begin();
-        MapIterator end = m_map.end();
-        while (pos > 0)
-        {
-            iter++;
-            pos--;
-            if (iter == end)
-                return false;
-        }
-        entry = iter->second;
-        return false;
-    }
-    
-    void
-    LoopThrough (CallbackType callback, void* param);
-    
-    lldb::TypeCategoryImplSP
-    GetAtIndex (uint32_t);
-    
-    bool
-    AnyMatches (ConstString type_name,
-                TypeCategoryImpl::FormatCategoryItems items = TypeCategoryImpl::ALL_ITEM_TYPES,
-                bool only_enabled = true,
-                const char** matching_category = NULL,
-                TypeCategoryImpl::FormatCategoryItems* matching_type = NULL);
-    
-    uint32_t
-    GetCount ()
-    {
-        return m_map.size();
-    }
-    
-    lldb::TypeSummaryImplSP
-    GetSummaryFormat (ValueObject& valobj,
-         lldb::DynamicValueType use_dynamic);
-    
-#ifndef LLDB_DISABLE_PYTHON
-    lldb::SyntheticChildrenSP
-    GetSyntheticChildren (ValueObject& valobj,
-                          lldb::DynamicValueType use_dynamic);
-#endif
-    
-private:
-    
-    class delete_matching_categories
-    {
-        lldb::TypeCategoryImplSP ptr;
-    public:
-        delete_matching_categories(lldb::TypeCategoryImplSP p) : ptr(p)
-        {}
-        
-        bool operator()(const lldb::TypeCategoryImplSP& other)
-        {
-            return ptr.get() == other.get();
-        }
-    };
-    
-    Mutex m_map_mutex;
-    IFormatChangeListener* listener;
-    
-    MapType m_map;
-    ActiveCategoriesList m_active_categories;
-    
-    MapType& map ()
-    {
-        return m_map;
-    }
-    
-    ActiveCategoriesList& active_list ()
-    {
-        return m_active_categories;
-    }
-    
-    Mutex& mutex ()
-    {
-        return m_map_mutex;
-    }
-    
-    friend class FormatNavigator<KeyType, ValueType>;
-    friend class FormatManager;
-};
-
-class FormatManager : public IFormatChangeListener
-{
-    typedef FormatNavigator<ConstString, TypeFormatImpl> ValueNavigator;
-    typedef ValueNavigator::MapType ValueMap;
-    typedef FormatMap<ConstString, TypeSummaryImpl> NamedSummariesMap;
-    typedef CategoryMap::MapType::iterator CategoryMapIterator;
-public:
-    
-    typedef CategoryMap::CallbackType CategoryCallback;
-    
-    FormatManager ();
-    
-    ValueNavigator&
-    GetValueNavigator ()
-    {
-        return m_value_nav;
-    }
-    
-    NamedSummariesMap&
-    GetNamedSummaryNavigator ()
-    {
-        return m_named_summaries_map;
-    }
-    
-    void
-    EnableCategory (const ConstString& category_name,
-                    CategoryMap::Position pos = CategoryMap::Default)
-    {
-        m_categories_map.Enable(category_name,
-                                pos);
-    }
-    
-    void
-    DisableCategory (const ConstString& category_name)
-    {
-        m_categories_map.Disable(category_name);
-    }
-    
-    void
-    EnableCategory (const lldb::TypeCategoryImplSP& category,
-                    CategoryMap::Position pos = CategoryMap::Default)
-    {
-        m_categories_map.Enable(category,
-                                pos);
-    }
-    
-    void
-    DisableCategory (const lldb::TypeCategoryImplSP& category)
-    {
-        m_categories_map.Disable(category);
-    }
-    
-    bool
-    DeleteCategory (const ConstString& category_name)
-    {
-        return m_categories_map.Delete(category_name);
-    }
-    
-    void
-    ClearCategories ()
-    {
-        return m_categories_map.Clear();
-    }
-    
-    uint32_t
-    GetCategoriesCount ()
-    {
-        return m_categories_map.GetCount();
-    }
-    
-    lldb::TypeCategoryImplSP
-    GetCategoryAtIndex (uint32_t index)
-    {
-        return m_categories_map.GetAtIndex(index);
-    }
-    
-    void
-    LoopThroughCategories (CategoryCallback callback, void* param)
-    {
-        m_categories_map.LoopThrough(callback, param);
-    }
-    
-    lldb::TypeCategoryImplSP
-    GetCategory (const char* category_name = NULL,
-                 bool can_create = true)
-    {
-        if (!category_name)
-            return GetCategory(m_default_category_name);
-        return GetCategory(ConstString(category_name));
-    }
-    
-    lldb::TypeCategoryImplSP
-    GetCategory (const ConstString& category_name,
-                 bool can_create = true);
-    
-    lldb::TypeSummaryImplSP
-    GetSummaryFormat (ValueObject& valobj,
-                      lldb::DynamicValueType use_dynamic)
-    {
-        return m_categories_map.GetSummaryFormat(valobj, use_dynamic);
-    }
-    
-    lldb::TypeSummaryImplSP
-    GetSummaryForType (lldb::TypeNameSpecifierImplSP type_sp);
-
-    lldb::TypeFilterImplSP
-    GetFilterForType (lldb::TypeNameSpecifierImplSP type_sp);
-
-#ifndef LLDB_DISABLE_PYTHON
-    lldb::TypeSyntheticImplSP
-    GetSyntheticForType (lldb::TypeNameSpecifierImplSP type_sp);
-#endif
-    
-#ifndef LLDB_DISABLE_PYTHON
-    lldb::SyntheticChildrenSP
-    GetSyntheticChildrenForType (lldb::TypeNameSpecifierImplSP type_sp);
-#endif
-    
-#ifndef LLDB_DISABLE_PYTHON
-    lldb::SyntheticChildrenSP
-    GetSyntheticChildren (ValueObject& valobj,
-                          lldb::DynamicValueType use_dynamic)
-    {
-        return m_categories_map.GetSyntheticChildren(valobj, use_dynamic);
-    }
-#endif
-    
-    bool
-    AnyMatches (ConstString type_name,
-                TypeCategoryImpl::FormatCategoryItems items = TypeCategoryImpl::ALL_ITEM_TYPES,
-                bool only_enabled = true,
-                const char** matching_category = NULL,
-                TypeCategoryImpl::FormatCategoryItems* matching_type = NULL)
-    {
-        return m_categories_map.AnyMatches(type_name,
-                                           items,
-                                           only_enabled,
-                                           matching_category,
-                                           matching_type);
-    }
-
-    static bool
-    GetFormatFromCString (const char *format_cstr,
-                          bool partial_match_ok,
-                          lldb::Format &format);
-
-    static char
-    GetFormatAsFormatChar (lldb::Format format);
-
-    static const char *
-    GetFormatAsCString (lldb::Format format);
-    
-    // if the user tries to add formatters for, say, "struct Foo"
-    // those will not match any type because of the way we strip qualifiers from typenames
-    // this method looks for the case where the user is adding a "class","struct","enum" or "union" Foo
-    // and strips the unnecessary qualifier
-    static ConstString
-    GetValidTypeName (const ConstString& type);
-    
-    // when DataExtractor dumps a vectorOfT, it uses a predefined format for each item
-    // this method returns it, or eFormatInvalid if vector_format is not a vectorOf
-    static lldb::Format
-    GetSingleItemFormat (lldb::Format vector_format);
-    
-    void
-    Changed ()
-    {
-#ifdef _MSC_VER
-        InterlockedIncrement(&m_last_revision);
-#else
-        __sync_add_and_fetch(&m_last_revision, +1);
-#endif
-    }
-    
-    uint32_t
-    GetCurrentRevision ()
-    {
-        return m_last_revision;
-    }
-    
-    ~FormatManager ()
-    {
-    }
-    
-private:    
-    ValueNavigator m_value_nav;
-    NamedSummariesMap m_named_summaries_map;
-    uint32_t m_last_revision;
-    CategoryMap m_categories_map;
-    
-    ConstString m_default_category_name;
-    ConstString m_system_category_name;
-    ConstString m_gnu_cpp_category_name;
-    ConstString m_libcxx_category_name;
-    ConstString m_objc_category_name;
-    ConstString m_corefoundation_category_name;
-    ConstString m_coregraphics_category_name;
-    ConstString m_coreservices_category_name;
-    ConstString m_vectortypes_category_name;
-    ConstString m_appkit_category_name;
-    
-    CategoryMap&
-    GetCategories ()
-    {
-        return m_categories_map;
-    }
-    
-    // WARNING: these are temporary functions that setup formatters
-    // while a few of these actually should be globally available and setup by LLDB itself
-    // most would actually belong to the users' lldbinit file or to some other form of configurable
-    // storage
-    void
-    LoadSTLFormatters();
-    
-    void
-    LoadLibcxxFormatters();
-    
-    void
-    LoadSystemFormatters();
-    
-    void
-    LoadObjCFormatters();
-};
-    
-} // namespace lldb_private
-
-#endif	// lldb_FormatManager_h_

Removed: lldb/branches/windows/include/lldb/Core/FormatNavigator.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/FormatNavigator.h?rev=179678&view=auto
==============================================================================
--- lldb/branches/windows/include/lldb/Core/FormatNavigator.h (original)
+++ lldb/branches/windows/include/lldb/Core/FormatNavigator.h (removed)
@@ -1,661 +0,0 @@
-//===-- FormatNavigator.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_FormatNavigator_h_
-#define lldb_FormatNavigator_h_
-
-// C Includes
-// C++ Includes
-
-// Other libraries and framework includes
-#include "clang/AST/DeclCXX.h"
-#include "clang/AST/Type.h"
-#include "clang/AST/DeclObjC.h"
-
-// Project includes
-#include "lldb/lldb-public.h"
-
-#include "lldb/Core/FormatClasses.h"
-#include "lldb/Core/Log.h"
-#include "lldb/Core/RegularExpression.h"
-#include "lldb/Core/ValueObject.h"
-
-#include "lldb/Symbol/ClangASTContext.h"
-
-#include "lldb/Target/ObjCLanguageRuntime.h"
-#include "lldb/Target/Process.h"
-#include "lldb/Target/StackFrame.h"
-#include "lldb/Target/TargetList.h"
-
-using lldb::LogSP;
-
-namespace lldb_private {
-    
-// this file (and its. cpp) contain the low-level implementation of LLDB Data Visualization
-// class DataVisualization is the high-level front-end of this feature
-// clients should refer to that class as the entry-point into the data formatters
-// unless they have a good reason to bypass it and prefer to use this file's objects directly
-class IFormatChangeListener
-{
-public:
-    virtual void
-    Changed () = 0;
-    
-    virtual
-    ~IFormatChangeListener () {}
-    
-    virtual uint32_t
-    GetCurrentRevision () = 0;
-    
-};
-    
-static inline bool
-IsWhitespace (char c)
-{
-    return ( (c == ' ') || (c == '\t') || (c == '\v') || (c == '\f') );
-}
-
-static inline bool
-HasPrefix (const char* str1, const char* str2)
-{
-    return ( ::strstr(str1, str2) == str1 );
-}
-    
-// if the user tries to add formatters for, say, "struct Foo"
-// those will not match any type because of the way we strip qualifiers from typenames
-// this method looks for the case where the user is adding a "class","struct","enum" or "union" Foo
-// and strips the unnecessary qualifier
-static ConstString
-GetValidTypeName_Impl (const ConstString& type)
-{
-    int strip_len = 0;
-    
-    if (type == false)
-        return type;
-    
-    const char* type_cstr = type.AsCString();
-    
-    if ( HasPrefix(type_cstr, "class ") )
-        strip_len = 6;
-    else if ( HasPrefix(type_cstr, "enum ") )
-        strip_len = 5;
-    else if ( HasPrefix(type_cstr, "struct ") )
-        strip_len = 7;
-    else if ( HasPrefix(type_cstr, "union ") )
-        strip_len = 6;
-    
-    if (strip_len == 0)
-        return type;
-    
-    type_cstr += strip_len;
-    while (IsWhitespace(*type_cstr) && ++type_cstr)
-        ;
-    
-    return ConstString(type_cstr);
-}
-    
-template<typename KeyType, typename ValueType>
-class FormatNavigator;
-
-template<typename KeyType, typename ValueType>
-class FormatMap
-{
-public:
-
-    typedef typename ValueType::SharedPointer ValueSP;
-    typedef std::map<KeyType, ValueSP> MapType;
-    typedef typename MapType::iterator MapIterator;
-    typedef bool(*CallbackType)(void*, KeyType, const ValueSP&);
-    
-    FormatMap(IFormatChangeListener* lst) :
-    m_map(),
-    m_map_mutex(Mutex::eMutexTypeRecursive),
-    listener(lst)
-    {
-    }
-    
-    void
-    Add(KeyType name,
-        const ValueSP& entry)
-    {
-        if (listener)
-            entry->GetRevision() = listener->GetCurrentRevision();
-        else
-            entry->GetRevision() = 0;
-
-        Mutex::Locker locker(m_map_mutex);
-        m_map[name] = entry;
-        if (listener)
-            listener->Changed();
-    }
-    
-    bool
-    Delete (KeyType name)
-    {
-        Mutex::Locker locker(m_map_mutex);
-        MapIterator iter = m_map.find(name);
-        if (iter == m_map.end())
-            return false;
-        m_map.erase(name);
-        if (listener)
-            listener->Changed();
-        return true;
-    }
-    
-    void
-    Clear ()
-    {
-        Mutex::Locker locker(m_map_mutex);
-        m_map.clear();
-        if (listener)
-            listener->Changed();
-    }
-    
-    bool
-    Get(KeyType name,
-        ValueSP& entry)
-    {
-        Mutex::Locker locker(m_map_mutex);
-        MapIterator iter = m_map.find(name);
-        if (iter == m_map.end())
-            return false;
-        entry = iter->second;
-        return true;
-    }
-    
-    void
-    LoopThrough (CallbackType callback, void* param)
-    {
-        if (callback)
-        {
-            Mutex::Locker locker(m_map_mutex);
-            MapIterator pos, end = m_map.end();
-            for (pos = m_map.begin(); pos != end; pos++)
-            {
-                KeyType type = pos->first;
-                if (!callback(param, type, pos->second))
-                    break;
-            }
-        }
-    }
-    
-    uint32_t
-    GetCount ()
-    {
-        return m_map.size();
-    }
-    
-    ValueSP
-    GetValueAtIndex (uint32_t index)
-    {
-        Mutex::Locker locker(m_map_mutex);
-        MapIterator iter = m_map.begin();
-        MapIterator end = m_map.end();
-        while (index > 0)
-        {
-            iter++;
-            index--;
-            if (end == iter)
-                return ValueSP();
-        }
-        return iter->second;
-    }
-    
-    KeyType
-    GetKeyAtIndex (uint32_t index)
-    {
-        Mutex::Locker locker(m_map_mutex);
-        MapIterator iter = m_map.begin();
-        MapIterator end = m_map.end();
-        while (index > 0)
-        {
-            iter++;
-            index--;
-            if (end == iter)
-                return KeyType();
-        }
-        return iter->first;
-    }
-    
-protected:
-    MapType m_map;    
-    Mutex m_map_mutex;
-    IFormatChangeListener* listener;
-    
-    MapType&
-    map ()
-    {
-        return m_map;
-    }
-    
-    Mutex&
-    mutex ()
-    {
-        return m_map_mutex;
-    }
-    
-    friend class FormatNavigator<KeyType, ValueType>;
-    friend class FormatManager;
-    
-};
-    
-template<typename KeyType, typename ValueType>
-class FormatNavigator
-{
-protected:
-    typedef FormatMap<KeyType,ValueType> BackEndType;
-    
-public:
-    typedef typename BackEndType::MapType MapType;
-    typedef typename MapType::iterator MapIterator;
-    typedef typename MapType::key_type MapKeyType;
-    typedef typename MapType::mapped_type MapValueType;
-    typedef typename BackEndType::CallbackType CallbackType;
-#ifdef _LIBCPP_VERSION
-    typedef typename std::shared_ptr<FormatNavigator<KeyType, ValueType> > SharedPointer;
-#else
-    typedef typename std::tr1::shared_ptr<FormatNavigator<KeyType, ValueType> > SharedPointer;
-#endif
-    
-    friend class TypeCategoryImpl;
-
-    FormatNavigator(std::string name,
-                    IFormatChangeListener* lst) :
-    m_format_map(lst),
-    m_name(name),
-    m_id_cs(ConstString("id"))
-    {
-    }
-    
-    void
-    Add (const MapKeyType &type, const MapValueType& entry)
-    {
-        Add_Impl(type, entry, (KeyType*)NULL);
-    }
-    
-    bool
-    Delete (ConstString type)
-    {
-        return Delete_Impl(type, (KeyType*)NULL);
-    }
-        
-    bool
-    Get(ValueObject& valobj,
-        MapValueType& entry,
-        lldb::DynamicValueType use_dynamic,
-        uint32_t* why = NULL)
-    {
-        uint32_t value = lldb_private::eFormatterChoiceCriterionDirectChoice;
-        clang::QualType type = clang::QualType::getFromOpaquePtr(valobj.GetClangType());
-        bool ret = Get(valobj, type, entry, use_dynamic, value);
-        if (ret)
-            entry = MapValueType(entry);
-        else
-            entry = MapValueType();        
-        if (why)
-            *why = value;
-        return ret;
-    }
-    
-    bool
-    Get (ConstString type, MapValueType& entry)
-    {
-        return Get_Impl(type, entry, (KeyType*)NULL);
-    }
-    
-    bool
-    GetExact (ConstString type, MapValueType& entry)
-    {
-        return GetExact_Impl(type, entry, (KeyType*)NULL);
-    }
-    
-    MapValueType
-    GetAtIndex (uint32_t index)
-    {
-        return m_format_map.GetValueAtIndex(index);
-    }
-    
-    lldb::TypeNameSpecifierImplSP
-    GetTypeNameSpecifierAtIndex (uint32_t index)
-    {
-        return GetTypeNameSpecifierAtIndex_Impl(index, (KeyType*)NULL);
-    }
-    
-    void
-    Clear ()
-    {
-        m_format_map.Clear();
-    }
-    
-    void
-    LoopThrough (CallbackType callback, void* param)
-    {
-        m_format_map.LoopThrough(callback,param);
-    }
-    
-    uint32_t
-    GetCount ()
-    {
-        return m_format_map.GetCount();
-    }
-    
-protected:
-        
-    BackEndType m_format_map;
-    
-    std::string m_name;
-    
-    DISALLOW_COPY_AND_ASSIGN(FormatNavigator);
-    
-    ConstString m_id_cs;
-                           
-    void
-    Add_Impl (const MapKeyType &type, const MapValueType& entry, lldb::RegularExpressionSP *dummy)
-    {
-       m_format_map.Add(type,entry);
-    }
-
-    void Add_Impl (const ConstString &type, const MapValueType& entry, ConstString *dummy)
-    {
-       m_format_map.Add(GetValidTypeName_Impl(type), entry);
-    }
-
-    bool
-    Delete_Impl (ConstString type, ConstString *dummy)
-    {
-       return m_format_map.Delete(type);
-    }
-
-    bool
-    Delete_Impl (ConstString type, lldb::RegularExpressionSP *dummy)
-    {
-       Mutex& x_mutex = m_format_map.mutex();
-        lldb_private::Mutex::Locker locker(x_mutex);
-       MapIterator pos, end = m_format_map.map().end();
-       for (pos = m_format_map.map().begin(); pos != end; pos++)
-       {
-           lldb::RegularExpressionSP regex = pos->first;
-           if ( ::strcmp(type.AsCString(),regex->GetText()) == 0)
-           {
-               m_format_map.map().erase(pos);
-               if (m_format_map.listener)
-                   m_format_map.listener->Changed();
-               return true;
-           }
-       }
-       return false;
-    }    
-
-    bool
-    Get_Impl (ConstString type, MapValueType& entry, ConstString *dummy)
-    {
-       return m_format_map.Get(type, entry);
-    }
-
-    bool
-    GetExact_Impl (ConstString type, MapValueType& entry, ConstString *dummy)
-    {
-        return Get_Impl(type,entry, (KeyType*)0);
-    }
-    
-    lldb::TypeNameSpecifierImplSP
-    GetTypeNameSpecifierAtIndex_Impl (uint32_t index, ConstString *dummy)
-    {
-        ConstString key = m_format_map.GetKeyAtIndex(index);
-        if (key)
-            return lldb::TypeNameSpecifierImplSP(new TypeNameSpecifierImpl(key.AsCString(),
-                                                                           false));
-        else
-            return lldb::TypeNameSpecifierImplSP();
-    }
-    
-    lldb::TypeNameSpecifierImplSP
-    GetTypeNameSpecifierAtIndex_Impl (uint32_t index, lldb::RegularExpressionSP *dummy)
-    {
-        lldb::RegularExpressionSP regex = m_format_map.GetKeyAtIndex(index);
-        if (regex.get() == NULL)
-            return lldb::TypeNameSpecifierImplSP();
-        return lldb::TypeNameSpecifierImplSP(new TypeNameSpecifierImpl(regex->GetText(),
-                                                                       true));
-    }
-
-    bool
-    Get_Impl (ConstString key, MapValueType& value, lldb::RegularExpressionSP *dummy)
-    {
-       const char* key_cstr = key.AsCString();
-       if (!key_cstr)
-           return false;
-       Mutex& x_mutex = m_format_map.mutex();
-       lldb_private::Mutex::Locker locker(x_mutex);
-       MapIterator pos, end = m_format_map.map().end();
-       for (pos = m_format_map.map().begin(); pos != end; pos++)
-       {
-           lldb::RegularExpressionSP regex = pos->first;
-           if (regex->Execute(key_cstr))
-           {
-               value = pos->second;
-               return true;
-           }
-       }
-       return false;
-    }
-    
-    bool
-    GetExact_Impl (ConstString key, MapValueType& value, lldb::RegularExpressionSP *dummy)
-    {
-        Mutex& x_mutex = m_format_map.mutex();
-        lldb_private::Mutex::Locker locker(x_mutex);
-        MapIterator pos, end = m_format_map.map().end();
-        for (pos = m_format_map.map().begin(); pos != end; pos++)
-        {
-            lldb::RegularExpressionSP regex = pos->first;
-            if (strcmp(regex->GetText(),key.AsCString()) == 0)
-            {
-                value = pos->second;
-                return true;
-            }
-        }
-        return false;
-    }
-    
-    bool
-    Get_BitfieldMatch (ValueObject& valobj,
-                       ConstString typeName,
-                       MapValueType& entry,
-                       uint32_t& reason)
-    {
-        LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_TYPES));
-        // for bitfields, append size to the typename so one can custom format them
-        StreamString sstring;
-        sstring.Printf("%s:%d",typeName.AsCString(),valobj.GetBitfieldBitSize());
-        ConstString bitfieldname = ConstString(sstring.GetData());
-        if (log)
-            log->Printf("[Get_BitfieldMatch] appended bitfield info, final result is %s", bitfieldname.GetCString());
-        if (Get(bitfieldname, entry))
-        {
-            if (log)
-                log->Printf("[Get_BitfieldMatch] bitfield direct match found, returning");
-            return true;
-        }
-        else
-        {
-            reason |= lldb_private::eFormatterChoiceCriterionStrippedBitField;
-            if (log)
-                log->Printf("[Get_BitfieldMatch] no bitfield direct match");
-            return false;
-        }
-    }
-    
-    bool Get_ObjC (ValueObject& valobj,
-                   MapValueType& entry)
-    {
-        LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_TYPES));
-        lldb::ProcessSP process_sp = valobj.GetProcessSP();
-        ObjCLanguageRuntime* runtime = process_sp->GetObjCLanguageRuntime();
-        if (runtime == NULL)
-        {
-            if (log)
-                log->Printf("[Get_ObjC] no valid ObjC runtime, skipping dynamic");
-            return false;
-        }
-        ObjCLanguageRuntime::ClassDescriptorSP objc_class_sp (runtime->GetClassDescriptor(valobj));
-        if (!objc_class_sp)
-        {
-            if (log)
-                log->Printf("[Get_ObjC] invalid ISA, skipping dynamic");
-            return false;
-        }
-        ConstString name (objc_class_sp->GetClassName());
-        if (log)
-            log->Printf("[Get_ObjC] dynamic type inferred is %s - looking for direct dynamic match", name.GetCString());
-        if (Get(name, entry))
-        {
-            if (log)
-                log->Printf("[Get_ObjC] direct dynamic match found, returning");
-            return true;
-        }
-        if (log)
-            log->Printf("[Get_ObjC] no dynamic match");
-        return false;
-    }
-    
-    bool Get (ValueObject& valobj,
-              clang::QualType type, // TODO: find out why "type" is passed in the type when it belongs to valobj? Can it ever differ?
-              MapValueType& entry,
-              lldb::DynamicValueType use_dynamic,
-              uint32_t& reason)
-    {
-        LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_TYPES));
-        if (type.isNull())
-        {
-            if (log)
-                log->Printf("[Get] type is NULL, returning");
-            return false;
-        }
-
-        type.removeLocalConst(); type.removeLocalVolatile(); type.removeLocalRestrict();
-        const clang::Type* typePtr = type.getTypePtrOrNull();
-        if (!typePtr)
-        {
-            if (log)
-                log->Printf("[Get] type is NULL, returning");
-            return false;
-        }
-        ConstString typeName(ClangASTType::GetTypeNameForQualType(valobj.GetClangAST(), type).c_str());
-        
-        if (valobj.GetBitfieldBitSize() > 0)
-        {
-            if (Get_BitfieldMatch(valobj, typeName, entry, reason))
-                return true;
-        }
-        
-        if (log)
-            log->Printf("[Get] trying to get %s for VO name %s of type %s",
-                        m_name.c_str(),
-                        valobj.GetName().AsCString(),
-                        typeName.AsCString());
-        
-        if (Get(typeName, entry))
-        {
-            if (log)
-                log->Printf("[Get] direct match found, returning");
-            return true;
-        }
-        if (log)
-            log->Printf("[Get] no direct match");
-
-        // strip pointers and references and see if that helps
-        if (typePtr->isReferenceType())
-        {
-            if (log)
-                log->Printf("[Get] stripping reference");
-            if (Get(valobj,type.getNonReferenceType(),entry, use_dynamic, reason) && !entry->SkipsReferences())
-            {
-                reason |= lldb_private::eFormatterChoiceCriterionStrippedPointerReference;
-                return true;
-            }
-        }
-        else if (typePtr->isPointerType())
-        {
-            if (log)
-                log->Printf("[Get] stripping pointer");
-            clang::QualType pointee = typePtr->getPointeeType();
-            if (Get(valobj, pointee, entry, use_dynamic, reason) && !entry->SkipsPointers())
-            {
-                reason |= lldb_private::eFormatterChoiceCriterionStrippedPointerReference;
-                return true;
-            }
-        }
-
-        bool canBeObjCDynamic = ClangASTContext::IsPossibleDynamicType (valobj.GetClangAST(),
-                                                                        type.getAsOpaquePtr(),
-                                                                        NULL,
-                                                                        false, // no C++
-                                                                        true); // yes ObjC
-        
-        if (canBeObjCDynamic)
-        {
-            if (use_dynamic != lldb::eNoDynamicValues)
-            {
-                if (log)
-                    log->Printf("[Get] allowed to figure out dynamic ObjC type");
-                if (Get_ObjC(valobj,entry))
-                {
-                    reason |= lldb_private::eFormatterChoiceCriterionDynamicObjCDiscovery;
-                    return true;
-                }
-            }
-            if (log)
-                log->Printf("[Get] dynamic disabled or failed - stripping ObjC pointer");
-            clang::QualType pointee = typePtr->getPointeeType();
-            if (Get(valobj, pointee, entry, use_dynamic, reason) && !entry->SkipsPointers())
-            {
-                reason |= lldb_private::eFormatterChoiceCriterionStrippedPointerReference;
-                return true;
-            }
-        }
-    
-        // try to strip typedef chains
-        const clang::TypedefType* type_tdef = type->getAs<clang::TypedefType>();
-        if (type_tdef)
-        {
-            if (log)
-                log->Printf("[Get] stripping typedef");
-            if ((Get(valobj, type_tdef->getDecl()->getUnderlyingType(), entry, use_dynamic, reason)) && entry->Cascades())
-            {
-                reason |= lldb_private::eFormatterChoiceCriterionNavigatedTypedefs;
-                return true;
-            }
-        }
-        
-        // if all else fails, go to static type
-        if (valobj.IsDynamic())
-        {
-            if (log)
-                log->Printf("[Get] going to static value");
-            lldb::ValueObjectSP static_value_sp(valobj.GetStaticValue());
-            if (static_value_sp)
-            {
-                if (log)
-                    log->Printf("[Get] has a static value - actually use it");
-                if (Get(*static_value_sp.get(), clang::QualType::getFromOpaquePtr(static_value_sp->GetClangType()) , entry, use_dynamic, reason))
-                {
-                    reason |= lldb_private::eFormatterChoiceCriterionWentToStaticValue;
-                    return true;
-                }
-            }
-        }
-        
-        return false;
-    }
-};
-
-} // namespace lldb_private
-
-#endif	// lldb_FormatNavigator_h_

Modified: lldb/branches/windows/include/lldb/Core/Log.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/Log.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/Log.h (original)
+++ lldb/branches/windows/include/lldb/Core/Log.h Wed Apr 17 03:38:48 2013
@@ -59,7 +59,7 @@ public:
     // Callback definitions for abstracted plug-in log access.
     //------------------------------------------------------------------
     typedef void (*DisableCallback) (const char **categories, Stream *feedback_strm);
-    typedef lldb::LogSP (*EnableCallback) (lldb::StreamSP &log_stream_sp,
+    typedef Log * (*EnableCallback) (lldb::StreamSP &log_stream_sp,
                                            uint32_t log_options,
                                            const char **categories,
                                            Stream *feedback_strm);
@@ -117,7 +117,7 @@ public:
     //------------------------------------------------------------------
     Log ();
 
-    Log (lldb::StreamSP &stream_sp);
+    Log (const lldb::StreamSP &stream_sp);
 
     ~Log ();
 
@@ -175,6 +175,12 @@ public:
     bool
     GetDebug() const;
 
+    void
+    SetStream (const lldb::StreamSP &stream_sp)
+    {
+        m_stream_sp = stream_sp;
+    }
+
 protected:
     //------------------------------------------------------------------
     // Member variables
@@ -216,7 +222,7 @@ public:
     ListCategories (Stream *strm) = 0;
 
 protected:
-    lldb::LogSP m_log_sp;
+    std::unique_ptr<Log> m_log_ap;
 
 private:
     DISALLOW_COPY_AND_ASSIGN (LogChannel);

Modified: lldb/branches/windows/include/lldb/Core/MappedHash.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/MappedHash.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/MappedHash.h (original)
+++ lldb/branches/windows/include/lldb/Core/MappedHash.h Wed Apr 17 03:38:48 2013
@@ -36,7 +36,7 @@ public:
     }
     
     static uint32_t
-    HashString (const uint8_t hash_function, const char *s)
+    HashString (uint32_t hash_function, const char *s)
     {
         switch (hash_function)
         {
@@ -115,8 +115,8 @@ public:
             s.Printf ("header.header_data_len    = 0x%8.8x %u\n", header_data_len, header_data_len);
         }
         
-        virtual uint32_t
-        Read (lldb_private::DataExtractor &data, uint32_t offset)
+        virtual lldb::offset_t
+        Read (lldb_private::DataExtractor &data, lldb::offset_t offset)
         {
             if (data.ValidOffsetForDataOfSize (offset, 
                                                sizeof (magic) + 
@@ -140,14 +140,14 @@ public:
                                 data.SetByteOrder(lldb::eByteOrderBig);
                                 break;
                             default:
-                                return UINT32_MAX;
+                                return LLDB_INVALID_OFFSET;
                         }
                     }
                     else
                     {
                         // Magic bytes didn't match
                         version = 0;
-                        return UINT32_MAX;
+                        return LLDB_INVALID_OFFSET;
                     }
                 }
                 
@@ -155,7 +155,7 @@ public:
                 if (version != 1)
                 {
                     // Unsupported version
-                    return UINT32_MAX;
+                    return LLDB_INVALID_OFFSET;
                 }
                 hash_function       = data.GetU16 (&offset);
                 if (hash_function == 4)
@@ -165,7 +165,7 @@ public:
                 header_data_len     = data.GetU32 (&offset);
                 return offset;
             }
-            return UINT32_MAX;
+            return LLDB_INVALID_OFFSET;
         }
 //        
 //        // Returns a buffer that contains a serialized version of this table
@@ -271,7 +271,7 @@ public:
                 const uint32_t hash = m_entries[i].hash;
                 const uint32_t bucket_idx = hash % header.bucket_count;
                 const uint32_t strp_offset = m_entries[i].str_offset;
-                const dw_offset_t die_offset = m_entries[i].die_offset;
+                const uint32_t die_offset = m_entries[i].die_offset;
                 hash_buckets[bucket_idx][hash][strp_offset].push_back(die_offset);
             }
             
@@ -379,8 +379,8 @@ public:
             m_hash_values (NULL),
             m_hash_offsets (NULL)
         {
-            uint32_t offset = m_header.Read (data, 0);
-            if (offset != UINT32_MAX && IsValid ())
+            lldb::offset_t offset = m_header.Read (data, 0);
+            if (offset != LLDB_INVALID_OFFSET && IsValid ())
             {
                 m_hash_indexes = (uint32_t *)data.GetData (&offset, m_header.bucket_count * sizeof(uint32_t));
                 m_hash_values  = (uint32_t *)data.GetData (&offset, m_header.hashes_count * sizeof(uint32_t));
@@ -443,10 +443,10 @@ public:
                         const uint32_t curr_hash_value = GetHashValue (hash_idx);
                         if (curr_hash_value == hash_value)
                         {
-                            uint32_t hash_data_offset = GetHashDataOffset (hash_idx);
+                            lldb::offset_t hash_data_offset = GetHashDataOffset (hash_idx);
                             while (hash_data_offset != UINT32_MAX)
                             {
-                                const uint32_t prev_hash_data_offset = hash_data_offset;
+                                const lldb::offset_t prev_hash_data_offset = hash_data_offset;
                                 Result hash_result = GetHashDataForName (name, &hash_data_offset, pair);
                                 // Check the result of getting our hash data
                                 switch (hash_result)
@@ -505,7 +505,7 @@ public:
 
         virtual Result
         GetHashDataForName (const char *name,
-                            uint32_t* hash_data_offset_ptr, 
+                            lldb::offset_t* hash_data_offset_ptr, 
                             Pair &pair) const = 0;
 
         const HeaderType &

Modified: lldb/branches/windows/include/lldb/Core/Module.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/Module.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/Module.h (original)
+++ lldb/branches/windows/include/lldb/Core/Module.h Wed Apr 17 03:38:48 2013
@@ -247,7 +247,7 @@ public:
     /// @return
     ///     The number of matches added to \a sc_list.
     //------------------------------------------------------------------
-    uint32_t
+    size_t
     FindCompileUnits (const FileSpec &path,
                       bool append,
                       SymbolContextList &sc_list);
@@ -284,7 +284,7 @@ public:
     /// @return
     ///     The number of matches added to \a sc_list.
     //------------------------------------------------------------------
-    uint32_t
+    size_t
     FindFunctions (const ConstString &name,
                    const ClangNamespaceDecl *namespace_decl,
                    uint32_t name_type_mask, 
@@ -315,7 +315,7 @@ public:
     /// @return
     ///     The number of matches added to \a sc_list.
     //------------------------------------------------------------------
-    uint32_t
+    size_t
     FindFunctions (const RegularExpression& regex, 
                    bool symbols_ok, 
                    bool inlines_ok,
@@ -348,11 +348,11 @@ public:
     /// @return
     ///     The number of matches added to \a variable_list.
     //------------------------------------------------------------------
-    uint32_t
+    size_t
     FindGlobalVariables (const ConstString &name,
                          const ClangNamespaceDecl *namespace_decl,
                          bool append, 
-                         uint32_t max_matches, 
+                         size_t max_matches,
                          VariableList& variable_list);
 
     //------------------------------------------------------------------
@@ -377,10 +377,10 @@ public:
     /// @return
     ///     The number of matches added to \a variable_list.
     //------------------------------------------------------------------
-    uint32_t
+    size_t
     FindGlobalVariables (const RegularExpression& regex, 
                          bool append, 
-                         uint32_t max_matches, 
+                         size_t max_matches,
                          VariableList& variable_list);
 
     //------------------------------------------------------------------
@@ -424,11 +424,11 @@ public:
     /// @return
     ///     The number of matches added to \a type_list.
     //------------------------------------------------------------------
-    uint32_t
+    size_t
     FindTypes (const SymbolContext& sc,
                const ConstString &type_name,
                bool exact_match,
-               uint32_t max_matches,
+               size_t max_matches,
                TypeList& types);
 
     lldb::TypeSP
@@ -458,11 +458,11 @@ public:
     /// @return
     ///     The number of matches added to \a type_list.
     //------------------------------------------------------------------
-    uint32_t
+    size_t
     FindTypesInNamespace (const SymbolContext& sc,
                           const ConstString &type_name,
                           const ClangNamespaceDecl *namespace_decl,
-                          uint32_t max_matches,
+                          size_t max_matches,
                           TypeList& type_list);
 
     //------------------------------------------------------------------
@@ -570,11 +570,11 @@ public:
     ///     The number of compile units that the symbol vendor plug-in
     ///     finds.
     //------------------------------------------------------------------
-    uint32_t
+    size_t
     GetNumCompileUnits();
 
     lldb::CompUnitSP
-    GetCompileUnitAtIndex (uint32_t);
+    GetCompileUnitAtIndex (size_t idx);
 
     const ConstString &
     GetObjectName() const;
@@ -882,6 +882,56 @@ public:
     bool
     RemapSourceFile (const char *path, std::string &new_path) const;
     
+    
+    //------------------------------------------------------------------
+    /// Prepare to do a function name lookup.
+    ///
+    /// Looking up functions by name can be a tricky thing. LLDB requires
+    /// that accelerator tables contain full names for functions as well
+    /// as function basenames which include functions, class methods and
+    /// class functions. When the user requests that an action use a
+    /// function by name, we are sometimes asked to automatically figure
+    /// out what a name could possibly map to. A user might request a
+    /// breakpoint be set on "count". If no options are supplied to limit
+    /// the scope of where to search for count, we will by default match
+    /// any function names named "count", all class and instance methods
+    /// named "count" (no matter what the namespace or contained context)
+    /// and any selectors named "count". If a user specifies "a::b" we
+    /// will search for the basename "b", and then prune the results that
+    /// don't match "a::b" (note that "c::a::b" and "d::e::a::b" will
+    /// match a query of "a::b".
+    ///
+    /// @param[in] name
+    ///     The user supplied name to use in the lookup
+    ///
+    /// @param[in] name_type_mask
+    ///     The mask of bits from lldb::FunctionNameType enumerations
+    ///     that tell us what kind of name we are looking for.
+    ///
+    /// @param[out] lookup_name
+    ///     The actual name that will be used when calling
+    ///     SymbolVendor::FindFunctions() or Symtab::FindFunctionSymbols()
+    ///
+    /// @param[out] lookup_name_type_mask
+    ///     The actual name mask that should be used in the calls to
+    ///     SymbolVendor::FindFunctions() or Symtab::FindFunctionSymbols()
+    ///
+    /// @param[out] match_name_after_lookup
+    ///     A boolean that indicates if we need to iterate through any
+    ///     match results obtained from SymbolVendor::FindFunctions() or
+    ///     Symtab::FindFunctionSymbols() to see if the name contains
+    ///     \a name. For example if \a name is "a::b", this function will
+    ///     return a \a lookup_name of "b", with \a match_name_after_lookup
+    ///     set to true to indicate any matches will need to be checked
+    ///     to make sure they contain \a name.
+    //------------------------------------------------------------------
+    static void
+    PrepareForFunctionNameLookup (const ConstString &name,
+                                  uint32_t name_type_mask,
+                                  ConstString &lookup_name,
+                                  uint32_t &lookup_name_type_mask,
+                                  bool &match_name_after_lookup);
+
 protected:
     //------------------------------------------------------------------
     // Member Variables
@@ -963,12 +1013,12 @@ protected:
 
 private:
 
-    uint32_t
+    size_t
     FindTypes_Impl (const SymbolContext& sc, 
                     const ConstString &name,
                     const ClangNamespaceDecl *namespace_decl,
                     bool append, 
-                    uint32_t max_matches, 
+                    size_t max_matches,
                     TypeList& types);
 
     

Modified: lldb/branches/windows/include/lldb/Core/ModuleList.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/ModuleList.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/ModuleList.h (original)
+++ lldb/branches/windows/include/lldb/Core/ModuleList.h Wed Apr 17 03:38:48 2013
@@ -156,8 +156,7 @@ public:
     Dump (Stream *s) const;
 
     void
-    LogUUIDAndPaths (lldb::LogSP &log_sp, 
-                     const char *prefix_cstr);
+    LogUUIDAndPaths (Log *log, const char *prefix_cstr);
                      
     Mutex &
     GetMutex () const
@@ -165,7 +164,7 @@ public:
         return m_modules_mutex;
     }
     
-    uint32_t
+    size_t
     GetIndexForModule (const Module *module) const;
 
     //------------------------------------------------------------------
@@ -181,7 +180,7 @@ public:
     /// @see ModuleList::GetSize()
     //------------------------------------------------------------------
     lldb::ModuleSP
-    GetModuleAtIndex (uint32_t idx) const;
+    GetModuleAtIndex (size_t idx) const;
 
     //------------------------------------------------------------------
     /// Get the module shared pointer for the module at index \a idx without
@@ -198,7 +197,7 @@ public:
     /// @see ModuleList::GetSize()
     //------------------------------------------------------------------
     lldb::ModuleSP
-    GetModuleAtIndexUnlocked (uint32_t idx) const;
+    GetModuleAtIndexUnlocked (size_t idx) const;
 
     //------------------------------------------------------------------
     /// Get the module pointer for the module at index \a idx.
@@ -213,7 +212,7 @@ public:
     /// @see ModuleList::GetSize()
     //------------------------------------------------------------------
     Module*
-    GetModulePointerAtIndex (uint32_t idx) const;
+    GetModulePointerAtIndex (size_t idx) const;
 
     //------------------------------------------------------------------
     /// Get the module pointer for the module at index \a idx without
@@ -230,7 +229,7 @@ public:
     /// @see ModuleList::GetSize()
     //------------------------------------------------------------------
     Module*
-    GetModulePointerAtIndexUnlocked (uint32_t idx) const;
+    GetModulePointerAtIndexUnlocked (size_t idx) const;
 
     //------------------------------------------------------------------
     /// Find compile units by partial or full path.
@@ -253,7 +252,7 @@ public:
     /// @return
     ///     The number of matches added to \a sc_list.
     //------------------------------------------------------------------
-    uint32_t
+    size_t
     FindCompileUnits (const FileSpec &path,
                       bool append,
                       SymbolContextList &sc_list) const;
@@ -261,7 +260,7 @@ public:
     //------------------------------------------------------------------
     /// @see Module::FindFunctions ()
     //------------------------------------------------------------------
-    uint32_t
+    size_t
     FindFunctions (const ConstString &name,
                    uint32_t name_type_mask,
                    bool include_symbols,
@@ -292,10 +291,10 @@ public:
     /// @return
     ///     The number of matches added to \a variable_list.
     //------------------------------------------------------------------
-    uint32_t
+    size_t
     FindGlobalVariables (const ConstString &name,
                          bool append,
-                         uint32_t max_matches,
+                         size_t max_matches,
                          VariableList& variable_list) const;
 
     //------------------------------------------------------------------
@@ -320,10 +319,10 @@ public:
     /// @return
     ///     The number of matches added to \a variable_list.
     //------------------------------------------------------------------
-    uint32_t
+    size_t
     FindGlobalVariables (const RegularExpression& regex,
                          bool append,
-                         uint32_t max_matches,
+                         size_t max_matches,
                          VariableList& variable_list) const;
 
     //------------------------------------------------------------------
@@ -422,11 +421,11 @@ public:
     /// @return
     ///     The number of matches added to \a type_list.
     //------------------------------------------------------------------
-    uint32_t
+    size_t
     FindTypes (const SymbolContext& sc,
                const ConstString &name,
                bool name_is_fully_qualified,
-               uint32_t max_matches,
+               size_t max_matches,
                TypeList& types) const;
     
     bool
@@ -503,7 +502,7 @@ public:
     FindSharedModules (const ModuleSpec &module_spec,
                        ModuleList &matching_module_list);
 
-    static uint32_t
+    static size_t
     RemoveOrphanSharedModules (bool mandatory);
     
     static bool

Modified: lldb/branches/windows/include/lldb/Core/PluginManager.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/PluginManager.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/PluginManager.h (original)
+++ lldb/branches/windows/include/lldb/Core/PluginManager.h Wed Apr 17 03:38:48 2013
@@ -199,7 +199,8 @@ public:
     static bool
     RegisterPlugin (const char *name,
                     const char *description,
-                    PlatformCreateInstance create_callback);
+                    PlatformCreateInstance create_callback,
+                    DebuggerInitializeCallback debugger_init_callback = NULL);
 
     static bool
     UnregisterPlugin (PlatformCreateInstance create_callback);
@@ -216,7 +217,7 @@ public:
     static const char *
     GetPlatformPluginDescriptionAtIndex (uint32_t idx);
 
-    static uint32_t
+    static size_t
     AutoCompletePlatformName (const char *partial_name, 
                               StringList &matches);
     //------------------------------------------------------------------
@@ -299,7 +300,7 @@ public:
     // callback when registering the plug-in. After a new Debugger
     // instance is created, this DebuggerInitialize function will get
     // called. This allows plug-ins to install Properties and do any
-    // other intialization that requires a debugger instance.
+    // other initialization that requires a debugger instance.
     //------------------------------------------------------------------
     static void
     DebuggerInitialize (Debugger &debugger);
@@ -313,6 +314,16 @@ public:
                                          const lldb::OptionValuePropertiesSP &properties_sp,
                                          const ConstString &description,
                                          bool is_global_property);
+    
+    static lldb::OptionValuePropertiesSP
+    GetSettingForPlatformPlugin (Debugger &debugger,
+                                       const ConstString &setting_name);
+    
+    static bool
+    CreateSettingForPlatformPlugin (Debugger &debugger,
+                                         const lldb::OptionValuePropertiesSP &properties_sp,
+                                         const ConstString &description,
+                                         bool is_global_property);
 };
 
 

Modified: lldb/branches/windows/include/lldb/Core/RangeMap.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/RangeMap.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/RangeMap.h (original)
+++ lldb/branches/windows/include/lldb/Core/RangeMap.h Wed Apr 17 03:38:48 2013
@@ -10,6 +10,8 @@
 #ifndef liblldb_RangeMap_h_
 #define liblldb_RangeMap_h_
 
+#include <vector>
+
 #include "lldb/lldb-private.h"
 #include "llvm/ADT/SmallVector.h"
 
@@ -171,7 +173,6 @@ namespace lldb_private {
         typedef B BaseType;
         typedef S SizeType;
         typedef Range<B,S> Entry;
-        //typedef std::vector<Entry> Collection;
         typedef llvm::SmallVector<Entry, N> Collection;
         
         RangeArray () :
@@ -445,90 +446,48 @@ namespace lldb_private {
         Collection m_entries;
     };
 
-    //----------------------------------------------------------------------
-    // A simple range  with data class where you get to define the type of
-    // the range base "B", the type used for the range byte size "S", and
-    // the type for the associated data "T".
-    //----------------------------------------------------------------------
-    template <typename B, typename S, typename T>
-    struct RangeData : public Range<B,S>
+    template <typename B, typename S>
+    class RangeVector
     {
-        typedef T DataType;
-        
-        DataType data;
-        
-        RangeData () :
-            Range<B,S> (),
-            data ()
-        {
-        }
+    public:
+        typedef B BaseType;
+        typedef S SizeType;
+        typedef Range<B,S> Entry;
+        typedef std::vector<Entry> Collection;
         
-        RangeData (B base, S size, DataType d) :
-            Range<B,S> (base, size),
-            data (d)
+        RangeVector () :
+            m_entries ()
         {
         }
         
-        bool
-        operator < (const RangeData &rhs) const
+        ~RangeVector()
         {
-            if (this->base == rhs.base)
-            {
-                if (this->size == rhs.size)
-                    return this->data < rhs.data;
-                else
-                    return this->size < rhs.size;
-            }
-            return this->base < rhs.base;
         }
         
-        bool
-        operator == (const RangeData &rhs) const
+        void
+        Append (const Entry &entry)
         {
-            return this->GetRangeBase() == rhs.GetRangeBase() &&
-                   this->GetByteSize() == rhs.GetByteSize() &&
-                   this->data      == rhs.data;
+            m_entries.push_back (entry);
         }
         
         bool
-        operator != (const RangeData &rhs) const
-        {
-            return this->GetRangeBase() != rhs.GetRangeBase() ||
-                   this->GetByteSize() != rhs.GetByteSize() ||
-                   this->data      != rhs.data;
-        }
-    };
-    
-    template <typename B, typename S, typename T, unsigned N>
-    class RangeDataArray
-    {
-    public:
-        typedef RangeData<B,S,T> Entry;
-        //typedef std::vector<Entry> Collection;
-        typedef llvm::SmallVector<Entry, N> Collection;
-
-
-        RangeDataArray ()
-        {
-        }
-        
-        ~RangeDataArray()
+        RemoveEntrtAtIndex (uint32_t idx)
         {
+            if (idx < m_entries.size())
+            {
+                m_entries.erase (m_entries.begin() + idx);
+                return true;
+            }
+            return false;
         }
         
         void
-        Append (const Entry &entry)
-        {
-            m_entries.push_back (entry);
-        }
-    
-        void
         Sort ()
         {
             if (m_entries.size() > 1)
                 std::stable_sort (m_entries.begin(), m_entries.end());
         }
-    
+        
 #ifdef ASSERT_RANGEMAP_ARE_SORTED
         bool
         IsSorted () const
@@ -544,53 +503,98 @@ namespace lldb_private {
             return true;
         }
 #endif
-
         void
-        CombineConsecutiveEntriesWithEqualData ()
+        CombineConsecutiveRanges ()
         {
 #ifdef ASSERT_RANGEMAP_ARE_SORTED
             assert (IsSorted());
 #endif
-            typename Collection::iterator pos;
-            typename Collection::iterator end;
-            typename Collection::iterator prev;
-            bool can_combine = false;
-            // First we determine if we can combine any of the Entry objects so we
-            // don't end up allocating and making a new collection for no reason
-            for (pos = m_entries.begin(), end = m_entries.end(), prev = end; pos != end; prev = pos++)
+            // Can't combine if ranges if we have zero or one range
+            if (m_entries.size() > 1)
             {
-                if (prev != end && prev->data == pos->data)
+                // The list should be sorted prior to calling this function
+                typename Collection::iterator pos;
+                typename Collection::iterator end;
+                typename Collection::iterator prev;
+                bool can_combine = false;
+                // First we determine if we can combine any of the Entry objects so we
+                // don't end up allocating and making a new collection for no reason
+                for (pos = m_entries.begin(), end = m_entries.end(), prev = end; pos != end; prev = pos++)
                 {
-                    can_combine = true;
-                    break;
+                    if (prev != end && prev->Overlap(*pos))
+                    {
+                        can_combine = true;
+                        break;
+                    }
                 }
-            }
-            
-            // We we can combine at least one entry, then we make a new collection
-            // and populate it accordingly, and then swap it into place. 
-            if (can_combine)
-            {
-                Collection minimal_ranges;
-                for (pos = m_entries.begin(), end = m_entries.end(), prev = end; pos != end; prev = pos++)
+                
+                // We we can combine at least one entry, then we make a new collection
+                // and populate it accordingly, and then swap it into place.
+                if (can_combine)
                 {
-                    if (prev != end && prev->data == pos->data)
-                        minimal_ranges.back().SetRangeEnd (pos->GetRangeEnd());
-                    else
-                        minimal_ranges.push_back (*pos);
+                    Collection minimal_ranges;
+                    for (pos = m_entries.begin(), end = m_entries.end(), prev = end; pos != end; prev = pos++)
+                    {
+                        if (prev != end && prev->Overlap(*pos))
+                            minimal_ranges.back().SetRangeEnd (std::max<BaseType>(prev->GetRangeEnd(), pos->GetRangeEnd()));
+                        else
+                            minimal_ranges.push_back (*pos);
+                    }
+                    // Use the swap technique in case our new vector is much smaller.
+                    // We must swap when using the STL because std::vector objects never
+                    // release or reduce the memory once it has been allocated/reserved.
+                    m_entries.swap (minimal_ranges);
                 }
-                // Use the swap technique in case our new vector is much smaller.
-                // We must swap when using the STL because std::vector objects never
-                // release or reduce the memory once it has been allocated/reserved.
-                m_entries.swap (minimal_ranges);
             }
         }
-    
+        
+        
+        BaseType
+        GetMinRangeBase (BaseType fail_value) const
+        {
+#ifdef ASSERT_RANGEMAP_ARE_SORTED
+            assert (IsSorted());
+#endif
+            if (m_entries.empty())
+                return fail_value;
+            // m_entries must be sorted, so if we aren't empty, we grab the
+            // first range's base
+            return m_entries.front().GetRangeBase();
+        }
+        
+        BaseType
+        GetMaxRangeEnd (BaseType fail_value) const
+        {
+#ifdef ASSERT_RANGEMAP_ARE_SORTED
+            assert (IsSorted());
+#endif
+            if (m_entries.empty())
+                return fail_value;
+            // m_entries must be sorted, so if we aren't empty, we grab the
+            // last range's end
+            return m_entries.back().GetRangeEnd();
+        }
+        
+        void
+        Slide (BaseType slide)
+        {
+            typename Collection::iterator pos, end;
+            for (pos = m_entries.begin(), end = m_entries.end(); pos != end; ++pos)
+                pos->Slide (slide);
+        }
+        
         void
         Clear ()
         {
             m_entries.clear();
         }
-        
+
+        void
+        Reserve (typename Collection::size_type size)
+        {
+            m_entries.resize (size);
+        }
+
         bool
         IsEmpty () const
         {
@@ -610,14 +614,30 @@ namespace lldb_private {
                 return &m_entries[i];
             return NULL;
         }
-
+        
         // Clients must ensure that "i" is a valid index prior to calling this function
         const Entry &
         GetEntryRef (size_t i) const
         {
             return m_entries[i];
         }
-
+        
+        Entry *
+        Back()
+        {
+            if (m_entries.empty())
+                return NULL;
+            return &m_entries.back();
+        }
+        
+        const Entry *
+        Back() const
+        {
+            if (m_entries.empty())
+                return NULL;
+            return &m_entries.back();
+        }
+        
         static bool
         BaseLessThan (const Entry& lhs, const Entry& rhs)
         {
@@ -630,7 +650,7 @@ namespace lldb_private {
 #ifdef ASSERT_RANGEMAP_ARE_SORTED
             assert (IsSorted());
 #endif
-            if ( !m_entries.empty() )
+            if (!m_entries.empty())
             {
                 Entry entry (addr, 1);
                 typename Collection::const_iterator begin = m_entries.begin();
@@ -650,62 +670,30 @@ namespace lldb_private {
             }
             return UINT32_MAX;
         }
-
-        Entry *
-        FindEntryThatContains (B addr)
-        {
-#ifdef ASSERT_RANGEMAP_ARE_SORTED
-            assert (IsSorted());
-#endif
-            if ( !m_entries.empty() )
-            {
-                Entry entry;
-                entry.SetRangeBase(addr);
-                entry.SetByteSize(1);
-                typename Collection::iterator begin = m_entries.begin();
-                typename Collection::iterator end = m_entries.end();
-                typename Collection::iterator pos = std::lower_bound (begin, end, entry, BaseLessThan);
-                
-                if (pos != end && pos->Contains(addr))
-                {
-                    return &(*pos); 
-                }
-                else if (pos != begin)
-                {
-                    --pos;
-                    if (pos->Contains(addr))
-                    {
-                        return &(*pos); 
-                    }
-                }
-            }
-            return NULL;
-        }
+        
         const Entry *
         FindEntryThatContains (B addr) const
         {
 #ifdef ASSERT_RANGEMAP_ARE_SORTED
             assert (IsSorted());
 #endif
-            if ( !m_entries.empty() )
+            if (!m_entries.empty())
             {
-                Entry entry;
-                entry.SetRangeBase(addr);
-                entry.SetByteSize(1);
+                Entry entry (addr, 1);
                 typename Collection::const_iterator begin = m_entries.begin();
                 typename Collection::const_iterator end = m_entries.end();
                 typename Collection::const_iterator pos = std::lower_bound (begin, end, entry, BaseLessThan);
                 
                 if (pos != end && pos->Contains(addr))
                 {
-                    return &(*pos); 
+                    return &(*pos);
                 }
                 else if (pos != begin)
                 {
                     --pos;
                     if (pos->Contains(addr))
                     {
-                        return &(*pos); 
+                        return &(*pos);
                     }
                 }
             }
@@ -718,7 +706,7 @@ namespace lldb_private {
 #ifdef ASSERT_RANGEMAP_ARE_SORTED
             assert (IsSorted());
 #endif
-            if ( !m_entries.empty() )
+            if (!m_entries.empty())
             {
                 typename Collection::const_iterator begin = m_entries.begin();
                 typename Collection::const_iterator end = m_entries.end();
@@ -726,28 +714,332 @@ namespace lldb_private {
                 
                 if (pos != end && pos->Contains(range))
                 {
-                    return &(*pos); 
+                    return &(*pos);
                 }
                 else if (pos != begin)
                 {
                     --pos;
                     if (pos->Contains(range))
                     {
-                        return &(*pos); 
+                        return &(*pos);
                     }
                 }
             }
             return NULL;
         }
         
-        Entry *
-        Back()
-        {
-            if (!m_entries.empty())
-                return &m_entries.back();
-            return NULL;
-        }
-
+    protected:
+        Collection m_entries;
+    };
+
+    //----------------------------------------------------------------------
+    // A simple range  with data class where you get to define the type of
+    // the range base "B", the type used for the range byte size "S", and
+    // the type for the associated data "T".
+    //----------------------------------------------------------------------
+    template <typename B, typename S, typename T>
+    struct RangeData : public Range<B,S>
+    {
+        typedef T DataType;
+        
+        DataType data;
+        
+        RangeData () :
+            Range<B,S> (),
+            data ()
+        {
+        }
+        
+        RangeData (B base, S size) :
+            Range<B,S> (base, size),
+            data ()
+        {
+        }
+        
+        RangeData (B base, S size, DataType d) :
+            Range<B,S> (base, size),
+            data (d)
+        {
+        }
+        
+        bool
+        operator < (const RangeData &rhs) const
+        {
+            if (this->base == rhs.base)
+            {
+                if (this->size == rhs.size)
+                    return this->data < rhs.data;
+                else
+                    return this->size < rhs.size;
+            }
+            return this->base < rhs.base;
+        }
+        
+        bool
+        operator == (const RangeData &rhs) const
+        {
+            return this->GetRangeBase() == rhs.GetRangeBase() &&
+                   this->GetByteSize() == rhs.GetByteSize() &&
+                   this->data      == rhs.data;
+        }
+        
+        bool
+        operator != (const RangeData &rhs) const
+        {
+            return this->GetRangeBase() != rhs.GetRangeBase() ||
+                   this->GetByteSize() != rhs.GetByteSize() ||
+                   this->data      != rhs.data;
+        }
+    };
+    
+    template <typename B, typename S, typename T, unsigned N>
+    class RangeDataArray
+    {
+    public:
+        typedef RangeData<B,S,T> Entry;
+        typedef llvm::SmallVector<Entry, N> Collection;
+
+
+        RangeDataArray ()
+        {
+        }
+        
+        ~RangeDataArray()
+        {
+        }
+        
+        void
+        Append (const Entry &entry)
+        {
+            m_entries.push_back (entry);
+        }
+    
+        void
+        Sort ()
+        {
+            if (m_entries.size() > 1)
+                std::stable_sort (m_entries.begin(), m_entries.end());
+        }
+    
+#ifdef ASSERT_RANGEMAP_ARE_SORTED
+        bool
+        IsSorted () const
+        {
+            typename Collection::const_iterator pos, end, prev;
+            // First we determine if we can combine any of the Entry objects so we
+            // don't end up allocating and making a new collection for no reason
+            for (pos = m_entries.begin(), end = m_entries.end(), prev = end; pos != end; prev = pos++)
+            {
+                if (prev != end && *pos < *prev)
+                    return false;
+            }
+            return true;
+        }
+#endif
+
+        void
+        CombineConsecutiveEntriesWithEqualData ()
+        {
+#ifdef ASSERT_RANGEMAP_ARE_SORTED
+            assert (IsSorted());
+#endif
+            typename Collection::iterator pos;
+            typename Collection::iterator end;
+            typename Collection::iterator prev;
+            bool can_combine = false;
+            // First we determine if we can combine any of the Entry objects so we
+            // don't end up allocating and making a new collection for no reason
+            for (pos = m_entries.begin(), end = m_entries.end(), prev = end; pos != end; prev = pos++)
+            {
+                if (prev != end && prev->data == pos->data)
+                {
+                    can_combine = true;
+                    break;
+                }
+            }
+            
+            // We we can combine at least one entry, then we make a new collection
+            // and populate it accordingly, and then swap it into place. 
+            if (can_combine)
+            {
+                Collection minimal_ranges;
+                for (pos = m_entries.begin(), end = m_entries.end(), prev = end; pos != end; prev = pos++)
+                {
+                    if (prev != end && prev->data == pos->data)
+                        minimal_ranges.back().SetRangeEnd (pos->GetRangeEnd());
+                    else
+                        minimal_ranges.push_back (*pos);
+                }
+                // Use the swap technique in case our new vector is much smaller.
+                // We must swap when using the STL because std::vector objects never
+                // release or reduce the memory once it has been allocated/reserved.
+                m_entries.swap (minimal_ranges);
+            }
+        }
+    
+        void
+        Clear ()
+        {
+            m_entries.clear();
+        }
+        
+        bool
+        IsEmpty () const
+        {
+            return m_entries.empty();
+        }
+        
+        size_t
+        GetSize () const
+        {
+            return m_entries.size();
+        }
+        
+        const Entry *
+        GetEntryAtIndex (size_t i) const
+        {
+            if (i<m_entries.size())
+                return &m_entries[i];
+            return NULL;
+        }
+
+        // Clients must ensure that "i" is a valid index prior to calling this function
+        const Entry &
+        GetEntryRef (size_t i) const
+        {
+            return m_entries[i];
+        }
+
+        static bool
+        BaseLessThan (const Entry& lhs, const Entry& rhs)
+        {
+            return lhs.GetRangeBase() < rhs.GetRangeBase();
+        }
+        
+        uint32_t
+        FindEntryIndexThatContains (B addr) const
+        {
+#ifdef ASSERT_RANGEMAP_ARE_SORTED
+            assert (IsSorted());
+#endif
+            if ( !m_entries.empty() )
+            {
+                Entry entry (addr, 1);
+                typename Collection::const_iterator begin = m_entries.begin();
+                typename Collection::const_iterator end = m_entries.end();
+                typename Collection::const_iterator pos = std::lower_bound (begin, end, entry, BaseLessThan);
+                
+                if (pos != end && pos->Contains(addr))
+                {
+                    return std::distance (begin, pos);
+                }
+                else if (pos != begin)
+                {
+                    --pos;
+                    if (pos->Contains(addr))
+                        return std::distance (begin, pos);
+                }
+            }
+            return UINT32_MAX;
+        }
+
+        Entry *
+        FindEntryThatContains (B addr)
+        {
+#ifdef ASSERT_RANGEMAP_ARE_SORTED
+            assert (IsSorted());
+#endif
+            if ( !m_entries.empty() )
+            {
+                Entry entry;
+                entry.SetRangeBase(addr);
+                entry.SetByteSize(1);
+                typename Collection::iterator begin = m_entries.begin();
+                typename Collection::iterator end = m_entries.end();
+                typename Collection::iterator pos = std::lower_bound (begin, end, entry, BaseLessThan);
+                
+                if (pos != end && pos->Contains(addr))
+                {
+                    return &(*pos); 
+                }
+                else if (pos != begin)
+                {
+                    --pos;
+                    if (pos->Contains(addr))
+                    {
+                        return &(*pos); 
+                    }
+                }
+            }
+            return NULL;
+        }
+        const Entry *
+        FindEntryThatContains (B addr) const
+        {
+#ifdef ASSERT_RANGEMAP_ARE_SORTED
+            assert (IsSorted());
+#endif
+            if ( !m_entries.empty() )
+            {
+                Entry entry;
+                entry.SetRangeBase(addr);
+                entry.SetByteSize(1);
+                typename Collection::const_iterator begin = m_entries.begin();
+                typename Collection::const_iterator end = m_entries.end();
+                typename Collection::const_iterator pos = std::lower_bound (begin, end, entry, BaseLessThan);
+                
+                if (pos != end && pos->Contains(addr))
+                {
+                    return &(*pos); 
+                }
+                else if (pos != begin)
+                {
+                    --pos;
+                    if (pos->Contains(addr))
+                    {
+                        return &(*pos); 
+                    }
+                }
+            }
+            return NULL;
+        }
+        
+        const Entry *
+        FindEntryThatContains (const Entry &range) const
+        {
+#ifdef ASSERT_RANGEMAP_ARE_SORTED
+            assert (IsSorted());
+#endif
+            if ( !m_entries.empty() )
+            {
+                typename Collection::const_iterator begin = m_entries.begin();
+                typename Collection::const_iterator end = m_entries.end();
+                typename Collection::const_iterator pos = std::lower_bound (begin, end, range, BaseLessThan);
+                
+                if (pos != end && pos->Contains(range))
+                {
+                    return &(*pos); 
+                }
+                else if (pos != begin)
+                {
+                    --pos;
+                    if (pos->Contains(range))
+                    {
+                        return &(*pos); 
+                    }
+                }
+            }
+            return NULL;
+        }
+        
+        Entry *
+        Back()
+        {
+            if (!m_entries.empty())
+                return &m_entries.back();
+            return NULL;
+        }
+
         const Entry *
         Back() const
         {
@@ -759,7 +1051,274 @@ namespace lldb_private {
     protected:
         Collection m_entries;
     };
+
+    // Same as RangeDataArray, but uses std::vector as to not
+    // require static storage of N items in the class itself
+    template <typename B, typename S, typename T>
+    class RangeDataVector
+    {
+    public:
+        typedef RangeData<B,S,T> Entry;
+        typedef std::vector<Entry> Collection;
+        
+        RangeDataVector ()
+        {
+        }
+        
+        ~RangeDataVector()
+        {
+        }
+        
+        void
+        Append (const Entry &entry)
+        {
+            m_entries.push_back (entry);
+        }
+        
+        void
+        Sort ()
+        {
+            if (m_entries.size() > 1)
+                std::stable_sort (m_entries.begin(), m_entries.end());
+        }
+        
+#ifdef ASSERT_RANGEMAP_ARE_SORTED
+        bool
+        IsSorted () const
+        {
+            typename Collection::const_iterator pos, end, prev;
+            // First we determine if we can combine any of the Entry objects so we
+            // don't end up allocating and making a new collection for no reason
+            for (pos = m_entries.begin(), end = m_entries.end(), prev = end; pos != end; prev = pos++)
+            {
+                if (prev != end && *pos < *prev)
+                    return false;
+            }
+            return true;
+        }
+#endif
+        
+        void
+        CombineConsecutiveEntriesWithEqualData ()
+        {
+#ifdef ASSERT_RANGEMAP_ARE_SORTED
+            assert (IsSorted());
+#endif
+            typename Collection::iterator pos;
+            typename Collection::iterator end;
+            typename Collection::iterator prev;
+            bool can_combine = false;
+            // First we determine if we can combine any of the Entry objects so we
+            // don't end up allocating and making a new collection for no reason
+            for (pos = m_entries.begin(), end = m_entries.end(), prev = end; pos != end; prev = pos++)
+            {
+                if (prev != end && prev->data == pos->data)
+                {
+                    can_combine = true;
+                    break;
+                }
+            }
+            
+            // We we can combine at least one entry, then we make a new collection
+            // and populate it accordingly, and then swap it into place.
+            if (can_combine)
+            {
+                Collection minimal_ranges;
+                for (pos = m_entries.begin(), end = m_entries.end(), prev = end; pos != end; prev = pos++)
+                {
+                    if (prev != end && prev->data == pos->data)
+                        minimal_ranges.back().SetRangeEnd (pos->GetRangeEnd());
+                    else
+                        minimal_ranges.push_back (*pos);
+                }
+                // Use the swap technique in case our new vector is much smaller.
+                // We must swap when using the STL because std::vector objects never
+                // release or reduce the memory once it has been allocated/reserved.
+                m_entries.swap (minimal_ranges);
+            }
+        }
+        
+        void
+        Clear ()
+        {
+            m_entries.clear();
+        }
+
+        void
+        Reserve (typename Collection::size_type size)
+        {
+            m_entries.resize (size);
+        }
+
+        bool
+        IsEmpty () const
+        {
+            return m_entries.empty();
+        }
+        
+        size_t
+        GetSize () const
+        {
+            return m_entries.size();
+        }
+        
+        const Entry *
+        GetEntryAtIndex (size_t i) const
+        {
+            if (i<m_entries.size())
+                return &m_entries[i];
+            return NULL;
+        }
+        
+        // Clients must ensure that "i" is a valid index prior to calling this function
+        const Entry &
+        GetEntryRef (size_t i) const
+        {
+            return m_entries[i];
+        }
+        
+        static bool
+        BaseLessThan (const Entry& lhs, const Entry& rhs)
+        {
+            return lhs.GetRangeBase() < rhs.GetRangeBase();
+        }
+        
+        uint32_t
+        FindEntryIndexThatContains (B addr) const
+        {
+#ifdef ASSERT_RANGEMAP_ARE_SORTED
+            assert (IsSorted());
+#endif
+            if ( !m_entries.empty() )
+            {
+                Entry entry (addr, 1);
+                typename Collection::const_iterator begin = m_entries.begin();
+                typename Collection::const_iterator end = m_entries.end();
+                typename Collection::const_iterator pos = std::lower_bound (begin, end, entry, BaseLessThan);
+                
+                if (pos != end && pos->Contains(addr))
+                {
+                    return std::distance (begin, pos);
+                }
+                else if (pos != begin)
+                {
+                    --pos;
+                    if (pos->Contains(addr))
+                        return std::distance (begin, pos);
+                }
+            }
+            return UINT32_MAX;
+        }
+        
+        Entry *
+        FindEntryThatContains (B addr)
+        {
+#ifdef ASSERT_RANGEMAP_ARE_SORTED
+            assert (IsSorted());
+#endif
+            if ( !m_entries.empty() )
+            {
+                Entry entry;
+                entry.SetRangeBase(addr);
+                entry.SetByteSize(1);
+                typename Collection::iterator begin = m_entries.begin();
+                typename Collection::iterator end = m_entries.end();
+                typename Collection::iterator pos = std::lower_bound (begin, end, entry, BaseLessThan);
+                
+                if (pos != end && pos->Contains(addr))
+                {
+                    return &(*pos);
+                }
+                else if (pos != begin)
+                {
+                    --pos;
+                    if (pos->Contains(addr))
+                    {
+                        return &(*pos);
+                    }
+                }
+            }
+            return NULL;
+        }
+        const Entry *
+        FindEntryThatContains (B addr) const
+        {
+#ifdef ASSERT_RANGEMAP_ARE_SORTED
+            assert (IsSorted());
+#endif
+            if ( !m_entries.empty() )
+            {
+                Entry entry;
+                entry.SetRangeBase(addr);
+                entry.SetByteSize(1);
+                typename Collection::const_iterator begin = m_entries.begin();
+                typename Collection::const_iterator end = m_entries.end();
+                typename Collection::const_iterator pos = std::lower_bound (begin, end, entry, BaseLessThan);
+                
+                if (pos != end && pos->Contains(addr))
+                {
+                    return &(*pos); 
+                }
+                else if (pos != begin)
+                {
+                    --pos;
+                    if (pos->Contains(addr))
+                    {
+                        return &(*pos); 
+                    }
+                }
+            }
+            return NULL;
+        }
+        
+        const Entry *
+        FindEntryThatContains (const Entry &range) const
+        {
+#ifdef ASSERT_RANGEMAP_ARE_SORTED
+            assert (IsSorted());
+#endif
+            if ( !m_entries.empty() )
+            {
+                typename Collection::const_iterator begin = m_entries.begin();
+                typename Collection::const_iterator end = m_entries.end();
+                typename Collection::const_iterator pos = std::lower_bound (begin, end, range, BaseLessThan);
                 
+                if (pos != end && pos->Contains(range))
+                {
+                    return &(*pos); 
+                }
+                else if (pos != begin)
+                {
+                    --pos;
+                    if (pos->Contains(range))
+                    {
+                        return &(*pos); 
+                    }
+                }
+            }
+            return NULL;
+        }
+        
+        Entry *
+        Back()
+        {
+            if (!m_entries.empty())
+                return &m_entries.back();
+            return NULL;
+        }
+        
+        const Entry *
+        Back() const
+        {
+            if (!m_entries.empty())
+                return &m_entries.back();
+            return NULL;
+        }
+        
+    protected:
+        Collection m_entries;
+    };
+                    
                 
     //----------------------------------------------------------------------
     // A simple range  with data class where you get to define the type of
@@ -816,7 +1375,6 @@ namespace lldb_private {
     {
     public:
         typedef AddressData<B,T> Entry;
-        //typedef std::vector<Entry> Collection;
         typedef llvm::SmallVector<Entry, N> Collection;
 
 

Modified: lldb/branches/windows/include/lldb/Core/RegisterValue.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/RegisterValue.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/RegisterValue.h (original)
+++ lldb/branches/windows/include/lldb/Core/RegisterValue.h Wed Apr 17 03:38:48 2013
@@ -345,7 +345,7 @@ namespace lldb_private {
         Error
         SetValueFromData (const RegisterInfo *reg_info, 
                           DataExtractor &data, 
-                          uint32_t offset,
+                          lldb::offset_t offset,
                           bool partial_data_ok);
 
         // The default value of 0 for reg_name_right_align_at means no alignment at all.

Modified: lldb/branches/windows/include/lldb/Core/RegularExpression.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/RegularExpression.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/RegularExpression.h (original)
+++ lldb/branches/windows/include/lldb/Core/RegularExpression.h Wed Apr 17 03:38:48 2013
@@ -11,14 +11,38 @@
 #define liblldb_DBRegex_h_
 #if defined(__cplusplus)
 
-#include "llvm/ADT/SmallVector.h"
-#include "llvm/ADT/StringRef.h"
-#include "llvm/Support/Regex.h"
+#ifdef _POSIX_SOURCE
+#include <regex.h>
+#else
+#include "../lib/Support/regex_impl.h"
+typedef llvm_regmatch_t regmatch_t;
+typedef llvm_regex_t regex_t;
+inline int	regcomp(llvm_regex_t * a, const char *b, int c) { 
+    return llvm_regcomp(a, b, c); 
+}
+inline size_t	regerror(int a, const llvm_regex_t *b, char *c, size_t d) {
+    return llvm_regerror(a, b, c, d);
+}
+inline int	regexec(const llvm_regex_t * a, const char * b, size_t c, 
+                     llvm_regmatch_t d[], int e) {
+    return llvm_regexec(a,b,c,d,e);
+}
+inline void	regfree(llvm_regex_t * a) {
+    llvm_regfree(a);
+}
+
+
+#endif
 #include <stdint.h>
 
 #include <string>
 #include <vector>
 
+namespace llvm
+{
+    class StringRef;
+}
+
 namespace lldb_private {
 
 //----------------------------------------------------------------------
@@ -32,6 +56,52 @@ namespace lldb_private {
 class RegularExpression
 {
 public:
+    class Match
+    {
+    public:
+        Match (uint32_t max_matches) :
+            m_matches ()
+        {
+            if (max_matches > 0)
+                m_matches.resize(max_matches + 1);
+        }
+
+        void
+        Clear()
+        {
+            const size_t num_matches = m_matches.size();
+            regmatch_t invalid_match = { -1, -1 };
+            for (size_t i=0; i<num_matches; ++i)
+                m_matches[i] = invalid_match;
+        }
+
+        size_t
+        GetSize () const
+        {
+            return m_matches.size();
+        }
+        
+        regmatch_t *
+        GetData ()
+        {
+            if (m_matches.empty())
+                return NULL;
+            return m_matches.data();
+        }
+        
+        bool
+        GetMatchAtIndex (const char* s, uint32_t idx, std::string& match_str) const;
+        
+        bool
+        GetMatchAtIndex (const char* s, uint32_t idx, llvm::StringRef& match_str) const;
+        
+        bool
+        GetMatchSpanningIndices (const char* s, uint32_t idx1, uint32_t idx2, llvm::StringRef& match_str) const;
+
+    protected:
+        
+        std::vector<regmatch_t> m_matches; ///< Where parenthesized subexpressions results are stored
+    };
     //------------------------------------------------------------------
     /// Default constructor.
     ///
@@ -112,8 +182,10 @@ public:
     /// @param[in] string
     ///     The string to match against the compile regular expression.
     ///
-    /// @param[in] match_count
-    ///     The number of regmatch_t objects in \a match_ptr
+    /// @param[in] match
+    ///     A pointer to a RegularExpression::Match structure that was
+    ///     properly initialized with the desired number of maximum
+    ///     matches, or NULL if no parenthesized matching is needed.
     ///
     /// @param[in] execute_flags
     ///     Flags to pass to the \c regexec() function.
@@ -123,13 +195,13 @@ public:
     ///     expression, \b false otherwise.
     //------------------------------------------------------------------
     bool
-    Execute (const char* string, size_t match_count = 0, int execute_flags = 0) const;
+    Execute (const char* string, Match *match = NULL, int execute_flags = 0) const;
 
-    std::string
-    GetErrorAsCString () const;
+    size_t
+    GetErrorAsCString (char *err_str, size_t err_str_max_len) const;
+
+	std::string GetErrorAsCString () const;
 
-    bool
-    GetMatchAtIndex (const char* s, uint32_t idx, std::string& match_str) const;
     //------------------------------------------------------------------
     /// Free the compiled regular expression.
     ///
@@ -170,6 +242,21 @@ public:
     bool
     IsValid () const;
     
+    void
+    Clear ()
+    {
+        Free();
+        m_re.clear();
+        m_compile_flags = 0;
+        m_comp_err = 1;
+    }
+    
+    int
+    GetErrorCode() const
+    {
+        return m_comp_err;
+    }
+
     bool
     operator < (const RegularExpression& rhs) const;
 
@@ -177,14 +264,10 @@ private:
     //------------------------------------------------------------------
     // Member variables
     //------------------------------------------------------------------
-    mutable std::string m_re;   ///< A copy of the original regular expression text
-    mutable llvm::Regex* m_regex;     ///< The compiled regular expression
+    std::string m_re;   ///< A copy of the original regular expression text
+    int m_comp_err;     ///< Error code for the regular expression compilation
+    regex_t m_preg;     ///< The compiled regular expression
     int     m_compile_flags; ///< Stores the flags from the last compile.
-
-    typedef llvm::SmallVectorImpl<llvm::StringRef> MatchVectorImpl;
-    typedef llvm::SmallVector<llvm::StringRef, 1>  MatchVector;
-    mutable MatchVector m_matches;
-
 };
 
 } // namespace lldb_private

Modified: lldb/branches/windows/include/lldb/Core/Scalar.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/Scalar.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/Scalar.h (original)
+++ lldb/branches/windows/include/lldb/Core/Scalar.h Wed Apr 17 03:38:48 2013
@@ -73,9 +73,9 @@ public:
     bool
     GetData (DataExtractor &data, size_t limit_byte_size = UINT32_MAX) const;
 
-    uint32_t 
+    size_t
     GetAsMemoryData (void *dst,
-                     uint32_t dst_len, 
+                     size_t dst_len, 
                      lldb::ByteOrder dst_byte_order,
                      Error &error) const;
 
@@ -219,7 +219,10 @@ public:
     GetRawBits64 (uint64_t fail_value) const;
 
     Error
-    SetValueFromCString (const char *s, lldb::Encoding encoding, uint32_t byte_size);
+    SetValueFromCString (const char *s, lldb::Encoding encoding, size_t byte_size);
+    
+    Error
+    SetValueFromData (DataExtractor &data, lldb::Encoding encoding, size_t byte_size);
 
     static bool
     UIntValueIsValidForSize (uint64_t uval64, size_t total_byte_size)
@@ -249,6 +252,16 @@ public:
     }
 
 protected:
+    typedef int                 sint_t;
+    typedef unsigned int        uint_t;
+    typedef long                slong_t;
+    typedef unsigned long       ulong_t;
+    typedef long long           slonglong_t;
+    typedef unsigned long long  ulonglong_t;
+    typedef float               float_t;
+    typedef double              double_t;
+    typedef long double         long_double_t;
+    
     union ValueData
     {
         int                 sint;
@@ -277,6 +290,8 @@ private:
     friend const Scalar operator|   (const Scalar& lhs, const Scalar& rhs);
     friend const Scalar operator%   (const Scalar& lhs, const Scalar& rhs);
     friend const Scalar operator^   (const Scalar& lhs, const Scalar& rhs);
+    friend const Scalar operator<<  (const Scalar& lhs, const Scalar& rhs);
+    friend const Scalar operator>>  (const Scalar& lhs, const Scalar& rhs);
     friend          bool operator== (const Scalar& lhs, const Scalar& rhs);
     friend          bool operator!= (const Scalar& lhs, const Scalar& rhs);
     friend          bool operator<  (const Scalar& lhs, const Scalar& rhs);
@@ -309,6 +324,8 @@ const Scalar operator& (const Scalar& lh
 const Scalar operator| (const Scalar& lhs, const Scalar& rhs);
 const Scalar operator% (const Scalar& lhs, const Scalar& rhs);
 const Scalar operator^ (const Scalar& lhs, const Scalar& rhs);
+const Scalar operator<< (const Scalar& lhs, const Scalar& rhs);
+const Scalar operator>> (const Scalar& lhs, const Scalar& rhs);
 bool operator== (const Scalar& lhs, const Scalar& rhs);
 bool operator!= (const Scalar& lhs, const Scalar& rhs);
 bool operator<  (const Scalar& lhs, const Scalar& rhs);

Modified: lldb/branches/windows/include/lldb/Core/SearchFilter.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/SearchFilter.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/SearchFilter.h (original)
+++ lldb/branches/windows/include/lldb/Core/SearchFilter.h Wed Apr 17 03:38:48 2013
@@ -135,23 +135,6 @@ public:
     ModulePasses (const lldb::ModuleSP &module_sp);
 
     //------------------------------------------------------------------
-    /// Call this method with a SymbolContext and a SymbolContextScope to see if
-    /// that SymbolContext passes the filter up to the level in \a scope.
-    ///
-    /// @param[in] context
-    ///    The SymbolContext to check against the filter.
-    ///
-    /// @param[in] scope
-    ///    The SymbolContextItem indicating what bits of the SymbolContextScope
-    ///    to check against the filter.
-    ///
-    ///  @return
-    ///    \b true if \a SymbolContext passes, and \b false otherwise.
-    //------------------------------------------------------------------
-    virtual bool
-    SymbolContextPasses (const SymbolContext &context,
-                         lldb::SymbolContextItem scope);
-    //------------------------------------------------------------------
     /// Call this method with a Address to see if \a address passes the filter.
     ///
     /// @param[in] addr
@@ -325,10 +308,6 @@ public:
     ModulePasses (const FileSpec &spec);
 
     virtual bool
-    SymbolContextPasses (const SymbolContext &context,
-                         lldb::SymbolContextItem scope);
-
-    virtual bool
     AddressPasses (Address &address);
 
     virtual bool
@@ -386,10 +365,6 @@ public:
     ModulePasses (const FileSpec &spec);
 
     virtual bool
-    SymbolContextPasses (const SymbolContext &context,
-                         lldb::SymbolContextItem scope);
-
-    virtual bool
     AddressPasses (Address &address);
 
     virtual bool
@@ -442,10 +417,6 @@ public:
     operator=(const SearchFilterByModuleListAndCU& rhs);
 
     virtual bool
-    SymbolContextPasses (const SymbolContext &context,
-                         lldb::SymbolContextItem scope);
-
-    virtual bool
     AddressPasses (Address &address);
 
     virtual bool

Modified: lldb/branches/windows/include/lldb/Core/Section.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/Section.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/Section.h (original)
+++ lldb/branches/windows/include/lldb/Core/Section.h Wed Apr 17 03:38:48 2013
@@ -34,13 +34,13 @@ public:
     virtual
     ~SectionList();
 
-    uint32_t
+    size_t
     AddSection (const lldb::SectionSP& section_sp);
 
-    uint32_t
+    size_t
     AddUniqueSection (const lldb::SectionSP& section_sp);
 
-    uint32_t
+    size_t
     FindSectionIndex (const Section* sect);
 
     bool
@@ -56,14 +56,11 @@ public:
     FindSectionByID (lldb::user_id_t sect_id) const;
 
     lldb::SectionSP
-    FindSectionByType (lldb::SectionType sect_type, bool check_children, uint32_t start_idx = 0) const;
+    FindSectionByType (lldb::SectionType sect_type, bool check_children, size_t start_idx = 0) const;
 
     lldb::SectionSP
     FindSectionContainingFileAddress (lldb::addr_t addr, uint32_t depth = UINT32_MAX) const;
 
-    lldb::SectionSP
-    FindSectionContainingLinkedFileAddress (lldb::addr_t vm_addr, uint32_t depth) const;
-
     bool
     GetSectionData (const DataExtractor& module_data, DataExtractor& section_data) const;
 
@@ -82,7 +79,7 @@ public:
     ReplaceSection (lldb::user_id_t sect_id, const lldb::SectionSP& section_sp, uint32_t depth = UINT32_MAX);
 
     lldb::SectionSP
-    GetSectionAtIndex (uint32_t idx) const;
+    GetSectionAtIndex (size_t idx) const;
 
     size_t
     Slide (lldb::addr_t slide_amount, bool slide_children);
@@ -91,18 +88,14 @@ public:
     void
     Finalize ();
 
+    void
+    Clear ()
+    {
+        m_sections.clear();
+    }
+
 protected:
     collection  m_sections;
-
-    typedef RangeDataArray<uint64_t, uint64_t, collection::size_type, 1> SectionRangeCache;
-    mutable SectionRangeCache   m_range_cache;
-#ifdef LLDB_CONFIGURATION_DEBUG
-    mutable bool                m_finalized;
-#endif
-    
-    void BuildRangeCache() const;
-    
-    void InvalidateRangeCache() const;
 };
 
 
@@ -120,8 +113,8 @@ public:
              lldb::SectionType sect_type,
              lldb::addr_t file_vm_addr,
              lldb::addr_t vm_size,
-             uint64_t file_offset,
-             uint64_t file_size,
+             lldb::offset_t file_offset,
+             lldb::offset_t file_size,
              uint32_t flags);
 
     // Create a section that is a child of parent_section_sp
@@ -132,8 +125,8 @@ public:
              lldb::SectionType sect_type,
              lldb::addr_t file_vm_addr,
              lldb::addr_t vm_size,
-             uint64_t file_offset,
-             uint64_t file_size,
+             lldb::offset_t file_offset,
+             lldb::offset_t file_size,
              uint32_t flags);
 
     ~Section ();
@@ -168,26 +161,26 @@ public:
     bool
     ResolveContainedAddress (lldb::addr_t offset, Address &so_addr) const;
 
-    uint64_t
+    lldb::offset_t
     GetFileOffset () const
     {
         return m_file_offset;
     }
 
     void
-    SetFileOffset (uint64_t file_offset) 
+    SetFileOffset (lldb::offset_t file_offset) 
     {
         m_file_offset = file_offset;
     }
 
-    uint64_t
+    lldb::offset_t
     GetFileSize () const
     {
         return m_file_size;
     }
 
     void
-    SetFileSize (uint64_t file_size)
+    SetFileSize (lldb::offset_t file_size)
     {
         m_file_size = file_size;
     }
@@ -239,31 +232,14 @@ public:
     IsDescendant (const Section *section);
 
     const ConstString&
-    GetName () const;
-
-    bool
-    Slide (lldb::addr_t slide_amount, bool slide_children);
-
-    void
-    SetLinkedLocation (const lldb::SectionSP &linked_section_sp, uint64_t linked_offset);
-
-    bool
-    ContainsLinkedFileAddress (lldb::addr_t vm_addr) const;
-
-    lldb::SectionSP
-    GetLinkedSection () const
+    GetName () const
     {
-        return m_linked_section_wp.lock();
+        return m_name;
     }
 
-    uint64_t
-    GetLinkedOffset () const
-    {
-        return m_linked_offset;
-    }
+    bool
+    Slide (lldb::addr_t slide_amount, bool slide_children);
 
-    lldb::addr_t
-    GetLinkedFileAddress () const;
 
     lldb::SectionType
     GetType () const
@@ -304,8 +280,8 @@ protected:
     lldb::addr_t    m_file_addr;        // The absolute file virtual address range of this section if m_parent == NULL,
                                         // offset from parent file virtual address if m_parent != NULL
     lldb::addr_t    m_byte_size;        // Size in bytes that this section will occupy in memory at runtime
-    uint64_t        m_file_offset;      // Object file offset (if any)
-    uint64_t        m_file_size;        // Object file size (can be smaller than m_byte_size for zero filled sections...)
+    lldb::offset_t  m_file_offset;      // Object file offset (if any)
+    lldb::offset_t  m_file_size;        // Object file size (can be smaller than m_byte_size for zero filled sections...)
     SectionList     m_children;         // Child sections
     bool            m_fake:1,           // If true, then this section only can contain the address if one of its
                                         // children contains an address. This allows for gaps between the children
@@ -313,8 +289,6 @@ protected:
                                         // hits unless the children contain the address.
                     m_encrypted:1,      // Set to true if the contents are encrypted
                     m_thread_specific:1;// This section is thread specific
-    lldb::SectionWP m_linked_section_wp;
-    uint64_t        m_linked_offset;
 private:
     DISALLOW_COPY_AND_ASSIGN (Section);
 };

Modified: lldb/branches/windows/include/lldb/Core/SourceManager.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/SourceManager.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/SourceManager.h (original)
+++ lldb/branches/windows/include/lldb/Core/SourceManager.h Wed Apr 17 03:38:48 2013
@@ -64,6 +64,12 @@ public:
             return m_file_spec;
         }
         
+        uint32_t
+        GetSourceMapModificationID() const
+        {
+            return m_source_map_mod_id;
+        }
+        
     protected:
 
         bool
@@ -72,6 +78,7 @@ public:
         FileSpec m_file_spec_orig;  // The original file spec that was used (can be different from m_file_spec)
         FileSpec m_file_spec;       // The actualy file spec being used (if the target has source mappings, this might be different from m_file_spec_orig)
         TimeValue m_mod_time;       // Keep the modification time that this file data is valid for
+        uint32_t m_source_map_mod_id; // If the target uses path remappings, be sure to clear our notion of a source file if the path modification ID changes
         lldb::DataBufferSP m_data_sp;
         typedef std::vector<uint32_t> LineOffsets;
         LineOffsets m_offsets;
@@ -106,8 +113,8 @@ public:
     //------------------------------------------------------------------
     // A source manager can be made with a non-null target, in which case it can use the path remappings to find 
     // source files that are not in their build locations.  With no target it won't be able to do this.
-    SourceManager (Debugger &debugger);
-    SourceManager (Target &target);
+    SourceManager (const lldb::DebuggerSP &debugger_sp);
+    SourceManager (const lldb::TargetSP &target_sp);
 
     ~SourceManager();
 
@@ -119,13 +126,6 @@ public:
     }
 
     size_t
-    DisplaySourceLines (const FileSpec &file,
-                        uint32_t line,
-                        uint32_t context_before,
-                        uint32_t context_after,
-                        Stream *s);
-
-    size_t
     DisplaySourceLinesWithLineNumbers (const FileSpec &file,
                                        uint32_t line,
                                        uint32_t context_before,
@@ -136,15 +136,17 @@ public:
 
     // This variant uses the last file we visited.
     size_t
-    DisplaySourceLinesWithLineNumbersUsingLastFile (uint32_t line,
-                                                    uint32_t context_before,
-                                                    uint32_t context_after,
+    DisplaySourceLinesWithLineNumbersUsingLastFile (uint32_t start_line,
+                                                    uint32_t count,
+                                                    uint32_t curr_line,
                                                     const char* current_line_cstr,
                                                     Stream *s,
                                                     const SymbolContextList *bp_locs = NULL);
 
     size_t
     DisplayMoreWithLineNumbers (Stream *s,
+                                uint32_t count,
+                                bool reverse,
                                 const SymbolContextList *bp_locs = NULL);
 
     bool
@@ -175,12 +177,11 @@ protected:
     // Classes that inherit from SourceManager can see and modify these
     //------------------------------------------------------------------
     FileSP m_last_file_sp;
-    uint32_t m_last_file_line;
-    uint32_t m_last_file_context_before;
-    uint32_t m_last_file_context_after;
+    uint32_t m_last_line;
+    uint32_t m_last_count;
     bool     m_default_set;
-    Target *m_target;
-    Debugger *m_debugger;
+    lldb::TargetWP m_target_wp;
+    lldb::DebuggerWP m_debugger_wp;
     
 private:
     //------------------------------------------------------------------

Modified: lldb/branches/windows/include/lldb/Core/Stream.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/Stream.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/Stream.h (original)
+++ lldb/branches/windows/include/lldb/Core/Stream.h Wed Apr 17 03:38:48 2013
@@ -87,13 +87,13 @@ public:
     /// @return
     ///     The number of bytes that were appended to the stream.
     //------------------------------------------------------------------
-    virtual int
+    virtual size_t
     Write (const void *src, size_t src_len) = 0;
 
     //------------------------------------------------------------------
     // Member functions
     //------------------------------------------------------------------
-    int
+    size_t
     PutChar (char ch);
 
     //------------------------------------------------------------------
@@ -125,7 +125,7 @@ public:
     /// @return
     ///     The number of bytes that were appended to the stream.
     //------------------------------------------------------------------
-    int
+    size_t
     PrintfAsRawHex8 (const char *format, ...)  LLDB_ATTR(__attribute__ ((format (printf, 2, 3))));
 
     //------------------------------------------------------------------
@@ -142,59 +142,59 @@ public:
     /// @return
     ///     The number of bytes that were appended to the stream.
     //------------------------------------------------------------------
-    int
+    size_t
     PutHex8 (uint8_t uvalue);
 
-    int
+    size_t
     PutNHex8 (size_t n, uint8_t uvalue);
 
-    int
+    size_t
     PutHex16 (uint16_t uvalue,
               lldb::ByteOrder byte_order = lldb::eByteOrderInvalid);
 
-    int
+    size_t
     PutHex32 (uint32_t uvalue,
               lldb::ByteOrder byte_order = lldb::eByteOrderInvalid);
 
-    int
+    size_t
     PutHex64 (uint64_t uvalue,
               lldb::ByteOrder byte_order = lldb::eByteOrderInvalid);
 
-    int
+    size_t
     PutMaxHex64 (uint64_t uvalue,
                  size_t byte_size,
                  lldb::ByteOrder byte_order = lldb::eByteOrderInvalid);
-    int
+    size_t
     PutFloat (float f,
               lldb::ByteOrder byte_order = lldb::eByteOrderInvalid);
 
-    int
+    size_t
     PutDouble (double d,
                lldb::ByteOrder byte_order = lldb::eByteOrderInvalid);
 
-    int
+    size_t
     PutLongDouble (long double ld,
                    lldb::ByteOrder byte_order = lldb::eByteOrderInvalid);
 
-    int
+    size_t
     PutPointer (void *ptr);
 
     // Append \a src_len bytes from \a src to the stream as hex characters
     // (two ascii characters per byte of input data)
-    int
+    size_t
     PutBytesAsRawHex8 (const void *src,
                        size_t src_len,
                        lldb::ByteOrder src_byte_order = lldb::eByteOrderInvalid,
                        lldb::ByteOrder dst_byte_order = lldb::eByteOrderInvalid);
 
     // Append \a src_len bytes from \a s to the stream as binary data.
-    int
+    size_t
     PutRawBytes (const void *s, 
                  size_t src_len,
                  lldb::ByteOrder src_byte_order = lldb::eByteOrderInvalid,
                  lldb::ByteOrder dst_byte_order = lldb::eByteOrderInvalid);
 
-    int
+    size_t
     PutCStringAsRawHex8 (const char *s);
 
     //------------------------------------------------------------------
@@ -359,7 +359,7 @@ public:
     ///     A suffix C string. If NULL, no suffix will be output.
     //------------------------------------------------------------------
     void
-    Address (uint64_t addr, int addr_size, const char *prefix = NULL, const char *suffix = NULL);
+    Address (uint64_t addr, uint32_t addr_size, const char *prefix = NULL, const char *suffix = NULL);
 
     //------------------------------------------------------------------
     /// Output an address range to this stream.
@@ -383,7 +383,7 @@ public:
     ///     A suffix C string. If NULL, no suffix will be output.
     //------------------------------------------------------------------
     void
-    AddressRange(uint64_t lo_addr, uint64_t hi_addr, int addr_size, const char *prefix = NULL, const char *suffix = NULL);
+    AddressRange(uint64_t lo_addr, uint64_t hi_addr, uint32_t addr_size, const char *prefix = NULL, const char *suffix = NULL);
 
     //------------------------------------------------------------------
     /// Output a C string to the stream.
@@ -393,13 +393,13 @@ public:
     /// @param[in] cstr
     ///     The string to be output to the stream.
     //------------------------------------------------------------------
-    int
+    size_t
     PutCString (const char *cstr);
 
     //------------------------------------------------------------------
     /// Output and End of Line character to the stream.
     //------------------------------------------------------------------
-    int
+    size_t
     EOL();
 
     //------------------------------------------------------------------
@@ -409,7 +409,7 @@ public:
     ///     The size of an address in bytes that is used when outputting
     ///     address and pointer values to the stream.
     //------------------------------------------------------------------
-    uint8_t
+    uint32_t
     GetAddressByteSize () const;
 
     //------------------------------------------------------------------
@@ -478,7 +478,7 @@ public:
     ///     A C string to print following the indentation. If NULL, just
     ///     output the indentation characters.
     //------------------------------------------------------------------
-    int
+    size_t
     Indent(const char *s = NULL);
 
     //------------------------------------------------------------------
@@ -520,10 +520,10 @@ public:
     ///     Variable arguments that are needed for the printf style
     ///     format string \a format.
     //------------------------------------------------------------------
-    int
+    size_t
     Printf (const char *format, ...)  LLDB_ATTR(__attribute__ ((format (printf, 2, 3))));
 
-    int
+    size_t
     PrintfVarArg(const char *format, va_list args);
 
     //------------------------------------------------------------------
@@ -549,7 +549,7 @@ public:
     ///     address and pointer values.
     //------------------------------------------------------------------
     void
-    SetAddressByteSize (uint8_t addr_size);
+    SetAddressByteSize (uint32_t addr_size);
 
     //------------------------------------------------------------------
     /// Set the current indentation level.
@@ -572,7 +572,7 @@ public:
     /// @param[in] format
     ///     The optional printf format that can be overridden.
     //------------------------------------------------------------------
-    int
+    size_t
     PutSLEB128 (int64_t uval);
 
     //------------------------------------------------------------------
@@ -587,7 +587,7 @@ public:
     /// @param[in] format
     ///     The optional printf format that can be overridden.
     //------------------------------------------------------------------
-    int
+    size_t
     PutULEB128 (uint64_t uval);
 
     static void
@@ -598,11 +598,11 @@ protected:
     // Member variables
     //------------------------------------------------------------------
     Flags m_flags;      ///< Dump flags.
-    uint8_t m_addr_size;    ///< Size of an address in bytes.
-    lldb::ByteOrder m_byte_order;///< Byte order to use when encoding scalar types.
+    uint32_t m_addr_size;           ///< Size of an address in bytes.
+    lldb::ByteOrder m_byte_order;   ///< Byte order to use when encoding scalar types.
     int m_indent_level;     ///< Indention level.
 
-    int _PutHex8 (uint8_t uvalue, bool add_prefix);
+    size_t _PutHex8 (uint8_t uvalue, bool add_prefix);
 };
 
 } // namespace lldb_private

Modified: lldb/branches/windows/include/lldb/Core/StreamAsynchronousIO.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/StreamAsynchronousIO.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/StreamAsynchronousIO.h (original)
+++ lldb/branches/windows/include/lldb/Core/StreamAsynchronousIO.h Wed Apr 17 03:38:48 2013
@@ -28,7 +28,7 @@ public:
     virtual void
     Flush ();
     
-    virtual int
+    virtual size_t
     Write (const void *src, size_t src_len);
     
     

Modified: lldb/branches/windows/include/lldb/Core/StreamBuffer.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/StreamBuffer.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/StreamBuffer.h (original)
+++ lldb/branches/windows/include/lldb/Core/StreamBuffer.h Wed Apr 17 03:38:48 2013
@@ -47,7 +47,7 @@ public:
         // Nothing to do when flushing a buffer based stream...
     }
 
-    virtual int
+    virtual size_t
     Write (const void *s, size_t length)
     {
         if (s && length)

Modified: lldb/branches/windows/include/lldb/Core/StreamCallback.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/StreamCallback.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/StreamCallback.h (original)
+++ lldb/branches/windows/include/lldb/Core/StreamCallback.h Wed Apr 17 03:38:48 2013
@@ -30,7 +30,7 @@ public:
     virtual void
     Flush ();
     
-    virtual int
+    virtual size_t
     Write (const void *src, size_t src_len);
     
     

Modified: lldb/branches/windows/include/lldb/Core/StreamFile.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/StreamFile.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/StreamFile.h (original)
+++ lldb/branches/windows/include/lldb/Core/StreamFile.h Wed Apr 17 03:38:48 2013
@@ -57,7 +57,7 @@ public:
     virtual void
     Flush ();
 
-    virtual int
+    virtual size_t
     Write (const void *s, size_t length);
 
 protected:

Modified: lldb/branches/windows/include/lldb/Core/StreamString.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/StreamString.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/StreamString.h (original)
+++ lldb/branches/windows/include/lldb/Core/StreamString.h Wed Apr 17 03:38:48 2013
@@ -31,7 +31,7 @@ public:
     virtual void
     Flush ();
 
-    virtual int
+    virtual size_t
     Write (const void *s, size_t length);
 
     void

Modified: lldb/branches/windows/include/lldb/Core/StreamTee.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/StreamTee.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/StreamTee.h (original)
+++ lldb/branches/windows/include/lldb/Core/StreamTee.h Wed Apr 17 03:38:48 2013
@@ -93,14 +93,14 @@ public:
         }
     }
 
-    virtual int
+    virtual size_t
     Write (const void *s, size_t length)
     {
         Mutex::Locker locker (m_streams_mutex);
         if (m_streams.empty())
             return 0;
     
-        int min_bytes_written = INT_MAX;
+        size_t min_bytes_written = SIZE_MAX;
         collection::iterator pos, end;
         for (pos = m_streams.begin(), end = m_streams.end(); pos != end; ++pos)
         {
@@ -111,11 +111,13 @@ public:
             Stream *strm = pos->get();
             if (strm)
             {
-                int bytes_written = strm->Write (s, length);
+                const size_t bytes_written = strm->Write (s, length);
                 if (min_bytes_written > bytes_written)
                     min_bytes_written = bytes_written;
             }
         }
+        if (min_bytes_written == SIZE_MAX)
+            return 0;
         return min_bytes_written;
     }
 

Modified: lldb/branches/windows/include/lldb/Core/StringList.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/StringList.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/StringList.h (original)
+++ lldb/branches/windows/include/lldb/Core/StringList.h Wed Apr 17 03:38:48 2013
@@ -48,7 +48,7 @@ public:
     bool
     ReadFileLines (FileSpec &input_file);
     
-    uint32_t
+    size_t
     GetSize () const;
 
     const char *

Modified: lldb/branches/windows/include/lldb/Core/Timer.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/Timer.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/Timer.h (original)
+++ lldb/branches/windows/include/lldb/Core/Timer.h Wed Apr 17 03:38:48 2013
@@ -11,8 +11,10 @@
 #define liblldb_Timer_h_
 #if defined(__cplusplus)
 
-#include <memory>
+#include <stdarg.h>
 #include <stdio.h>
+#include <memory>
+#include <string>
 #include "lldb/lldb-private.h"
 #include "lldb/Host/TimeValue.h"
 
@@ -90,6 +92,71 @@ private:
     Timer();
     DISALLOW_COPY_AND_ASSIGN (Timer);
 };
+    
+class IntervalTimer
+{
+public:
+    IntervalTimer() :
+        m_start (TimeValue::Now())
+    {
+    }
+    
+    ~IntervalTimer()
+    {
+    }
+
+    uint64_t
+    GetElapsedNanoSeconds() const
+    {
+        return TimeValue::Now() - m_start;
+    }
+    
+    void
+    Reset ()
+    {
+        m_start = TimeValue::Now();
+    }
+    
+    int
+    PrintfElapsed (const char *format, ...)  
+#if defined(_POSIX_SOURCE)
+    __attribute__ ((format (printf, 2, 3)))
+#endif
+    {
+        TimeValue now (TimeValue::Now());
+        const uint64_t elapsed_nsec = now - m_start;
+        const char *unit = NULL;
+        float elapsed_value;
+        if (elapsed_nsec < 1000)
+        {
+            unit = "ns";
+            elapsed_value = (float)elapsed_nsec;
+        }
+        else if (elapsed_nsec < 1000000)
+        {
+            unit = "us";
+            elapsed_value = (float)elapsed_nsec/1000.0f;
+        }
+        else if (elapsed_nsec < 1000000000)
+        {
+            unit = "ms";
+            elapsed_value = (float)elapsed_nsec/1000000.0f;
+        }
+        else
+        {
+            unit = "sec";
+            elapsed_value = (float)elapsed_nsec/1000000000.0f;
+        }
+        int result = printf ("%3.2f %s: ", elapsed_value, unit);
+        va_list args;
+        va_start (args, format);
+        result += vprintf (format, args);
+        va_end (args);
+        return result;
+    }
+protected:
+    TimeValue m_start;
+};
 
 } // namespace lldb_private
 

Modified: lldb/branches/windows/include/lldb/Core/VMRange.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/VMRange.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/VMRange.h (original)
+++ lldb/branches/windows/include/lldb/Core/VMRange.h Wed Apr 17 03:38:48 2013
@@ -161,7 +161,7 @@ public:
 
     // Returns a valid index into coll when a match is found, else UINT32_MAX
     // is returned
-    static uint32_t
+    static size_t
     FindRangeIndexThatContainsValue (const VMRange::collection& coll, lldb::addr_t value);
 
 protected:

Modified: lldb/branches/windows/include/lldb/Core/Value.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/Value.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/Value.h (original)
+++ lldb/branches/windows/include/lldb/Core/Value.h Wed Apr 17 03:38:48 2013
@@ -217,7 +217,7 @@ public:
     }
 
     void
-    ResizeData(int len);
+    ResizeData(size_t len);
 
     bool
     ValueOf(ExecutionContext *exe_ctx, clang::ASTContext *ast_context);
@@ -231,7 +231,7 @@ public:
     lldb::Format
     GetValueDefaultFormat ();
 
-    size_t
+    uint64_t
     GetValueByteSize (clang::ASTContext *ast_context, Error *error_ptr);
 
     Error

Modified: lldb/branches/windows/include/lldb/Core/ValueObject.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/ValueObject.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/ValueObject.h (original)
+++ lldb/branches/windows/include/lldb/Core/ValueObject.h Wed Apr 17 03:38:48 2013
@@ -232,6 +232,8 @@ public:
         lldb::TypeSummaryImplSP m_summary_sp;
         std::string m_root_valobj_name;
         bool m_hide_root_type;
+        bool m_hide_name;
+        bool m_hide_value;
         
         DumpValueObjectOptions() :
             m_max_ptr_depth(0),
@@ -248,7 +250,9 @@ public:
             m_format (lldb::eFormatDefault),
             m_summary_sp(),
             m_root_valobj_name(),
-            m_hide_root_type(false)  // <rdar://problem/11505459> provide a special compact display for "po",
+            m_hide_root_type(false),  // provide a special compact display for "po"
+            m_hide_name(false), // provide a special compact display for "po"
+            m_hide_value(false) // provide a special compact display for "po"
         {}
         
         static const DumpValueObjectOptions
@@ -274,7 +278,9 @@ public:
             m_format(rhs.m_format),
             m_summary_sp(rhs.m_summary_sp),
             m_root_valobj_name(rhs.m_root_valobj_name),
-            m_hide_root_type(rhs.m_hide_root_type)
+            m_hide_root_type(rhs.m_hide_root_type),
+            m_hide_name(rhs.m_hide_name),
+            m_hide_value(rhs.m_hide_value)
         {}
         
         DumpValueObjectOptions&
@@ -372,12 +378,16 @@ public:
                 SetUseSyntheticValue(false);
                 SetOmitSummaryDepth(UINT32_MAX);
                 SetIgnoreCap(true);
+                SetHideName(false);
+                SetHideValue(false);
             }
             else
             {
                 SetUseSyntheticValue(true);
                 SetOmitSummaryDepth(0);
                 SetIgnoreCap(false);
+                SetHideName(false);
+                SetHideValue(false);
             }
             return *this;
         }
@@ -412,7 +422,20 @@ public:
             m_hide_root_type = hide_root_type;
             return *this;
         }
+        
+        DumpValueObjectOptions&
+        SetHideName (bool hide_name = false)
+        {
+            m_hide_name = hide_name;
+            return *this;
+        }
 
+        DumpValueObjectOptions&
+        SetHideValue (bool hide_value = false)
+        {
+            m_hide_value = hide_value;
+            return *this;
+        }        
     };
 
     class EvaluationPoint
@@ -579,7 +602,7 @@ public:
     //------------------------------------------------------------------
     // Sublasses must implement the functions below.
     //------------------------------------------------------------------
-    virtual size_t
+    virtual uint64_t
     GetByteSize() = 0;
 
     virtual lldb::ValueType
@@ -597,6 +620,9 @@ public:
     virtual lldb::LanguageType
     GetObjectRuntimeLanguage();
 
+    virtual uint32_t
+    GetTypeInfo (lldb::clang_type_t *pointee_or_element_clang_type = NULL);
+
     virtual bool
     IsPointerType ();
     
@@ -712,12 +738,10 @@ public:
     // value is from an executable file and might have its data in
     // sections of the file. This can be used for variables.
     virtual lldb::ModuleSP
-    GetModule()
-    {
-        if (m_parent)
-            return m_parent->GetModule();
-        return lldb::ModuleSP();
-    }
+    GetModule();
+    
+    virtual ValueObject*
+    GetRoot ();
     
     virtual bool
     GetDeclaration (Declaration &decl);
@@ -732,15 +756,36 @@ public:
     GetName() const;
 
     virtual lldb::ValueObjectSP
-    GetChildAtIndex (uint32_t idx, bool can_create);
+    GetChildAtIndex (size_t idx, bool can_create);
+
+    // this will always create the children if necessary
+#ifdef _POSIX_SOURCE
+    lldb::ValueObjectSP
+    GetChildAtIndexPath (const std::initializer_list<size_t> &idxs,
+                         size_t* index_of_error = NULL);
+#endif
+    
+    lldb::ValueObjectSP
+    GetChildAtIndexPath (const std::vector<size_t> &idxs,
+                         size_t* index_of_error = NULL);
+    
+#ifdef _POSIX_SOURCE
+    lldb::ValueObjectSP
+    GetChildAtIndexPath (const std::initializer_list< std::pair<size_t, bool> > &idxs,
+                         size_t* index_of_error = NULL);
+#endif
 
+    lldb::ValueObjectSP
+    GetChildAtIndexPath (const std::vector< std::pair<size_t, bool> > &idxs,
+                         size_t* index_of_error = NULL);
+    
     virtual lldb::ValueObjectSP
     GetChildMemberWithName (const ConstString &name, bool can_create);
 
-    virtual uint32_t
+    virtual size_t
     GetIndexOfChildWithName (const ConstString &name);
 
-    uint32_t
+    size_t
     GetNumChildren ();
 
     const Value &
@@ -791,10 +836,7 @@ public:
     UpdateValueIfNeeded (bool update_format = true);
     
     bool
-    UpdateValueIfNeeded (lldb::DynamicValueType use_dynamic, bool update_format = true);
-    
-    bool
-    UpdateFormatsIfNeeded(lldb::DynamicValueType use_dynamic = lldb::eNoDynamicValues);
+    UpdateFormatsIfNeeded();
 
     lldb::ValueObjectSP
     GetSP ()
@@ -816,20 +858,17 @@ public:
     GetSyntheticChild (const ConstString &key) const;
     
     lldb::ValueObjectSP
-    GetSyntheticArrayMember (int32_t index, bool can_create);
+    GetSyntheticArrayMember (size_t index, bool can_create);
 
     lldb::ValueObjectSP
-    GetSyntheticArrayMemberFromPointer (int32_t index, bool can_create);
+    GetSyntheticArrayMemberFromPointer (size_t index, bool can_create);
     
     lldb::ValueObjectSP
-    GetSyntheticArrayMemberFromArray (int32_t index, bool can_create);
+    GetSyntheticArrayMemberFromArray (size_t index, bool can_create);
     
     lldb::ValueObjectSP
     GetSyntheticBitFieldChild (uint32_t from, uint32_t to, bool can_create);
-    
-    lldb::ValueObjectSP
-    GetSyntheticArrayRangeChild (uint32_t from, uint32_t to, bool can_create);
-    
+
     lldb::ValueObjectSP
     GetSyntheticExpressionPathChild(const char* expression, bool can_create);
     
@@ -839,6 +878,9 @@ public:
     virtual lldb::ValueObjectSP
     GetDynamicValue (lldb::DynamicValueType valueType);
     
+    lldb::DynamicValueType
+    GetDynamicValueType ();
+    
     virtual lldb::ValueObjectSP
     GetStaticValue ();
     
@@ -946,7 +988,7 @@ public:
     bool
     IsCStringContainer (bool check_pointer = false);
     
-    void
+    size_t
     ReadPointedString (Stream& s,
                        Error& error,
                        uint32_t max_length = 0,
@@ -958,8 +1000,11 @@ public:
                     uint32_t item_idx = 0,
 					uint32_t item_count = 1);
     
-    virtual size_t
+    virtual uint64_t
     GetData (DataExtractor& data);
+    
+    virtual bool
+    SetData (DataExtractor &data, Error &error);
 
     bool
     GetIsConstant () const
@@ -974,12 +1019,7 @@ public:
     }
 
     lldb::Format
-    GetFormat () const
-    {
-        if (m_parent && m_format == lldb::eFormatDefault)
-            return m_parent->GetFormat();
-        return m_format;
-    }
+    GetFormat () const;
     
     void
     SetFormat (lldb::Format format)
@@ -992,7 +1032,7 @@ public:
     lldb::TypeSummaryImplSP
     GetSummaryFormat()
     {
-        UpdateFormatsIfNeeded(m_last_format_mgr_dynamic);
+        UpdateFormatsIfNeeded();
         return m_type_summary_sp;
     }
     
@@ -1013,7 +1053,7 @@ public:
     lldb::TypeFormatImplSP
     GetValueFormat()
     {
-        UpdateFormatsIfNeeded(m_last_format_mgr_dynamic);
+        UpdateFormatsIfNeeded();
         return m_type_format_sp;
     }
     
@@ -1029,7 +1069,7 @@ public:
     lldb::SyntheticChildrenSP
     GetSyntheticChildren()
     {
-        UpdateFormatsIfNeeded(m_last_format_mgr_dynamic);
+        UpdateFormatsIfNeeded();
         return m_synthetic_children_sp;
     }
 
@@ -1058,15 +1098,7 @@ public:
     }
     
     AddressType
-    GetAddressTypeOfChildren()
-    {
-        if (m_address_type_of_ptr_or_ref_children == eAddressTypeInvalid)
-        {
-            if (m_parent)
-                return m_parent->GetAddressTypeOfChildren();
-        }
-        return m_address_type_of_ptr_or_ref_children;
-    }
+    GetAddressTypeOfChildren();
     
     void
     SetHasCompleteType()
@@ -1100,13 +1132,13 @@ protected:
     {
     public:
         ChildrenManager() :
-        m_mutex(Mutex::eMutexTypeRecursive),
-        m_children(),
-        m_children_count(0)
+            m_mutex(Mutex::eMutexTypeRecursive),
+            m_children(),
+            m_children_count(0)
         {}
         
         bool
-        HasChildAtIndex (uint32_t idx)
+        HasChildAtIndex (size_t idx)
         {
             Mutex::Locker locker(m_mutex);
             ChildrenIterator iter = m_children.find(idx);
@@ -1115,7 +1147,7 @@ protected:
         }
         
         ValueObject*
-        GetChildAtIndex (uint32_t idx)
+        GetChildAtIndex (size_t idx)
         {
             Mutex::Locker locker(m_mutex);
             ChildrenIterator iter = m_children.find(idx);
@@ -1127,7 +1159,7 @@ protected:
         }
         
         void
-        SetChildAtIndex (uint32_t idx, ValueObject* valobj)
+        SetChildAtIndex (size_t idx, ValueObject* valobj)
         {
             ChildrenPair pair(idx,valobj); // we do not need to be mutex-protected to make a pair
             Mutex::Locker locker(m_mutex);
@@ -1135,12 +1167,12 @@ protected:
         }
         
         void
-        SetChildrenCount (uint32_t count)
+        SetChildrenCount (size_t count)
         {
             m_children_count = count;
         }
         
-        uint32_t
+        size_t
         GetChildrenCount ()
         {
             return m_children_count;
@@ -1155,18 +1187,19 @@ protected:
         }
         
     private:
-        typedef std::map<uint32_t, ValueObject*> ChildrenMap;
+        typedef std::map<size_t, ValueObject*> ChildrenMap;
         typedef ChildrenMap::iterator ChildrenIterator;
         typedef ChildrenMap::value_type ChildrenPair;
         Mutex m_mutex;
         ChildrenMap m_children;
-        uint32_t m_children_count;
+        size_t m_children_count;
     };
 
     //------------------------------------------------------------------
     // Classes that inherit from ValueObject can see and modify these
     //------------------------------------------------------------------
     ValueObject  *      m_parent;       // The parent value object, or NULL if this has no parent
+    ValueObject  *      m_root;         // The root of the hierarchy for this ValueObject (or NULL if never calculated)
     EvaluationPoint     m_update_point; // Stores both the stop id and the full context at which this value was last 
                                         // updated.  When we are asked to update the value object, we check whether
                                         // the context & stop id are the same before updating.
@@ -1201,7 +1234,6 @@ protected:
 
     lldb::Format                m_format;
     uint32_t                    m_last_format_mgr_revision;
-    lldb::DynamicValueType      m_last_format_mgr_dynamic;
     lldb::TypeSummaryImplSP     m_type_summary_sp;
     lldb::TypeFormatImplSP      m_type_format_sp;
     lldb::SyntheticChildrenSP   m_synthetic_children_sp;
@@ -1215,7 +1247,6 @@ protected:
                         m_is_deref_of_parent:1,
                         m_is_array_item_for_pointer:1,
                         m_is_bitfield_for_scalar:1,
-                        m_is_expression_path_child:1,
                         m_is_child_at_offset:1,
                         m_is_getting_summary:1,
                         m_did_calculate_complete_objc_class_type:1;
@@ -1256,20 +1287,32 @@ protected:
     virtual void
     CalculateDynamicValue (lldb::DynamicValueType use_dynamic);
     
+    virtual lldb::DynamicValueType
+    GetDynamicValueTypeImpl ()
+    {
+        return lldb::eNoDynamicValues;
+    }
+    
+    virtual bool
+    HasDynamicValueTypeInfo ()
+    {
+        return false;
+    }
+    
     virtual void
     CalculateSyntheticValue (bool use_synthetic = true);
     
     // Should only be called by ValueObject::GetChildAtIndex()
     // Returns a ValueObject managed by this ValueObject's manager.
     virtual ValueObject *
-    CreateChildAtIndex (uint32_t idx, bool synthetic_array_member, int32_t synthetic_index);
+    CreateChildAtIndex (size_t idx, bool synthetic_array_member, int32_t synthetic_index);
 
     // Should only be called by ValueObject::GetNumChildren()
-    virtual uint32_t
+    virtual size_t
     CalculateNumChildren() = 0;
 
     void
-    SetNumChildren (uint32_t num_children);
+    SetNumChildren (size_t num_children);
 
     void
     SetValueDidChange (bool value_changed);

Modified: lldb/branches/windows/include/lldb/Core/ValueObjectCast.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/ValueObjectCast.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/ValueObjectCast.h (original)
+++ lldb/branches/windows/include/lldb/Core/ValueObjectCast.h Wed Apr 17 03:38:48 2013
@@ -32,10 +32,10 @@ public:
     virtual
     ~ValueObjectCast();
     
-    virtual size_t
+    virtual uint64_t
     GetByteSize();
     
-    virtual uint32_t
+    virtual size_t
     CalculateNumChildren();
     
     virtual lldb::ValueType

Modified: lldb/branches/windows/include/lldb/Core/ValueObjectChild.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/ValueObjectChild.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/ValueObjectChild.h (original)
+++ lldb/branches/windows/include/lldb/Core/ValueObjectChild.h Wed Apr 17 03:38:48 2013
@@ -26,7 +26,7 @@ class ValueObjectChild : public ValueObj
 public:
     virtual ~ValueObjectChild();
 
-    virtual size_t
+    virtual uint64_t
     GetByteSize()
     {
         return m_byte_size;
@@ -53,7 +53,7 @@ public:
     virtual lldb::ValueType
     GetValueType() const;
 
-    virtual uint32_t
+    virtual size_t
     CalculateNumChildren();
 
     virtual ConstString
@@ -96,7 +96,7 @@ protected:
     clang::ASTContext *m_clang_ast; // The clang AST that the clang type comes from
     void *m_clang_type; // The type of the child in question within the parent (m_parent_sp)
     ConstString m_type_name;
-    uint32_t m_byte_size;
+    uint64_t m_byte_size;
     int32_t m_byte_offset;
     uint8_t m_bitfield_bit_size;
     uint8_t m_bitfield_bit_offset;
@@ -114,7 +114,7 @@ protected:
                       clang::ASTContext *clang_ast,
                       void *clang_type,
                       const ConstString &name,
-                      uint32_t byte_size,
+                      uint64_t byte_size,
                       int32_t byte_offset,
                       uint32_t bitfield_bit_size,
                       uint32_t bitfield_bit_offset,

Modified: lldb/branches/windows/include/lldb/Core/ValueObjectConstResult.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/ValueObjectConstResult.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/ValueObjectConstResult.h (original)
+++ lldb/branches/windows/include/lldb/Core/ValueObjectConstResult.h Wed Apr 17 03:38:48 2013
@@ -47,7 +47,7 @@ public:
             const ConstString &name,
             const lldb::DataBufferSP &result_data_sp,
             lldb::ByteOrder byte_order, 
-            uint8_t addr_size,
+            uint32_t addr_size,
             lldb::addr_t address = LLDB_INVALID_ADDRESS);
 
     static lldb::ValueObjectSP
@@ -57,7 +57,7 @@ public:
             const ConstString &name,
             lldb::addr_t address,
             AddressType address_type,
-            uint8_t addr_byte_size);
+            uint32_t addr_byte_size);
 
     static lldb::ValueObjectSP
     Create (ExecutionContextScope *exe_scope,
@@ -72,13 +72,13 @@ public:
 
     virtual ~ValueObjectConstResult();
 
-    virtual size_t
+    virtual uint64_t
     GetByteSize();
 
     virtual lldb::ValueType
     GetValueType() const;
 
-    virtual uint32_t
+    virtual size_t
     CalculateNumChildren();
 
     virtual ConstString
@@ -101,7 +101,7 @@ public:
     Dereference (Error &error);
     
     virtual ValueObject *
-    CreateChildAtIndex (uint32_t idx, bool synthetic_array_member, int32_t synthetic_index);
+    CreateChildAtIndex (size_t idx, bool synthetic_array_member, int32_t synthetic_index);
     
     virtual lldb::ValueObjectSP
     GetSyntheticChildAtOffset(uint32_t offset, const ClangASTType& type, bool can_create);
@@ -147,7 +147,7 @@ protected:
 
     clang::ASTContext *m_clang_ast; // The clang AST that the clang type comes from
     ConstString m_type_name;
-    uint32_t m_byte_size;
+    uint64_t m_byte_size;
     
     ValueObjectConstResultImpl m_impl;
 
@@ -171,7 +171,7 @@ private:
                             const ConstString &name,
                             const lldb::DataBufferSP &result_data_sp,
                             lldb::ByteOrder byte_order, 
-                            uint8_t addr_size,
+                            uint32_t addr_size,
                             lldb::addr_t address);
 
     ValueObjectConstResult (ExecutionContextScope *exe_scope,
@@ -180,7 +180,7 @@ private:
                             const ConstString &name,
                             lldb::addr_t address,
                             AddressType address_type,
-                            uint8_t addr_byte_size);
+                            uint32_t addr_byte_size);
 
     ValueObjectConstResult (ExecutionContextScope *exe_scope,
                             clang::ASTContext *clang_ast,

Modified: lldb/branches/windows/include/lldb/Core/ValueObjectConstResultChild.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/ValueObjectConstResultChild.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/ValueObjectConstResultChild.h (original)
+++ lldb/branches/windows/include/lldb/Core/ValueObjectConstResultChild.h Wed Apr 17 03:38:48 2013
@@ -43,7 +43,7 @@ public:
     Dereference (Error &error);
     
     virtual ValueObject *
-    CreateChildAtIndex (uint32_t idx, bool synthetic_array_member, int32_t synthetic_index);
+    CreateChildAtIndex (size_t idx, bool synthetic_array_member, int32_t synthetic_index);
 
     virtual lldb::clang_type_t
     GetClangType ()

Modified: lldb/branches/windows/include/lldb/Core/ValueObjectConstResultImpl.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/ValueObjectConstResultImpl.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/ValueObjectConstResultImpl.h (original)
+++ lldb/branches/windows/include/lldb/Core/ValueObjectConstResultImpl.h Wed Apr 17 03:38:48 2013
@@ -39,7 +39,7 @@ public:
     Dereference (Error &error);
     
     ValueObject *
-    CreateChildAtIndex (uint32_t idx, bool synthetic_array_member, int32_t synthetic_index);
+    CreateChildAtIndex (size_t idx, bool synthetic_array_member, int32_t synthetic_index);
     
     lldb::ValueObjectSP
     GetSyntheticChildAtOffset (uint32_t offset, const ClangASTType& type, bool can_create);

Modified: lldb/branches/windows/include/lldb/Core/ValueObjectDynamicValue.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/ValueObjectDynamicValue.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/ValueObjectDynamicValue.h (original)
+++ lldb/branches/windows/include/lldb/Core/ValueObjectDynamicValue.h Wed Apr 17 03:38:48 2013
@@ -15,6 +15,7 @@
 // Other libraries and framework includes
 // Project includes
 #include "lldb/Core/ValueObject.h"
+#include "lldb/Symbol/Type.h"
 
 namespace lldb_private {
 
@@ -28,13 +29,16 @@ public:
     virtual
     ~ValueObjectDynamicValue();
 
-    virtual size_t
+    virtual uint64_t
     GetByteSize();
 
     virtual ConstString
     GetTypeName();
 
-    virtual uint32_t
+    virtual ConstString
+    GetQualifiedTypeName();
+    
+    virtual size_t
     CalculateNumChildren();
 
     virtual lldb::ValueType
@@ -86,10 +90,25 @@ public:
     virtual bool
     SetValueFromCString (const char *value_str, Error& error);
     
+    virtual bool
+    SetData (DataExtractor &data, Error &error);
+    
 protected:
     virtual bool
     UpdateValue ();
     
+    virtual lldb::DynamicValueType
+    GetDynamicValueTypeImpl ()
+    {
+        return m_use_dynamic;
+    }
+    
+    virtual bool
+    HasDynamicValueTypeInfo ()
+    {
+        return true;
+    }
+    
     virtual clang::ASTContext *
     GetClangASTImpl ();
     
@@ -97,7 +116,7 @@ protected:
     GetClangTypeImpl ();
 
     Address  m_address;  ///< The variable that this value object is based upon
-    lldb::TypeSP m_type_sp;
+    TypeAndOrName m_dynamic_type_info; // We can have a type_sp or just a name
     lldb::ValueObjectSP m_owning_valobj_sp;
     lldb::DynamicValueType m_use_dynamic;
 

Modified: lldb/branches/windows/include/lldb/Core/ValueObjectList.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/ValueObjectList.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/ValueObjectList.h (original)
+++ lldb/branches/windows/include/lldb/Core/ValueObjectList.h Wed Apr 17 03:38:48 2013
@@ -50,20 +50,20 @@ public:
     lldb::ValueObjectSP
     FindValueObjectByPointer (ValueObject *valobj);
 
-    uint32_t
+    size_t
     GetSize () const;
     
     void
-    Resize (uint32_t size);
+    Resize (size_t size);
 
     lldb::ValueObjectSP
-    GetValueObjectAtIndex (uint32_t idx);
+    GetValueObjectAtIndex (size_t idx);
 
     lldb::ValueObjectSP
-    RemoveValueObjectAtIndex (uint32_t idx);
+    RemoveValueObjectAtIndex (size_t idx);
     
     void
-    SetValueObjectAtIndex (uint32_t idx, 
+    SetValueObjectAtIndex (size_t idx, 
                            const lldb::ValueObjectSP &valobj_sp);
     
     lldb::ValueObjectSP

Modified: lldb/branches/windows/include/lldb/Core/ValueObjectMemory.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/ValueObjectMemory.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/ValueObjectMemory.h (original)
+++ lldb/branches/windows/include/lldb/Core/ValueObjectMemory.h Wed Apr 17 03:38:48 2013
@@ -41,13 +41,13 @@ public:
     virtual
     ~ValueObjectMemory();
 
-    virtual size_t
+    virtual uint64_t
     GetByteSize();
 
     virtual ConstString
     GetTypeName();
 
-    virtual uint32_t
+    virtual size_t
     CalculateNumChildren();
 
     virtual lldb::ValueType

Modified: lldb/branches/windows/include/lldb/Core/ValueObjectRegister.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/ValueObjectRegister.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/ValueObjectRegister.h (original)
+++ lldb/branches/windows/include/lldb/Core/ValueObjectRegister.h Wed Apr 17 03:38:48 2013
@@ -31,7 +31,7 @@ public:
     virtual
     ~ValueObjectRegisterContext();
 
-    virtual size_t
+    virtual uint64_t
     GetByteSize();
 
     virtual lldb::ValueType
@@ -46,11 +46,11 @@ public:
     virtual ConstString
     GetQualifiedTypeName();
 
-    virtual uint32_t
+    virtual size_t
     CalculateNumChildren();
 
     virtual ValueObject *
-    CreateChildAtIndex (uint32_t idx, bool synthetic_array_member, int32_t synthetic_index);
+    CreateChildAtIndex (size_t idx, bool synthetic_array_member, int32_t synthetic_index);
 
 protected:
     virtual bool
@@ -81,7 +81,7 @@ public:
     virtual
     ~ValueObjectRegisterSet();
 
-    virtual size_t
+    virtual uint64_t
     GetByteSize();
 
     virtual lldb::ValueType
@@ -96,16 +96,16 @@ public:
     virtual ConstString
     GetQualifiedTypeName();
 
-    virtual uint32_t
+    virtual size_t
     CalculateNumChildren();
 
     virtual ValueObject *
-    CreateChildAtIndex (uint32_t idx, bool synthetic_array_member, int32_t synthetic_index);
+    CreateChildAtIndex (size_t idx, bool synthetic_array_member, int32_t synthetic_index);
     
     virtual lldb::ValueObjectSP
     GetChildMemberWithName (const ConstString &name, bool can_create);
 
-    virtual uint32_t
+    virtual size_t
     GetIndexOfChildWithName (const ConstString &name);
 
 
@@ -142,7 +142,7 @@ public:
     virtual
     ~ValueObjectRegister();
 
-    virtual size_t
+    virtual uint64_t
     GetByteSize();
 
     virtual lldb::ValueType
@@ -154,11 +154,14 @@ public:
     virtual ConstString
     GetTypeName();
 
-    virtual uint32_t
+    virtual size_t
     CalculateNumChildren();
     
     virtual bool
     SetValueFromCString (const char *value_str, Error& error);
+    
+    virtual bool
+    SetData (DataExtractor &data, Error &error);
 
     virtual bool
     ResolveValue (Scalar &scalar);

Modified: lldb/branches/windows/include/lldb/Core/ValueObjectSyntheticFilter.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/ValueObjectSyntheticFilter.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/ValueObjectSyntheticFilter.h (original)
+++ lldb/branches/windows/include/lldb/Core/ValueObjectSyntheticFilter.h Wed Apr 17 03:38:48 2013
@@ -33,30 +33,36 @@ public:
     virtual
     ~ValueObjectSynthetic();
 
-    virtual size_t
+    virtual uint64_t
     GetByteSize();
     
     virtual ConstString
     GetTypeName();
+    
+    virtual ConstString
+    GetQualifiedTypeName();
 
     virtual bool
     MightHaveChildren();
 
-    virtual uint32_t
+    virtual size_t
     CalculateNumChildren();
 
     virtual lldb::ValueType
     GetValueType() const;
     
     virtual lldb::ValueObjectSP
-    GetChildAtIndex (uint32_t idx, bool can_create);
+    GetChildAtIndex (size_t idx, bool can_create);
     
     virtual lldb::ValueObjectSP
     GetChildMemberWithName (const ConstString &name, bool can_create);
     
-    virtual uint32_t
+    virtual size_t
     GetIndexOfChildWithName (const ConstString &name);
 
+    virtual lldb::ValueObjectSP
+    GetDynamicValue (lldb::DynamicValueType valueType);
+    
     virtual bool
     IsInScope ();
     
@@ -77,7 +83,28 @@ public:
     virtual bool
     IsDynamic ()
     {
-        return false;
+        if (m_parent)
+            return m_parent->IsDynamic();
+        else
+            return false;
+    }
+    
+    virtual lldb::ValueObjectSP
+    GetStaticValue ()
+    {
+        if (m_parent)
+            return m_parent->GetStaticValue();
+        else
+            return GetSP();
+    }
+    
+    virtual lldb::DynamicValueType
+    GetDynamicValueType ()
+    {
+        if (m_parent)
+            return m_parent->GetDynamicValueType();
+        else
+            return lldb::eNoDynamicValues;
     }
 
     virtual ValueObject *

Modified: lldb/branches/windows/include/lldb/Core/ValueObjectVariable.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/ValueObjectVariable.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/ValueObjectVariable.h (original)
+++ lldb/branches/windows/include/lldb/Core/ValueObjectVariable.h Wed Apr 17 03:38:48 2013
@@ -31,7 +31,7 @@ public:
     virtual
     ~ValueObjectVariable();
 
-    virtual size_t
+    virtual uint64_t
     GetByteSize();
 
     virtual ConstString
@@ -40,7 +40,7 @@ public:
     virtual ConstString
     GetQualifiedTypeName();
 
-    virtual uint32_t
+    virtual size_t
     CalculateNumChildren();
 
     virtual lldb::ValueType

Modified: lldb/branches/windows/include/lldb/Core/dwarf.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Core/dwarf.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Core/dwarf.h (original)
+++ lldb/branches/windows/include/lldb/Core/dwarf.h Wed Apr 17 03:38:48 2013
@@ -33,7 +33,6 @@ typedef uint32_t    dw_offset_t;    // D
 #endif
 
 /* Constants */
-#define DW_INVALID_ADDRESS                  (~(dw_addr_t)0)
 #define DW_INVALID_OFFSET                   (~(dw_offset_t)0)
 #define DW_INVALID_INDEX                    0xFFFFFFFFul
 

Modified: lldb/branches/windows/include/lldb/DataFormatters/CXXFormatterFunctions.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/DataFormatters/CXXFormatterFunctions.h?rev=179679&r1=179594&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/DataFormatters/CXXFormatterFunctions.h (original)
+++ lldb/branches/windows/include/lldb/DataFormatters/CXXFormatterFunctions.h Wed Apr 17 03:38:48 2013
@@ -151,22 +151,22 @@ namespace lldb_private {
         bool
         RuntimeSpecificDescriptionSummaryProvider (ValueObject& valobj, Stream& stream);
         
-        extern template bool
+        template bool
         NSDictionarySummaryProvider<true> (ValueObject&, Stream&) ;
         
-        extern template bool
+        template bool
         NSDictionarySummaryProvider<false> (ValueObject&, Stream&) ;
         
-        extern template bool
+        template bool
         NSDataSummaryProvider<true> (ValueObject&, Stream&) ;
         
-        extern template bool
+        template bool
         NSDataSummaryProvider<false> (ValueObject&, Stream&) ;
         
-        extern template bool
+        template bool
         ObjCSELSummaryProvider<true> (ValueObject&, Stream&);
 
-        extern template bool
+        template bool
         ObjCSELSummaryProvider<false> (ValueObject&, Stream&);
         
         class NSArrayMSyntheticFrontEnd : public SyntheticChildrenFrontEnd

Modified: lldb/branches/windows/include/lldb/DataFormatters/FormatClasses.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/DataFormatters/FormatClasses.h?rev=179679&r1=179594&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/DataFormatters/FormatClasses.h (original)
+++ lldb/branches/windows/include/lldb/DataFormatters/FormatClasses.h Wed Apr 17 03:38:48 2013
@@ -12,7 +12,9 @@
 
 // C Includes
 #include <stdint.h>
+#if defined(_POSIX_SOURCE)
 #include <unistd.h>
+#endif
 
 // C++ Includes
 #include <string>

Modified: lldb/branches/windows/include/lldb/DataFormatters/FormatManager.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/DataFormatters/FormatManager.h?rev=179679&r1=179594&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/DataFormatters/FormatManager.h (original)
+++ lldb/branches/windows/include/lldb/DataFormatters/FormatManager.h Wed Apr 17 03:38:48 2013
@@ -191,7 +191,11 @@ public:
     void
     Changed ()
     {
+#ifdef _POSIX_SOURCE
         __sync_add_and_fetch(&m_last_revision, +1);
+#else
+		InterlockedIncrement (&m_last_revision);
+#endif
         m_format_cache.Clear ();
     }
     

Modified: lldb/branches/windows/include/lldb/DataFormatters/TypeSummary.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/DataFormatters/TypeSummary.h?rev=179679&r1=179594&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/DataFormatters/TypeSummary.h (original)
+++ lldb/branches/windows/include/lldb/DataFormatters/TypeSummary.h Wed Apr 17 03:38:48 2013
@@ -12,7 +12,9 @@
 
 // C Includes
 #include <stdint.h>
+#ifdef _POSIX_SOURCE
 #include <unistd.h>
+#endif
 
 // C++ Includes
 #include <string>

Modified: lldb/branches/windows/include/lldb/DataFormatters/TypeSynthetic.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/DataFormatters/TypeSynthetic.h?rev=179679&r1=179594&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/DataFormatters/TypeSynthetic.h (original)
+++ lldb/branches/windows/include/lldb/DataFormatters/TypeSynthetic.h Wed Apr 17 03:38:48 2013
@@ -12,7 +12,9 @@
 
 // C Includes
 #include <stdint.h>
+#ifdef _POSIX_SOURCE
 #include <unistd.h>
+#endif
 
 // C++ Includes
 #include <string>
@@ -274,7 +276,8 @@ namespace lldb_private {
         {
         }
 
-        TypeFilterImpl(const SyntheticChildren::Flags& flags,
+#ifdef _POSIX_SOURCE
+		TypeFilterImpl(const SyntheticChildren::Flags& flags,
                        const std::initializer_list<const char*> items) :
         SyntheticChildren(flags),
         m_expression_paths()
@@ -282,6 +285,7 @@ namespace lldb_private {
             for (auto path : items)
                 AddExpressionPath (path);
         }
+#endif
         
         void
         AddExpressionPath (const char* path)

Modified: lldb/branches/windows/include/lldb/Expression/ASTDumper.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Expression/ASTDumper.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Expression/ASTDumper.h (original)
+++ lldb/branches/windows/include/lldb/Expression/ASTDumper.h Wed Apr 17 03:38:48 2013
@@ -31,7 +31,7 @@ public:
     
     const char *GetCString();
     void ToSTDERR();
-    void ToLog(lldb::LogSP &log, const char *prefix);
+    void ToLog(Log *log, const char *prefix);
     void ToStream(lldb::StreamSP &stream);
 private:
     std::string m_dump;

Modified: lldb/branches/windows/include/lldb/Expression/ClangASTSource.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Expression/ClangASTSource.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Expression/ClangASTSource.h (original)
+++ lldb/branches/windows/include/lldb/Expression/ClangASTSource.h Wed Apr 17 03:38:48 2013
@@ -98,7 +98,7 @@ public:
     /// @return
     ///     Whatever SetExternalVisibleDeclsForName returns.
     //------------------------------------------------------------------
-    clang::DeclContextLookupResult 
+    bool
     FindExternalVisibleDeclsByName (const clang::DeclContext *DC,
                                     clang::DeclarationName Name);
     
@@ -248,7 +248,7 @@ public:
         {
         }
         
-        clang::DeclContextLookupResult 
+        bool
         FindExternalVisibleDeclsByName (const clang::DeclContext *DC,
                                         clang::DeclarationName Name)
         {
@@ -297,17 +297,19 @@ public:
         }
         
         ClangASTMetadata *
-        GetMetadata(uintptr_t object)
+        GetMetadata(const void * object)
         {
             return m_original.GetMetadata(object);
         }
         
-        void SetMetadata(uintptr_t object, ClangASTMetadata &metadata)
+        void
+        SetMetadata(const void * object, ClangASTMetadata &metadata)
         {
             return m_original.SetMetadata(object, metadata);
         }
         
-        bool HasMetadata(uintptr_t object)
+        bool
+        HasMetadata(const void * object)
         {
             return m_original.HasMetadata(object);
         }

Modified: lldb/branches/windows/include/lldb/Expression/ClangExpression.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Expression/ClangExpression.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Expression/ClangExpression.h (original)
+++ lldb/branches/windows/include/lldb/Expression/ClangExpression.h Wed Apr 17 03:38:48 2013
@@ -48,7 +48,6 @@ public:
     
     ClangExpression () :
         m_jit_process_wp(),
-        m_jit_alloc (LLDB_INVALID_ADDRESS),
         m_jit_start_addr (LLDB_INVALID_ADDRESS),
         m_jit_end_addr (LLDB_INVALID_ADDRESS)
     {
@@ -59,7 +58,6 @@ public:
     //------------------------------------------------------------------
     virtual ~ClangExpression ()
     {
-        DeallocateJITFunction ();
     }
     
     //------------------------------------------------------------------
@@ -95,13 +93,6 @@ public:
     DeclMap () = 0;
     
     //------------------------------------------------------------------
-    /// Return the object that the parser should use when registering
-    /// local variables.  May be NULL if the Expression doesn't care.
-    //------------------------------------------------------------------
-    virtual ClangExpressionVariableList *
-    LocalVariables () = 0;
-    
-    //------------------------------------------------------------------
     /// Return the object that the parser should allow to access ASTs.
     /// May be NULL if the ASTs do not need to be transformed.
     ///
@@ -140,20 +131,6 @@ public:
     virtual bool
     NeedsVariableResolution () = 0;
 
-    void
-    DeallocateJITFunction ()
-    {
-        lldb::ProcessSP jit_process_sp(m_jit_process_wp.lock());
-        if (jit_process_sp && m_jit_alloc != LLDB_INVALID_ADDRESS)
-        {
-            jit_process_sp->DeallocateMemory (m_jit_alloc);
-            // If this process is ever used for anything else, we can not clear it 
-            // here. For now it is only used in order to deallocate any code if
-            // m_jit_alloc is a valid address.
-            m_jit_alloc = LLDB_INVALID_ADDRESS;
-        }
-    }
-
     //------------------------------------------------------------------
     /// Return the address of the function's JIT-compiled code, or
     /// LLDB_INVALID_ADDRESS if the function is not JIT compiled
@@ -167,7 +144,6 @@ public:
 protected:
 
     lldb::ProcessWP m_jit_process_wp;
-    lldb::addr_t    m_jit_alloc;            ///< The address of the block containing JITted code.  LLDB_INVALID_ADDRESS if invalid.
     lldb::addr_t    m_jit_start_addr;       ///< The address of the JITted function within the JIT allocation.  LLDB_INVALID_ADDRESS if invalid.
     lldb::addr_t    m_jit_end_addr;         ///< The address of the JITted function within the JIT allocation.  LLDB_INVALID_ADDRESS if invalid.
 

Modified: lldb/branches/windows/include/lldb/Expression/ClangExpressionDeclMap.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Expression/ClangExpressionDeclMap.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Expression/ClangExpressionDeclMap.h (original)
+++ lldb/branches/windows/include/lldb/Expression/ClangExpressionDeclMap.h Wed Apr 17 03:38:48 2013
@@ -69,6 +69,9 @@ public:
     ///     If true, inhibits the normal deallocation of the memory for
     ///     the result persistent variable, and instead marks the variable
     ///     as persisting.
+    ///
+    /// @param[in] exe_ctx
+    ///     The execution context to use when parsing.
     //------------------------------------------------------------------
     ClangExpressionDeclMap (bool keep_result_in_memory,
                             ExecutionContext &exe_ctx);
@@ -85,11 +88,16 @@ public:
     ///     The execution context to use when finding types for variables.
     ///     Also used to find a "scratch" AST context to store result types.
     ///
+    /// @param[in] materializer
+    ///     If non-NULL, the materializer to populate with information about
+    ///     the variables to use
+    ///
     /// @return
     ///     True if parsing is possible; false if it is unsafe to continue.
     //------------------------------------------------------------------
     bool
-    WillParse (ExecutionContext &exe_ctx);
+    WillParse (ExecutionContext &exe_ctx,
+               Materializer *materializer);
     
     //------------------------------------------------------------------
     /// [Used by ClangExpressionParser] For each variable that had an unknown
@@ -674,6 +682,7 @@ private:
             m_sym_ctx(),
             m_persistent_vars(NULL),
             m_enable_lookups(false),
+            m_materializer(NULL),
             m_decl_map(decl_map)
         {
         }
@@ -693,6 +702,7 @@ private:
         ClangPersistentVariables   *m_persistent_vars;  ///< The persistent variables for the process.
         bool                        m_enable_lookups;   ///< Set to true during parsing if we have found the first "$__lldb" name.
         TargetInfo                  m_target_info;      ///< Basic information about the target.
+        Materializer               *m_materializer;     ///< If non-NULL, the materializer to use when reporting used variables.
     private:
         ClangExpressionDeclMap     &m_decl_map;
         DISALLOW_COPY_AND_ASSIGN (ParserVars);
@@ -798,6 +808,16 @@ private:
         m_material_vars.reset();
     }
     
+    //----------------------------------------------------------------------
+    /// Get this parser's ID for use in extracting parser- and JIT-specific
+    /// data from persistent variables.
+    //----------------------------------------------------------------------
+    uint64_t
+    GetParserID()
+    {
+        return (uint64_t)this;
+    }
+    
     //------------------------------------------------------------------
     /// Given a stack frame, find a variable that matches the given name and 
     /// type.  We need this for expression re-use; we may not always get the
@@ -1007,16 +1027,23 @@ private:
     ///
     /// @param[in] type
     ///     The type that needs to be created.
-    ///
-    /// @param[in] add_method
-    ///     True if a method with signature void $__lldb_expr(void*)
-    ///     should be added to the C++ class type passed in
     //------------------------------------------------------------------
     void 
     AddOneType (NameSearchContext &context, 
                 TypeFromUser &type,
-                unsigned int current_id,
-                bool add_method);
+                unsigned int current_id);
+    
+    //------------------------------------------------------------------
+    /// Copy a C++ class type into the parser's AST context and add a
+    /// member function declaration to it for the expression.
+    ///
+    /// @param[in] type
+    ///     The type that needs to be created.
+    //------------------------------------------------------------------
+
+    TypeFromParser
+    CopyClassType(TypeFromUser &type,
+                  unsigned int current_id);
     
     //------------------------------------------------------------------
     /// Actually do the task of materializing or dematerializing the struct.
@@ -1094,6 +1121,51 @@ private:
                                         Error &err);
     
     //------------------------------------------------------------------
+    /// Create a temporary buffer in the target process to store the value
+    /// of a persistent variable that would otherwise not be accessible in
+    /// memory (e.g., register values or constants).
+    ///
+    /// @param[in] process
+    ///     The process to use when allocating the memory.
+    ///
+    /// @param[in] expr_var
+    ///     The variable whose live data will hold this buffer.
+    ///
+    /// @param[in] err
+    ///     An Error to populate with any messages related to
+    ///     allocating the memory.
+    ///
+    /// @return
+    ///     True on success; false otherwise.
+    //------------------------------------------------------------------
+    bool
+    CreateLiveMemoryForExpressionVariable (Process &process,
+                                           lldb::ClangExpressionVariableSP &expr_var,
+                                           Error &err);
+    
+    //------------------------------------------------------------------
+    /// Delete a temporary buffer created with
+    /// CreateLiveMemoryForExpressionVariable.
+    ///
+    /// @param[in] process
+    ///     The process to use when deallocating the memory.
+    ///
+    /// @param[in] expr_var
+    ///     The variable whose live data will hold this buffer.
+    ///
+    /// @param[in] err
+    ///     An Error to populate with any messages related to
+    ///     allocating the memory.
+    ///
+    /// @return
+    ///     True on success; false otherwise.
+    //------------------------------------------------------------------
+    bool
+    DeleteLiveMemoryForExpressionVariable (Process &process,
+                                           lldb::ClangExpressionVariableSP &expr_var,
+                                           Error &err);
+    
+    //------------------------------------------------------------------
     /// Actually do the task of materializing or dematerializing a 
     /// variable.
     ///

Modified: lldb/branches/windows/include/lldb/Expression/ClangExpressionParser.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Expression/ClangExpressionParser.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Expression/ClangExpressionParser.h (original)
+++ lldb/branches/windows/include/lldb/Expression/ClangExpressionParser.h Wed Apr 17 03:38:48 2013
@@ -22,7 +22,7 @@
 namespace lldb_private
 {
 
-class RecordingMemoryManager;
+class IRExecutionUnit;
     
 //----------------------------------------------------------------------
 /// @class ClangExpressionParser ClangExpressionParser.h "lldb/Expression/ClangExpressionParser.h"
@@ -76,10 +76,6 @@ public:
     /// Ready an already-parsed expression for execution, possibly
     /// evaluating it statically.
     ///
-    /// @param[out] func_allocation_addr
-    ///     The address which can be used to deallocate the code for this
-    ///     JIT'ed function
-    ///
     /// @param[out] func_addr
     ///     The address to which the function has been written.
     ///
@@ -88,12 +84,13 @@ public:
     ///     and func_end do not delimit an allocated region; the allocated
     ///     region may begin before func_addr.)
     ///
+    /// @param[in] execution_unit_ap
+    ///     After parsing, ownership of the execution unit for
+    ///     for the expression is handed to this auto_ptr.
+    ///
     /// @param[in] exe_ctx
     ///     The execution context to write the function into.
     ///
-    /// @param[in] data_allocator
-    ///     If non-NULL, the static data allocator to use for literal strings.
-    ///
     /// @param[out] evaluated_statically
     ///     Set to true if the expression could be interpreted statically;
     ///     untouched otherwise.
@@ -113,11 +110,10 @@ public:
     ///     Test with Success().
     //------------------------------------------------------------------
     Error
-    PrepareForExecution (lldb::addr_t &func_allocation_addr, 
-                         lldb::addr_t &func_addr,
+    PrepareForExecution (lldb::addr_t &func_addr,
                          lldb::addr_t &func_end,
+                         std::auto_ptr<IRExecutionUnit> &execution_unit_ap,
                          ExecutionContext &exe_ctx,
-                         IRForTarget::StaticDataAllocator *data_allocator,
                          bool &evaluated_statically,
                          lldb::ClangExpressionVariableSP &const_result,
                          lldb_private::ExecutionPolicy execution_policy);
@@ -137,49 +133,9 @@ public:
     //------------------------------------------------------------------
     Error
     DisassembleFunction (Stream &stream, 
-                         ExecutionContext &exe_ctx,
-                         RecordingMemoryManager *jit_memory_manager);
+                         ExecutionContext &exe_ctx);
     
 private:
-    //----------------------------------------------------------------------
-    /// @class JittedFunction ClangExpressionParser.h "lldb/Expression/ClangExpressionParser.h"
-    /// @brief Encapsulates a single function that has been generated by the JIT.
-    ///
-    /// Functions that have been generated by the JIT are first resident in the
-    /// local process, and then placed in the target process.  JittedFunction
-    /// represents a function possibly resident in both.
-    //----------------------------------------------------------------------
-    struct JittedFunction {
-        std::string m_name;             ///< The function's name
-        lldb::addr_t m_local_addr;      ///< The address of the function in LLDB's memory
-        lldb::addr_t m_remote_addr;     ///< The address of the function in the target's memory
-        
-        //------------------------------------------------------------------
-        /// Constructor
-        ///
-        /// Initializes class variabes.
-        ///
-        /// @param[in] name
-        ///     The name of the function.
-        ///
-        /// @param[in] local_addr
-        ///     The address of the function in LLDB, or LLDB_INVALID_ADDRESS if
-        ///     it is not present in LLDB's memory.
-        ///
-        /// @param[in] remote_addr
-        ///     The address of the function in the target, or LLDB_INVALID_ADDRESS
-        ///     if it is not present in the target's memory.
-        //------------------------------------------------------------------
-        JittedFunction (const char *name,
-                        lldb::addr_t local_addr = LLDB_INVALID_ADDRESS,
-                        lldb::addr_t remote_addr = LLDB_INVALID_ADDRESS) :
-            m_name (name),
-            m_local_addr (local_addr),
-            m_remote_addr (remote_addr)
-        {
-        }
-    };
-    
     ClangExpression                            &m_expr;                 ///< The expression to be parsed
     
     std::auto_ptr<llvm::LLVMContext>            m_llvm_context;         ///< The LLVM context to generate IR into
@@ -188,8 +144,8 @@ private:
     std::auto_ptr<clang::Builtin::Context>      m_builtin_context;      ///< Context for Clang built-ins
     std::auto_ptr<clang::SelectorTable>         m_selector_table;       ///< Selector table for Objective-C methods
     std::auto_ptr<clang::ASTContext>            m_ast_context;          ///< The AST context used to hold types and names for the parser
-    std::auto_ptr<clang::CodeGenerator>         m_code_generator;       ///< [owned by the Execution Engine] The Clang object that generates IR
-    std::vector<JittedFunction>                 m_jitted_functions;     ///< A vector of all functions that have been JITted into machine code (just one, if ParseExpression() was called)
+    std::auto_ptr<clang::CodeGenerator>         m_code_generator;       ///< The Clang object that generates IR
+    std::auto_ptr<IRExecutionUnit>              m_execution_unit;       ///< The container for the finished Module
 };
     
 }

Modified: lldb/branches/windows/include/lldb/Expression/ClangExpressionVariable.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Expression/ClangExpressionVariable.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Expression/ClangExpressionVariable.h (original)
+++ lldb/branches/windows/include/lldb/Expression/ClangExpressionVariable.h Wed Apr 17 03:38:48 2013
@@ -16,6 +16,7 @@
 #include <string.h>
 
 // C++ Includes
+#include <map>
 #include <string>
 #include <vector>
 
@@ -109,28 +110,44 @@ public:
         lldb_private::Value    *m_lldb_value;   ///< The value found in LLDB for this variable
         lldb::VariableSP        m_lldb_var;     ///< The original variable for this variable
         const lldb_private::Symbol *m_lldb_sym; ///< The original symbol for this variable, if it was a symbol
-
-    private:
-        DISALLOW_COPY_AND_ASSIGN (ParserVars);
     };
+    
+private:
+    typedef std::map <uint64_t, ParserVars> ParserVarMap;
+    ParserVarMap m_parser_vars;
+
+public:
     //----------------------------------------------------------------------
     /// Make this variable usable by the parser by allocating space for
     /// parser-specific variables
     //----------------------------------------------------------------------
     void 
-    EnableParserVars()
+    EnableParserVars(uint64_t parser_id)
     {
-        if (!m_parser_vars.get())
-            m_parser_vars.reset(new ParserVars);
+        m_parser_vars.insert(std::make_pair(parser_id, ParserVars()));
     }
     
     //----------------------------------------------------------------------
     /// Deallocate parser-specific variables
     //----------------------------------------------------------------------
     void
-    DisableParserVars()
+    DisableParserVars(uint64_t parser_id)
+    {
+        m_parser_vars.erase(parser_id);
+    }
+    
+    //----------------------------------------------------------------------
+    /// Access parser-specific variables
+    //----------------------------------------------------------------------
+    ParserVars *
+    GetParserVars(uint64_t parser_id)
     {
-        m_parser_vars.reset();
+        ParserVarMap::iterator i = m_parser_vars.find(parser_id);
+        
+        if (i == m_parser_vars.end())
+            return NULL;
+        else
+            return &i->second;
     }
     
     //----------------------------------------------------------------------
@@ -148,25 +165,39 @@ public:
         size_t  m_size;         ///< The space required for the variable, in bytes
         off_t   m_offset;       ///< The offset of the variable in the struct, in bytes
     };
-
+    
+private:
+    typedef std::map <uint64_t, JITVars> JITVarMap;
+    JITVarMap m_jit_vars;
+    
+public:
     //----------------------------------------------------------------------
     /// Make this variable usable for materializing for the JIT by allocating 
     /// space for JIT-specific variables
     //----------------------------------------------------------------------
     void 
-    EnableJITVars()
+    EnableJITVars(uint64_t parser_id)
     {
-        if (!m_jit_vars.get())
-            m_jit_vars.reset(new JITVars);
+        m_jit_vars.insert(std::make_pair(parser_id, JITVars()));
     }
     
     //----------------------------------------------------------------------
     /// Deallocate JIT-specific variables
     //----------------------------------------------------------------------
     void 
-    DisableJITVars()
+    DisableJITVars(uint64_t parser_id)
     {
-        m_jit_vars.reset();
+        m_jit_vars.erase(parser_id);
+    }
+    
+    JITVars *GetJITVars(uint64_t parser_id)
+    {
+        JITVarMap::iterator i = m_jit_vars.find(parser_id);
+        
+        if (i == m_jit_vars.end())
+            return NULL;
+        else
+            return &i->second;
     }
         
     //----------------------------------------------------------------------
@@ -222,9 +253,6 @@ public:
     //----------------------------------------------------------------------
     /// Members
     //----------------------------------------------------------------------
-    std::auto_ptr<ParserVars> m_parser_vars;
-    std::auto_ptr<JITVars> m_jit_vars;
-    
     enum Flags 
     {
         EVNone                  = 0,
@@ -245,7 +273,7 @@ public:
     
     lldb::ValueObjectSP m_frozen_sp;
     lldb::ValueObjectSP m_live_sp;
-private:
+    
     DISALLOW_COPY_AND_ASSIGN (ClangExpressionVariable);
 };
 
@@ -348,13 +376,16 @@ public:
     ///     The variable requested, or NULL if that variable is not in the list.
     //----------------------------------------------------------------------
     lldb::ClangExpressionVariableSP
-    GetVariable (const clang::NamedDecl *decl)
+    GetVariable (const clang::NamedDecl *decl, uint64_t parser_id)
     {
         lldb::ClangExpressionVariableSP var_sp;
         for (size_t index = 0, size = GetSize(); index < size; ++index)
         {
             var_sp = GetVariableAtIndex(index);
-            if (var_sp->m_parser_vars.get() && var_sp->m_parser_vars->m_named_decl == decl)
+            
+            ClangExpressionVariable::ParserVars *parser_vars = var_sp->GetParserVars(parser_id);
+            
+            if (parser_vars && parser_vars->m_named_decl == decl)
                 return var_sp;
         }
         var_sp.reset();

Modified: lldb/branches/windows/include/lldb/Expression/ClangFunction.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Expression/ClangFunction.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Expression/ClangFunction.h (original)
+++ lldb/branches/windows/include/lldb/Expression/ClangFunction.h Wed Apr 17 03:38:48 2013
@@ -132,7 +132,8 @@ public:
     /// @return
     ///     The number of errors.
 	//------------------------------------------------------------------
-    unsigned CompileFunction (Stream &errors);
+    unsigned
+    CompileFunction (Stream &errors);
     
     //------------------------------------------------------------------
 	/// Insert the default function wrapper and its default argument struct  
@@ -152,9 +153,10 @@ public:
     /// @return
     ///     True on success; false otherwise.
 	//------------------------------------------------------------------
-    bool InsertFunction (ExecutionContext &exe_ctx, 
-                         lldb::addr_t &args_addr_ref, 
-                         Stream &errors);
+    bool
+    InsertFunction (ExecutionContext &exe_ctx,
+                    lldb::addr_t &args_addr_ref,
+                    Stream &errors);
 
     //------------------------------------------------------------------
 	/// Insert the default function wrapper (using the JIT)
@@ -246,7 +248,7 @@ public:
     ///     If the timeout expires, true if other threads should run.  If
     ///     the function may try to take locks, this is useful.
     /// 
-    /// @param[in] discard_on_error
+    /// @param[in] unwind_on_error
     ///     If true, and the execution stops before completion, we unwind the
     ///     function call, and return the program state to what it was before the
     ///     execution.  If false, we leave the program in the stopped state.
@@ -272,7 +274,8 @@ public:
                      lldb::addr_t &void_arg, 
                      bool stop_others, 
                      bool try_all_threads,
-                     bool discard_on_error,
+                     bool unwind_on_error,
+                     bool ignore_breakpoints,
                      uint32_t timeout_usec,
                      Stream &errors,
                      lldb::addr_t* this_arg = 0);
@@ -404,7 +407,8 @@ public:
                     bool stop_others, 
                     uint32_t timeout_usec,
                     bool try_all_threads,
-                    bool discard_on_error, 
+                    bool unwind_on_error,
+                    bool ignore_breakpoints,
                     Value &results);
     
     //------------------------------------------------------------------
@@ -426,9 +430,12 @@ public:
     /// @param[in] stop_others
     ///     True if other threads should pause during execution.
     ///
-    /// @param[in] discard_on_error
+    /// @param[in] unwind_on_error
     ///     True if the thread plan may simply be discarded if an error occurs.
     ///
+    /// @param[in] ignore_breakpoints
+    ///     True if the expression execution will ignore breakpoint hits and continue executing.
+    ///
     /// @param[in] this_arg
     ///     If non-NULL (and cmd_arg is NULL), the function is invoked like a C++ 
     ///     method, with the value pointed to by the pointer as its 'this' 
@@ -447,7 +454,8 @@ public:
                                  lldb::addr_t &args_addr_ref, 
                                  Stream &errors, 
                                  bool stop_others, 
-                                 bool discard_on_error,
+                                 bool unwind_on_error,
+                                 bool ignore_breakpoints,
                                  lldb::addr_t *this_arg = 0,
                                  lldb::addr_t *cmd_arg = 0);
     
@@ -470,7 +478,7 @@ public:
     /// @param[in] stop_others
     ///     True if other threads should pause during execution.
     ///
-    /// @param[in] discard_on_error
+    /// @param[in] unwind_on_error
     ///     True if the thread plan may simply be discarded if an error occurs.
     ///
     /// @return
@@ -481,14 +489,16 @@ public:
                                  lldb::addr_t &args_addr_ref, 
                                  Stream &errors, 
                                  bool stop_others, 
-                                 bool discard_on_error = true)
+                                 bool unwind_on_error = true,
+                                 bool ignore_breakpoints = true)
     {
         return ClangFunction::GetThreadPlanToCallFunction (exe_ctx, 
                                                            m_jit_start_addr, 
                                                            args_addr_ref, 
                                                            errors, 
                                                            stop_others, 
-                                                           discard_on_error);
+                                                           unwind_on_error,
+                                                           ignore_breakpoints);
     }
     
     //------------------------------------------------------------------
@@ -599,12 +609,18 @@ public:
         return false;
     }
     
+    ValueList
+    GetArgumentValues () const
+    {
+        return m_arg_values;
+    }
 private:
 	//------------------------------------------------------------------
 	// For ClangFunction only
 	//------------------------------------------------------------------
 
     std::auto_ptr<ClangExpressionParser>    m_parser;               ///< The parser responsible for compiling the function.
+    std::auto_ptr<IRExecutionUnit>          m_execution_unit_ap;
     
     Function                       *m_function_ptr;                 ///< The function we're going to call.  May be NULL if we don't have debug info for the function.
     Address                         m_function_addr;                ///< If we don't have the FunctionSP, we at least need the address & return type.

Modified: lldb/branches/windows/include/lldb/Expression/ClangUserExpression.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Expression/ClangUserExpression.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Expression/ClangUserExpression.h (original)
+++ lldb/branches/windows/include/lldb/Expression/ClangUserExpression.h Wed Apr 17 03:38:48 2013
@@ -26,7 +26,6 @@
 #include "lldb/Expression/ClangExpression.h"
 #include "lldb/Expression/ClangExpressionVariable.h"
 #include "lldb/Expression/IRForTarget.h"
-#include "lldb/Expression/ProcessDataAllocator.h"
 #include "lldb/Symbol/TaggedASTType.h"
 #include "lldb/Target/ExecutionContext.h"
 
@@ -117,11 +116,14 @@ public:
     ///     The execution context to use when looking up entities that
     ///     are needed for parsing (locations of variables, etc.)
     ///
-    /// @param[in] discard_on_error
+    /// @param[in] unwind_on_error
     ///     If true, and the execution stops before completion, we unwind the
     ///     function call, and return the program state to what it was before the
     ///     execution.  If false, we leave the program in the stopped state.
     ///
+    /// @param[in] ignore_breakpoints
+    ///     If true, ignore breakpoints while executing the expression.
+    ///
     /// @param[in] shared_ptr_to_me
     ///     This is a shared pointer to this ClangUserExpression.  This is
     ///     needed because Execute can push a thread plan that will hold onto
@@ -150,7 +152,8 @@ public:
     ExecutionResults
     Execute (Stream &error_stream,
              ExecutionContext &exe_ctx,
-             bool discard_on_error,
+             bool unwind_on_error,
+             bool ignore_breakpoints,
              ClangUserExpressionSP &shared_ptr_to_me,
              lldb::ClangExpressionVariableSP &result,
              bool try_all_threads,
@@ -240,16 +243,6 @@ public:
     }
     
     //------------------------------------------------------------------
-    /// Return the object that the parser should use when registering
-    /// local variables.  May be NULL if the Expression doesn't care.
-    //------------------------------------------------------------------
-    ClangExpressionVariableList *
-    LocalVariables ()
-    {
-        return m_local_variables.get();
-    }
-    
-    //------------------------------------------------------------------
     /// Return the object that the parser should allow to access ASTs.
     /// May be NULL if the ASTs do not need to be transformed.
     ///
@@ -305,10 +298,13 @@ public:
     ///     the expression.  Currently restricted to those languages 
     ///     supported by Clang.
     ///
-    /// @param[in] discard_on_error
+    /// @param[in] unwind_on_error
     ///     True if the thread's state should be restored in the case 
     ///     of an error.
     ///
+    /// @param[in] ignore_breakpoints
+    ///     If true, ignore breakpoints while executing the expression.
+    ///
     /// @param[in] result_type
     ///     If not eResultTypeAny, the type of the desired result.  Will
     ///     result in parse errors if impossible.
@@ -341,7 +337,8 @@ public:
               lldb_private::ExecutionPolicy execution_policy,
               lldb::LanguageType language,
               ResultType desired_type,
-              bool discard_on_error,
+              bool unwind_on_error,
+              bool ignore_breakpoints,
               const char *expr_cstr,
               const char *expr_prefix,
               lldb::ValueObjectSP &result_valobj_sp,
@@ -353,7 +350,8 @@ public:
                        lldb_private::ExecutionPolicy execution_policy,
                        lldb::LanguageType language,
                        ResultType desired_type,
-                       bool discard_on_error,
+                       bool unwind_on_error,
+                       bool ignore_breakpoints,
                        const char *expr_cstr,
                        const char *expr_prefix,
                        lldb::ValueObjectSP &result_valobj_sp,
@@ -422,9 +420,10 @@ private:
     std::string                                 m_transformed_text;     ///< The text of the expression, as send to the parser
     ResultType                                  m_desired_type;         ///< The type to coerce the expression's result to.  If eResultTypeAny, inferred from the expression.
     
-    std::auto_ptr<ClangExpressionDeclMap>       m_expr_decl_map;        ///< The map to use when parsing and materializing the expression.
-    std::auto_ptr<ClangExpressionVariableList>  m_local_variables;      ///< The local expression variables, if the expression is DWARF.
-    std::auto_ptr<ProcessDataAllocator>         m_data_allocator;       ///< The allocator that the parser uses to place strings for use by JIT-compiled code.
+    std::auto_ptr<ClangExpressionDeclMap>       m_expr_decl_map;        ///< The map to use when parsing the expression.
+    
+    std::auto_ptr<IRExecutionUnit>              m_execution_unit_ap;    ///< The execution unit the expression is stored in.
+    std::auto_ptr<Materializer>                 m_materializer_ap;      ///< The materializer to use when running the expression.
     
     std::auto_ptr<ASTResultSynthesizer>         m_result_synthesizer;   ///< The result synthesizer, if one is needed.
     

Modified: lldb/branches/windows/include/lldb/Expression/ClangUtilityFunction.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Expression/ClangUtilityFunction.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Expression/ClangUtilityFunction.h (original)
+++ lldb/branches/windows/include/lldb/Expression/ClangUtilityFunction.h Wed Apr 17 03:38:48 2013
@@ -24,7 +24,6 @@
 #include "lldb/lldb-private.h"
 #include "lldb/Core/ClangForward.h"
 #include "lldb/Expression/ClangExpression.h"
-#include "lldb/Expression/ProcessDataAllocator.h"
 
 namespace lldb_private 
 {
@@ -170,7 +169,7 @@ public:
     
 private:
     std::auto_ptr<ClangExpressionDeclMap>   m_expr_decl_map;    ///< The map to use when parsing and materializing the expression.
-    std::auto_ptr<ProcessDataAllocator>     m_data_allocator;   ///< The allocator for static data used in the expression.
+    std::auto_ptr<IRExecutionUnit>          m_execution_unit_ap;
     
     std::string                             m_function_text;    ///< The text of the function.  Must be a well-formed translation unit.
     std::string                             m_function_name;    ///< The name of the function.

Modified: lldb/branches/windows/include/lldb/Expression/DWARFExpression.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Expression/DWARFExpression.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Expression/DWARFExpression.h (original)
+++ lldb/branches/windows/include/lldb/Expression/DWARFExpression.h Wed Apr 17 03:38:48 2013
@@ -18,7 +18,7 @@
 #include "lldb/Core/Scalar.h"
 
 namespace lldb_private {
-
+    
 class ClangExpressionVariable;
 class ClangExpressionVariableList;
 class ClangExpressionDeclMap;
@@ -58,8 +58,8 @@ public:
     ///     The byte length of the location expression.
     //------------------------------------------------------------------
     DWARFExpression(const DataExtractor& data,
-                    uint32_t data_offset,
-                    uint32_t data_length);
+                    lldb::offset_t data_offset,
+                    lldb::offset_t data_length);
 
     //------------------------------------------------------------------
     /// Copy constructor
@@ -138,21 +138,20 @@ public:
     /// us detect if a variable is a global or static variable since
     /// there is no other indication from DWARF debug info.
     ///
-    /// @param[in] file_addr
-    ///     The file address to search for in the location. 
+    /// @param[in] op_addr_idx
+    ///     The DW_OP_addr index to retrieve in case there is more than
+    ///     one DW_OP_addr opcode in the location byte stream.
     ///
     /// @param[out] error
     ///     If the location stream contains unknown DW_OP opcodes or the
     ///     data is missing, \a error will be set to \b true.
     ///
     /// @return
-    ///     True if IsLocationList() is false and the \a file_addr was
-    ///     is contained in a DW_OP_addr location opcode or if \a file_addr
-    ///     was invalid and there are any DW_OP_addr opcodes, false 
-    ///     otherwise.
+    ///     LLDB_INVALID_ADDRESS if the location doesn't contain a
+    ///     DW_OP_addr for \a op_addr_idx, otherwise a valid file address
     //------------------------------------------------------------------
-    bool
-    LocationContains_DW_OP_addr (lldb::addr_t file_addr, bool &error) const;
+    lldb::addr_t
+    GetLocation_DW_OP_addr (uint32_t op_addr_idx, bool &error) const;
 
     bool
     Update_DW_OP_addr (lldb::addr_t file_addr);
@@ -183,7 +182,7 @@ public:
     ///     The byte length of the location expression.
     //------------------------------------------------------------------
     void
-    SetOpcodeData(const DataExtractor& data, uint32_t data_offset, uint32_t data_length);
+    SetOpcodeData(const DataExtractor& data, lldb::offset_t data_offset, lldb::offset_t data_length);
 
     //------------------------------------------------------------------
     /// Copy the DWARF location expression into a local buffer.
@@ -211,8 +210,8 @@ public:
     //------------------------------------------------------------------
     void
     CopyOpcodeData (const DataExtractor& data,
-                    uint32_t data_offset,
-                    uint32_t data_length);
+                    lldb::offset_t data_offset,
+                    lldb::offset_t data_length);
     
 
     //------------------------------------------------------------------
@@ -339,8 +338,8 @@ public:
               ClangExpressionDeclMap *decl_map,
               RegisterContext *reg_ctx,
               const DataExtractor& opcodes,
-              const uint32_t offset,
-              const uint32_t length,
+              const lldb::offset_t offset,
+              const lldb::offset_t length,
               const uint32_t reg_set,
               const Value* initial_value_ptr,
               Value& result,
@@ -402,16 +401,16 @@ protected:
     //------------------------------------------------------------------
     void
     DumpLocation(Stream *s, 
-                 uint32_t offset, 
-                 uint32_t length, 
+                 lldb::offset_t offset,
+                 lldb::offset_t length,
                  lldb::DescriptionLevel level,
                  ABI *abi) const;
     
     bool
     GetLocation (lldb::addr_t base_addr, 
                  lldb::addr_t pc, 
-                 uint32_t &offset, 
-                 uint32_t &len);
+                 lldb::offset_t &offset, 
+                 lldb::offset_t &len);
 
     //------------------------------------------------------------------
     /// Classes that inherit from DWARFExpression can see and modify these

Modified: lldb/branches/windows/include/lldb/Expression/ExpressionSourceCode.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Expression/ExpressionSourceCode.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Expression/ExpressionSourceCode.h (original)
+++ lldb/branches/windows/include/lldb/Expression/ExpressionSourceCode.h Wed Apr 17 03:38:48 2013
@@ -20,6 +20,8 @@ namespace lldb_private
 class ExpressionSourceCode
 {
 public:
+    static const char * g_expression_prefix;
+
     static ExpressionSourceCode *CreateWrapped (const char *prefix,
                                                 const char *body)
     {

Modified: lldb/branches/windows/include/lldb/Expression/IRForTarget.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Expression/IRForTarget.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Expression/IRForTarget.h (original)
+++ lldb/branches/windows/include/lldb/Expression/IRForTarget.h Wed Apr 17 03:38:48 2013
@@ -14,6 +14,7 @@
 #include "lldb/Core/ConstString.h"
 #include "lldb/Core/Error.h"
 #include "lldb/Core/Stream.h"
+#include "lldb/Core/StreamString.h"
 #include "lldb/Symbol/TaggedASTType.h"
 #include "llvm/Pass.h"
 
@@ -35,6 +36,7 @@ namespace llvm {
 
 namespace lldb_private {
     class ClangExpressionDeclMap;
+    class IRExecutionUnit;
 }
 
 //----------------------------------------------------------------------
@@ -54,14 +56,6 @@ namespace lldb_private {
 class IRForTarget : public llvm::ModulePass
 {
 public:
-    class StaticDataAllocator {
-    public:
-        StaticDataAllocator();
-        virtual ~StaticDataAllocator();
-        virtual lldb_private::StreamString &GetStream() = 0;
-        virtual lldb::addr_t Allocate() = 0;
-    };
-    
     //------------------------------------------------------------------
     /// Constructor
     ///
@@ -84,8 +78,8 @@ public:
     ///     of the function, if it has no side-effects and the result can
     ///     be computed statically.
     ///
-    /// @param[in] data_allocator
-    ///     If non-NULL, the static data allocator to use for literal strings.
+    /// @param[in] execution_unit
+    ///     The holder for raw data associated with the expression.
     ///
     /// @param[in] error_stream
     ///     If non-NULL, a stream on which errors can be printed.
@@ -97,7 +91,7 @@ public:
                 bool resolve_vars,
                 lldb_private::ExecutionPolicy execution_policy,
                 lldb::ClangExpressionVariableSP &const_result,
-                StaticDataAllocator *data_allocator,
+                lldb_private::IRExecutionUnit &execution_unit,
                 lldb_private::Stream *error_stream,
                 const char* func_name = "$__lldb_expr");
     
@@ -653,6 +647,20 @@ private:
     bool
     StripAllGVs (llvm::Module &llvm_module);
     
+    class StaticDataAllocator {
+    public:
+        StaticDataAllocator(lldb_private::IRExecutionUnit &execution_unit);
+        lldb_private::StreamString &GetStream()
+        {
+            return m_stream_string;
+        }
+        lldb::addr_t Allocate();
+    private:
+        lldb_private::IRExecutionUnit  &m_execution_unit;
+        lldb_private::StreamString      m_stream_string;
+        lldb::addr_t                    m_allocation;
+    };
+    
     /// Flags
     bool                                    m_resolve_vars;             ///< True if external variable references and persistent variable references should be resolved
     lldb_private::ExecutionPolicy           m_execution_policy;         ///< True if the interpreter should be used to attempt to get a static result
@@ -663,7 +671,7 @@ private:
     llvm::Module                           *m_module;                   ///< The module being processed, or NULL if that has not been determined yet.
     std::auto_ptr<llvm::DataLayout>         m_target_data;              ///< The target data for the module being processed, or NULL if there is no module.
     lldb_private::ClangExpressionDeclMap   *m_decl_map;                 ///< The DeclMap containing the Decls 
-    StaticDataAllocator                    *m_data_allocator;           ///< If non-NULL, the allocator to use for constant strings
+    StaticDataAllocator                     m_data_allocator;           ///< The allocator to use for constant strings
     llvm::Constant                         *m_CFStringCreateWithBytes;  ///< The address of the function CFStringCreateWithBytes, cast to the appropriate function pointer type
     llvm::Constant                         *m_sel_registerName;         ///< The address of the function sel_registerName, cast to the appropriate function pointer type
     lldb::ClangExpressionVariableSP        &m_const_result;             ///< This value should be set to the return value of the expression if it is constant and the expression has no side effects

Copied: lldb/branches/windows/include/lldb/Expression/IRMemoryMap.h (from r179594, lldb/trunk/include/lldb/Expression/IRMemoryMap.h)
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Expression/IRMemoryMap.h?p2=lldb/branches/windows/include/lldb/Expression/IRMemoryMap.h&p1=lldb/trunk/include/lldb/Expression/IRMemoryMap.h&r1=179594&r2=179679&rev=179679&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Expression/IRMemoryMap.h (original)
+++ lldb/branches/windows/include/lldb/Expression/IRMemoryMap.h Wed Apr 17 03:38:48 2013
@@ -87,6 +87,10 @@ private:
         std::unique_ptr<DataBufferHeap> m_data;
         
         AllocationPolicy    m_policy;
+		Allocation() {}
+		Allocation(const Allocation&) {}
+	private:
+		Allocation& operator=(const Allocation&) { return *this; }
     };
     
     lldb::ProcessWP                             m_process_wp;

Removed: lldb/branches/windows/include/lldb/Expression/ProcessDataAllocator.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Expression/ProcessDataAllocator.h?rev=179678&view=auto
==============================================================================
--- lldb/branches/windows/include/lldb/Expression/ProcessDataAllocator.h (original)
+++ lldb/branches/windows/include/lldb/Expression/ProcessDataAllocator.h (removed)
@@ -1,72 +0,0 @@
-//===-- ProcessDataAllocator.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_ProcessDataAllocator_h_
-#define liblldb_ProcessDataAllocator_h_
-
-#include "lldb/lldb-forward.h"
-#include "lldb/lldb-private.h"
-#include "lldb/Expression/IRForTarget.h"
-#include "lldb/Target/Process.h"
-
-namespace lldb_private 
-{
-
-class ProcessDataAllocator : public IRForTarget::StaticDataAllocator {
-public:
-    ProcessDataAllocator(Process &process) : 
-        IRForTarget::StaticDataAllocator(),
-        m_process(process),
-        m_stream_string(StreamString::eBinary, process.GetAddressByteSize(), process.GetByteOrder()),
-        m_allocation(0)
-    {
-    }
-    
-    ~ProcessDataAllocator()
-    {
-        if (m_allocation)
-            m_process.DeallocateMemory(m_allocation);
-    }
-    
-    lldb_private::StreamString &GetStream()
-    {
-        return m_stream_string;
-    }
-    
-    lldb::addr_t Allocate()
-    {
-        Error err;
-        
-        if (m_allocation)
-            m_process.DeallocateMemory(m_allocation);
-        
-        m_allocation = m_process.AllocateMemory(m_stream_string.GetSize(), lldb::ePermissionsReadable | lldb::ePermissionsWritable, err);
-        
-        if (!err.Success())
-            return 0;
-        
-        if (m_allocation)
-            m_process.WriteMemory(m_allocation, m_stream_string.GetData(), m_stream_string.GetSize(), err);
-        
-        if (!err.Success())
-            return 0;
-        
-        return m_allocation;
-    }
-    
-    void Dump(lldb_private::Stream &stream);
-private:
-    Process        &m_process;
-    StreamString    m_stream_string;
-    lldb::addr_t    m_allocation;
-};
-    
-} // namespace lldb_private
-
-#endif

Removed: lldb/branches/windows/include/lldb/Expression/RecordingMemoryManager.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Expression/RecordingMemoryManager.h?rev=179678&view=auto
==============================================================================
--- lldb/branches/windows/include/lldb/Expression/RecordingMemoryManager.h (original)
+++ lldb/branches/windows/include/lldb/Expression/RecordingMemoryManager.h (removed)
@@ -1,424 +0,0 @@
-//===-- RecordingMemoryManager.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_RecordingMemoryManager_h_
-#define lldb_RecordingMemoryManager_h_
-
-// C Includes
-// C++ Includes
-#include <string>
-#include <vector>
-#include <map>
-
-// Other libraries and framework includes
-// Project includes
-#include "lldb/lldb-forward.h"
-#include "lldb/lldb-private.h"
-#include "lldb/Core/ClangForward.h"
-#include "lldb/Core/Log.h"
-#include "llvm/ExecutionEngine/JITMemoryManager.h"
-#include "lldb/Expression/ClangExpression.h"
-#include "lldb/Expression/ClangExpressionParser.h"
-
-namespace lldb_private {
-
-//----------------------------------------------------------------------
-/// @class RecordingMemoryManager RecordingMemoryManager.h "lldb/Expression/RecordingMemoryManager.h"
-/// @brief Passthrough memory manager for the JIT that records what was allocated where
-///
-/// The LLVM JIT is built to compile code for execution in the current
-/// process, so it needs to be able to allocate memory.  Because different
-/// clients have different requirements for the locations of JIT compiled
-/// code, the interface for allocating memory has been abstracted out and
-/// can be implemented by any client.
-///
-/// LLDB, however, needs to move JIT-compiled code into the target process.
-/// Because writing individual bytes of code hasn't been abstracted out of
-/// the JIT, LLDB instead implements a custom memory allocator that records 
-/// what regions have been allocated for code.  When JIT compilation is
-/// complete, these regions are then copied as necessary into the target
-/// process.
-///
-/// Ideally the memory manager would handle this copying, but this class has 
-/// to be built without RTTI, which means it cannot include Process.h.  As a
-/// result, ClangExpression::WriteJITCode() accesses the stored mappings 
-/// directly.
-//----------------------------------------------------------------------
-class RecordingMemoryManager : public llvm::JITMemoryManager
-{
-public:
-    //------------------------------------------------------------------
-    /// Constructor
-    //------------------------------------------------------------------
-    RecordingMemoryManager ();
-    
-    //------------------------------------------------------------------
-    /// Destructor
-    //------------------------------------------------------------------
-    virtual ~RecordingMemoryManager();
-
-    //------------------------------------------------------------------
-    /// Passthrough interface stub
-    //------------------------------------------------------------------
-    virtual void setMemoryWritable ();
-
-    //------------------------------------------------------------------
-    /// Passthrough interface stub
-    //------------------------------------------------------------------
-    virtual void setMemoryExecutable ();
-
-    //------------------------------------------------------------------
-    /// Passthrough interface stub
-    //------------------------------------------------------------------
-    virtual void setPoisonMemory (bool poison)
-    {
-        m_default_mm_ap->setPoisonMemory (poison);
-    }
-
-    //------------------------------------------------------------------
-    /// Passthrough interface stub
-    //------------------------------------------------------------------
-    virtual void AllocateGOT()
-    {
-        m_default_mm_ap->AllocateGOT();
-    }
-
-    //------------------------------------------------------------------
-    /// Passthrough interface stub
-    //------------------------------------------------------------------
-    virtual uint8_t *getGOTBase() const
-    {
-        return m_default_mm_ap->getGOTBase();
-    }
-
-    //------------------------------------------------------------------
-    /// Passthrough interface stub
-    //------------------------------------------------------------------
-    virtual uint8_t *startFunctionBody(const llvm::Function *F,
-                                       uintptr_t &ActualSize);
-
-    //------------------------------------------------------------------
-    /// Allocate room for a dyld stub for a lazy-referenced function,
-    /// and add it to the m_stubs map
-    ///
-    /// @param[in] F
-    ///     The function being referenced.
-    ///
-    /// @param[in] StubSize
-    ///     The size of the stub.
-    ///
-    /// @param[in] Alignment
-    ///     The required alignment of the stub.
-    ///
-    /// @return
-    ///     Allocated space for the stub.
-    //------------------------------------------------------------------
-    virtual uint8_t *allocateStub(const llvm::GlobalValue* F, 
-                                  unsigned StubSize,
-                                  unsigned Alignment);
-
-    //------------------------------------------------------------------
-    /// Complete the body of a function, and add it to the m_functions map
-    ///
-    /// @param[in] F
-    ///     The function being completed.
-    ///
-    /// @param[in] FunctionStart
-    ///     The first instruction of the function.
-    ///
-    /// @param[in] FunctionEnd
-    ///     The last byte of the last instruction of the function.
-    //------------------------------------------------------------------
-    virtual void endFunctionBody(const llvm::Function *F, 
-                                 uint8_t *FunctionStart,
-                                 uint8_t *FunctionEnd);
-    //------------------------------------------------------------------
-    /// Allocate space for an unspecified purpose, and add it to the
-    /// m_spaceBlocks map
-    ///
-    /// @param[in] Size
-    ///     The size of the area.
-    ///
-    /// @param[in] Alignment
-    ///     The required alignment of the area.
-    ///
-    /// @return
-    ///     Allocated space.
-    //------------------------------------------------------------------
-    virtual uint8_t *allocateSpace(intptr_t Size, unsigned Alignment);
-    
-    //------------------------------------------------------------------
-    /// Allocate space for executable code, and add it to the 
-    /// m_spaceBlocks map
-    ///
-    /// @param[in] Size
-    ///     The size of the area.
-    ///
-    /// @param[in] Alignment
-    ///     The required alignment of the area.
-    ///
-    /// @param[in] SectionID
-    ///     A unique identifier for the section.
-    ///
-    /// @return
-    ///     Allocated space.
-    //------------------------------------------------------------------
-    virtual uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment,
-                                         unsigned SectionID);
-    
-    //------------------------------------------------------------------
-    /// Allocate space for data, and add it to the m_spaceBlocks map
-    ///
-    /// @param[in] Size
-    ///     The size of the area.
-    ///
-    /// @param[in] Alignment
-    ///     The required alignment of the area.
-    ///
-    /// @param[in] SectionID
-    ///     A unique identifier for the section.
-    ///
-    /// @param[in] IsReadOnly
-    ///     Flag indicating the section is read-only.
-    ///
-    /// @return
-    ///     Allocated space.
-    //------------------------------------------------------------------
-    virtual uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment,
-                                         unsigned SectionID, bool IsReadOnly);
-
-    //------------------------------------------------------------------
-    /// Allocate space for a global variable, and add it to the
-    /// m_spaceBlocks map
-    ///
-    /// @param[in] Size
-    ///     The size of the variable.
-    ///
-    /// @param[in] Alignment
-    ///     The required alignment of the variable.
-    ///
-    /// @return
-    ///     Allocated space for the global.
-    //------------------------------------------------------------------
-    virtual uint8_t *allocateGlobal(uintptr_t Size, 
-                                    unsigned Alignment);
-
-    //------------------------------------------------------------------
-    /// Called when object loading is complete and section page
-    /// permissions can be applied. Currently unimplemented for LLDB.
-    ///
-    /// @param[out] ErrMsg
-    ///     The error that prevented the page protection from succeeding.
-    ///
-    /// @return
-    ///     True in case of failure, false in case of success.
-    //------------------------------------------------------------------
-    bool applyPermissions(std::string *ErrMsg) { return false; }
-
-    //------------------------------------------------------------------
-    /// Passthrough interface stub
-    //------------------------------------------------------------------
-    virtual void deallocateFunctionBody(void *Body);
-
-    //------------------------------------------------------------------
-    /// Passthrough interface stub
-    //------------------------------------------------------------------
-    virtual uint8_t* startExceptionTable(const llvm::Function* F,
-                                         uintptr_t &ActualSize);
-
-    //------------------------------------------------------------------
-    /// Complete the exception table for a function, and add it to the
-    /// m_exception_tables map
-    ///
-    /// @param[in] F
-    ///     The function whose exception table is being written.
-    ///
-    /// @param[in] TableStart
-    ///     The first byte of the exception table.
-    ///
-    /// @param[in] TableEnd
-    ///     The last byte of the exception table.
-    ///
-    /// @param[in] FrameRegister
-    ///     I don't know what this does, but it's passed through.
-    //------------------------------------------------------------------
-    virtual void endExceptionTable(const llvm::Function *F, 
-                                   uint8_t *TableStart,
-                                   uint8_t *TableEnd, 
-                                   uint8_t* FrameRegister);
-
-    //------------------------------------------------------------------
-    /// Passthrough interface stub
-    //------------------------------------------------------------------
-    virtual void deallocateExceptionTable(void *ET);
-
-    //------------------------------------------------------------------
-    /// Passthrough interface stub
-    //------------------------------------------------------------------
-    virtual size_t GetDefaultCodeSlabSize() {
-        return m_default_mm_ap->GetDefaultCodeSlabSize();
-    }
-
-    //------------------------------------------------------------------
-    /// Passthrough interface stub
-    //------------------------------------------------------------------
-    virtual size_t GetDefaultDataSlabSize() {
-        return m_default_mm_ap->GetDefaultDataSlabSize();
-    }
-
-    virtual size_t GetDefaultStubSlabSize() {
-        return m_default_mm_ap->GetDefaultStubSlabSize();
-    }
-
-    //------------------------------------------------------------------
-    /// Passthrough interface stub
-    //------------------------------------------------------------------
-    virtual unsigned GetNumCodeSlabs() {
-        return m_default_mm_ap->GetNumCodeSlabs();
-    }
-
-    //------------------------------------------------------------------
-    /// Passthrough interface stub
-    //------------------------------------------------------------------
-    virtual unsigned GetNumDataSlabs() {
-        return m_default_mm_ap->GetNumDataSlabs();
-    }
-
-    //------------------------------------------------------------------
-    /// Passthrough interface stub
-    //------------------------------------------------------------------
-    virtual unsigned GetNumStubSlabs() {
-        return m_default_mm_ap->GetNumStubSlabs();
-    }
-    
-    //------------------------------------------------------------------
-    /// Passthrough interface stub
-    //------------------------------------------------------------------
-    virtual void *getPointerToNamedFunction(const std::string &Name,
-                                            bool AbortOnFailure = true) {
-        return m_default_mm_ap->getPointerToNamedFunction(Name, AbortOnFailure);
-    }
-
-    //------------------------------------------------------------------
-    /// [Convenience method for ClangExpressionParser] Look up the object in
-    /// m_address_map that contains a given address, find where it was
-    /// copied to, and return the remote address at the same offset into
-    /// the copied entity
-    ///
-    /// @param[in] local_address
-    ///     The address in the debugger.
-    ///
-    /// @return
-    ///     The address in the target process.
-    //------------------------------------------------------------------
-    lldb::addr_t
-    GetRemoteAddressForLocal (lldb::addr_t local_address);
-    
-    //------------------------------------------------------------------
-    /// [Convenience method for ClangExpressionParser] Look up the object in
-    /// m_address_map that contains a given address, find where it was
-    /// copied to, and return its address range in the target process
-    ///
-    /// @param[in] local_address
-    ///     The address in the debugger.
-    ///
-    /// @return
-    ///     The range of the containing object in the target process.
-    //------------------------------------------------------------------
-    typedef std::pair <lldb::addr_t, uintptr_t> AddrRange;
-    AddrRange
-    GetRemoteRangeForLocal (lldb::addr_t local_address);
-    
-    //------------------------------------------------------------------
-    /// [Convenience method for ClangExpressionParser] Commit all allocations
-    /// to the process and record where they were stored.
-    ///
-    /// @param[in] process
-    ///     The process to allocate memory in.
-    ///
-    /// @return
-    ///     True <=> all allocations were performed successfully.
-    ///     This method will attempt to free allocated memory if the
-    ///     operation fails.
-    //------------------------------------------------------------------
-    bool
-    CommitAllocations (Process &process);
-    
-    //------------------------------------------------------------------
-    /// [Convenience method for ClangExpressionParser] Report all committed
-    /// allocations to the execution engine.
-    ///
-    /// @param[in] engine
-    ///     The execution engine to notify.
-    //------------------------------------------------------------------
-    void
-    ReportAllocations (llvm::ExecutionEngine &engine);
-    
-    //------------------------------------------------------------------
-    /// [Convenience method for ClangExpressionParser] Write the contents
-    /// of all allocations to the process. 
-    ///
-    /// @param[in] local_address
-    ///     The process containing the allocations.
-    ///
-    /// @return
-    ///     True <=> all allocations were performed successfully.
-    //------------------------------------------------------------------
-    bool
-    WriteData (Process &process);
-private:
-    std::auto_ptr<JITMemoryManager> m_default_mm_ap;    ///< The memory allocator to use in actually creating space.  All calls are passed through to it.
-    
-    lldb::LogSP m_log; ///< The log to use when printing log messages.  May be NULL.
-
-    //----------------------------------------------------------------------
-    /// @class Allocation RecordingMemoryManager.h "lldb/Expression/RecordingMemoryManager.h"
-    /// @brief A record of a region that has been allocated by the JIT.
-    ///
-    /// The RecordingMemoryManager makes records of all regions that need copying;
-    /// upon requests, it allocates and 
-    //----------------------------------------------------------------------
-    struct Allocation
-    {
-        lldb::addr_t    m_remote_allocation;///< The (unaligned) base for the remote allocation
-        lldb::addr_t    m_remote_start;     ///< The base address of the remote allocation
-        uintptr_t       m_local_start;      ///< The base address of the local allocation
-        uintptr_t       m_size;             ///< The size of the allocation
-        unsigned        m_section_id;       ///< The ID of the section
-        unsigned        m_alignment;        ///< The required alignment for the allocation
-        bool            m_executable;       ///< True <=> the allocation must be executable in the target
-        bool            m_allocated;        ///< True <=> the allocation has been propagated to the target
-
-        static const unsigned eSectionIDNone = (unsigned)-1;
-        
-        //------------------------------------------------------------------
-        /// Constructor
-        //------------------------------------------------------------------
-        Allocation () :
-            m_remote_allocation(0),
-            m_remote_start(0),
-            m_local_start(0),
-            m_size(0),
-            m_section_id(eSectionIDNone),
-            m_alignment(0),
-            m_executable(false),
-            m_allocated(false)
-        {
-        }
-        
-        void dump (lldb::LogSP log);
-    };
-
-    typedef std::vector<Allocation> AllocationList;
-    AllocationList                  m_allocations;  ///< The base address of the remote allocation
-};
-
-} // namespace lldb_private
-
-#endif  // lldb_RecordingMemoryManager_h_

Modified: lldb/branches/windows/include/lldb/Host/File.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Host/File.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Host/File.h (original)
+++ lldb/branches/windows/include/lldb/Host/File.h Wed Apr 17 03:38:48 2013
@@ -457,10 +457,10 @@ public:
     ///     Variable arguments that are needed for the printf style
     ///     format string \a format.
     //------------------------------------------------------------------
-    int
+    size_t
     Printf (const char *format, ...)  LLDB_ATTR(__attribute__ ((format (printf, 2, 3))));
     
-    int
+    size_t
     PrintfVarArg(const char *format, va_list args);
 
 protected:

Modified: lldb/branches/windows/include/lldb/Host/Host.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Host/Host.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Host/Host.h (original)
+++ lldb/branches/windows/include/lldb/Host/Host.h Wed Apr 17 03:38:48 2013
@@ -13,6 +13,8 @@
 
 #include <stdarg.h>
 
+#include <string>
+
 #include "lldb/lldb-private.h"
 #include "lldb/Core/StringList.h"
 
@@ -98,6 +100,16 @@ public:
     static lldb::ByteOrder
     GetByteOrder ();
 
+    //------------------------------------------------------------------
+    /// Returns the number of CPUs on this current host.
+    ///
+    /// @return
+    ///     Number of CPUs on this current host, or zero if the number
+    ///     of CPUs can't be determined on this host.
+    //------------------------------------------------------------------
+    static uint32_t
+    GetNumberCPUS ();
+
     static bool
     GetOSVersion (uint32_t &major, 
                   uint32_t &minor, 
@@ -266,11 +278,9 @@ public:
     ///     The thread ID for which we are trying retrieve the name of.
     ///
     /// @return
-    ///     A NULL terminate C string name that is owned by a static
-    ///     global string pool, or NULL if there is no matching thread
-    ///     name. This string does not need to be freed.
+    ///     A std::string containing the thread name.
     //------------------------------------------------------------------
-    static const char *
+    static std::string
     GetThreadName (lldb::pid_t pid, lldb::tid_t tid);
 
     //------------------------------------------------------------------

Modified: lldb/branches/windows/include/lldb/Host/ReadWriteLock.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Host/ReadWriteLock.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Host/ReadWriteLock.h (original)
+++ lldb/branches/windows/include/lldb/Host/ReadWriteLock.h Wed Apr 17 03:38:48 2013
@@ -11,7 +11,7 @@
 #define liblldb_ReadWriteLock_h_
 #if defined(__cplusplus)
 
-#if defined(WIN32)
+#if defined(_WIN32)
 #include "lldb/lldb-defines.h"
 #include <Windows.h>
 #undef interface

Modified: lldb/branches/windows/include/lldb/Host/TimeValue.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Host/TimeValue.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Host/TimeValue.h (original)
+++ lldb/branches/windows/include/lldb/Host/TimeValue.h Wed Apr 17 03:38:48 2013
@@ -67,10 +67,8 @@ public:
     uint64_t
     GetAsSecondsSinceJan1_1970() const;
 
-#ifdef _POSIX_SOURCE
     struct timespec
     GetAsTimeSpec () const;
-#endif
 
     struct timeval
     GetAsTimeVal () const;

Modified: lldb/branches/windows/include/lldb/Interpreter/Args.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Interpreter/Args.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Interpreter/Args.h (original)
+++ lldb/branches/windows/include/lldb/Interpreter/Args.h Wed Apr 17 03:38:48 2013
@@ -265,7 +265,7 @@ public:
     //  FIXME: Handle the quote character somehow.
     //------------------------------------------------------------------
     void
-    SetArguments (int argc, const char **argv);
+    SetArguments (size_t argc, const char **argv);
 
     void
     SetArguments (const char **argv);
@@ -339,6 +339,12 @@ public:
     void
     Clear ();
 
+    static const char *
+    StripSpaces (std::string &s,
+                 bool leading = true,
+                 bool trailing = true,
+                 bool return_null_if_empty = true);
+
     static int32_t
     StringToSInt32 (const char *s, int32_t fail_value = 0, int base = 0, bool *success_ptr = NULL);
 
@@ -387,7 +393,7 @@ public:
     static bool
     StringToBoolean (const char *s, bool fail_value, bool *success_ptr);
     
-    static int32_t
+    static int64_t
     StringToOptionEnum (const char *s, OptionEnumValueElement *enum_values, int32_t fail_value, Error &error);
 
     static lldb::ScriptLanguage
@@ -396,7 +402,7 @@ public:
     static Error
     StringToFormat (const char *s,
                     lldb::Format &format,
-                    uint32_t *byte_size_ptr); // If non-NULL, then a byte size can precede the format character
+                    size_t *byte_size_ptr); // If non-NULL, then a byte size can precede the format character
 
     static lldb::Encoding
     StringToEncoding (const char *s,

Modified: lldb/branches/windows/include/lldb/Interpreter/CommandInterpreter.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Interpreter/CommandInterpreter.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Interpreter/CommandInterpreter.h (original)
+++ lldb/branches/windows/include/lldb/Interpreter/CommandInterpreter.h Wed Apr 17 03:38:48 2013
@@ -114,6 +114,9 @@ public:
 
     bool
     RemoveAlias (const char *alias_name);
+    
+    bool
+    GetAliasFullName (const char *cmd, std::string &full_name);
 
     bool
     RemoveUser (const char *alias_name);
@@ -278,7 +281,7 @@ public:
                              const char *command_word,
                              const char *separator,
                              const char *help_text,
-                             uint32_t max_word_len);
+                             size_t max_word_len);
     
     // this mimics OutputFormattedHelpText but it does perform a much simpler
     // formatting, basically ensuring line alignment. This is only good if you have
@@ -335,10 +338,6 @@ public:
     Initialize ();
 
     void
-    CrossRegisterCommand (const char *dest_cmd, 
-                          const char *object_type);
-
-    void
     SetScriptLanguage (lldb::ScriptLanguage lang);
 
 
@@ -436,6 +435,9 @@ public:
     bool
     GetExpandRegexAliases () const;
     
+    bool
+    GetPromptOnQuit () const;
+
 protected:
     friend class Debugger;
 

Modified: lldb/branches/windows/include/lldb/Interpreter/CommandObject.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Interpreter/CommandObject.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Interpreter/CommandObject.h (original)
+++ lldb/branches/windows/include/lldb/Interpreter/CommandObject.h Wed Apr 17 03:38:48 2013
@@ -20,6 +20,8 @@
 #include "lldb/Interpreter/CommandCompletions.h"
 #include "lldb/Core/StringList.h"
 #include "lldb/Core/Flags.h"
+#include "lldb/Host/Mutex.h"
+#include "lldb/Target/ExecutionContext.h"
 
 namespace lldb_private {
 
@@ -122,12 +124,6 @@ public:
 
     void
     SetSyntax (const char *str);
-
-    virtual void
-    AddObject (const char *obj_name) {}
-
-    virtual bool
-    IsCrossRefObject () { return false; }
     
     // override this to return true if you want to enable the user to delete
     // the Command object from the Command dictionary (aliases have their own
@@ -224,15 +220,91 @@ public:
     bool
     IsPairType (ArgumentRepetitionType arg_repeat_type);
     
-    enum 
+    enum
     {
-        eFlagProcessMustBeLaunched = (1 << 0),
-        eFlagProcessMustBePaused = (1 << 1)
+        //----------------------------------------------------------------------
+        // eFlagRequiresTarget
+        //
+        // Ensures a valid target is contained in m_exe_ctx prior to executing
+        // the command. If a target doesn't exist or is invalid, the command
+        // will fail and CommandObject::GetInvalidTargetDescription() will be
+        // returned as the error. CommandObject subclasses can override the
+        // virtual function for GetInvalidTargetDescription() to provide custom
+        // strings when needed.
+        //----------------------------------------------------------------------
+        eFlagRequiresTarget         = (1u << 0),
+        //----------------------------------------------------------------------
+        // eFlagRequiresProcess
+        //
+        // Ensures a valid process is contained in m_exe_ctx prior to executing
+        // the command. If a process doesn't exist or is invalid, the command
+        // will fail and CommandObject::GetInvalidProcessDescription() will be
+        // returned as the error. CommandObject subclasses can override the
+        // virtual function for GetInvalidProcessDescription() to provide custom
+        // strings when needed.
+        //----------------------------------------------------------------------
+        eFlagRequiresProcess        = (1u << 1),
+        //----------------------------------------------------------------------
+        // eFlagRequiresThread
+        //
+        // Ensures a valid thread is contained in m_exe_ctx prior to executing
+        // the command. If a thread doesn't exist or is invalid, the command
+        // will fail and CommandObject::GetInvalidThreadDescription() will be
+        // returned as the error. CommandObject subclasses can override the
+        // virtual function for GetInvalidThreadDescription() to provide custom
+        // strings when needed.
+        //----------------------------------------------------------------------
+        eFlagRequiresThread         = (1u << 2),
+        //----------------------------------------------------------------------
+        // eFlagRequiresFrame
+        //
+        // Ensures a valid frame is contained in m_exe_ctx prior to executing
+        // the command. If a frame doesn't exist or is invalid, the command
+        // will fail and CommandObject::GetInvalidFrameDescription() will be
+        // returned as the error. CommandObject subclasses can override the
+        // virtual function for GetInvalidFrameDescription() to provide custom
+        // strings when needed.
+        //----------------------------------------------------------------------
+        eFlagRequiresFrame          = (1u << 3),
+        //----------------------------------------------------------------------
+        // eFlagRequiresRegContext
+        //
+        // Ensures a valid register context (from the selected frame if there
+        // is a frame in m_exe_ctx, or from the selected thread from m_exe_ctx)
+        // is availble from m_exe_ctx prior to executing the command. If a
+        // target doesn't exist or is invalid, the command will fail and
+        // CommandObject::GetInvalidRegContextDescription() will be returned as
+        // the error. CommandObject subclasses can override the virtual function
+        // for GetInvalidRegContextDescription() to provide custom strings when
+        // needed.
+        //----------------------------------------------------------------------
+        eFlagRequiresRegContext     = (1u << 4),
+        //----------------------------------------------------------------------
+        // eFlagTryTargetAPILock
+        //
+        // Attempts to acquire the target lock if a target is selected in the
+        // command interpreter. If the command object fails to acquire the API
+        // lock, the command will fail with an appropriate error message.
+        //----------------------------------------------------------------------
+        eFlagTryTargetAPILock       = (1u << 5),
+        //----------------------------------------------------------------------
+        // eFlagProcessMustBeLaunched
+        //
+        // Verifies that there is a launched process in m_exe_ctx, if there
+        // isn't, the command will fail with an appropriate error message.
+        //----------------------------------------------------------------------
+        eFlagProcessMustBeLaunched  = (1u << 6),
+        //----------------------------------------------------------------------
+        // eFlagProcessMustBePaused
+        //
+        // Verifies that there is a paused process in m_exe_ctx, if there
+        // isn't, the command will fail with an appropriate error message.
+        //----------------------------------------------------------------------
+        eFlagProcessMustBePaused    = (1u << 7)
     };
 
     bool
-    ParseOptions (Args& args,
-                  CommandReturnObject &result);
+    ParseOptions (Args& args, CommandReturnObject &result);
 
     void
     SetCommandName (const char *name);
@@ -331,7 +403,7 @@ public:
     /// total number of matches, and the window the user wants returned.
     ///
     /// @return
-    ///     \btrue if we were in an option, \bfalse otherwise.
+    ///     The number of completions.
     //------------------------------------------------------------------
 
     virtual int
@@ -375,19 +447,6 @@ public:
     }
     
     //------------------------------------------------------------------
-    /// Check the command flags against the interpreter's current execution context.
-    ///
-    /// @param[out] result
-    ///     A command result object, if it is not okay to run the command this will be
-    ///     filled in with a suitable error.
-    ///
-    /// @return
-    ///     \b true if it is okay to run this command, \b false otherwise.
-    //------------------------------------------------------------------
-    bool
-    CheckFlags (CommandReturnObject &result);
-    
-    //------------------------------------------------------------------
     /// Get the command that appropriate for a "repeat" of the current command.
     ///
     /// @param[in] current_command_line
@@ -426,7 +485,56 @@ public:
     Execute (const char *args_string, CommandReturnObject &result) = 0;
 
 protected:
+    virtual const char *
+    GetInvalidTargetDescription()
+    {
+        return "invalid target, create a target using the 'target create' command";
+    }
+
+    virtual const char *
+    GetInvalidProcessDescription()
+    {
+        return "invalid process";
+    }
+
+    virtual const char *
+    GetInvalidThreadDescription()
+    {
+        return "invalid thread";
+    }
+    
+    virtual const char *
+    GetInvalidFrameDescription()
+    {
+        return "invalid frame";
+    }
+    
+    virtual const char *
+    GetInvalidRegContextDescription ()
+    {
+        return "invalid frame, no registers";
+    }
+
+    //------------------------------------------------------------------
+    /// Check the command to make sure anything required by this
+    /// command is available.
+    ///
+    /// @param[out] result
+    ///     A command result object, if it is not okay to run the command
+    ///     this will be filled in with a suitable error.
+    ///
+    /// @return
+    ///     \b true if it is okay to run this command, \b false otherwise.
+    //------------------------------------------------------------------
+    bool
+    CheckRequirements (CommandReturnObject &result);
+    
+    void
+    Cleanup ();
+
     CommandInterpreter &m_interpreter;
+    ExecutionContext m_exe_ctx;
+    Mutex::Locker m_api_locker;
     std::string m_cmd_name;
     std::string m_cmd_help_short;
     std::string m_cmd_help_long;

Removed: lldb/branches/windows/include/lldb/Interpreter/CommandObjectCrossref.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Interpreter/CommandObjectCrossref.h?rev=179678&view=auto
==============================================================================
--- lldb/branches/windows/include/lldb/Interpreter/CommandObjectCrossref.h (original)
+++ lldb/branches/windows/include/lldb/Interpreter/CommandObjectCrossref.h (removed)
@@ -1,60 +0,0 @@
-//===-- CommandObjectCrossref.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_CommandObjectCrossref_h_
-#define liblldb_CommandObjectCrossref_h_
-
-// C Includes
-// C++ Includes
-// Other libraries and framework includes
-// Project includes
-#include "lldb/Interpreter/CommandObject.h"
-#include "lldb/Interpreter/Args.h"
-
-namespace lldb_private {
-
-//-------------------------------------------------------------------------
-// CommandObjectCrossref
-//-------------------------------------------------------------------------
-
-class CommandObjectCrossref : public CommandObjectParsed
-{
-public:
-    CommandObjectCrossref (CommandInterpreter &interpreter,
-                           const char *name,
-                           const char *help = NULL,
-                           const char *syntax = NULL);
-    
-    virtual
-    ~CommandObjectCrossref ();
-
-    virtual void
-    GenerateHelpText (CommandReturnObject &result);
-
-    virtual bool
-    IsCrossRefObject ();
-
-    virtual void
-    AddObject (const char *obj_name);
-
-    const char **
-    GetObjectTypes () const;
-
-protected:
-    virtual bool
-    DoExecute (Args& command,
-             CommandReturnObject &result);
-
-private:
-    Args m_crossref_object_types;
-};
-
-} // namespace lldb_private
-
-#endif  // liblldb_CommandObjectCrossref_h_

Modified: lldb/branches/windows/include/lldb/Interpreter/CommandObjectMultiword.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Interpreter/CommandObjectMultiword.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Interpreter/CommandObjectMultiword.h (original)
+++ lldb/branches/windows/include/lldb/Interpreter/CommandObjectMultiword.h Wed Apr 17 03:38:48 2013
@@ -115,12 +115,6 @@ public:
     virtual const char *
     GetHelpLong ();
     
-    virtual void
-    AddObject (const char *obj_name);
-
-    virtual bool
-    IsCrossRefObject ();
-
     virtual bool
     IsRemovable() const;
 

Modified: lldb/branches/windows/include/lldb/Interpreter/CommandObjectRegexCommand.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Interpreter/CommandObjectRegexCommand.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Interpreter/CommandObjectRegexCommand.h (original)
+++ lldb/branches/windows/include/lldb/Interpreter/CommandObjectRegexCommand.h Wed Apr 17 03:38:48 2013
@@ -33,7 +33,8 @@ public:
                                const char *name, 
                                const char *help, 
                                const char *syntax, 
-                               uint32_t max_matches);
+                               uint32_t max_matches,
+                               uint32_t completion_type_mask = 0);
     
     virtual
     ~CommandObjectRegexCommand ();
@@ -46,6 +47,15 @@ public:
     {
         return !m_entries.empty();
     }
+    
+    virtual int
+    HandleCompletion (Args &input,
+                      int &cursor_index,
+                      int &cursor_char_position,
+                      int match_start_point,
+                      int max_return_elements,
+                      bool &word_complete,
+                      StringList &matches);
 
 protected:
     virtual bool
@@ -59,6 +69,7 @@ protected:
 
     typedef std::list<Entry> EntryCollection;
     const uint32_t m_max_matches;
+    const uint32_t m_completion_type_mask;
     EntryCollection m_entries;
 
 private:

Modified: lldb/branches/windows/include/lldb/Interpreter/CommandReturnObject.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Interpreter/CommandReturnObject.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Interpreter/CommandReturnObject.h (original)
+++ lldb/branches/windows/include/lldb/Interpreter/CommandReturnObject.h Wed Apr 17 03:38:48 2013
@@ -124,7 +124,7 @@ public:
     AppendMessageWithFormat (const char *format, ...)  LLDB_ATTR(__attribute__ ((format (printf, 2, 3))));
 
     void
-    AppendRawWarning (const char *in_string, int len = -1);
+    AppendRawWarning (const char *in_string);
 
     void
     AppendWarning (const char *in_string);
@@ -136,7 +136,7 @@ public:
     AppendError (const char *in_string);
 
     void
-    AppendRawError (const char *in_string, int len = -1);
+    AppendRawError (const char *in_string);
 
     void
     AppendErrorWithFormat (const char *format, ...)  LLDB_ATTR(__attribute__ ((format (printf, 2, 3))));

Modified: lldb/branches/windows/include/lldb/Interpreter/OptionGroupFormat.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Interpreter/OptionGroupFormat.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Interpreter/OptionGroupFormat.h (original)
+++ lldb/branches/windows/include/lldb/Interpreter/OptionGroupFormat.h Wed Apr 17 03:38:48 2013
@@ -97,6 +97,11 @@ public:
         return m_count;
     }
     
+    bool
+    HasGDBFormat () const
+    {
+        return m_has_gdb_format;
+    }
     
     bool
     AnyOptionWasSet () const
@@ -119,6 +124,8 @@ protected:
     OptionValueUInt64 m_count;
     char m_prev_gdb_format;
     char m_prev_gdb_size;
+    
+    bool m_has_gdb_format;
 };
 
 } // namespace lldb_private

Modified: lldb/branches/windows/include/lldb/Interpreter/OptionGroupValueObjectDisplay.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Interpreter/OptionGroupValueObjectDisplay.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Interpreter/OptionGroupValueObjectDisplay.h (original)
+++ lldb/branches/windows/include/lldb/Interpreter/OptionGroupValueObjectDisplay.h Wed Apr 17 03:38:48 2013
@@ -14,6 +14,7 @@
 // C++ Includes
 // Other libraries and framework includes
 // Project includes
+#include "lldb/Core/ValueObject.h"
 #include "lldb/Interpreter/Options.h"
 
 namespace lldb_private {
@@ -60,6 +61,11 @@ public:
                be_raw == true ||
                ignore_cap == true;
     }
+    
+    ValueObject::DumpValueObjectOptions
+    GetAsDumpOptions (bool objc_is_compact = false,
+                      lldb::Format format = lldb::eFormatDefault,
+                      lldb::TypeSummaryImplSP summary_sp = lldb::TypeSummaryImplSP());
 
     bool show_types;
     uint32_t no_summary_depth;

Modified: lldb/branches/windows/include/lldb/Interpreter/OptionValueArray.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Interpreter/OptionValueArray.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Interpreter/OptionValueArray.h (original)
+++ lldb/branches/windows/include/lldb/Interpreter/OptionValueArray.h Wed Apr 17 03:38:48 2013
@@ -79,14 +79,14 @@ public:
     // Subclass specific functions
     //---------------------------------------------------------------------
 
-    uint32_t
+    size_t
     GetSize () const
     {
         return m_values.size();
     }
 
     lldb::OptionValueSP
-    operator[](uint32_t idx) const
+    operator[](size_t idx) const
     {
         lldb::OptionValueSP value_sp;
         if (idx < m_values.size())
@@ -95,7 +95,7 @@ public:
     }
 
     lldb::OptionValueSP
-    GetValueAtIndex (uint32_t idx) const
+    GetValueAtIndex (size_t idx) const
     {
         lldb::OptionValueSP value_sp;
         if (idx < m_values.size())
@@ -117,7 +117,7 @@ public:
     }
     
     bool
-    InsertValue (uint32_t idx, const lldb::OptionValueSP &value_sp)
+    InsertValue (size_t idx, const lldb::OptionValueSP &value_sp)
     {
         // Make sure the value_sp object is allowed to contain
         // values of the type passed in...
@@ -133,7 +133,7 @@ public:
     }
 
     bool
-    ReplaceValue (uint32_t idx, const lldb::OptionValueSP &value_sp)
+    ReplaceValue (size_t idx, const lldb::OptionValueSP &value_sp)
     {
         // Make sure the value_sp object is allowed to contain
         // values of the type passed in...
@@ -149,7 +149,7 @@ public:
     }
 
     bool
-    DeleteValue (uint32_t idx)
+    DeleteValue (size_t idx)
     {
         if (idx < m_values.size())
         {

Modified: lldb/branches/windows/include/lldb/Interpreter/OptionValueDictionary.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Interpreter/OptionValueDictionary.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Interpreter/OptionValueDictionary.h (original)
+++ lldb/branches/windows/include/lldb/Interpreter/OptionValueDictionary.h Wed Apr 17 03:38:48 2013
@@ -80,7 +80,7 @@ public:
     // Subclass specific functions
     //---------------------------------------------------------------------
     
-    uint32_t
+    size_t
     GetNumValues() const
     {
         return m_values.size();

Modified: lldb/branches/windows/include/lldb/Interpreter/Options.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Interpreter/Options.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Interpreter/Options.h (original)
+++ lldb/branches/windows/include/lldb/Interpreter/Options.h Wed Apr 17 03:38:48 2013
@@ -47,10 +47,10 @@ namespace lldb_private {
 /// \endcode
 ///
 /// The options are specified using the format defined for the libc
-/// options parsing function getopt_long:
+/// options parsing function getopt_long_only:
 /// \code
 ///     #include <getopt.h>
-///     int getopt_long(int argc, char * const *argv, const char *optstring, const struct option *longopts, int *longindex);
+///     int getopt_long_only(int argc, char * const *argv, const char *optstring, const struct option *longopts, int *longindex);
 /// \endcode
 ///
 /// Example code:
@@ -141,7 +141,7 @@ public:
     /// Get the option definitions to use when parsing Args options.
     ///
     /// @see Args::ParseOptions (Options&)
-    /// @see man getopt_long
+    /// @see man getopt_long_only
     //------------------------------------------------------------------
     struct option *
     GetLongOptions ();
@@ -202,7 +202,7 @@ public:
     ///
     ///
     /// @see Args::ParseOptions (Options&)
-    /// @see man getopt_long
+    /// @see man getopt_long_only
     //------------------------------------------------------------------
     virtual Error
     SetOptionValue (uint32_t option_idx, const char *option_arg) = 0;

Modified: lldb/branches/windows/include/lldb/Interpreter/PythonDataObjects.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Interpreter/PythonDataObjects.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Interpreter/PythonDataObjects.h (original)
+++ lldb/branches/windows/include/lldb/Interpreter/PythonDataObjects.h Wed Apr 17 03:38:48 2013
@@ -27,68 +27,98 @@
 
 namespace lldb_private {
     
-    class PythonRefCountedObject
+    class PythonObject
     {
     public:
-        PythonRefCountedObject (PyObject* obj = NULL) : m_object(obj)
+        PythonObject () :
+            m_py_obj(NULL)
         {
-            Py_XINCREF(m_object);
         }
         
-        PythonRefCountedObject (const PythonRefCountedObject &rhs) :
-            m_object(rhs.m_object)
+        PythonObject (PyObject* py_obj) :
+            m_py_obj(NULL)
         {
-            Py_XINCREF(m_object);
+            Reset (py_obj);
         }
         
-        ~PythonRefCountedObject ()
+        PythonObject (const PythonObject &rhs) :
+            m_py_obj(NULL)
         {
-            Py_XDECREF(m_object);
+            Reset (rhs.m_py_obj);
         }
+        
+        PythonObject (const lldb::ScriptInterpreterObjectSP &script_object_sp);
 
-        const PythonRefCountedObject &
-        operator = (const PythonRefCountedObject &rhs)
+        virtual
+        ~PythonObject ()
+        {
+            Reset (NULL);
+        }
+
+        const PythonObject &
+        operator = (const PythonObject &rhs)
         {
             if (this != &rhs)
-                Reset (rhs.m_object);
+                Reset (rhs.m_py_obj);
             return *this;
         }
 
-        void
-        Reset (PyObject* object = NULL)
+        bool
+        Reset (const PythonObject &object)
         {
-            if (object != m_object)
+            return Reset(object.GetPythonObject());
+        }
+
+        virtual bool
+        Reset (PyObject* py_obj = NULL)
+        {
+            if (py_obj != m_py_obj)
             {
-                Py_XDECREF(m_object);
-                m_object = object;
-                Py_XINCREF(m_object);
+                Py_XDECREF(m_py_obj);
+                m_py_obj = py_obj;
+                Py_XINCREF(m_py_obj);
             }
+            return true;
         }
         
+        void
+        Dump  () const
+        {
+            if (m_py_obj)
+                _PyObject_Dump (m_py_obj);
+            else
+                puts ("NULL");
+        }
+
         PyObject*
-        GetPyhonObject () const
+        GetPythonObject () const
         {
-            return m_object;
+            return m_py_obj;
         }
         
         operator bool () const
         {
-            return m_object != NULL;
+            return m_py_obj != NULL;
         }
         
-    private:
-        PyObject* m_object;
+    protected:
+        PyObject* m_py_obj;
     };
     
-    class PythonDataString
+    class PythonString: public PythonObject
     {
     public:
         
-        PythonDataString (bool create_empty);
-        PythonDataString (PyObject* object = NULL);
-        PythonDataString (const char* string);
-        ~PythonDataString ();
+        PythonString ();
+        PythonString (PyObject *o);
+        PythonString (const PythonObject &object);
+        PythonString (const lldb::ScriptInterpreterObjectSP &script_object_sp);
+        PythonString (const char* string);
+        virtual ~PythonString ();
         
+        virtual bool
+        Reset (PyObject* py_obj = NULL);
+
         const char*
         GetString() const;
 
@@ -96,170 +126,97 @@ namespace lldb_private {
         GetSize() const;
 
         void
-        SetString (const char* string);
-        
-        operator bool () const
-        {
-            return m_object.operator bool();
-        }
-        
-        PyObject*
-        GetPythonObject() const
-        {
-            return m_object.GetPyhonObject();
-        }
-    private:
-        PythonRefCountedObject m_object;
+        SetString (const char* string);        
     };
     
-    class PythonDataInteger
+    class PythonInteger: public PythonObject
     {
     public:
         
-        PythonDataInteger (bool create_empty = true);
-        PythonDataInteger (PyObject* object);
-        PythonDataInteger (int64_t value);
-        ~PythonDataInteger ();
+        PythonInteger ();
+        PythonInteger (PyObject* py_obj);
+        PythonInteger (const PythonObject &object);
+        PythonInteger (const lldb::ScriptInterpreterObjectSP &script_object_sp);
+        PythonInteger (int64_t value);
+        virtual ~PythonInteger ();
+        
+        virtual bool
+        Reset (PyObject* py_obj = NULL);
         
         int64_t
         GetInteger();
         
         void
         SetInteger (int64_t value);
-        
-        operator bool () const
-        {
-            return m_object.operator bool();
-        }
-        
-        PyObject*
-        GetPythonObject() const
-        {
-            return m_object.GetPyhonObject();
-        }
-    private:
-        PythonRefCountedObject m_object;
     };
     
-    class PythonDataArray
+    class PythonList: public PythonObject
     {
     public:
         
-        PythonDataArray (bool create_empty = true);
-        PythonDataArray (PyObject* object);
-        PythonDataArray (uint32_t count);
-        ~PythonDataArray ();
+        PythonList ();
+        PythonList (PyObject* py_obj);
+        PythonList (const PythonObject &object);
+        PythonList (const lldb::ScriptInterpreterObjectSP &script_object_sp);
+        PythonList (uint32_t count);
+        virtual ~PythonList ();
+        
+        virtual bool
+        Reset (PyObject* py_obj = NULL);
         
         uint32_t
         GetSize();
         
-        PythonDataObject
+        PythonObject
         GetItemAtIndex (uint32_t index);
         
         void
-        SetItemAtIndex (uint32_t index, const PythonDataObject &object);
+        SetItemAtIndex (uint32_t index, const PythonObject &object);
         
         void
-        AppendItem (const PythonDataObject &object);
-        
-        operator bool () const
-        {
-            return m_object.operator bool();
-        }
-        
-        PyObject*
-        GetPythonObject() const
-        {
-            return m_object.GetPyhonObject();
-        }
-    private:
-        PythonRefCountedObject m_object;
+        AppendItem (const PythonObject &object);
     };
     
-    class PythonDataDictionary
+    class PythonDictionary: public PythonObject
     {
     public:
         
-        PythonDataDictionary (bool create_empty = true);
-        PythonDataDictionary (PyObject* object);
-        ~PythonDataDictionary ();
+        PythonDictionary ();
+        PythonDictionary (PyObject* object);
+        PythonDictionary (const PythonObject &object);
+        PythonDictionary (const lldb::ScriptInterpreterObjectSP &script_object_sp);
+        virtual ~PythonDictionary ();
+        
+        virtual bool
+        Reset (PyObject* object = NULL);
         
         uint32_t GetSize();
         
-        PythonDataObject
-        GetItemForKey (const PythonDataString &key) const;
+        PythonObject
+        GetItemForKey (const PythonString &key) const;
         
         const char *
-        GetItemForKeyAsString (const PythonDataString &key, const char *fail_value = NULL) const;
+        GetItemForKeyAsString (const PythonString &key, const char *fail_value = NULL) const;
 
         int64_t
-        GetItemForKeyAsInteger (const PythonDataString &key, int64_t fail_value = 0) const;
+        GetItemForKeyAsInteger (const PythonString &key, int64_t fail_value = 0) const;
 
-        PythonDataObject
+        PythonObject
         GetItemForKey (const char *key) const;
 
-        typedef bool (*DictionaryIteratorCallback)(PythonDataString* key, PythonDataDictionary* dict);
+        typedef bool (*DictionaryIteratorCallback)(PythonString* key, PythonDictionary* dict);
         
-        PythonDataArray
+        PythonList
         GetKeys () const;
         
-        PythonDataString
+        PythonString
         GetKeyAtPosition (uint32_t pos) const;
         
-        PythonDataObject
+        PythonObject
         GetValueAtPosition (uint32_t pos) const;
         
         void
-        SetItemForKey (const PythonDataString &key, const PythonDataObject& value);
-        
-        operator bool () const
-        {
-            return m_object.operator bool();
-        }
-        
-        PyObject*
-        GetPythonObject() const
-        {
-            return m_object.GetPyhonObject();
-        }
-    private:
-        PythonRefCountedObject m_object;
-    };
-
-    class PythonDataObject
-    {
-    public:
-        
-        PythonDataObject ();
-        PythonDataObject (PyObject* object);
-        
-        ~PythonDataObject ();
-        
-        PythonDataString
-        GetStringObject ();
-        
-        PythonDataInteger
-        GetIntegerObject ();
-        
-        PythonDataArray
-        GetArrayObject();
-        
-        PythonDataDictionary
-        GetDictionaryObject();
-        
-        operator bool () const
-        {
-            return m_object.operator bool();
-        }
-        
-        PyObject*
-        GetPythonObject() const
-        {
-            return m_object.GetPyhonObject();
-        }
-        
-    private:
-        PythonRefCountedObject m_object;
+        SetItemForKey (const PythonString &key, const PythonObject& value);
     };
     
 } // namespace lldb_private

Modified: lldb/branches/windows/include/lldb/Interpreter/ScriptInterpreter.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Interpreter/ScriptInterpreter.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Interpreter/ScriptInterpreter.h (original)
+++ lldb/branches/windows/include/lldb/Interpreter/ScriptInterpreter.h Wed Apr 17 03:38:48 2013
@@ -61,6 +61,22 @@ public:
 protected:
     void* m_object;
 };
+    
+class ScriptInterpreterLocker
+{
+public:
+    
+    ScriptInterpreterLocker ()
+    {
+    }
+    
+    virtual ~ScriptInterpreterLocker ()
+    {
+    }
+private:
+    DISALLOW_COPY_AND_ASSIGN (ScriptInterpreterLocker);
+};
+
 
 class ScriptInterpreter
 {
@@ -84,11 +100,11 @@ public:
                                                           void** pyfunct_wrapper,
                                                           std::string& retval);
     
-    typedef void* (*SWIGPythonCreateSyntheticProvider) (const std::string python_class_name,
+    typedef void* (*SWIGPythonCreateSyntheticProvider) (const char *python_class_name,
                                                         const char *session_dictionary_name,
                                                         const lldb::ValueObjectSP& valobj_sp);
 
-    typedef void* (*SWIGPythonCreateOSPlugin) (const std::string python_class_name,
+    typedef void* (*SWIGPythonCreateOSPlugin) (const char *python_class_name,
                                                const char *session_dictionary_name,
                                                const lldb::ProcessSP& process_sp);
     
@@ -107,7 +123,7 @@ public:
                                                                      std::string& err_msg,
                                                                      lldb_private::CommandReturnObject& cmd_retobj);
     
-    typedef bool           (*SWIGPythonCallModuleInit)              (const std::string python_module_name,
+    typedef bool           (*SWIGPythonCallModuleInit)              (const char *python_module_name,
                                                                      const char *session_dictionary_name,
                                                                      lldb::DebuggerSP& debugger);
 
@@ -261,38 +277,46 @@ public:
     }
     
     virtual lldb::ScriptInterpreterObjectSP
-    CreateSyntheticScriptedProvider (std::string class_name,
+    CreateSyntheticScriptedProvider (const char *class_name,
                                      lldb::ValueObjectSP valobj)
     {
         return lldb::ScriptInterpreterObjectSP();
     }
     
     virtual lldb::ScriptInterpreterObjectSP
-    CreateOSPlugin (std::string class_name,
-                    lldb::ProcessSP process_sp)
+    OSPlugin_CreatePluginObject (const char *class_name,
+                                 lldb::ProcessSP process_sp)
     {
         return lldb::ScriptInterpreterObjectSP();
     }
     
     virtual lldb::ScriptInterpreterObjectSP
-    OSPlugin_QueryForRegisterInfo (lldb::ScriptInterpreterObjectSP object)
+    OSPlugin_RegisterInfo (lldb::ScriptInterpreterObjectSP os_plugin_object_sp)
     {
         return lldb::ScriptInterpreterObjectSP();
     }
     
     virtual lldb::ScriptInterpreterObjectSP
-    OSPlugin_QueryForThreadsInfo (lldb::ScriptInterpreterObjectSP object)
+    OSPlugin_ThreadsInfo (lldb::ScriptInterpreterObjectSP os_plugin_object_sp)
     {
         return lldb::ScriptInterpreterObjectSP();
     }
     
     virtual lldb::ScriptInterpreterObjectSP
-    OSPlugin_QueryForRegisterContextData (lldb::ScriptInterpreterObjectSP object,
-                                          lldb::tid_t thread_id)
+    OSPlugin_RegisterContextData (lldb::ScriptInterpreterObjectSP os_plugin_object_sp,
+                                  lldb::tid_t thread_id)
     {
         return lldb::ScriptInterpreterObjectSP();
     }
-    
+
+    virtual lldb::ScriptInterpreterObjectSP
+    OSPlugin_CreateThread (lldb::ScriptInterpreterObjectSP os_plugin_object_sp,
+                           lldb::tid_t tid,
+                           lldb::addr_t context)
+    {
+        return lldb::ScriptInterpreterObjectSP();
+    }
+
     virtual bool
     GenerateFunction(const char *signature, const StringList &input)
     {
@@ -332,7 +356,7 @@ public:
         return false;
     }
     
-    virtual uint32_t
+    virtual size_t
     CalculateNumChildren (const lldb::ScriptInterpreterObjectSP& implementor)
     {
         return 0;
@@ -401,6 +425,9 @@ public:
         return lldb::ScriptInterpreterObjectSP(new ScriptInterpreterObject(object));
     }
     
+    virtual std::auto_ptr<ScriptInterpreterLocker>
+    AcquireInterpreterLock ();
+    
     const char *
     GetScriptInterpreterPtyName ();
 

Modified: lldb/branches/windows/include/lldb/Interpreter/ScriptInterpreterPython.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Interpreter/ScriptInterpreterPython.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Interpreter/ScriptInterpreterPython.h (original)
+++ lldb/branches/windows/include/lldb/Interpreter/ScriptInterpreterPython.h Wed Apr 17 03:38:48 2013
@@ -76,24 +76,29 @@ public:
     GenerateScriptAliasFunction (StringList &input, std::string& output);
     
     lldb::ScriptInterpreterObjectSP
-    CreateSyntheticScriptedProvider (std::string class_name,
+    CreateSyntheticScriptedProvider (const char *class_name,
                                      lldb::ValueObjectSP valobj);
     
     virtual lldb::ScriptInterpreterObjectSP
-    CreateOSPlugin (std::string class_name,
-                    lldb::ProcessSP process_sp);
+    OSPlugin_CreatePluginObject (const char *class_name,
+                                 lldb::ProcessSP process_sp);
     
     virtual lldb::ScriptInterpreterObjectSP
-    OSPlugin_QueryForRegisterInfo (lldb::ScriptInterpreterObjectSP object);
+    OSPlugin_RegisterInfo (lldb::ScriptInterpreterObjectSP os_plugin_object_sp);
     
     virtual lldb::ScriptInterpreterObjectSP
-    OSPlugin_QueryForThreadsInfo (lldb::ScriptInterpreterObjectSP object);
+    OSPlugin_ThreadsInfo (lldb::ScriptInterpreterObjectSP os_plugin_object_sp);
     
     virtual lldb::ScriptInterpreterObjectSP
-    OSPlugin_QueryForRegisterContextData (lldb::ScriptInterpreterObjectSP object,
-                                          lldb::tid_t thread_id);
+    OSPlugin_RegisterContextData (lldb::ScriptInterpreterObjectSP os_plugin_object_sp,
+                                  lldb::tid_t thread_id);
     
-    virtual uint32_t
+    virtual lldb::ScriptInterpreterObjectSP
+    OSPlugin_CreateThread (lldb::ScriptInterpreterObjectSP os_plugin_object_sp,
+                           lldb::tid_t tid,
+                           lldb::addr_t context);
+    
+    virtual size_t
     CalculateNumChildren (const lldb::ScriptInterpreterObjectSP& implementor);
     
     virtual lldb::ValueObjectSP
@@ -176,6 +181,9 @@ public:
     virtual lldb::ScriptInterpreterObjectSP
     MakeScriptObject (void* object);
     
+    virtual std::auto_ptr<ScriptInterpreterLocker>
+    AcquireInterpreterLock ();
+    
     void
     CollectDataForBreakpointCommandCallback (BreakpointOptions *bp_options,
                                              CommandReturnObject &result);
@@ -211,7 +219,7 @@ public:
 
 protected:
 
-    void
+    bool
     EnterSession (bool init_lldb_globals);
     
     void
@@ -266,7 +274,7 @@ private:
             DISALLOW_COPY_AND_ASSIGN (ScriptInterpreterPythonObject);
     };
     
-	class Locker
+	class Locker : public ScriptInterpreterLocker
 	{
 	public:
         
@@ -308,7 +316,7 @@ private:
         static void
         ReleasePythonLock ();
         
-    	bool                     m_need_session;
+    	bool                     m_teardown_session;
     	ScriptInterpreterPython *m_python_interpreter;
     	FILE*                    m_tmp_fh;
         PyGILState_STATE         m_GILState;

Modified: lldb/branches/windows/include/lldb/Symbol/Block.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Symbol/Block.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Symbol/Block.h (original)
+++ lldb/branches/windows/include/lldb/Symbol/Block.h Wed Apr 17 03:38:48 2013
@@ -435,7 +435,7 @@ public:
     Block *
     FindBlockByID (lldb::user_id_t block_id);
 
-    uint32_t
+    size_t
     GetNumRanges () const
     {
         return m_ranges.GetSize();

Modified: lldb/branches/windows/include/lldb/Symbol/ClangASTContext.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Symbol/ClangASTContext.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Symbol/ClangASTContext.h (original)
+++ lldb/branches/windows/include/lldb/Symbol/ClangASTContext.h Wed Apr 17 03:38:48 2013
@@ -53,7 +53,11 @@ public:
         eTypeIsTemplate         = (1u << 14),
         eTypeIsTypedef          = (1u << 15),
         eTypeIsVector           = (1u << 16),
-        eTypeIsScalar           = (1u << 17)
+        eTypeIsScalar           = (1u << 17),
+        eTypeIsInteger          = (1u << 18),
+        eTypeIsFloat            = (1u << 19),
+        eTypeIsComplex          = (1u << 20),
+        eTypeIsSigned           = (1u << 21)
     };
 
     typedef void (*CompleteTagDeclCallback)(void *baton, clang::TagDecl *);
@@ -144,10 +148,10 @@ public:
     GetCompleteDecl (clang::ASTContext *ast,
                      clang::Decl *decl);
 
-    void SetMetadataAsUserID (uintptr_t object,
+    void SetMetadataAsUserID (const void *object,
                               lldb::user_id_t user_id);
 
-    void SetMetadata (uintptr_t object,
+    void SetMetadata (const void *object,
                       ClangASTMetadata &meta_data)
     {
         SetMetadata(getASTContext(), object, meta_data);
@@ -155,18 +159,18 @@ public:
     
     static void
     SetMetadata (clang::ASTContext *ast,
-                 uintptr_t object,
+                 const void *object,
                  ClangASTMetadata &meta_data);
     
     ClangASTMetadata *
-    GetMetadata (uintptr_t object)
+    GetMetadata (const void *object)
     {
         return GetMetadata(getASTContext(), object);
     }
     
     static ClangASTMetadata *
     GetMetadata (clang::ASTContext *ast,
-                 uintptr_t object);
+                 const void *object);
     
     //------------------------------------------------------------------
     // Basic Types
@@ -201,6 +205,9 @@ public:
 
     lldb::clang_type_t
     GetBuiltInType_objc_id();
+    
+    static lldb::clang_type_t
+    GetBuiltInType_objc_id(clang::ASTContext *ast);
 
     lldb::clang_type_t
     GetBuiltInType_objc_Class();
@@ -329,6 +336,26 @@ public:
                                                       bitfield_bit_size);
     }
     
+    clang::VarDecl *
+    AddVariableToRecordType (lldb::clang_type_t record_opaque_type,
+                             const char *name,
+                             lldb::clang_type_t var_opaque_type,
+                             lldb::AccessType access)
+    {
+        return ClangASTContext::AddVariableToRecordType (getASTContext(),
+                                                         record_opaque_type,
+                                                         name,
+                                                         var_opaque_type,
+                                                         access);
+    }
+
+    static clang::VarDecl *
+    AddVariableToRecordType (clang::ASTContext *ast,
+                             lldb::clang_type_t record_opaque_type,
+                             const char *name,
+                             lldb::clang_type_t var_opaque_type,
+                             lldb::AccessType access);
+
     static void
     BuildIndirectFields (clang::ASTContext *ast,
                          lldb::clang_type_t record_qual_type);
@@ -546,19 +573,21 @@ public:
                                lldb::clang_type_t class_opaque_type, 
                                const char *name,  // the full symbol name as seen in the symbol table ("-[NString stringWithCString:]")
                                lldb::clang_type_t method_opaque_type,
-                               lldb::AccessType access);
+                               lldb::AccessType access,
+                               bool is_artificial);
 
     clang::ObjCMethodDecl *
     AddMethodToObjCObjectType (lldb::clang_type_t class_opaque_type, 
                                const char *name,  // the full symbol name as seen in the symbol table ("-[NString stringWithCString:]")
                                lldb::clang_type_t method_opaque_type,
-                               lldb::AccessType access)
+                               lldb::AccessType access,
+                               bool is_artificial)
     {
         return AddMethodToObjCObjectType (getASTContext(),
                                           class_opaque_type,
                                           name,
                                           method_opaque_type,
-                                          access);
+                                          access, is_artificial);
     }
 
     static bool
@@ -573,8 +602,8 @@ public:
     // Returns a mask containing bits from the ClangASTContext::eTypeXXX enumerations
     static uint32_t
     GetTypeInfo (lldb::clang_type_t clang_type, 
-                     clang::ASTContext *ast,                // The AST for clang_type (can be NULL)
-                     lldb::clang_type_t *pointee_or_element_type);  // (can be NULL)
+                 clang::ASTContext *ast,                // The AST for clang_type (can be NULL)
+                 lldb::clang_type_t *pointee_or_element_type);  // (can be NULL)
 
     static uint32_t
     GetNumChildren (clang::ASTContext *ast,
@@ -596,23 +625,32 @@ public:
     static lldb::clang_type_t
     GetDirectBaseClassAtIndex (clang::ASTContext *ast, 
                                lldb::clang_type_t clang_type,
-                               uint32_t idx, 
+                               size_t idx, 
                                uint32_t *bit_offset_ptr);
 
     static lldb::clang_type_t
     GetVirtualBaseClassAtIndex (clang::ASTContext *ast, 
                                 lldb::clang_type_t clang_type,
-                                uint32_t idx, 
+                                size_t idx, 
                                 uint32_t *bit_offset_ptr);
 
     static lldb::clang_type_t
     GetFieldAtIndex (clang::ASTContext *ast, 
                      lldb::clang_type_t clang_type,
-                     uint32_t idx, 
+                     size_t idx, 
                      std::string& name,
                      uint64_t *bit_offset_ptr,
                      uint32_t *bitfield_bit_size_ptr,
                      bool *is_bitfield_ptr);
+    
+    static size_t
+    GetIndexOfFieldWithName (clang::ASTContext *ast,
+                             lldb::clang_type_t clang_type,
+                             const char* name,
+                             lldb::clang_type_t* field_clang_type = NULL,
+                             uint64_t *bit_offset_ptr = NULL,
+                             uint32_t *bitfield_bit_size_ptr = NULL,
+                             bool *is_bitfield_ptr = NULL);
 
     static uint32_t
     GetNumPointeeChildren (lldb::clang_type_t clang_type);
@@ -621,7 +659,7 @@ public:
     GetChildClangTypeAtIndex (ExecutionContext *exe_ctx,
                               const char *parent_name,
                               lldb::clang_type_t  parent_clang_type,
-                              uint32_t idx,
+                              size_t idx,
                               bool transparent_pointers,
                               bool omit_empty_base_classes,
                               bool ignore_array_bounds,
@@ -638,7 +676,7 @@ public:
                               clang::ASTContext *ast,
                               const char *parent_name,
                               lldb::clang_type_t  parent_clang_type,
-                              uint32_t idx,
+                              size_t idx,
                               bool transparent_pointers,
                               bool omit_empty_base_classes,
                               bool ignore_array_bounds,
@@ -786,7 +824,8 @@ public:
 
     lldb::clang_type_t
     CreateArrayType (lldb::clang_type_t element_type,
-                     size_t element_count);
+                     size_t element_count,
+                     bool is_vector);
 
     //------------------------------------------------------------------
     // Tag Declarations
@@ -851,7 +890,7 @@ public:
     CreateMemberPointerType (lldb::clang_type_t  clang_pointee_type,
                              lldb::clang_type_t  clang_class_type);
 
-    uint32_t
+    uint64_t
     GetPointerBitSize ();
 
     static bool

Modified: lldb/branches/windows/include/lldb/Symbol/ClangASTImporter.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Symbol/ClangASTImporter.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Symbol/ClangASTImporter.h (original)
+++ lldb/branches/windows/include/lldb/Symbol/ClangASTImporter.h Wed Apr 17 03:38:48 2013
@@ -11,6 +11,7 @@
 #define liblldb_ClangASTImporter_h_
 
 #include <map>
+#include <set>
 
 #include "lldb/lldb-types.h"
 
@@ -20,6 +21,73 @@
 #include "lldb/Symbol/ClangNamespaceDecl.h"
 
 namespace lldb_private {
+    
+class ClangASTMetrics
+{
+public:
+    static void DumpCounters (Log *log);
+    static void ClearLocalCounters ()
+    {
+		local_counters.m_visible_query_count = 0;
+        local_counters.m_lexical_query_count = 0;
+        local_counters.m_lldb_import_count = 0;
+        local_counters.m_clang_import_count = 0;
+        local_counters.m_decls_completed_count = 0;
+        local_counters.m_record_layout_count = 0;
+    }
+    
+    static void RegisterVisibleQuery ()
+    {
+        ++global_counters.m_visible_query_count;
+        ++local_counters.m_visible_query_count;
+    }
+    
+    static void RegisterLexicalQuery ()
+    {
+        ++global_counters.m_lexical_query_count;
+        ++local_counters.m_lexical_query_count;
+    }
+    
+    static void RegisterLLDBImport ()
+    {
+        ++global_counters.m_lldb_import_count;
+        ++local_counters.m_lldb_import_count;
+    }
+    
+    static void RegisterClangImport ()
+    {
+        ++global_counters.m_clang_import_count;
+        ++local_counters.m_clang_import_count;
+    }
+    
+    static void RegisterDeclCompletion ()
+    {
+        ++global_counters.m_decls_completed_count;
+        ++local_counters.m_decls_completed_count;
+    }
+    
+    static void RegisterRecordLayout ()
+    {
+        ++global_counters.m_record_layout_count;
+        ++local_counters.m_record_layout_count;
+    }
+    
+private:
+    struct Counters
+    {
+        uint64_t    m_visible_query_count;
+        uint64_t    m_lexical_query_count;
+        uint64_t    m_lldb_import_count;
+        uint64_t    m_clang_import_count;
+        uint64_t    m_decls_completed_count;
+        uint64_t    m_record_layout_count;
+    };
+    
+    static Counters global_counters;
+    static Counters local_counters;
+    
+    static void DumpCounters (Log *log, Counters &counters);
+};
 
 class ClangASTImporter 
 {
@@ -67,6 +135,9 @@ public:
     CompleteObjCInterfaceDecl (clang::ObjCInterfaceDecl *interface_decl);
     
     bool
+    RequireCompleteType (clang::QualType type);
+    
+    bool
     ResolveDeclOrigin (const clang::Decl *decl, clang::Decl **original_decl, clang::ASTContext **original_ctx)
     {
         DeclOrigin origin = GetDeclOrigin(decl);
@@ -185,17 +256,38 @@ private:
                                *source_ctx,
                                master.m_file_manager,
                                true /*minimal*/),
+            m_decls_to_deport(NULL),
+            m_decls_already_deported(NULL),
             m_master(master),
             m_source_ctx(source_ctx)
         {
         }
         
+        // A call to "InitDeportWorkQueues" puts the minion into deport mode.
+        // In deport mode, every copied Decl that could require completion is
+        // recorded and placed into the decls_to_deport set.
+        //
+        // A call to "ExecuteDeportWorkQueues" completes all the Decls that
+        // are in decls_to_deport, adding any Decls it sees along the way that
+        // it hasn't already deported.  It proceeds until decls_to_deport is
+        // empty.
+        //
+        // These calls must be paired.  Leaving a minion in deport mode or
+        // trying to start deport minion with a new pair of queues will result
+        // in an assertion failure.
+        
+        void InitDeportWorkQueues (std::set<clang::NamedDecl *> *decls_to_deport,
+                                   std::set<clang::NamedDecl *> *decls_already_deported);
+        void ExecuteDeportWorkQueues ();
+        
         void ImportDefinitionTo (clang::Decl *to, clang::Decl *from);
         
         clang::Decl *Imported (clang::Decl *from, clang::Decl *to);
         
-        ClangASTImporter   &m_master;
-        clang::ASTContext  *m_source_ctx;
+        std::set<clang::NamedDecl *>   *m_decls_to_deport;
+        std::set<clang::NamedDecl *>   *m_decls_already_deported;
+        ClangASTImporter               &m_master;
+        clang::ASTContext              *m_source_ctx;
     };
     
     typedef STD_SHARED_PTR(Minion) MinionSP;

Modified: lldb/branches/windows/include/lldb/Symbol/ClangASTType.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Symbol/ClangASTType.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Symbol/ClangASTType.h (original)
+++ lldb/branches/windows/include/lldb/Symbol/ClangASTType.h Wed Apr 17 03:38:48 2013
@@ -107,10 +107,17 @@ public:
     GetTypeNameForOpaqueQualType (clang::ASTContext *ast,
                                   lldb::clang_type_t opaque_qual_type);
 
-    uint32_t
+    uint64_t
+    GetClangTypeByteSize ();
+
+    static uint64_t
+    GetClangTypeByteSize (clang::ASTContext *ast_context,
+                          lldb::clang_type_t clang_type);
+    
+    uint64_t
     GetClangTypeBitWidth ();
 
-    static uint32_t
+    static uint64_t
     GetClangTypeBitWidth (clang::ASTContext *ast_context, lldb::clang_type_t opaque_clang_qual_type);
 
     size_t
@@ -135,7 +142,7 @@ public:
                Stream *s,
                lldb::Format format,
                const DataExtractor &data,
-               uint32_t data_offset,
+               lldb::offset_t data_offset,
                size_t data_byte_size,
                uint32_t bitfield_bit_size,
                uint32_t bitfield_bit_offset,
@@ -151,7 +158,7 @@ public:
                Stream *s,
                lldb::Format format,
                const DataExtractor &data,
-               uint32_t data_offset,
+               lldb::offset_t data_offset,
                size_t data_byte_size,
                uint32_t bitfield_bit_size,
                uint32_t bitfield_bit_offset,
@@ -164,7 +171,7 @@ public:
     DumpTypeValue (Stream *s,
                    lldb::Format format,
                    const DataExtractor &data,
-                   uint32_t data_offset,
+                   lldb::offset_t data_offset,
                    size_t data_byte_size,
                    uint32_t bitfield_bit_size,
                    uint32_t bitfield_bit_offset,
@@ -177,7 +184,7 @@ public:
                    Stream *s,
                    lldb::Format format,
                    const DataExtractor &data,
-                   uint32_t data_offset,
+                   lldb::offset_t data_offset,
                    size_t data_byte_size,
                    uint32_t bitfield_bit_size,
                    uint32_t bitfield_bit_offset,
@@ -187,7 +194,7 @@ public:
     DumpSummary (ExecutionContext *exe_ctx,
                  Stream *s,
                  const DataExtractor &data,
-                 uint32_t data_offset,
+                 lldb::offset_t data_offset,
                  size_t data_byte_size);
                  
     
@@ -197,10 +204,13 @@ public:
                  ExecutionContext *exe_ctx,
                  Stream *s,
                  const DataExtractor &data,
-                 uint32_t data_offset,
+                 lldb::offset_t data_offset,
                  size_t data_byte_size);
     
     void
+    DumpTypeDescription (); // Dump to stdout
+
+    void
     DumpTypeDescription (Stream *s);
     
     static void
@@ -208,17 +218,11 @@ public:
                          lldb::clang_type_t opaque_clang_qual_type,
                          Stream *s);
     
-    void DumpTypeCode (Stream *s);
-    
-    static void
-    DumpTypeCode (void *type,
-                  Stream *s);
-                         
     lldb::Encoding
-    GetEncoding (uint32_t &count);                 
+    GetEncoding (uint64_t &count);
 
     static lldb::Encoding
-    GetEncoding (lldb::clang_type_t opaque_clang_qual_type, uint32_t &count);
+    GetEncoding (lldb::clang_type_t opaque_clang_qual_type, uint64_t &count);
 
     lldb::Format
     GetFormat ();
@@ -226,16 +230,16 @@ public:
     static lldb::Format
     GetFormat (lldb::clang_type_t opaque_clang_qual_type);
     
-    uint32_t
+    uint64_t
     GetTypeByteSize() const;
     
-    static uint32_t
+    static uint64_t
     GetTypeByteSize(clang::ASTContext *ast_context,
                     lldb::clang_type_t opaque_clang_qual_type);
 
     bool
     GetValueAsScalar (const DataExtractor &data,
-                      uint32_t data_offset,
+                      lldb::offset_t data_offset,
                       size_t data_byte_size,
                       Scalar &value);
 
@@ -243,7 +247,7 @@ public:
     GetValueAsScalar (clang::ASTContext *ast_context,
                       lldb::clang_type_t opaque_clang_qual_type,
                       const DataExtractor &data,
-                      uint32_t data_offset,
+                      lldb::offset_t data_offset,
                       size_t data_byte_size,
                       Scalar &value);
 
@@ -312,12 +316,12 @@ public:
     GetPointeeType (lldb::clang_type_t opaque_clang_qual_type);
     
     lldb::clang_type_t
-    GetArrayElementType (uint32_t& stride);
+    GetArrayElementType (uint64_t& stride);
     
     static lldb::clang_type_t
     GetArrayElementType (clang::ASTContext* ast,
                          lldb::clang_type_t opaque_clang_qual_type,
-						 uint32_t& stride);
+						 uint64_t& stride);
     
     lldb::clang_type_t
     GetPointerType () const;

Modified: lldb/branches/windows/include/lldb/Symbol/ClangExternalASTSourceCallbacks.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Symbol/ClangExternalASTSourceCallbacks.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Symbol/ClangExternalASTSourceCallbacks.h (original)
+++ lldb/branches/windows/include/lldb/Symbol/ClangExternalASTSourceCallbacks.h Wed Apr 17 03:38:48 2013
@@ -113,7 +113,7 @@ public:
         return clang::ELR_Failure;
     }
     
-    virtual clang::DeclContextLookupResult 
+    virtual bool
     FindExternalVisibleDeclsByName (const clang::DeclContext *decl_ctx,
                                     clang::DeclarationName decl_name);
     

Modified: lldb/branches/windows/include/lldb/Symbol/ClangExternalASTSourceCommon.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Symbol/ClangExternalASTSourceCommon.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Symbol/ClangExternalASTSourceCommon.h (original)
+++ lldb/branches/windows/include/lldb/Symbol/ClangExternalASTSourceCommon.h Wed Apr 17 03:38:48 2013
@@ -50,10 +50,23 @@ public:
         m_union_is_user_id(false),
         m_union_is_isa_ptr(false),
         m_has_object_ptr(false),
-        m_is_self (false)
+        m_is_self (false),
+        m_is_dynamic_cxx (true)
     {
     }
-    
+
+    bool
+    GetIsDynamicCXXType () const
+    {
+        return m_is_dynamic_cxx;
+    }
+
+    void
+    SetIsDynamicCXXType (bool b)
+    {
+        m_is_dynamic_cxx = b;
+    }
+
     void
     SetUserID (lldb::user_id_t user_id)
     {
@@ -61,7 +74,9 @@ public:
         m_union_is_user_id = true;
         m_union_is_isa_ptr = false;
     }
-    lldb::user_id_t GetUserID () const
+
+    lldb::user_id_t
+    GetUserID () const
     {
         if (m_union_is_user_id)
             return m_user_id;
@@ -77,7 +92,8 @@ public:
         m_union_is_isa_ptr = true;
     }
     
-    uint64_t GetISAPtr () const
+    uint64_t
+    GetISAPtr () const
     {
         if (m_union_is_isa_ptr)
             return m_isa_ptr;
@@ -85,7 +101,8 @@ public:
             return 0;
     }
     
-    void SetObjectPtrName(const char *name)
+    void
+    SetObjectPtrName(const char *name)
     {
         m_has_object_ptr = true;
         if (strcmp (name, "self") == 0)
@@ -109,7 +126,8 @@ public:
         return lldb::eLanguageTypeUnknown;
             
     }
-    const char *GetObjectPtrName() const
+    const char *
+    GetObjectPtrName() const
     {
         if (m_has_object_ptr)
         {
@@ -122,11 +140,15 @@ public:
             return NULL;
     }
     
-    bool HasObjectPtr() const
+    bool
+    HasObjectPtr() const
     {
         return m_has_object_ptr;
     }
     
+    void
+    Dump (Stream *s);
+    
 private:
     union
     {
@@ -136,7 +158,8 @@ private:
     bool m_union_is_user_id : 1,
          m_union_is_isa_ptr : 1,
          m_has_object_ptr : 1,
-         m_is_self : 1;
+         m_is_self : 1,
+         m_is_dynamic_cxx : 1;
     
 };
 
@@ -146,11 +169,11 @@ public:
     ClangExternalASTSourceCommon();
     ~ClangExternalASTSourceCommon();
 
-    virtual ClangASTMetadata *GetMetadata(uintptr_t object);
-    virtual void SetMetadata(uintptr_t object, ClangASTMetadata &metadata);
-    virtual bool HasMetadata(uintptr_t object);
+    virtual ClangASTMetadata *GetMetadata(const void *object);
+    virtual void SetMetadata(const void *object, ClangASTMetadata &metadata);
+    virtual bool HasMetadata(const void *object);
 private:
-    typedef llvm::DenseMap<uintptr_t, ClangASTMetadata> MetadataMap;
+    typedef llvm::DenseMap<const void *, ClangASTMetadata> MetadataMap;
     
     MetadataMap m_metadata;
     uint64_t    m_magic;        ///< Because we don't have RTTI, we must take it

Modified: lldb/branches/windows/include/lldb/Symbol/DWARFCallFrameInfo.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Symbol/DWARFCallFrameInfo.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Symbol/DWARFCallFrameInfo.h (original)
+++ lldb/branches/windows/include/lldb/Symbol/DWARFCallFrameInfo.h Wed Apr 17 03:38:48 2013
@@ -12,15 +12,16 @@
 
 #include <map>
 
-#include "lldb/lldb-private.h"
+#include "lldb/Core/AddressRange.h"
 #include "lldb/Core/DataExtractor.h"
 #include "lldb/Core/Flags.h"
-#include "lldb/Core/AddressRange.h"
+#include "lldb/Core/RangeMap.h"
 #include "lldb/Core/VMRange.h"
 #include "lldb/Core/dwarf.h"
 #include "lldb/Host/Mutex.h"
-#include "lldb/Symbol/UnwindPlan.h"
 #include "lldb/Symbol/ObjectFile.h"
+#include "lldb/Symbol/UnwindPlan.h"
+#include "lldb/lldb-private.h"
 
 namespace lldb_private {
 
@@ -53,6 +54,24 @@ public:
     bool
     GetUnwindPlan (Address addr, UnwindPlan& unwind_plan);
 
+    typedef RangeVector<lldb::addr_t, uint32_t> FunctionAddressAndSizeVector;
+
+    //------------------------------------------------------------------
+    // Build a vector of file address and size for all functions in this Module
+    // based on the eh_frame FDE entries.
+    //
+    // The eh_frame information can be a useful source of file address and size of
+    // the functions in a Module.  Often a binary's non-exported symbols are stripped
+    // before shipping so lldb won't know the start addr / size of many functions
+    // in the Module.  But the eh_frame can help to give the addresses of these 
+    // stripped symbols, at least.
+    //
+    // @param[out] function_info
+    //      A vector provided by the caller is filled out.  May be empty if no FDEs/no eh_frame
+    //      is present in this Module.
+
+    void
+    GetFunctionAddressAndSizeVector (FunctionAddressAndSizeVector &function_info);
 
 private:
     enum
@@ -81,30 +100,18 @@ private:
 
     typedef STD_SHARED_PTR(CIE) CIESP;
 
-    struct FDEEntry
-    {
-        AddressRange bounds;   // function bounds
-        dw_offset_t offset;    // offset to this FDE within the Section
-
-        FDEEntry () : bounds (), offset (0) { }
-
-        inline bool
-        operator<(const DWARFCallFrameInfo::FDEEntry& b) const
-        {
-            if (bounds.GetBaseAddress().GetOffset() < b.bounds.GetBaseAddress().GetOffset())
-                return true;
-            else
-                return false;
-        }
-    };
-
     typedef std::map<off_t, CIESP> cie_map_t;
 
+    // Start address (file address), size, offset of FDE location
+    // used for finding an FDE for a given File address; the start address field is
+    // an offset into an individual Module.
+    typedef RangeDataVector<lldb::addr_t, uint32_t, dw_offset_t> FDEEntryMap;
+
     bool
     IsEHFrame() const;
 
     bool
-    GetFDEEntryByAddress (Address addr, FDEEntry& fde_entry);
+    GetFDEEntryByFileAddress (lldb::addr_t file_offset, FDEEntryMap::Entry& fde_entry);
 
     void
     GetFDEIndex ();
@@ -127,7 +134,7 @@ private:
     DataExtractor               m_cfi_data;
     bool                        m_cfi_data_initialized;   // only copy the section into the DE once
 
-    std::vector<FDEEntry>       m_fde_index;
+    FDEEntryMap                 m_fde_index;
     bool                        m_fde_index_initialized;  // only scan the section for FDEs once
     Mutex                       m_fde_index_mutex;        // and isolate the thread that does it
 

Modified: lldb/branches/windows/include/lldb/Symbol/LineTable.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Symbol/LineTable.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Symbol/LineTable.h (original)
+++ lldb/branches/windows/include/lldb/Symbol/LineTable.h Wed Apr 17 03:38:48 2013
@@ -75,8 +75,7 @@ public:
 
     // Called when you can't guarantee the addresses are in increasing order
     void
-    InsertLineEntry (const lldb::SectionSP& section_sp,
-                     lldb::addr_t section_offset,
+    InsertLineEntry (lldb::addr_t file_addr,
                      uint32_t line,
                      uint16_t column,
                      uint16_t file_idx,
@@ -94,8 +93,7 @@ public:
     // inserted in this line table.
     void
     AppendLineEntryToSequence (LineSequence* sequence,
-                               const lldb::SectionSP& section_sp,
-                               lldb::addr_t section_offset,
+                               lldb::addr_t file_addr,
                                uint32_t line,
                                uint16_t column,
                                uint16_t file_idx,
@@ -253,15 +251,29 @@ public:
     size_t
     GetContiguousFileAddressRanges (FileAddressRanges &file_ranges, bool append);
 
+    //------------------------------------------------------------------
+    /// Given a file range link map, relink the current line table
+    /// and return a fixed up line table.
+    ///
+    /// @param[out] file_range_map
+    ///     A collection of file ranges that maps to new file ranges
+    ///     that will be used when linking the line table.
+    ///
+    /// @return
+    ///     A new line table if at least one line table entry was able
+    ///     to be mapped.
+    //------------------------------------------------------------------
+    typedef RangeDataVector<lldb::addr_t, lldb::addr_t, lldb::addr_t> FileRangeMap;
+
+    LineTable *
+    LinkLineTable (const FileRangeMap &file_range_map);
+
 protected:
 
     struct Entry
     {
-        enum { kInvalidSectIdx = UINT32_MAX };
-
         Entry () :
-            sect_idx (kInvalidSectIdx),
-            sect_offset (0),
+            file_addr (LLDB_INVALID_ADDRESS),
             line (0),
             column (0),
             file_idx (0),
@@ -273,8 +285,7 @@ protected:
         {
         }
 
-        Entry ( uint32_t _sect_idx,
-                lldb::addr_t _sect_offset,
+        Entry ( lldb::addr_t _file_addr,
                 uint32_t _line,
                 uint16_t _column,
                 uint16_t _file_idx,
@@ -283,8 +294,7 @@ protected:
                 bool _is_prologue_end,
                 bool _is_epilogue_begin,
                 bool _is_terminal_entry) :
-            sect_idx (_sect_idx),
-            sect_offset (_sect_offset),
+            file_addr (_file_addr),
             line (_line),
             column (_column),
             file_idx (_file_idx),
@@ -294,10 +304,6 @@ protected:
             is_epilogue_begin (_is_epilogue_begin),
             is_terminal_entry (_is_terminal_entry)
         {
-            // We have reserved 32 bits for the section offset which should
-            // be enough, but if it isn't then we need to make m_section_offset
-            // bigger
-            assert(_sect_offset <= UINT32_MAX);
         }
 
         int
@@ -306,8 +312,7 @@ protected:
         void
         Clear ()
         {
-            sect_idx = kInvalidSectIdx;
-            sect_offset = 0;
+            file_addr = LLDB_INVALID_ADDRESS;
             line = 0;
             column = 0;
             file_idx = 0;
@@ -323,7 +328,7 @@ protected:
         {
             // Compare the sections before calling
             #define SCALAR_COMPARE(a,b) if (a < b) return -1; if (a > b) return +1
-            SCALAR_COMPARE (lhs.sect_offset, rhs.sect_offset);
+            SCALAR_COMPARE (lhs.file_addr, rhs.file_addr);
             SCALAR_COMPARE (lhs.line, rhs.line);
             SCALAR_COMPARE (lhs.column, rhs.column);
             SCALAR_COMPARE (lhs.is_start_of_statement, rhs.is_start_of_statement);
@@ -350,16 +355,13 @@ protected:
 
         static bool EntryAddressLessThan (const Entry& lhs, const Entry& rhs)
         {
-            if (lhs.sect_idx == rhs.sect_idx)
-                return lhs.sect_offset < rhs.sect_offset;
-            return lhs.sect_idx < rhs.sect_idx;
+            return lhs.file_addr < rhs.file_addr;
         }
 
         //------------------------------------------------------------------
         // Member variables.
         //------------------------------------------------------------------
-        uint32_t    sect_idx;                   ///< The section index for this line entry.
-        uint32_t    sect_offset;                ///< The offset into the section for this line entry.
+        lldb::addr_t file_addr;                 ///< The file address for this line entry
         uint32_t    line;                       ///< The source line number, or zero if there is no line number information.
         uint16_t    column;                     ///< The column number of the source line, or zero if there is no column information.
         uint16_t    file_idx:11,                ///< The file index into CompileUnit's file table, or zero if there is no file information.
@@ -386,7 +388,6 @@ protected:
     // Member variables.
     //------------------------------------------------------------------
     CompileUnit* m_comp_unit;   ///< The compile unit that this line table belongs to.
-    SectionList m_section_list; ///< The list of sections that at least one of the line entries exists in.
     entry_collection m_entries; ///< The collection of line entries in this line table.
 
     //------------------------------------------------------------------
@@ -406,14 +407,12 @@ protected:
         virtual void
         Clear();
 
-        entry_collection m_seq_entries; ///< The collection of line entries in this sequence.
+        entry_collection m_entries; ///< The collection of line entries in this sequence.
     };
 
     bool
     ConvertEntryAtIndexToLineEntry (uint32_t idx, LineEntry &line_entry);
 
-    lldb_private::Section *
-    GetSectionForEntryIndex (uint32_t idx);
 private:
     DISALLOW_COPY_AND_ASSIGN (LineTable);
 };

Modified: lldb/branches/windows/include/lldb/Symbol/ObjectContainer.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Symbol/ObjectContainer.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Symbol/ObjectContainer.h (original)
+++ lldb/branches/windows/include/lldb/Symbol/ObjectContainer.h Wed Apr 17 03:38:48 2013
@@ -49,19 +49,20 @@ public:
     //------------------------------------------------------------------
     ObjectContainer (const lldb::ModuleSP &module_sp,
                      const FileSpec *file,
-                     lldb::addr_t file_offset,
-                     lldb::addr_t file_size,
-                     lldb::DataBufferSP& file_data_sp) :
+                     lldb::offset_t file_offset,
+                     lldb::offset_t length,
+                     lldb::DataBufferSP& data_sp,
+                     lldb::offset_t data_offset) :
         ModuleChild (module_sp),
         m_file (),  // This file can be different than the module's file spec
         m_offset (file_offset),
-        m_length (file_size),
+        m_length (length),
         m_data ()
     {
         if (file)
             m_file = *file;
-        if (file_data_sp)
-            m_data.SetData (file_data_sp, file_offset, file_size);
+        if (data_sp)
+            m_data.SetData (data_sp, data_offset, length);
     }
 
     //------------------------------------------------------------------

Modified: lldb/branches/windows/include/lldb/Symbol/ObjectFile.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Symbol/ObjectFile.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Symbol/ObjectFile.h (original)
+++ lldb/branches/windows/include/lldb/Symbol/ObjectFile.h Wed Apr 17 03:38:48 2013
@@ -88,14 +88,15 @@ public:
     //------------------------------------------------------------------
     ObjectFile (const lldb::ModuleSP &module_sp, 
                 const FileSpec *file_spec_ptr, 
-                lldb::addr_t offset, 
-                lldb::addr_t length, 
-                lldb::DataBufferSP& headerDataSP);
+                lldb::offset_t file_offset,
+                lldb::offset_t length,
+                lldb::DataBufferSP& data_sp,
+                lldb::offset_t data_offset);
 
     ObjectFile (const lldb::ModuleSP &module_sp, 
                 const lldb::ProcessSP &process_sp,
                 lldb::addr_t header_addr, 
-                lldb::DataBufferSP& headerDataSP);
+                lldb::DataBufferSP& data_sp);
 
     //------------------------------------------------------------------
     /// Destructor.
@@ -148,9 +149,10 @@ public:
     static lldb::ObjectFileSP
     FindPlugin (const lldb::ModuleSP &module_sp,
                 const FileSpec* file_spec,
-                lldb::addr_t file_offset,
-                lldb::addr_t file_size,
-                lldb::DataBufferSP &data_sp);
+                lldb::offset_t file_offset,
+                lldb::offset_t file_size,
+                lldb::DataBufferSP &data_sp,
+                lldb::offset_t &data_offset);
 
     //------------------------------------------------------------------
     /// Find a ObjectFile plug-in that can parse a file in memory.
@@ -204,7 +206,8 @@ public:
     static bool
     SplitArchivePathWithObject (const char *path_with_object,
                                 lldb_private::FileSpec &archive_file,
-                                lldb_private::ConstString &archive_object);
+                                lldb_private::ConstString &archive_object,
+                                bool must_exist);
 
     //------------------------------------------------------------------
     /// Gets the address size in bytes for the current object file.
@@ -214,7 +217,7 @@ public:
     ///     architecture (and object for archives). Returns zero if no
     ///     architecture or object has been selected.
     //------------------------------------------------------------------
-    virtual size_t
+    virtual uint32_t
     GetAddressByteSize ()  const = 0;
 
     //------------------------------------------------------------------
@@ -278,8 +281,8 @@ public:
     ///     simple object files that a represented by an entire file.
     //------------------------------------------------------------------
     virtual lldb::addr_t
-    GetOffset () const
-    { return m_offset; }
+    GetFileOffset () const
+    { return m_file_offset; }
 
     virtual lldb::addr_t
     GetByteSize () const
@@ -348,6 +351,17 @@ public:
     GetSymtab () = 0;
 
     //------------------------------------------------------------------
+    /// Frees the symbol table.
+    ///
+    /// This function should only be used when an object file is
+    ///
+    /// @return
+    ///     The symbol table for this object file.
+    //------------------------------------------------------------------
+    virtual void
+    ClearSymtab ();
+    
+    //------------------------------------------------------------------
     /// Gets the UUID for this object file.
     ///
     /// If the object file format contains a UUID, the value should be
@@ -439,13 +453,13 @@ public:
     /// file is that describes the content of the file. If the header
     /// doesn't appear in a section that is defined in the object file,
     /// an address with no section is returned that has the file offset
-    /// set in the m_offset member of the lldb_private::Address object.
+    /// set in the m_file_offset member of the lldb_private::Address object.
     ///
     /// @return
     ///     Returns the entry address for this module.
     //------------------------------------------------------------------
     virtual lldb_private::Address
-    GetHeaderAddress () { return Address();}
+    GetHeaderAddress () { return Address(m_memory_addr);}
 
     
     virtual uint32_t
@@ -601,12 +615,14 @@ protected:
     FileSpec m_file;
     Type m_type;
     Strata m_strata;
-    lldb::addr_t m_offset; ///< The offset in bytes into the file, or the address in memory
+    lldb::addr_t m_file_offset; ///< The offset in bytes into the file, or the address in memory
     lldb::addr_t m_length; ///< The length of this object file if it is known (can be zero if length is unknown or can't be determined).
     DataExtractor m_data; ///< The data for this object file so things can be parsed lazily.
     lldb_private::UnwindTable m_unwind_table; /// < Table of FuncUnwinders objects created for this ObjectFile's functions
     lldb::ProcessWP m_process_wp;
     const lldb::addr_t m_memory_addr;
+    std::auto_ptr<lldb_private::SectionList> m_sections_ap;
+    std::auto_ptr<lldb_private::Symtab> m_symtab_ap;
     
     //------------------------------------------------------------------
     /// Sets the architecture for a module.  At present the architecture

Modified: lldb/branches/windows/include/lldb/Symbol/Symbol.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Symbol/Symbol.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Symbol/Symbol.h (original)
+++ lldb/branches/windows/include/lldb/Symbol/Symbol.h Wed Apr 17 03:38:48 2013
@@ -37,7 +37,8 @@ public:
             bool is_artificial,
             const lldb::SectionSP &section_sp,
             lldb::addr_t value,
-            uint32_t size,
+            lldb::addr_t size,
+            bool size_is_valid,
             uint32_t flags);
 
     Symbol (uint32_t symID,
@@ -49,6 +50,7 @@ public:
             bool is_trampoline,
             bool is_artificial,
             const AddressRange &range,
+            bool size_is_valid,
             uint32_t flags);
 
     Symbol (const Symbol& rhs);
@@ -205,11 +207,14 @@ public:
     bool
     IsTrampoline () const;
 
+    bool
+    IsIndirect () const;
+
     lldb::addr_t
     GetByteSize () const;
     
     void
-    SetByteSize (uint32_t size)
+    SetByteSize (lldb::addr_t size)
     {
         m_calculated_size = size > 0;
         m_addr_range.SetByteSize(size);

Modified: lldb/branches/windows/include/lldb/Symbol/SymbolContext.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Symbol/SymbolContext.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Symbol/SymbolContext.h (original)
+++ lldb/branches/windows/include/lldb/Symbol/SymbolContext.h Wed Apr 17 03:38:48 2013
@@ -131,7 +131,7 @@ public:
     /// to their default state.
     //------------------------------------------------------------------
     void
-    Clear ();
+    Clear (bool clear_target);
 
     //------------------------------------------------------------------
     /// Dump a description of this object to a Stream.
@@ -459,10 +459,23 @@ public:
     ///     otherwise.
     //------------------------------------------------------------------
     bool
-    GetContextAtIndex(uint32_t idx, SymbolContext& sc) const;
+    GetContextAtIndex(size_t idx, SymbolContext& sc) const;
+
+    //------------------------------------------------------------------
+    /// Get accessor for the last symbol context in the list.
+    ///
+    /// @param[out] sc
+    ///     A reference to the symbol context to fill in.
+    ///
+    /// @return
+    ///     Returns \b true if \a sc was filled in, \b false if the
+    ///     list is empty.
+    //------------------------------------------------------------------
+    bool
+    GetLastContext(SymbolContext& sc) const;
 
     bool
-    RemoveContextAtIndex (uint32_t idx);
+    RemoveContextAtIndex (size_t idx);
     //------------------------------------------------------------------
     /// Get accessor for a symbol context list size.
     ///

Modified: lldb/branches/windows/include/lldb/Symbol/SymbolVendor.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Symbol/SymbolVendor.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Symbol/SymbolVendor.h (original)
+++ lldb/branches/windows/include/lldb/Symbol/SymbolVendor.h Wed Apr 17 03:38:48 2013
@@ -100,20 +100,20 @@ public:
                           uint32_t resolve_scope,
                           SymbolContextList& sc_list);
 
-    virtual uint32_t
+    virtual size_t
     FindGlobalVariables (const ConstString &name,
                          const ClangNamespaceDecl *namespace_decl,
                          bool append,
-                         uint32_t max_matches,
+                         size_t max_matches,
                          VariableList& variables);
 
-    virtual uint32_t
+    virtual size_t
     FindGlobalVariables (const RegularExpression& regex,
                          bool append,
-                         uint32_t max_matches,
+                         size_t max_matches,
                          VariableList& variables);
 
-    virtual uint32_t
+    virtual size_t
     FindFunctions (const ConstString &name,
                    const ClangNamespaceDecl *namespace_decl,
                    uint32_t name_type_mask,
@@ -121,18 +121,18 @@ public:
                    bool append,
                    SymbolContextList& sc_list);
 
-    virtual uint32_t
+    virtual size_t
     FindFunctions (const RegularExpression& regex,
                    bool include_inlines,
                    bool append,
                    SymbolContextList& sc_list);
 
-    virtual uint32_t
+    virtual size_t
     FindTypes (const SymbolContext& sc, 
                const ConstString &name,
                const ClangNamespaceDecl *namespace_decl, 
                bool append, 
-               uint32_t max_matches, 
+               size_t max_matches,
                TypeList& types);
 
     virtual lldb_private::ClangNamespaceDecl
@@ -140,15 +140,15 @@ public:
                    const ConstString &name,
                    const ClangNamespaceDecl *parent_namespace_decl);
     
-    virtual uint32_t
+    virtual size_t
     GetNumCompileUnits();
 
     virtual bool
-    SetCompileUnitAtIndex (uint32_t cu_idx,
+    SetCompileUnitAtIndex (size_t cu_idx,
                            const lldb::CompUnitSP &cu_sp);
 
     virtual lldb::CompUnitSP
-    GetCompileUnitAtIndex(uint32_t idx);
+    GetCompileUnitAtIndex(size_t idx);
 
     TypeList&
     GetTypeList()

Modified: lldb/branches/windows/include/lldb/Symbol/Symtab.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Symbol/Symtab.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Symbol/Symtab.h (original)
+++ lldb/branches/windows/include/lldb/Symbol/Symtab.h Wed Apr 17 03:38:48 2013
@@ -41,8 +41,8 @@ public:
                         Symtab(ObjectFile *objfile);
                         ~Symtab();
 
-            void        Reserve (uint32_t count);
-            Symbol *    Resize (uint32_t count);
+            void        Reserve (size_t count);
+            Symbol *    Resize (size_t count);
             uint32_t    AddSymbol(const Symbol& symbol);
             size_t      GetNumSymbols() const;
             void        Dump(Stream *s, Target *target, SortOrder sort_type);
@@ -53,8 +53,8 @@ public:
                             return m_mutex;
                         }
             Symbol *    FindSymbolByID (lldb::user_id_t uid) const;
-            Symbol *    SymbolAtIndex (uint32_t idx);
-    const   Symbol *    SymbolAtIndex (uint32_t idx) const;
+            Symbol *    SymbolAtIndex (size_t idx);
+    const   Symbol *    SymbolAtIndex (size_t idx) const;
             Symbol *    FindSymbolWithType (lldb::SymbolType symbol_type, Debug symbol_debug_type, Visibility symbol_visibility, uint32_t &start_idx);
             uint32_t    AppendSymbolIndexesWithType (lldb::SymbolType symbol_type, std::vector<uint32_t>& indexes, uint32_t start_idx = 0, uint32_t end_index = UINT32_MAX) const;
             uint32_t    AppendSymbolIndexesWithTypeAndFlagsValue (lldb::SymbolType symbol_type, uint32_t flags_value, std::vector<uint32_t>& indexes, uint32_t start_idx = 0, uint32_t end_index = UINT32_MAX) const;
@@ -69,7 +69,6 @@ public:
             size_t      FindAllSymbolsWithNameAndType (const ConstString &name, lldb::SymbolType symbol_type, Debug symbol_debug_type, Visibility symbol_visibility, std::vector<uint32_t>& symbol_indexes);
             size_t      FindAllSymbolsMatchingRexExAndType (const RegularExpression &regex, lldb::SymbolType symbol_type, Debug symbol_debug_type, Visibility symbol_visibility, std::vector<uint32_t>& symbol_indexes);
             Symbol *    FindFirstSymbolWithNameAndType (const ConstString &name, lldb::SymbolType symbol_type, Debug symbol_debug_type, Visibility symbol_visibility);
-            Symbol *    FindSymbolWithFileAddress (lldb::addr_t file_addr);
             Symbol *    FindSymbolContainingFileAddress (lldb::addr_t file_addr, const uint32_t* indexes, uint32_t num_indexes);
             Symbol *    FindSymbolContainingFileAddress (lldb::addr_t file_addr);
             size_t      FindFunctionSymbols (const ConstString &name, uint32_t name_type_mask, SymbolContextList& sc_list);
@@ -107,6 +106,8 @@ protected:
     collection          m_symbols;
     std::vector<uint32_t> m_addr_indexes;
     UniqueCStringMap<uint32_t> m_name_to_index;
+    UniqueCStringMap<uint32_t> m_basename_to_index;
+    UniqueCStringMap<uint32_t> m_method_to_index;
     UniqueCStringMap<uint32_t> m_selector_to_index;
     mutable Mutex       m_mutex; // Provide thread safety for this symbol table
     bool                m_addr_indexes_computed:1,
@@ -114,7 +115,7 @@ protected:
 private:
 
     bool
-    CheckSymbolAtIndex (uint32_t idx, Debug symbol_debug_type, Visibility symbol_visibility) const
+    CheckSymbolAtIndex (size_t idx, Debug symbol_debug_type, Visibility symbol_visibility) const
     {
         switch (symbol_debug_type)
         {

Modified: lldb/branches/windows/include/lldb/Symbol/Type.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Symbol/Type.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Symbol/Type.h (original)
+++ lldb/branches/windows/include/lldb/Symbol/Type.h Wed Apr 17 03:38:48 2013
@@ -79,7 +79,7 @@ public:
     Type (lldb::user_id_t uid,
           SymbolFile* symbol_file,
           const ConstString &name,
-          uint32_t byte_size,
+          uint64_t byte_size,
           SymbolContextScope *context,
           lldb::user_id_t encoding_uid,
           EncodingDataType encoding_uid_type,
@@ -123,7 +123,7 @@ public:
     const ConstString&
     GetName();
 
-    uint32_t
+    uint64_t
     GetByteSize();
 
     uint32_t
@@ -147,9 +147,6 @@ public:
     lldb::TypeSP
     GetTypedefType();
 
-    void
-    SetByteSize(uint32_t byte_size);
-
     const ConstString &
     GetName () const
     {
@@ -206,7 +203,7 @@ public:
     GetFormat ();
 
     lldb::Encoding
-    GetEncoding (uint32_t &count);
+    GetEncoding (uint64_t &count);
 
     SymbolContextScope *
     GetSymbolContextScope()
@@ -304,7 +301,7 @@ protected:
     Type *m_encoding_type;
     lldb::user_id_t m_encoding_uid;
     EncodingDataType m_encoding_uid_type;
-    uint32_t m_byte_size;
+    uint64_t m_byte_size;
     Declaration m_decl;
     lldb::clang_type_t m_clang_type;
     
@@ -340,6 +337,12 @@ public:
     TypeAndOrName &
     operator= (const TypeAndOrName &rhs);
     
+    bool
+    operator==(const TypeAndOrName &other) const;
+    
+    bool
+    operator!=(const TypeAndOrName &other) const;
+    
     ConstString GetName () const;
 
     lldb::TypeSP
@@ -360,6 +363,21 @@ public:
     bool
     IsEmpty ();
     
+    bool
+    HasName ();
+    
+    bool
+    HasTypeSP ();
+    
+    void
+    Clear ();
+    
+    operator
+    bool ()
+    {
+        return !IsEmpty();
+    }
+    
 private:
     lldb::TypeSP m_type_sp;
     ConstString m_type_name;

Modified: lldb/branches/windows/include/lldb/Symbol/Variable.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Symbol/Variable.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Symbol/Variable.h (original)
+++ lldb/branches/windows/include/lldb/Symbol/Variable.h Wed Apr 17 03:38:48 2013
@@ -144,9 +144,9 @@ public:
         m_loc_is_const_data = b;
     }
     
-    typedef uint32_t (*GetVariableCallback) (void *baton, 
-                                             const char *name,
-                                             VariableList &var_list);
+    typedef size_t (*GetVariableCallback) (void *baton,
+                                           const char *name,
+                                           VariableList &var_list);
 
 
     static Error

Modified: lldb/branches/windows/include/lldb/Symbol/VariableList.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Symbol/VariableList.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Symbol/VariableList.h (original)
+++ lldb/branches/windows/include/lldb/Symbol/VariableList.h Wed Apr 17 03:38:48 2013
@@ -42,10 +42,10 @@ public:
     Dump(Stream *s, bool show_context) const;
 
     lldb::VariableSP
-    GetVariableAtIndex(uint32_t idx) const;
+    GetVariableAtIndex(size_t idx) const;
 
     lldb::VariableSP
-    RemoveVariableAtIndex (uint32_t idx);
+    RemoveVariableAtIndex (size_t idx);
     
     lldb::VariableSP
     FindVariable (const ConstString& name);

Modified: lldb/branches/windows/include/lldb/Target/CPPLanguageRuntime.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/CPPLanguageRuntime.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/CPPLanguageRuntime.h (original)
+++ lldb/branches/windows/include/lldb/Target/CPPLanguageRuntime.h Wed Apr 17 03:38:48 2013
@@ -25,6 +25,93 @@ class CPPLanguageRuntime :
     public LanguageRuntime
 {
 public:
+    
+    class MethodName
+    {
+    public:
+        enum Type
+        {
+            eTypeInvalid,
+            eTypeUnknownMethod,
+            eTypeClassMethod,
+            eTypeInstanceMethod
+        };
+        
+        MethodName () :
+            m_full(),
+            m_basename(),
+            m_context(),
+            m_arguments(),
+            m_qualifiers(),
+            m_type (eTypeInvalid),
+            m_parsed (false),
+            m_parse_error (false)
+        {
+        }
+
+        MethodName (const ConstString &s) :
+            m_full(s),
+            m_basename(),
+            m_context(),
+            m_arguments(),
+            m_qualifiers(),
+            m_type (eTypeInvalid),
+            m_parsed (false),
+            m_parse_error (false)
+        {
+        }
+
+        void
+        Clear();
+        
+        bool
+        IsValid () const
+        {
+            if (m_parse_error)
+                return false;
+            if (m_type == eTypeInvalid)
+                return false;
+            return (bool)m_full;
+        }
+
+        Type
+        GetType () const
+        {
+            return m_type;
+        }
+        
+        const ConstString &
+        GetFullName () const
+        {
+            return m_full;
+        }
+        
+        const ConstString &
+        GetBasename ();
+
+        llvm::StringRef
+        GetContext ();
+        
+        llvm::StringRef
+        GetArguments ();
+        
+        llvm::StringRef
+        GetQualifiers ();
+
+    protected:
+        void
+        Parse();
+
+        ConstString     m_full;         // Full name:    "lldb::SBTarget::GetBreakpointAtIndex(unsigned int) const"
+        ConstString     m_basename;     // Basename:     "GetBreakpointAtIndex"
+        llvm::StringRef m_context;      // Decl context: "lldb::SBTarget"
+        llvm::StringRef m_arguments;    // Arguments:    "(unsigned int)"
+        llvm::StringRef m_qualifiers;   // Qualifiers:   "const"
+        Type m_type;
+        bool m_parsed;
+        bool m_parse_error;
+    };
+
     virtual
     ~CPPLanguageRuntime();
     

Modified: lldb/branches/windows/include/lldb/Target/DynamicLoader.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/DynamicLoader.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/DynamicLoader.h (original)
+++ lldb/branches/windows/include/lldb/Target/DynamicLoader.h Wed Apr 17 03:38:48 2013
@@ -229,7 +229,6 @@ protected:
     // Member variables.
     //------------------------------------------------------------------
     Process* m_process; ///< The process that this dynamic loader plug-in is tracking.
-    bool m_stop_when_images_change; ///< Boolean value that indicates if the process should stop when imamges change.
 private:
     DISALLOW_COPY_AND_ASSIGN (DynamicLoader);
 

Modified: lldb/branches/windows/include/lldb/Target/ExecutionContext.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/ExecutionContext.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/ExecutionContext.h (original)
+++ lldb/branches/windows/include/lldb/Target/ExecutionContext.h Wed Apr 17 03:38:48 2013
@@ -335,7 +335,6 @@ public:
     ClearFrame ()
     {
         m_stack_id.Clear();
-        m_frame_wp.reset();
     }
 
 protected:
@@ -345,7 +344,6 @@ protected:
     lldb::TargetWP m_target_wp;             ///< A weak reference to a target
     lldb::ProcessWP m_process_wp;           ///< A weak reference to a process
     mutable lldb::ThreadWP m_thread_wp;     ///< A weak reference to a thread
-    mutable lldb::StackFrameWP m_frame_wp;  ///< A weak reference to a frame
     lldb::tid_t m_tid;                      ///< The thread ID that this object refers to in case the backing object changes
     StackID m_stack_id;                     ///< The stack ID that this object refers to in case the backing object changes
 };

Modified: lldb/branches/windows/include/lldb/Target/LanguageRuntime.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/LanguageRuntime.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/LanguageRuntime.h (original)
+++ lldb/branches/windows/include/lldb/Target/LanguageRuntime.h Wed Apr 17 03:38:48 2013
@@ -44,6 +44,7 @@ public:
     virtual bool
     GetObjectDescription (Stream &str, Value &value, ExecutionContextScope *exe_scope) = 0;
     
+    // this call should return true if it could set the name and/or the type
     virtual bool
     GetDynamicTypeAndAddress (ValueObject &in_value, 
                               lldb::DynamicValueType use_dynamic, 
@@ -89,57 +90,18 @@ public:
     {
         return m_process;
     }
-        
+
+    virtual lldb::BreakpointResolverSP
+    CreateExceptionResolver (Breakpoint *bkpt, bool catch_bp, bool throw_bp) = 0;
+    
+    virtual lldb::SearchFilterSP
+    CreateExceptionSearchFilter ();
+
 protected:
     //------------------------------------------------------------------
     // Classes that inherit from LanguageRuntime can see and modify these
     //------------------------------------------------------------------
     
-    // The Target is the one that knows how to create breakpoints, so this function is meant to be used either
-    // by the target or internally in Set/ClearExceptionBreakpoints.
-    class ExceptionBreakpointResolver : public BreakpointResolver
-    {
-    public:
-        ExceptionBreakpointResolver (Breakpoint *bkpt,
-                                lldb::LanguageType language,
-                                bool catch_bp,
-                                bool throw_bp);
-
-        virtual ~ExceptionBreakpointResolver() {}
-
-        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 {}
-
-        /// Methods for support type inquiry through isa, cast, and dyn_cast:
-        static inline bool classof(const BreakpointResolverName *) { return true; }
-        static inline bool classof(const BreakpointResolver *V) {
-            return V->getResolverID() == BreakpointResolver::ExceptionResolver;
-        }
-    protected:
-        bool SetActualResolver();
-        
-        lldb::BreakpointResolverSP m_actual_resolver_sp;
-        lldb::ProcessWP m_process_wp;
-        lldb::LanguageType m_language;
-        bool m_catch_bp;
-        bool m_throw_bp;
-    };
-    
-    virtual lldb::BreakpointResolverSP
-    CreateExceptionResolver (Breakpoint *bkpt, bool catch_bp, bool throw_bp) = 0;
-    
     LanguageRuntime(Process *process);
     Process *m_process;
 private:

Modified: lldb/branches/windows/include/lldb/Target/ObjCLanguageRuntime.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/ObjCLanguageRuntime.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/ObjCLanguageRuntime.h (original)
+++ lldb/branches/windows/include/lldb/Target/ObjCLanguageRuntime.h Wed Apr 17 03:38:48 2013
@@ -14,6 +14,7 @@
 // C++ Includes
 #include <functional>
 #include <map>
+#include <unordered_set>
 
 // Other libraries and framework includes
 // Project includes
@@ -31,7 +32,109 @@ class ObjCLanguageRuntime :
     public LanguageRuntime
 {
 public:
-    
+    class MethodName
+    {
+    public:
+        enum Type
+        {
+            eTypeUnspecified,
+            eTypeClassMethod,
+            eTypeInstanceMethod
+        };
+        
+        MethodName () :
+            m_full(),
+            m_class(),
+            m_category(),
+            m_selector(),
+            m_type (eTypeUnspecified),
+            m_category_is_valid (false)
+        {
+        }
+
+        MethodName (const char *name, bool strict) :
+            m_full(),
+            m_class(),
+            m_category(),
+            m_selector(),
+            m_type (eTypeUnspecified),
+            m_category_is_valid (false)
+        {
+            SetName (name, strict);
+        }
+
+        void
+        Clear();
+
+        bool
+        IsValid (bool strict) const
+        {
+            // If "strict" is true, the name must have everything specified including
+            // the leading "+" or "-" on the method name
+            if (strict && m_type == eTypeUnspecified)
+                return false;
+            // Other than that, m_full will only be filled in if the objective C
+            // name is valid.
+            return (bool)m_full;
+        }
+        
+        bool
+        HasCategory()
+        {
+            return (bool)GetCategory();
+        }
+
+        Type
+        GetType () const
+        {
+            return m_type;
+        }
+        
+        const ConstString &
+        GetFullName () const
+        {
+            return m_full;
+        }
+        
+        ConstString
+        GetFullNameWithoutCategory (bool empty_if_no_category);
+
+        bool
+        SetName (const char *name, bool strict);
+
+        const ConstString &
+        GetClassName ();
+
+        const ConstString &
+        GetClassNameWithCategory ();
+
+        const ConstString &
+        GetCategory ();
+        
+        const ConstString &
+        GetSelector ();
+
+        // Get all possible names for a method. Examples:
+        // If name is "+[NSString(my_additions) myStringWithCString:]"
+        //  names[0] => "+[NSString(my_additions) myStringWithCString:]"
+        //  names[1] => "+[NSString myStringWithCString:]"
+        // If name is specified without the leading '+' or '-' like "[NSString(my_additions) myStringWithCString:]"
+        //  names[0] => "+[NSString(my_additions) myStringWithCString:]"
+        //  names[1] => "-[NSString(my_additions) myStringWithCString:]"
+        //  names[2] => "+[NSString myStringWithCString:]"
+        //  names[3] => "-[NSString myStringWithCString:]"
+        size_t
+        GetFullNames (std::vector<ConstString> &names, bool append);
+    protected:
+        ConstString m_full;     // Full name:   "+[NSString(my_additions) myStringWithCString:]"
+        ConstString m_class;    // Class name:  "NSString"
+        ConstString m_class_category; // Class with category: "NSString(my_additions)"
+        ConstString m_category; // Category:    "my_additions"
+        ConstString m_selector; // Selector:    "myStringWithCString:"
+        Type m_type;
+        bool m_category_is_valid;
+
+    };
     typedef lldb::addr_t ObjCISA;
     
     class ClassDescriptor;
@@ -95,7 +198,8 @@ public:
         IsValid () = 0;
         
         virtual bool
-        IsTagged () = 0;
+        GetTaggedPointerInfo (uint64_t* info_bits = NULL,
+                              uint64_t* value_bits = NULL) = 0;
         
         virtual uint64_t
         GetInstanceSize () = 0;
@@ -147,41 +251,6 @@ public:
         lldb::TypeWP m_type_wp;
     };
     
-    // a convenience subclass of ClassDescriptor meant to represent invalid objects
-    class ClassDescriptor_Invalid : public ClassDescriptor
-    {
-    public:
-        ClassDescriptor_Invalid() {}
-        
-        virtual
-        ~ClassDescriptor_Invalid ()
-        {}
-        
-        virtual ConstString
-        GetClassName () { return ConstString(""); }
-        
-        virtual ClassDescriptorSP
-        GetSuperclass () { return ClassDescriptorSP(new ClassDescriptor_Invalid()); }
-        
-        virtual bool
-        IsValid () { return false; }
-        
-        virtual bool
-        IsTagged () { return false; }
-        
-        virtual uint64_t
-        GetInstanceSize () { return 0; }
-        
-        virtual ObjCISA
-        GetISA () { return 0; }
-        
-        virtual bool
-        CheckPointer (lldb::addr_t value, uint32_t ptr_size) const
-        {
-            return false;
-        }
-    };
-    
     virtual ClassDescriptorSP
     GetClassDescriptor (ValueObject& in_value);
     
@@ -249,7 +318,7 @@ public:
     IsValidISA(ObjCISA isa)
     {
         UpdateISAToDescriptorMap();
-        return m_isa_to_descriptor_cache.count(isa) > 0;
+        return m_isa_to_descriptor.count(isa) > 0;
     }
 
     virtual void
@@ -258,7 +327,7 @@ public:
     void
     UpdateISAToDescriptorMap()
     {
-        if (m_process && m_process->GetStopID() != m_isa_to_descriptor_cache_stop_id)
+        if (m_process && m_process->GetStopID() != m_isa_to_descriptor_stop_id)
         {
             UpdateISAToDescriptorMapIfNeeded ();
         }
@@ -351,12 +420,12 @@ public:
     ///     Returns the number of strings that were successfully filled
     ///     in.
     //------------------------------------------------------------------
-    static uint32_t
-    ParseMethodName (const char *name, 
-                     ConstString *class_name,               // Class name (with category if there is one)
-                     ConstString *selector_name,            // selector only
-                     ConstString *name_sans_category,       // full function name with no category (empty if no category)
-                     ConstString *class_name_sans_category);// Class name without category (empty if no category)
+//    static uint32_t
+//    ParseMethodName (const char *name, 
+//                     ConstString *class_name,               // Class name (with category if there is one)
+//                     ConstString *selector_name,            // selector only
+//                     ConstString *name_sans_category,       // full function name with no category (empty if no category)
+//                     ConstString *class_name_sans_category);// Class name without category (empty if no category)
     
     static bool
     IsPossibleObjCMethodName (const char *name)
@@ -396,6 +465,12 @@ public:
         return (m_has_new_literals_and_indexing == eLazyBoolYes);
     }
     
+    virtual void
+    SymbolsDidLoad (const ModuleList& module_list)
+    {
+        m_negative_complete_class_cache.clear();
+    }
+    
 protected:
     //------------------------------------------------------------------
     // Classes that inherit from ObjCLanguageRuntime can see and modify these
@@ -406,6 +481,40 @@ protected:
     {
         return false;
     }
+    
+    
+    bool
+    ISAIsCached (ObjCISA isa) const
+    {
+        return m_isa_to_descriptor.find(isa) != m_isa_to_descriptor.end();
+    }
+
+    bool
+    AddClass (ObjCISA isa, const ClassDescriptorSP &descriptor_sp)
+    {
+        if (isa != 0)
+        {
+            m_isa_to_descriptor[isa] = descriptor_sp;
+            return true;
+        }
+        return false;
+    }
+
+    bool
+    AddClass (ObjCISA isa, const ClassDescriptorSP &descriptor_sp, const char *class_name);
+
+    bool
+    AddClass (ObjCISA isa, const ClassDescriptorSP &descriptor_sp, uint32_t class_name_hash)
+    {
+        if (isa != 0)
+        {
+            m_isa_to_descriptor[isa] = descriptor_sp;
+            m_hash_to_isa_map.insert(std::make_pair(class_name_hash, isa));
+            return true;
+        }
+        return false;
+    }
+
 private:
     // We keep a map of <Class,Selector>->Implementation so we don't have to call the resolver
     // function over and over.
@@ -454,16 +563,37 @@ private:
     };
 
     typedef std::map<ClassAndSel,lldb::addr_t> MsgImplMap;
+    typedef std::map<ObjCISA, ClassDescriptorSP> ISAToDescriptorMap;
+    typedef std::multimap<uint32_t, ObjCISA> HashToISAMap;
+    typedef ISAToDescriptorMap::iterator ISAToDescriptorIterator;
+    typedef HashToISAMap::iterator HashToISAIterator;
+
     MsgImplMap m_impl_cache;
-    
     LazyBool m_has_new_literals_and_indexing;
+    ISAToDescriptorMap m_isa_to_descriptor;
+    HashToISAMap m_hash_to_isa_map;
+
 protected:
-    typedef std::map<ObjCISA, ClassDescriptorSP> ISAToDescriptorMap;
-    typedef ISAToDescriptorMap::iterator ISAToDescriptorIterator;
-    ISAToDescriptorMap m_isa_to_descriptor_cache;
-    uint32_t m_isa_to_descriptor_cache_stop_id;
+    uint32_t m_isa_to_descriptor_stop_id;
+
     typedef std::map<ConstString, lldb::TypeWP> CompleteClassMap;
     CompleteClassMap m_complete_class_cache;
+    
+    struct ConstStringSetHelpers {
+        size_t operator () (const ConstString& arg) const // for hashing
+        {
+            return (size_t)arg.GetCString();
+        }
+        bool operator () (const ConstString& arg1, const ConstString& arg2) const // for equality
+        {
+            return arg1.operator==(arg2);
+        }
+    };
+    typedef std::unordered_set<ConstString, ConstStringSetHelpers, ConstStringSetHelpers> CompleteClassSet;
+    CompleteClassSet m_negative_complete_class_cache;
+
+    ISAToDescriptorIterator
+    GetDescriptorIterator (const ConstString &name);
 
     DISALLOW_COPY_AND_ASSIGN (ObjCLanguageRuntime);
 };

Modified: lldb/branches/windows/include/lldb/Target/OperatingSystem.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/OperatingSystem.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/OperatingSystem.h (original)
+++ lldb/branches/windows/include/lldb/Target/OperatingSystem.h Wed Apr 17 03:38:48 2013
@@ -76,6 +76,11 @@ public:
     virtual lldb::StopInfoSP
     CreateThreadStopReason (Thread *thread) = 0;
 
+    virtual lldb::ThreadSP
+    CreateThread (lldb::tid_t tid, lldb::addr_t context)
+    {
+        return lldb::ThreadSP();
+    }
 protected:
     //------------------------------------------------------------------
     // Member variables.

Modified: lldb/branches/windows/include/lldb/Target/PathMappingList.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/PathMappingList.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/PathMappingList.h (original)
+++ lldb/branches/windows/include/lldb/Target/PathMappingList.h Wed Apr 17 03:38:48 2013
@@ -144,6 +144,11 @@ public:
     uint32_t
     FindIndexForPath (const ConstString &path) const;
 
+    uint32_t
+    GetModificationID() const
+    {
+        return m_mod_id;
+    }
 protected:
     typedef std::pair <ConstString, ConstString> pair;
     typedef std::vector <pair> collection;
@@ -159,6 +164,7 @@ protected:
     collection m_pairs;
     ChangedCallback m_callback;
     void * m_callback_baton;
+    uint32_t m_mod_id; // Incremented anytime anything is added or removed.
 };
 
 } // namespace lldb_private

Modified: lldb/branches/windows/include/lldb/Target/Platform.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/Platform.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/Platform.h (original)
+++ lldb/branches/windows/include/lldb/Target/Platform.h Wed Apr 17 03:38:48 2013
@@ -94,6 +94,23 @@ namespace lldb_private {
         ~Platform();
 
         //------------------------------------------------------------------
+        /// Find a platform plugin for a given process.
+        ///
+        /// Scans the installed Platform plug-ins and tries to find
+        /// an instance that can be used for \a process
+        ///
+        /// @param[in] process
+        ///     The process for which to try and locate a platform
+        ///     plug-in instance.
+        ///
+        /// @param[in] plugin_name
+        ///     An optional name of a specific platform plug-in that
+        ///     should be used. If NULL, pick the best plug-in.
+        //------------------------------------------------------------------
+        static Platform*
+        FindPlugin (Process *process, const char *plugin_name);
+
+        //------------------------------------------------------------------
         /// Set the target's executable based off of the existing 
         /// architecture information in \a target given a path to an 
         /// executable \a exe_file.
@@ -297,8 +314,9 @@ namespace lldb_private {
         // Locating the file should happen only on the local computer or using
         // the current computers global settings.
         //----------------------------------------------------------------------
-        virtual FileSpec
-        LocateExecutableScriptingResource (const ModuleSpec &module_spec);
+        virtual FileSpecList
+        LocateExecutableScriptingResources (Target *target,
+                                            Module &module);
         
         virtual Error
         GetSharedModule (const ModuleSpec &module_spec, 
@@ -347,7 +365,9 @@ namespace lldb_private {
         /// architecture and the target triple contained within.
         //------------------------------------------------------------------
         virtual bool
-        IsCompatibleArchitecture (const ArchSpec &arch, ArchSpec *compatible_arch_ptr = NULL);
+        IsCompatibleArchitecture (const ArchSpec &arch,
+                                  bool exact_arch_match,
+                                  ArchSpec *compatible_arch_ptr);
 
         //------------------------------------------------------------------
         /// Not all platforms will support debugging a process by spawning
@@ -477,13 +497,13 @@ namespace lldb_private {
         }
 
         // Used for column widths
-        uint32_t
+        size_t
         GetMaxUserIDNameLength() const
         {
             return m_max_uid_name_len;
         }
         // Used for column widths
-        uint32_t
+        size_t
         GetMaxGroupIDNameLength() const
         {
             return m_max_gid_name_len;
@@ -547,8 +567,8 @@ namespace lldb_private {
         Mutex m_gid_map_mutex;
         IDToNameMap m_uid_map;
         IDToNameMap m_gid_map;
-        uint32_t m_max_uid_name_len;
-        uint32_t m_max_gid_name_len;
+        size_t m_max_uid_name_len;
+        size_t m_max_gid_name_len;
         
         const char *
         GetCachedUserName (uint32_t uid)

Modified: lldb/branches/windows/include/lldb/Target/Process.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/Process.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/Process.h (original)
+++ lldb/branches/windows/include/lldb/Target/Process.h Wed Apr 17 03:38:48 2013
@@ -77,6 +77,24 @@ public:
 
     void
     SetPythonOSPluginPath (const FileSpec &file);
+    
+    bool
+    GetIgnoreBreakpointsInExpressions () const;
+    
+    void
+    SetIgnoreBreakpointsInExpressions (bool ignore);
+
+    bool
+    GetUnwindOnErrorInExpressions () const;
+    
+    void
+    SetUnwindOnErrorInExpressions (bool ignore);
+    
+    bool
+    GetStopOnSharedLibraryEvents () const;
+    
+    void
+    SetStopOnSharedLibraryEvents (bool stop);
 };
 
 typedef STD_SHARED_PTR(ProcessProperties) ProcessPropertiesSP;
@@ -631,7 +649,7 @@ public:
     const FileAction *
     GetFileActionForFD (int fd) const
     {
-        for (uint32_t idx=0, count=m_file_actions.size(); idx < count; ++idx)
+        for (size_t idx=0, count=m_file_actions.size(); idx < count; ++idx)
         {
             if (m_file_actions[idx].GetFD () == fd)
                 return &m_file_actions[idx];
@@ -1063,7 +1081,7 @@ public:
         m_infos.clear();
     }
     
-    uint32_t
+    size_t
     GetSize()
     {
         return m_infos.size();
@@ -1076,7 +1094,7 @@ public:
     }
 
     const char *
-    GetProcessNameAtIndex (uint32_t idx)
+    GetProcessNameAtIndex (size_t idx)
     {
         if (idx < m_infos.size())
             return m_infos[idx].GetName();
@@ -1084,7 +1102,7 @@ public:
     }
 
     size_t
-    GetProcessNameLengthAtIndex (uint32_t idx)
+    GetProcessNameLengthAtIndex (size_t idx)
     {
         if (idx < m_infos.size())
             return m_infos[idx].GetNameLength();
@@ -1092,7 +1110,7 @@ public:
     }
 
     lldb::pid_t
-    GetProcessIDAtIndex (uint32_t idx)
+    GetProcessIDAtIndex (size_t idx)
     {
         if (idx < m_infos.size())
             return m_infos[idx].GetProcessID();
@@ -1100,7 +1118,7 @@ public:
     }
 
     bool
-    GetInfoAtIndex (uint32_t idx, ProcessInstanceInfo &info)
+    GetInfoAtIndex (size_t idx, ProcessInstanceInfo &info)
     {
         if (idx < m_infos.size())
         {
@@ -1112,7 +1130,7 @@ public:
     
     // You must ensure "idx" is valid before calling this function
     const ProcessInstanceInfo &
-    GetProcessInfoAtIndex (uint32_t idx) const
+    GetProcessInfoAtIndex (size_t idx) const
     {
         assert (idx < m_infos.size());
         return m_infos[idx];
@@ -1135,6 +1153,7 @@ friend bool operator== (const ProcessMod
 public:
     ProcessModID () : 
         m_stop_id (0),
+        m_last_natural_stop_id(0),
         m_resume_id (0), 
         m_memory_id (0),
         m_last_user_expression_resume (0),
@@ -1159,7 +1178,9 @@ public:
     ~ProcessModID () {}
     
     void BumpStopID () { 
-        m_stop_id++; 
+        m_stop_id++;
+        if (!IsLastResumeForUserExpression())
+            m_last_natural_stop_id++;
     }
     
     void BumpMemoryID () { m_memory_id++; }
@@ -1171,6 +1192,7 @@ public:
     }
     
     uint32_t GetStopID() const { return m_stop_id; }
+    uint32_t GetLastNaturalStopID() const { return m_last_natural_stop_id; }
     uint32_t GetMemoryID () const { return m_memory_id; }
     uint32_t GetResumeID () const { return m_resume_id; }
     uint32_t GetLastUserExpressionResumeID () const { return m_last_user_expression_resume; }
@@ -1213,6 +1235,7 @@ public:
     
 private:
     uint32_t m_stop_id;
+    uint32_t m_last_natural_stop_id;
     uint32_t m_resume_id;
     uint32_t m_memory_id;
     uint32_t m_last_user_expression_resume;
@@ -1381,6 +1404,7 @@ public:
         return GetStaticBroadcasterClass();
     }
 
+    
     //------------------------------------------------------------------
     /// A notification structure that can be used by clients to listen
     /// for changes in a process's lifetime.
@@ -1428,6 +1452,22 @@ public:
             {
                 return m_restarted;
             }
+        
+            size_t
+            GetNumRestartedReasons ()
+            {
+                return m_restarted_reasons.size();
+            }
+        
+            const char *
+            GetRestartedReasonAtIndex(size_t idx)
+            {
+                if (idx > m_restarted_reasons.size())
+                    return NULL;
+                else
+                    return m_restarted_reasons[idx].c_str();
+            }
+        
             bool
             GetInterrupted () const
             {
@@ -1451,6 +1491,15 @@ public:
 
             static bool
             GetRestartedFromEvent (const Event *event_ptr);
+        
+            static size_t
+            GetNumRestartedReasons(const Event *event_ptr);
+        
+            static const char *
+            GetRestartedReasonAtIndex(const Event *event_ptr, size_t idx);
+        
+            static void
+            AddRestartedReason (Event *event_ptr, const char *reason);
 
             static void
             SetRestartedInEvent (Event *event_ptr, bool new_value);
@@ -1481,9 +1530,15 @@ public:
             {
                 m_interrupted = new_value;
             }
+            void
+            AddRestartedReason (const char *reason)
+            {
+                m_restarted_reasons.push_back(reason);
+            }
 
             lldb::ProcessSP m_process_sp;
             lldb::StateType m_state;
+            std::vector<std::string> m_restarted_reasons;
             bool m_restarted;  // For "eStateStopped" events, this is true if the target was automatically restarted.
             int m_update_state;
             bool m_interrupted;
@@ -1569,6 +1624,11 @@ public:
     uint32_t
     GetAddressByteSize () const;
 
+    uint32_t
+    GetUniqueID() const
+    {
+        return m_process_unique_id;
+    }
     //------------------------------------------------------------------
     /// Check if a plug-in instance can debug the file in \a module.
     ///
@@ -2296,6 +2356,9 @@ public:
     //------------------------------------------------------------------
     virtual void
     DidDetach () {}
+    
+    virtual bool
+    DetachRequiresHalt() { return false; }
 
     //------------------------------------------------------------------
     /// Called before sending a signal to a process.
@@ -2333,6 +2396,9 @@ public:
 
     virtual void
     DidDestroy () { }
+    
+    virtual bool
+    DestroyRequiresHalt() { return true; }
 
 
     //------------------------------------------------------------------
@@ -2415,7 +2481,8 @@ public:
                     lldb::ThreadPlanSP &thread_plan_sp,
                     bool stop_others,
                     bool run_others,
-                    bool discard_on_error,
+                    bool unwind_on_error,
+                    bool ignore_breakpoints,
                     uint32_t timeout_usec,
                     Stream &errors);
 
@@ -2522,6 +2589,12 @@ public:
         return m_mod_id.GetLastUserExpressionResumeID();
     }
     
+    uint32_t
+    GetLastNaturalStopID()
+    {
+        return m_mod_id.GetLastNaturalStopID();
+    }
+    
     //------------------------------------------------------------------
     /// Set accessor for the process exit status (return code).
     ///
@@ -2745,7 +2818,7 @@ public:
     size_t
     WriteScalarToMemory (lldb::addr_t vm_addr, 
                          const Scalar &scalar, 
-                         uint32_t size, 
+                         size_t size, 
                          Error &error);
 
     size_t
@@ -2833,6 +2906,28 @@ public:
     lldb::addr_t
     AllocateMemory (size_t size, uint32_t permissions, Error &error);
 
+
+    //------------------------------------------------------------------
+    /// Resolve dynamically loaded indirect functions.
+    ///
+    /// @param[in] address
+    ///     The load address of the indirect function to resolve.
+    ///
+    /// @param[out] error
+    ///     An error value in case the resolve fails.
+    ///
+    /// @return
+    ///     The address of the resolved function.
+    ///     LLDB_INVALID_ADDRESS if the resolution failed.
+    //------------------------------------------------------------------
+
+    virtual lldb::addr_t
+    ResolveIndirectFunction(const Address *address, Error &error)
+    {
+        error.SetErrorStringWithFormat("error: %s does not support indirect functions in the debug process", GetShortPluginName());
+        return LLDB_INVALID_ADDRESS;
+    }
+
     virtual Error
     GetMemoryRegionInfo (lldb::addr_t load_addr, 
                         MemoryRegionInfo &range_info)
@@ -2860,9 +2955,7 @@ public:
     
     lldb::ModuleSP
     ReadModuleFromMemory (const FileSpec& file_spec, 
-                          lldb::addr_t header_addr,
-                          bool add_image_to_target,
-                          bool load_sections_in_target);
+                          lldb::addr_t header_addr);
 
     //------------------------------------------------------------------
     /// Attempt to get the attributes for a region of memory in the process.
@@ -3051,7 +3144,7 @@ public:
     GetSoftwareBreakpointTrapOpcode (BreakpointSite* bp_site);
 
     virtual Error
-    EnableBreakpoint (BreakpointSite *bp_site)
+    EnableBreakpointSite (BreakpointSite *bp_site)
     {
         Error error;
         error.SetErrorStringWithFormat("error: %s does not support enabling breakpoints", GetShortPluginName());
@@ -3060,7 +3153,7 @@ public:
 
 
     virtual Error
-    DisableBreakpoint (BreakpointSite *bp_site)
+    DisableBreakpointSite (BreakpointSite *bp_site)
     {
         Error error;
         error.SetErrorStringWithFormat("error: %s does not support disabling breakpoints", GetShortPluginName());
@@ -3106,10 +3199,7 @@ public:
 
 
     // BreakpointLocations use RemoveOwnerFromBreakpointSite to remove
-    // themselves from the owner's list of this breakpoint sites.  This has to
-    // be a static function because you can't be sure that removing the
-    // breakpoint from it's containing map won't delete the breakpoint site,
-    // and doing that in an instance method isn't copasetic.
+    // themselves from the owner's list of this breakpoint sites.
     void
     RemoveOwnerFromBreakpointSite (lldb::user_id_t owner_id,
                                    lldb::user_id_t owner_loc_id,
@@ -3138,10 +3228,25 @@ public:
     {
         return m_thread_list;
     }
-
-
+    
+    // This is obsoleted and will be removed very soon.
     uint32_t
     GetNextThreadIndexID ();
+    
+    uint32_t
+    GetNextThreadIndexID (uint64_t thread_id);
+    
+    lldb::ThreadSP
+    CreateOSPluginThread (lldb::tid_t tid, lldb::addr_t context);
+    
+    // Returns true if an index id has been assigned to a thread.
+    bool
+    HasAssignedIndexIDToThread(uint64_t sb_thread_id);
+    
+    // Given a thread_id, it will assign a more reasonable index id for display to the user.
+    // If the thread_id has previously been assigned, the same index id will be used.
+    uint32_t
+    AssignIndexIDToThread(uint64_t thread_id);
 
     //------------------------------------------------------------------
     // Event Handling
@@ -3358,7 +3463,10 @@ public:
     ReadWriteLock &
     GetRunLock ()
     {
-        return m_run_lock;
+        if (Host::GetCurrentThread() == m_private_state_thread)
+            return m_private_run_lock;
+        else
+            return m_public_run_lock;
     }
 
 protected:
@@ -3469,7 +3577,9 @@ protected:
     Predicate<bool>             m_private_state_control_wait; /// This Predicate is used to signal that a control operation is complete.
     lldb::thread_t              m_private_state_thread;  // Thread ID for the thread that watches interal state events
     ProcessModID                m_mod_id;               ///< Tracks the state of the process over stops and other alterations.
+    uint32_t                    m_process_unique_id;    ///< Each lldb_private::Process class that is created gets a unique integer ID that increments with each new instance
     uint32_t                    m_thread_index_id;      ///< Each thread is created with a 1 based index that won't get re-used.
+    std::map<uint64_t, uint32_t> m_thread_id_to_index_id_map;
     int                         m_exit_status;          ///< The exit status of the process, or -1 if not set.
     std::string                 m_exit_string;          ///< A textual description of why a process exited.
     ThreadList                  m_thread_list;          ///< The threads for this process.
@@ -3495,10 +3605,13 @@ protected:
     LanguageRuntimeCollection   m_language_runtimes;
     std::auto_ptr<NextEventAction> m_next_event_action_ap;
     std::vector<PreResumeCallbackAndBaton> m_pre_resume_actions;
-    ReadWriteLock               m_run_lock;
+    ReadWriteLock               m_public_run_lock;
+    ReadWriteLock               m_private_run_lock;
     Predicate<bool>             m_currently_handling_event;
     bool                        m_finalize_called;
-
+    lldb::StateType             m_last_broadcast_state;   /// This helps with the Public event coalescing in ShouldBroadcastEvent.
+    bool m_destroy_in_process;
+    
     enum {
         eCanJITDontKnow= 0,
         eCanJITYes,
@@ -3586,13 +3699,15 @@ protected:
                                 const char *bytes,
                                 size_t bytes_len);
     
+    Error
+    HaltForDestroyOrDetach(lldb::EventSP &exit_event_sp);
     
 private:
     //------------------------------------------------------------------
     // For Process only
     //------------------------------------------------------------------
     void ControlPrivateStateThread (uint32_t signal);
-
+    
     DISALLOW_COPY_AND_ASSIGN (Process);
 
 };

Modified: lldb/branches/windows/include/lldb/Target/RegisterContext.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/RegisterContext.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/RegisterContext.h (original)
+++ lldb/branches/windows/include/lldb/Target/RegisterContext.h Wed Apr 17 03:38:48 2013
@@ -45,13 +45,13 @@ public:
     GetRegisterCount () = 0;
 
     virtual const RegisterInfo *
-    GetRegisterInfoAtIndex (uint32_t reg) = 0;
+    GetRegisterInfoAtIndex (size_t reg) = 0;
 
     virtual size_t
     GetRegisterSetCount () = 0;
 
     virtual const RegisterSet *
-    GetRegisterSet (uint32_t reg_set) = 0;
+    GetRegisterSet (size_t reg_set) = 0;
 
     virtual bool
     ReadRegister (const RegisterInfo *reg_info, RegisterValue &reg_value) = 0;

Modified: lldb/branches/windows/include/lldb/Target/SectionLoadList.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/SectionLoadList.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/SectionLoadList.h (original)
+++ lldb/branches/windows/include/lldb/Target/SectionLoadList.h Wed Apr 17 03:38:48 2013
@@ -38,6 +38,9 @@ public:
 
     ~SectionLoadList()
     {
+        // Call clear since this takes a lock and clears the section load list
+        // in case another thread is currently using this section load list
+        Clear();
     }
 
     bool

Modified: lldb/branches/windows/include/lldb/Target/StopInfo.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/StopInfo.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/StopInfo.h (original)
+++ lldb/branches/windows/include/lldb/Target/StopInfo.h Wed Apr 17 03:38:48 2013
@@ -106,7 +106,32 @@ public:
         else
             m_description.clear();
     }
-
+    
+    // Sometimes the thread plan logic will know that it wants a given stop to stop or not,
+    // regardless of what the ordinary logic for that StopInfo would dictate.  The main example
+    // of this is the ThreadPlanCallFunction, which for instance knows - based on how that particular
+    // expression was executed - whether it wants all breakpoints to auto-continue or not.
+    // Use OverrideShouldStop on the StopInfo to implement this.
+    
+    void
+    OverrideShouldStop (bool override_value)
+    {
+        m_override_set = true;
+        m_override_value = override_value;
+    }
+    
+    bool
+    GetOverrideShouldStop()
+    {
+        return m_override_set;
+    }
+    
+    bool
+    GetOverriddenShouldStopValue ()
+    {
+        return m_override_value;
+    }
+    
     static lldb::StopInfoSP
     CreateStopReasonWithBreakpointSiteID (Thread &thread, lldb::break_id_t break_id);
 
@@ -138,6 +163,7 @@ public:
 protected:
     // Perform any action that is associated with this stop.  This is done as the
     // Event is removed from the event queue.  ProcessEventData::DoOnRemoval does the job.
+ 
     virtual void
     PerformAction (Event *event_ptr)
     {
@@ -163,6 +189,8 @@ protected:
     uint32_t        m_resume_id; // This is the resume ID when we made this stop ID.
     uint64_t        m_value;    // A generic value that can be used for things pertaining to this stop info
     std::string     m_description; // A textual description describing this stop.
+    bool            m_override_set;
+    bool            m_override_value;
     
     // This determines whether the target has run since this stop info.
     // N.B. running to evaluate a user expression does not count. 

Modified: lldb/branches/windows/include/lldb/Target/Target.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/Target.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/Target.h (original)
+++ lldb/branches/windows/include/lldb/Target/Target.h Wed Apr 17 03:38:48 2013
@@ -24,7 +24,6 @@
 #include "lldb/Core/Event.h"
 #include "lldb/Core/ModuleList.h"
 #include "lldb/Core/UserSettingsController.h"
-#include "lldb/Core/SourceManager.h"
 #include "lldb/Expression/ClangPersistentVariables.h"
 #include "lldb/Interpreter/Args.h"
 #include "lldb/Interpreter/OptionValueBoolean.h"
@@ -79,6 +78,12 @@ public:
     void
     SetDisableSTDIO (bool b);
     
+    const char *
+    GetDisassemblyFlavor() const;
+
+//    void
+//    SetDisassemblyFlavor(const char *flavor);
+    
     InlineStrategy
     GetInlineStrategy () const;
 
@@ -138,7 +143,10 @@ public:
     
     const char *
     GetExpressionPrefixContentsAsCString ();
-
+    
+    bool
+    GetUseFastStepping() const;
+    
 };
 
 typedef STD_SHARED_PTR(TargetProperties) TargetPropertiesSP;
@@ -151,6 +159,7 @@ public:
         m_execution_policy(eExecutionPolicyOnlyWhenNeeded),
         m_coerce_to_id(false),
         m_unwind_on_error(true),
+        m_ignore_breakpoints (false),
         m_keep_in_memory(false),
         m_run_others(true),
         m_use_dynamic(lldb::eNoDynamicValues),
@@ -197,6 +206,19 @@ public:
     }
     
     bool
+    DoesIgnoreBreakpoints () const
+    {
+        return m_ignore_breakpoints;
+    }
+    
+    EvaluateExpressionOptions&
+    SetIgnoreBreakpoints (bool ignore = false)
+    {
+        m_ignore_breakpoints = ignore;
+        return *this;
+    }
+    
+    bool
     DoesKeepInMemory () const
     {
         return m_keep_in_memory;
@@ -252,6 +274,7 @@ private:
     ExecutionPolicy m_execution_policy;
     bool m_coerce_to_id;
     bool m_unwind_on_error;
+    bool m_ignore_breakpoints;
     bool m_keep_in_memory;
     bool m_run_others;
     lldb::DynamicValueType m_use_dynamic;
@@ -279,7 +302,8 @@ public:
         eBroadcastBitBreakpointChanged  = (1 << 0),
         eBroadcastBitModulesLoaded      = (1 << 1),
         eBroadcastBitModulesUnloaded    = (1 << 2),
-        eBroadcastBitWatchpointChanged  = (1 << 3)
+        eBroadcastBitWatchpointChanged  = (1 << 3),
+        eBroadcastBitSymbolsLoaded      = (1 << 4)
     };
     
     // These two functions fill out the Broadcaster interface:
@@ -644,6 +668,9 @@ public:
     void
     ModulesDidUnload (ModuleList &module_list);
     
+    void
+    SymbolsDidLoad (ModuleList &module_list);
+    
     //------------------------------------------------------------------
     /// Gets the module for the main executable.
     ///
@@ -831,7 +858,13 @@ public:
                 size_t dst_len,
                 Error &error,
                 lldb::addr_t *load_addr_ptr = NULL);
-
+    
+    size_t
+    ReadCStringFromMemory (const Address& addr, std::string &out_str, Error &error);
+    
+    size_t
+    ReadCStringFromMemory (const Address& addr, char *dst, size_t dst_max_len, Error &result_error);
+    
     size_t
     ReadScalarIntegerFromMemory (const Address& addr, 
                                  bool prefer_file_cache,
@@ -1090,10 +1123,7 @@ public:
     }
 
     SourceManager &
-    GetSourceManager ()
-    {
-        return m_source_manager;
-    }
+    GetSourceManager ();
 
     //------------------------------------------------------------------
     // Methods.
@@ -1134,7 +1164,7 @@ protected:
     std::auto_ptr<ClangASTImporter> m_ast_importer_ap;
     ClangPersistentVariables m_persistent_variables;      ///< These are the persistent variables associated with this process for the expression parser.
 
-    SourceManager m_source_manager;
+    std::auto_ptr<SourceManager> m_source_manager_ap;
 
     typedef std::map<lldb::user_id_t, StopHookSP> StopHookCollection;
     StopHookCollection      m_stop_hooks;

Modified: lldb/branches/windows/include/lldb/Target/Thread.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/Thread.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/Thread.h (original)
+++ lldb/branches/windows/include/lldb/Target/Thread.h Wed Apr 17 03:38:48 2013
@@ -394,9 +394,13 @@ public:
     uint32_t
     SetSelectedFrame (lldb_private::StackFrame *frame, bool broadcast = false);
 
+
     bool
     SetSelectedFrameByIndex (uint32_t frame_idx, bool broadcast = false);
 
+    bool
+    SetSelectedFrameByIndexNoisily (uint32_t frame_idx, Stream &output_stream);
+
     void
     SetDefaultFileAndLineToSelectedFrame()
     {
@@ -412,6 +416,24 @@ public:
     virtual void
     ClearStackFrames ();
 
+    virtual bool
+    SetBackingThread (const lldb::ThreadSP &thread_sp)
+    {
+        return false;
+    }
+
+    virtual void
+    ClearBackingThread ()
+    {
+        // Subclasses can use this function if a thread is actually backed by
+        // another thread. This is currently used for the OperatingSystem plug-ins
+        // where they might have a thread that is in memory, yet its registers
+        // are available through the lldb_private::Thread subclass for the current
+        // lldb_private::Process class. Since each time the process stops the backing
+        // threads for memory threads can change, we need a way to clear the backing
+        // thread for all memory threads each time we stop.
+    }
+
     void
     DumpUsingSettingsFormat (Stream &strm, uint32_t frame_idx);
 
@@ -648,7 +670,8 @@ public:
                                     Address& function,
                                     lldb::addr_t arg,
                                     bool stop_other_threads,
-                                    bool discard_on_error = false);
+                                    bool unwind_on_error = false,
+                                    bool ignore_breakpoints = true);
                                             
     //------------------------------------------------------------------
     // Thread Plan accessors:
@@ -662,6 +685,17 @@ public:
     //------------------------------------------------------------------
     ThreadPlan *
     GetCurrentPlan ();
+    
+    //------------------------------------------------------------------
+    /// Unwinds the thread stack for the innermost expression plan currently
+    /// on the thread plan stack.
+    ///
+    /// @return
+    ///     An error if the thread plan could not be unwound.
+    //------------------------------------------------------------------
+
+    Error
+    UnwindInnermostExpression();
 
 private:
     bool

Modified: lldb/branches/windows/include/lldb/Target/ThreadList.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/ThreadList.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/ThreadList.h (original)
+++ lldb/branches/windows/include/lldb/Target/ThreadList.h Wed Apr 17 03:38:48 2013
@@ -75,6 +75,9 @@ public:
     FindThreadByID (lldb::tid_t tid, bool can_update = true);
 
     lldb::ThreadSP
+    RemoveThreadByID (lldb::tid_t tid, bool can_update = true);
+
+    lldb::ThreadSP
     FindThreadByIndexID (uint32_t index_id, bool can_update = true);
 
     lldb::ThreadSP

Modified: lldb/branches/windows/include/lldb/Target/ThreadPlan.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/ThreadPlan.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/ThreadPlan.h (original)
+++ lldb/branches/windows/include/lldb/Target/ThreadPlan.h Wed Apr 17 03:38:48 2013
@@ -332,7 +332,7 @@ public:
     ValidatePlan (Stream *error) = 0;
 
     virtual bool
-    PlanExplainsStop () = 0;
+    PlanExplainsStop (Event *event_ptr) = 0;
     
     bool
     TracerExplainsStop ()

Modified: lldb/branches/windows/include/lldb/Target/ThreadPlanBase.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/ThreadPlanBase.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/ThreadPlanBase.h (original)
+++ lldb/branches/windows/include/lldb/Target/ThreadPlanBase.h Wed Apr 17 03:38:48 2013
@@ -35,7 +35,7 @@ public:
 
     virtual void GetDescription (Stream *s, lldb::DescriptionLevel level);
     virtual bool ValidatePlan (Stream *error);
-    virtual bool PlanExplainsStop ();
+    virtual bool PlanExplainsStop (Event *event_ptr);
     virtual bool ShouldStop (Event *event_ptr);
     virtual bool StopOthers ();
     virtual lldb::StateType GetPlanRunState ();

Modified: lldb/branches/windows/include/lldb/Target/ThreadPlanCallFunction.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/ThreadPlanCallFunction.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/ThreadPlanCallFunction.h (original)
+++ lldb/branches/windows/include/lldb/Target/ThreadPlanCallFunction.h Wed Apr 17 03:38:48 2013
@@ -27,19 +27,21 @@ class ThreadPlanCallFunction : public Th
     // return type, otherwise just pass in an invalid ClangASTType.
 public:
     ThreadPlanCallFunction (Thread &thread,
-                            Address &function,
+                            const Address &function,
                             const ClangASTType &return_type,
                             lldb::addr_t arg,
                             bool stop_other_threads,
-                            bool discard_on_error = true,
+                            bool unwind_on_error = true,
+                            bool ignore_breakpoints = false,
                             lldb::addr_t *this_arg = 0,
                             lldb::addr_t *cmd_arg = 0);
 
     ThreadPlanCallFunction (Thread &thread,
-                            Address &function,
+                            const Address &function,
                             const ClangASTType &return_type,
                             bool stop_other_threads,
-                            bool discard_on_error,
+                            bool unwind_on_error,
+                            bool ignore_breakpoints,
                             lldb::addr_t *arg1_ptr = NULL,
                             lldb::addr_t *arg2_ptr = NULL,
                             lldb::addr_t *arg3_ptr = NULL,
@@ -57,10 +59,13 @@ public:
     ValidatePlan (Stream *error);
 
     virtual bool
-    PlanExplainsStop ();
+    PlanExplainsStop (Event *event_ptr);
 
     virtual bool
     ShouldStop (Event *event_ptr);
+    
+    virtual Vote
+    ShouldReportStop(Event *event_ptr);
 
     virtual bool
     StopOthers ();
@@ -166,11 +171,13 @@ private:
                                                                          // thread plans, but for reporting purposes,
                                                                          // it's nice to know the real stop reason.
                                                                          // This gets set in DoTakedown.
+    StreamString                                    m_constructor_errors;
     ClangASTType                                    m_return_type;
     lldb::ValueObjectSP                             m_return_valobj_sp;  // If this contains a valid pointer, use the ABI to extract values when complete
     bool                                            m_takedown_done;    // We want to ensure we only do the takedown once.  This ensures that.
     lldb::addr_t                                    m_stop_address;     // This is the address we stopped at.  Also set in DoTakedown;
-    bool                                            m_discard_on_error;
+    bool                                            m_unwind_on_error;
+    bool                                            m_ignore_breakpoints;
 
     DISALLOW_COPY_AND_ASSIGN (ThreadPlanCallFunction);
 };

Modified: lldb/branches/windows/include/lldb/Target/ThreadPlanCallUserExpression.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/ThreadPlanCallUserExpression.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/ThreadPlanCallUserExpression.h (original)
+++ lldb/branches/windows/include/lldb/Target/ThreadPlanCallUserExpression.h Wed Apr 17 03:38:48 2013
@@ -29,7 +29,8 @@ public:
                                   Address &function,
                                   lldb::addr_t arg,
                                   bool stop_other_threads,
-                                  bool discard_on_error,
+                                  bool unwind_on_error,
+                                  bool ignore_breakpoints,
                                   lldb::addr_t *this_arg,
                                   lldb::addr_t *cmd_arg,
                                   ClangUserExpression::ClangUserExpressionSP &user_expression_sp);

Modified: lldb/branches/windows/include/lldb/Target/ThreadPlanRunToAddress.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/ThreadPlanRunToAddress.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/ThreadPlanRunToAddress.h (original)
+++ lldb/branches/windows/include/lldb/Target/ThreadPlanRunToAddress.h Wed Apr 17 03:38:48 2013
@@ -47,7 +47,7 @@ public:
     ValidatePlan (Stream *error);
 
     virtual bool
-    PlanExplainsStop ();
+    PlanExplainsStop (Event *event_ptr);
 
     virtual bool
     ShouldStop (Event *event_ptr);

Modified: lldb/branches/windows/include/lldb/Target/ThreadPlanStepInRange.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/ThreadPlanStepInRange.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/ThreadPlanStepInRange.h (original)
+++ lldb/branches/windows/include/lldb/Target/ThreadPlanStepInRange.h Wed Apr 17 03:38:48 2013
@@ -61,7 +61,7 @@ public:
     SetDefaultFlagValue (uint32_t new_value);
 
     virtual bool
-    PlanExplainsStop ();
+    PlanExplainsStop (Event *event_ptr);
 
     virtual bool WillResume (lldb::StateType resume_state, bool current_plan);
     

Modified: lldb/branches/windows/include/lldb/Target/ThreadPlanStepInstruction.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/ThreadPlanStepInstruction.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/ThreadPlanStepInstruction.h (original)
+++ lldb/branches/windows/include/lldb/Target/ThreadPlanStepInstruction.h Wed Apr 17 03:38:48 2013
@@ -27,7 +27,7 @@ public:
 
     virtual void GetDescription (Stream *s, lldb::DescriptionLevel level);
     virtual bool ValidatePlan (Stream *error);
-    virtual bool PlanExplainsStop ();
+    virtual bool PlanExplainsStop (Event *event_ptr);
     virtual bool ShouldStop (Event *event_ptr);
     virtual bool StopOthers ();
     virtual lldb::StateType GetPlanRunState ();

Modified: lldb/branches/windows/include/lldb/Target/ThreadPlanStepOut.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/ThreadPlanStepOut.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/ThreadPlanStepOut.h (original)
+++ lldb/branches/windows/include/lldb/Target/ThreadPlanStepOut.h Wed Apr 17 03:38:48 2013
@@ -34,7 +34,7 @@ public:
 
     virtual void GetDescription (Stream *s, lldb::DescriptionLevel level);
     virtual bool ValidatePlan (Stream *error);
-    virtual bool PlanExplainsStop ();
+    virtual bool PlanExplainsStop (Event *event_ptr);
     virtual bool ShouldStop (Event *event_ptr);
     virtual bool StopOthers ();
     virtual lldb::StateType GetPlanRunState ();

Modified: lldb/branches/windows/include/lldb/Target/ThreadPlanStepOverBreakpoint.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/ThreadPlanStepOverBreakpoint.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/ThreadPlanStepOverBreakpoint.h (original)
+++ lldb/branches/windows/include/lldb/Target/ThreadPlanStepOverBreakpoint.h Wed Apr 17 03:38:48 2013
@@ -27,7 +27,7 @@ public:
     ThreadPlanStepOverBreakpoint (Thread &thread);
     virtual void GetDescription (Stream *s, lldb::DescriptionLevel level);
     virtual bool ValidatePlan (Stream *error);
-    virtual bool PlanExplainsStop ();
+    virtual bool PlanExplainsStop (Event *event_ptr);
     virtual bool ShouldStop (Event *event_ptr);
     virtual bool StopOthers ();
     virtual lldb::StateType GetPlanRunState ();

Modified: lldb/branches/windows/include/lldb/Target/ThreadPlanStepOverRange.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/ThreadPlanStepOverRange.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/ThreadPlanStepOverRange.h (original)
+++ lldb/branches/windows/include/lldb/Target/ThreadPlanStepOverRange.h Wed Apr 17 03:38:48 2013
@@ -34,7 +34,7 @@ public:
 
     virtual void GetDescription (Stream *s, lldb::DescriptionLevel level);
     virtual bool ShouldStop (Event *event_ptr);
-    virtual bool PlanExplainsStop ();
+    virtual bool PlanExplainsStop (Event *event_ptr);
     virtual bool WillResume (lldb::StateType resume_state, bool current_plan);
     
 protected:

Modified: lldb/branches/windows/include/lldb/Target/ThreadPlanStepRange.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/ThreadPlanStepRange.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/ThreadPlanStepRange.h (original)
+++ lldb/branches/windows/include/lldb/Target/ThreadPlanStepRange.h Wed Apr 17 03:38:48 2013
@@ -81,6 +81,7 @@ protected:
                                                  // but can't continue, in which case we are done.
     bool                      m_first_run_event; // We want to broadcast only one running event, our first.
     lldb::BreakpointSP        m_next_branch_bp_sp;
+    bool                      m_use_fast_step;
 
 private:
     std::vector<lldb::DisassemblerSP> m_instruction_ranges;

Modified: lldb/branches/windows/include/lldb/Target/ThreadPlanStepThrough.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/ThreadPlanStepThrough.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/ThreadPlanStepThrough.h (original)
+++ lldb/branches/windows/include/lldb/Target/ThreadPlanStepThrough.h Wed Apr 17 03:38:48 2013
@@ -26,7 +26,7 @@ public:
 
     virtual void GetDescription (Stream *s, lldb::DescriptionLevel level);
     virtual bool ValidatePlan (Stream *error);
-    virtual bool PlanExplainsStop ();
+    virtual bool PlanExplainsStop (Event *event_ptr);
     virtual bool ShouldStop (Event *event_ptr);
     virtual bool StopOthers ();
     virtual lldb::StateType GetPlanRunState ();

Modified: lldb/branches/windows/include/lldb/Target/ThreadPlanStepUntil.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/Target/ThreadPlanStepUntil.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/Target/ThreadPlanStepUntil.h (original)
+++ lldb/branches/windows/include/lldb/Target/ThreadPlanStepUntil.h Wed Apr 17 03:38:48 2013
@@ -27,7 +27,7 @@ public:
 
     virtual void GetDescription (Stream *s, lldb::DescriptionLevel level);
     virtual bool ValidatePlan (Stream *error);
-    virtual bool PlanExplainsStop ();
+    virtual bool PlanExplainsStop (Event *event_ptr);
     virtual bool ShouldStop (Event *event_ptr);
     virtual bool StopOthers ();
     virtual lldb::StateType GetPlanRunState ();

Modified: lldb/branches/windows/include/lldb/lldb-defines.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/lldb-defines.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/lldb-defines.h (original)
+++ lldb/branches/windows/include/lldb/lldb-defines.h Wed Apr 17 03:38:48 2013
@@ -26,6 +26,8 @@
 // A build script phase can modify this version number if needed.
 //----------------------------------------------------------------------
 //#define LLDB_VERSION
+//#define LLDB_REVISION
+//#define LLDB_VERSION_STRING
 
 //----------------------------------------------------------------------
 // LLDB defines
@@ -77,6 +79,7 @@
 #define LLDB_INVALID_THREAD_ID          0
 #define LLDB_INVALID_FRAME_ID           UINT32_MAX
 #define LLDB_INVALID_SIGNAL_NUMBER      INT32_MAX
+#define LLDB_INVALID_OFFSET             UINT64_MAX // Must match max of lldb::offset_t
 
 //----------------------------------------------------------------------
 /// CPU Type defintions

Modified: lldb/branches/windows/include/lldb/lldb-enumerations.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/lldb-enumerations.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/lldb-enumerations.h (original)
+++ lldb/branches/windows/include/lldb/lldb-enumerations.h Wed Apr 17 03:38:48 2013
@@ -369,6 +369,7 @@ namespace lldb {
     typedef enum CommandArgumentType
     {
         eArgTypeAddress = 0,
+        eArgTypeAddressOrExpression,
         eArgTypeAliasName,
         eArgTypeAliasOptions,
         eArgTypeArchitecture,
@@ -380,6 +381,7 @@ namespace lldb {
         eArgTypeCommandName,
         eArgTypeCount,
         eArgTypeDirectoryName,
+        eArgTypeDisassemblyFlavor,
         eArgTypeEndAddress,
         eArgTypeExpression,
         eArgTypeExpressionPath,
@@ -454,6 +456,7 @@ namespace lldb {
         eSymbolTypeInvalid = 0,
         eSymbolTypeAbsolute,
         eSymbolTypeCode,
+        eSymbolTypeResolver,
         eSymbolTypeData,
         eSymbolTypeTrampoline,
         eSymbolTypeRuntime,

Modified: lldb/branches/windows/include/lldb/lldb-forward.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/lldb-forward.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/lldb-forward.h (original)
+++ lldb/branches/windows/include/lldb/lldb-forward.h Wed Apr 17 03:38:48 2013
@@ -118,12 +118,14 @@ class   InlineFunctionInfo;
 class   InputReader;
 class   Instruction;
 class   InstructionList;
+class   IRExecutionUnit;
 class   LanguageRuntime;
 class   LineTable;
 class   Listener;
 class   Log;
 class   LogChannel;
 class   Mangled;
+class   Materializer;
 class   Module;
 class   ModuleList;
 class   ModuleSpec;
@@ -166,11 +168,11 @@ class   ProcessInstanceInfoMatch;
 class   ProcessLaunchInfo;
 class   Property;
 struct  PropertyDefinition;
-class   PythonDataArray;
-class   PythonDataDictionary;
-class   PythonDataInteger;
-class   PythonDataObject;
-class   PythonDataString;
+class   PythonArray;
+class   PythonDictionary;
+class   PythonInteger;
+class   PythonObject;
+class   PythonString;
 class   RegisterContext;
 class   RegisterLocation;
 class   RegisterLocationList;
@@ -178,6 +180,7 @@ class   RegisterValue;
 class   RegularExpression;
 class   Scalar;
 class   ScriptInterpreter;
+class   ScriptInterpreterLocker;
 class   ScriptInterpreterObject;
 #ifndef LLDB_DISABLE_PYTHON
 class   ScriptInterpreterPython;
@@ -218,7 +221,7 @@ class   SyntheticChildren;
 class   SyntheticChildrenFrontEnd;
 class   TypeFilterImpl;
 #ifndef LLDB_DISABLE_PYTHON
-class   TypeSyntheticImpl;
+class   ScriptedSyntheticChildren;
 #endif
 class   Target;
 class   TargetList;
@@ -236,6 +239,7 @@ class   ThreadPlanTracer;
 class   ThreadSpec;
 class   TimeValue;
 class   Type;
+class   TypeCategoryMap;
 class   TypeImpl;
 class   TypeAndOrName;
 class   TypeList;
@@ -304,7 +308,6 @@ namespace lldb {
     typedef STD_SHARED_PTR(lldb_private::LanguageRuntime) LanguageRuntimeSP;
     typedef STD_SHARED_PTR(lldb_private::LineTable) LineTableSP;
     typedef STD_SHARED_PTR(lldb_private::Listener) ListenerSP;
-    typedef STD_SHARED_PTR(lldb_private::Log) LogSP;
     typedef STD_SHARED_PTR(lldb_private::LogChannel) LogChannelSP;
     typedef STD_SHARED_PTR(lldb_private::Module) ModuleSP;
     typedef STD_WEAK_PTR(  lldb_private::Module) ModuleWP;
@@ -322,7 +325,6 @@ namespace lldb {
     typedef STD_SHARED_PTR(lldb_private::OptionValueFormat) OptionValueFormatSP;
     typedef STD_SHARED_PTR(lldb_private::OptionValuePathMappings) OptionValuePathMappingsSP;
     typedef STD_SHARED_PTR(lldb_private::OptionValueProperties) OptionValuePropertiesSP;
-//  typedef STD_WEAK_PTR(  lldb_private::OptionValueProperties) OptionValuePropertiesWP;
     typedef STD_SHARED_PTR(lldb_private::OptionValueRegex) OptionValueRegexSP;
     typedef STD_SHARED_PTR(lldb_private::OptionValueSInt64) OptionValueSInt64SP;
     typedef STD_SHARED_PTR(lldb_private::OptionValueString) OptionValueStringSP;
@@ -373,7 +375,7 @@ namespace lldb {
     typedef STD_SHARED_PTR(lldb_private::TypeNameSpecifierImpl) TypeNameSpecifierImplSP;
     typedef STD_SHARED_PTR(lldb_private::TypeSummaryImpl) TypeSummaryImplSP;
 #ifndef LLDB_DISABLE_PYTHON
-    typedef STD_SHARED_PTR(lldb_private::TypeSyntheticImpl) TypeSyntheticImplSP;
+    typedef STD_SHARED_PTR(lldb_private::ScriptedSyntheticChildren) ScriptedSyntheticChildrenSP;
 #endif
     typedef STD_SHARED_PTR(lldb_private::UnwindPlan) UnwindPlanSP;
     typedef lldb_private::SharingPtr<lldb_private::ValueObject> ValueObjectSP;

Modified: lldb/branches/windows/include/lldb/lldb-private-enumerations.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/lldb-private-enumerations.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/lldb-private-enumerations.h (original)
+++ lldb/branches/windows/include/lldb/lldb-private-enumerations.h Wed Apr 17 03:38:48 2013
@@ -131,6 +131,7 @@ typedef enum ExecutionResults
     eExecutionCompleted,
     eExecutionDiscarded,
     eExecutionInterrupted,
+    eExecutionHitBreakpoint,
     eExecutionTimedOut
 } ExecutionResults;
 

Modified: lldb/branches/windows/include/lldb/lldb-private-interfaces.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/lldb-private-interfaces.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/lldb-private-interfaces.h (original)
+++ lldb/branches/windows/include/lldb/lldb-private-interfaces.h Wed Apr 17 03:38:48 2013
@@ -17,11 +17,11 @@
 namespace lldb_private
 {
     typedef lldb::ABISP (*ABICreateInstance) (const ArchSpec &arch);
-    typedef Disassembler* (*DisassemblerCreateInstance) (const ArchSpec &arch);
+    typedef Disassembler* (*DisassemblerCreateInstance) (const ArchSpec &arch, const char *flavor);
     typedef DynamicLoader* (*DynamicLoaderCreateInstance) (Process* process, bool force);
-    typedef ObjectContainer* (*ObjectContainerCreateInstance) (const lldb::ModuleSP &module_sp, lldb::DataBufferSP& dataSP, const FileSpec *file, lldb::addr_t offset, lldb::addr_t length);
-    typedef ObjectFile* (*ObjectFileCreateInstance) (const lldb::ModuleSP &module_sp, lldb::DataBufferSP& dataSP, const FileSpec* file, lldb::addr_t offset, lldb::addr_t length);
-    typedef ObjectFile* (*ObjectFileCreateMemoryInstance) (const lldb::ModuleSP &module_sp, lldb::DataBufferSP& dataSP, const lldb::ProcessSP &process_sp, lldb::addr_t offset);
+    typedef ObjectContainer* (*ObjectContainerCreateInstance) (const lldb::ModuleSP &module_sp, lldb::DataBufferSP& data_sp, lldb::offset_t data_offset, const FileSpec *file, lldb::offset_t offset, lldb::offset_t length);
+    typedef ObjectFile* (*ObjectFileCreateInstance) (const lldb::ModuleSP &module_sp, lldb::DataBufferSP& data_sp, lldb::offset_t data_offset, const FileSpec* file, lldb::offset_t file_offset, lldb::offset_t length);
+    typedef ObjectFile* (*ObjectFileCreateMemoryInstance) (const lldb::ModuleSP &module_sp, lldb::DataBufferSP& data_sp, const lldb::ProcessSP &process_sp, lldb::addr_t offset);
     typedef LogChannel* (*LogChannelCreateInstance) ();
     typedef EmulateInstruction * (*EmulateInstructionCreateInstance) (const ArchSpec &arch, InstructionType inst_type);
     typedef OperatingSystem* (*OperatingSystemCreateInstance) (Process *process, bool force);

Modified: lldb/branches/windows/include/lldb/lldb-private-log.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/lldb-private-log.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/lldb-private-log.h (original)
+++ lldb/branches/windows/include/lldb/lldb-private-log.h Wed Apr 17 03:38:48 2013
@@ -42,6 +42,7 @@
 #define LIBLLDB_LOG_SYMBOLS             (1u << 20)
 #define LIBLLDB_LOG_MODULES             (1u << 21)
 #define LIBLLDB_LOG_TARGET              (1u << 22)
+#define LIBLLDB_LOG_MMAP                (1u << 23)
 #define LIBLLDB_LOG_ALL                 (UINT32_MAX)
 #define LIBLLDB_LOG_DEFAULT             (LIBLLDB_LOG_PROCESS              |\
                                          LIBLLDB_LOG_THREAD               |\
@@ -62,10 +63,10 @@ LogIfAllCategoriesSet (uint32_t mask, co
 void
 LogIfAnyCategoriesSet (uint32_t mask, const char *format, ...);
 
-lldb::LogSP
+Log *
 GetLogIfAllCategoriesSet (uint32_t mask);
 
-lldb::LogSP
+Log *
 GetLogIfAnyCategoriesSet (uint32_t mask);
 
 uint32_t
@@ -77,7 +78,7 @@ IsLogVerbose ();
 void
 DisableLog (const char **categories, Stream *feedback_strm);
 
-lldb::LogSP
+Log *
 EnableLog (lldb::StreamSP &log_stream_sp, uint32_t log_options, const char **categories, Stream *feedback_strm);
 
 void

Modified: lldb/branches/windows/include/lldb/lldb-types.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/lldb-types.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/lldb-types.h (original)
+++ lldb/branches/windows/include/lldb/lldb-types.h Wed Apr 17 03:38:48 2013
@@ -97,6 +97,7 @@ namespace lldb
     typedef uint64_t    user_id_t;
     typedef uint64_t    pid_t;
     typedef uint64_t    tid_t;
+    typedef uint64_t    offset_t;
     typedef int32_t     break_id_t;
     typedef int32_t     watch_id_t;
     typedef void *      clang_type_t;

Modified: lldb/branches/windows/include/lldb/lldb-windows.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/include/lldb/lldb-windows.h?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/include/lldb/lldb-windows.h (original)
+++ lldb/branches/windows/include/lldb/lldb-windows.h Wed Apr 17 03:38:48 2013
@@ -34,9 +34,10 @@ enum {
   PATH_MAX = MAX_PATH
 };
 
+/*
 enum {
   REG_EXTENDED
-};
+};*/
 
 enum {
   STDIN_FILENO = 0,
@@ -87,6 +88,9 @@ int getopt_long(int argc, char * const *
     const char *optstring,
     const struct option *longopts, int *longindex);
 
+int getopt_long_only(int argc, char * const *argv,
+    const char *optstring,
+    const struct option *longopts, int *longindex);
 extern int optreset;
 
 // missing macros 
@@ -95,6 +99,71 @@ extern int optreset;
 
 #endif
 
+#define PRId32        "ld"
+#define PRIi32        "li"
+#define PRIo32        "lo"
+#define PRIu32        "lu"
+#define PRIx32        "lx"
+#define PRIX32        "lX"
+#ifndef PRId64
+#define PRId64        "lld"
+#endif
+#ifndef PRIi64
+#define PRIi64        "lli"
+#endif
+#ifndef PRIo64
+#define PRIo64        "llo"
+#endif
+#ifndef PRIu64
+#define PRIu64        "llu"
+#endif
+#ifndef PRIx64
+#define PRIx64        "llx"
+#endif
+#ifndef PRIX64
+#define PRIX64        "llX"
+#endif
+
+#define __WALL 0x40000000
+
+
+#define	SIGHUP	1	
+#define	SIGINT	2	
+#define	SIGQUIT	3	
+#define	SIGILL	4	
+#define	SIGTRAP	5	
+#define SIGIOT  6
+#define	SIGEMT	7	
+#define	SIGFPE	8	
+#define	SIGKILL	9	
+#define	SIGBUS	10	
+#define	SIGSEGV	11	
+#define	SIGSYS	12	
+#define	SIGPIPE	13	
+#define	SIGALRM	14	
+#define	SIGTERM	15	
+#define	SIGURG	16	
+#define SIGSTKFLT 16
+#define	SIGSTOP	17	
+#define	SIGTSTP	18	
+#define	SIGCONT	19	
+#define	SIGCHLD	20	
+#define	SIGTTIN	21	
+#define	SIGTTOU	22	
+#define	SIGIO	23	
+#define SIGPOLL 23
+#define	SIGXCPU	24	
+#define	SIGXFSZ	25	
+#define	SIGVTALRM 26	
+#define	SIGPROF	27	
+#define SIGWINCH 28	
+#define SIGINFO	29	
+#define SIGUSR1 30	
+#define SIGPWR 30
+#define SIGUSR2 31	
+
+
+
 #endif  // defined(__cplusplus)
 
 

Modified: lldb/branches/windows/lib/Makefile
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/lib/Makefile?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/lib/Makefile (original)
+++ lldb/branches/windows/lib/Makefile Wed Apr 17 03:38:48 2013
@@ -24,6 +24,7 @@ USEDLIBS = lldbAPI.a \
 	lldbBreakpoint.a \
 	lldbCommands.a \
 	lldbCore.a \
+	lldbDataFormatters.a \
 	lldbExpression.a \
 	lldbHostCommon.a \
 	lldbInitAndLog.a \
@@ -78,7 +79,7 @@ endif
 include $(LLDB_LEVEL)/../../Makefile.config
 
 LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader bitwriter codegen \
-                   instrumentation ipo selectiondag jit mc mcjit linker
+                   instrumentation ipo irreader selectiondag jit mc mcjit linker
 
 ifeq ($(HOST_OS),Darwin)
   USEDLIBS += lldbHostMacOSX.a \
@@ -135,7 +136,7 @@ ifeq ($(HOST_OS),Darwin)
     endif
 endif
 
-ifeq ($(HOST_OS),Linux)
+ifeq ($(HOST_OS), $(filter $(HOST_OS), Linux GNU))
     # Include everything from the .a's into the shared library.
     ProjLibsOptions := -Wl,--whole-archive $(ProjLibsOptions) \
                        -Wl,--no-whole-archive
@@ -143,6 +144,7 @@ ifeq ($(HOST_OS),Linux)
     LLVMLibsOptions += -Wl,--no-undefined
     # Link in python
     LLVMLibsOptions += $(PYTHON_BUILD_FLAGS) -lrt
+    LLVMLibsOptions += -Wl,--soname,lib$(LIBRARYNAME)$(SHLIBEXT)
 endif
 
 ifeq ($(HOST_OS),FreeBSD)

Modified: lldb/branches/windows/lldb.xcodeproj/project.pbxproj
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/lldb.xcodeproj/project.pbxproj?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/lldb.xcodeproj/project.pbxproj (original)
+++ lldb/branches/windows/lldb.xcodeproj/project.pbxproj Wed Apr 17 03:38:48 2013
@@ -255,7 +255,7 @@
 		2689006913353E0E00698AC0 /* ASTStructExtractor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 491193501226386000578B7F /* ASTStructExtractor.cpp */; };
 		2689006A13353E0E00698AC0 /* IRDynamicChecks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49CF9829122C70BD007A0B96 /* IRDynamicChecks.cpp */; };
 		2689006B13353E0E00698AC0 /* IRForTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49307AAD11DEA4D90081F992 /* IRForTarget.cpp */; };
-		2689006D13353E0E00698AC0 /* RecordingMemoryManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C98D3DB118FB96F00E575D0 /* RecordingMemoryManager.cpp */; };
+		2689006D13353E0E00698AC0 /* IRExecutionUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C98D3DB118FB96F00E575D0 /* IRExecutionUnit.cpp */; };
 		2689006E13353E1A00698AC0 /* File.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 260C6EA213011581005E16B0 /* File.cpp */; };
 		2689006F13353E1A00698AC0 /* FileSpec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26FA43171301048600E71120 /* FileSpec.cpp */; };
 		2689007013353E1A00698AC0 /* Condition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69A01E1B1236C5D400C660B5 /* Condition.cpp */; };
@@ -275,7 +275,6 @@
 		2689007F13353E2200698AC0 /* CommandCompletions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C09CB74116BD98B00C7A725 /* CommandCompletions.cpp */; };
 		2689008013353E2200698AC0 /* CommandInterpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F0810F1B8DD00F91463 /* CommandInterpreter.cpp */; };
 		2689008113353E2200698AC0 /* CommandObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F0910F1B8DD00F91463 /* CommandObject.cpp */; };
-		2689008213353E2200698AC0 /* CommandObjectCrossref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DFBC57113B48F300DD817F /* CommandObjectCrossref.cpp */; };
 		2689008313353E2200698AC0 /* CommandObjectMultiword.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DFBC58113B48F300DD817F /* CommandObjectMultiword.cpp */; };
 		2689008413353E2200698AC0 /* CommandObjectRegexCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26DFBC59113B48F300DD817F /* CommandObjectRegexCommand.cpp */; };
 		2689008513353E2200698AC0 /* CommandReturnObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BC7F0A10F1B8DD00F91463 /* CommandReturnObject.cpp */; };
@@ -441,6 +440,10 @@
 		26BD407F135D2AE000237D80 /* FileLineResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BD407E135D2ADF00237D80 /* FileLineResolver.cpp */; };
 		26C72C94124322890068DC16 /* SBStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 26C72C93124322890068DC16 /* SBStream.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		26C72C961243229A0068DC16 /* SBStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26C72C951243229A0068DC16 /* SBStream.cpp */; };
+		26D1803E16CEBFD300EDFB5B /* KQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D1803C16CEBFD300EDFB5B /* KQueue.cpp */; };
+		26D1804216CEDF0700EDFB5B /* TimeSpecTimeout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D1804016CEDF0700EDFB5B /* TimeSpecTimeout.cpp */; };
+		26D1804516CEE12500EDFB5B /* KQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 26D1804416CEE12500EDFB5B /* KQueue.h */; };
+		26D1804716CEE12C00EDFB5B /* TimeSpecTimeout.h in Headers */ = {isa = PBXBuildFile; fileRef = 26D1804616CEE12C00EDFB5B /* TimeSpecTimeout.h */; };
 		26D265A2136B40EE002EEE45 /* SharingPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 261B5A5311C3F2AD00AABD0A /* SharingPtr.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		26D265BC136B4269002EEE45 /* lldb-public.h in Headers */ = {isa = PBXBuildFile; fileRef = 26651A14133BEC76005B64B7 /* lldb-public.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		26D55235159A7DB100708D8D /* libxml2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 26D55234159A7DB100708D8D /* libxml2.dylib */; };
@@ -492,9 +495,10 @@
 		49A1CAC51430E8DE00306AC9 /* ExpressionSourceCode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49A1CAC31430E8BD00306AC9 /* ExpressionSourceCode.cpp */; };
 		49A71FE7141FFA5C00D59478 /* IRInterpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 496B01581406DE8900F830D5 /* IRInterpreter.cpp */; };
 		49A71FE8141FFACF00D59478 /* DataEncoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 268ED0A4140FF54200DE830F /* DataEncoder.cpp */; };
-		49C8507C1384A786007DB519 /* ProcessDataAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49C850781384A0CA007DB519 /* ProcessDataAllocator.cpp */; };
 		49D8FB3913B5598F00411094 /* ClangASTImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49D8FB3513B558DE00411094 /* ClangASTImporter.cpp */; };
 		49DA65031485C92A005FF180 /* AppleObjCTypeVendor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49DA65021485C92A005FF180 /* AppleObjCTypeVendor.cpp */; };
+		49DCF6FE170E6B4A0092F75E /* IRMemoryMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49DCF6FD170E6B4A0092F75E /* IRMemoryMap.cpp */; };
+		49DCF702170E70120092F75E /* Materializer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49DCF700170E70120092F75E /* Materializer.cpp */; };
 		4C6649A014EEE7F100B0316F /* StreamCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C66499F14EEE7F100B0316F /* StreamCallback.h */; };
 		4C6649A314EEE81000B0316F /* StreamCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C6649A214EEE81000B0316F /* StreamCallback.cpp */; };
 		4C701C1E15ABB70C00B50001 /* libxml2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 26D55234159A7DB100708D8D /* libxml2.dylib */; };
@@ -514,7 +518,6 @@
 		4CF52AF8142829390051E832 /* SBFileSpecList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CF52AF7142829390051E832 /* SBFileSpecList.cpp */; };
 		94031A9E13CF486700DCFF3C /* InputReaderEZ.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94031A9D13CF486600DCFF3C /* InputReaderEZ.cpp */; };
 		94094C6B163B6F840083A547 /* ValueObjectCast.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94094C69163B6CD90083A547 /* ValueObjectCast.cpp */; };
-		9415F61813B2C0EF00A52B36 /* FormatManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9415F61713B2C0EF00A52B36 /* FormatManager.cpp */; };
 		941BCC7F14E48C4000BB969C /* SBTypeFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 9461568614E355F2003A195C /* SBTypeFilter.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		941BCC8014E48C4000BB969C /* SBTypeFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 9461568714E355F2003A195C /* SBTypeFormat.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		941BCC8114E48C4000BB969C /* SBTypeSummary.h in Headers */ = {isa = PBXBuildFile; fileRef = 9461568814E355F2003A195C /* SBTypeSummary.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -530,7 +533,6 @@
 		9461569D14E358A6003A195C /* SBTypeSynthetic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9461568D14E35621003A195C /* SBTypeSynthetic.cpp */; };
 		9463D4CD13B1798800C230D4 /* CommandObjectType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9463D4CC13B1798800C230D4 /* CommandObjectType.cpp */; };
 		9467E65213C3D97600B3B6F3 /* TypeHierarchyNavigator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9467E65113C3D97600B3B6F3 /* TypeHierarchyNavigator.cpp */; };
-		9470A8F01402DFFB0056FF61 /* DataVisualization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9470A8EF1402DFFB0056FF61 /* DataVisualization.cpp */; };
 		9475C18814E5E9FA001BFC6D /* SBTypeCategory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9475C18714E5E9FA001BFC6D /* SBTypeCategory.cpp */; };
 		9475C18914E5EA08001BFC6D /* SBTypeCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = 9475C18514E5E9C5001BFC6D /* SBTypeCategory.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		9475C18E14E5F834001BFC6D /* SBTypeNameSpecifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9475C18D14E5F834001BFC6D /* SBTypeNameSpecifier.cpp */; };
@@ -539,7 +541,25 @@
 		947A1D651616476B0017C8D1 /* CommandObjectPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 947A1D631616476A0017C8D1 /* CommandObjectPlugin.h */; };
 		949ADF031406F648004833E1 /* ValueObjectConstResultImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 949ADF021406F648004833E1 /* ValueObjectConstResultImpl.cpp */; };
 		94B6E76213D88365005F417F /* ValueObjectSyntheticFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94B6E76113D88362005F417F /* ValueObjectSyntheticFilter.cpp */; };
-		94CDEB9D15F0258500DD2A7A /* CXXFormatterFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CDEB9C15F0258400DD2A7A /* CXXFormatterFunctions.cpp */; };
+		94CB255B16B069770059775D /* CXXFormatterFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB255716B069770059775D /* CXXFormatterFunctions.cpp */; };
+		94CB255C16B069770059775D /* DataVisualization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB255816B069770059775D /* DataVisualization.cpp */; };
+		94CB255D16B069770059775D /* FormatClasses.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB255916B069770059775D /* FormatClasses.cpp */; };
+		94CB255E16B069770059775D /* FormatManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB255A16B069770059775D /* FormatManager.cpp */; };
+		94CB256616B096F10059775D /* TypeCategory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB256416B096F10059775D /* TypeCategory.cpp */; };
+		94CB256716B096F10059775D /* TypeCategoryMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB256516B096F10059775D /* TypeCategoryMap.cpp */; };
+		94CB257016B0A4270059775D /* TypeFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB256D16B0A4260059775D /* TypeFormat.cpp */; };
+		94CB257116B0A4270059775D /* TypeSummary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB256E16B0A4260059775D /* TypeSummary.cpp */; };
+		94CB257216B0A4270059775D /* TypeSynthetic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB256F16B0A4270059775D /* TypeSynthetic.cpp */; };
+		94CB257416B1D3880059775D /* FormatCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB257316B1D3870059775D /* FormatCache.cpp */; };
+		94CD704D16F8DDEA00CF1E42 /* CF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CD704B16F8DDEA00CF1E42 /* CF.cpp */; };
+		94CD704E16F8DDEA00CF1E42 /* Cocoa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CD704C16F8DDEA00CF1E42 /* Cocoa.cpp */; };
+		94CD705016F8DF1C00CF1E42 /* LibCxxList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CD704F16F8DF1C00CF1E42 /* LibCxxList.cpp */; };
+		94CD705216F8F5BC00CF1E42 /* LibCxxMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CD705116F8F5BC00CF1E42 /* LibCxxMap.cpp */; };
+		94D0B10C16D5535900EA9C70 /* LibCxx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94D0B10A16D5535900EA9C70 /* LibCxx.cpp */; };
+		94D0B10D16D5535900EA9C70 /* LibStdcpp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94D0B10B16D5535900EA9C70 /* LibStdcpp.cpp */; };
+		94D6A0AA16CEB55F00833B6E /* NSArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94D6A0A716CEB55F00833B6E /* NSArray.cpp */; };
+		94D6A0AB16CEB55F00833B6E /* NSDictionary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94D6A0A816CEB55F00833B6E /* NSDictionary.cpp */; };
+		94D6A0AC16CEB55F00833B6E /* NSSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94D6A0A916CEB55F00833B6E /* NSSet.cpp */; };
 		94EA1D5C15E6C9B400D4171A /* PythonDataObjects.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94EA1D5B15E6C9B400D4171A /* PythonDataObjects.cpp */; };
 		94FA3DE01405D50400833217 /* ValueObjectConstResultChild.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94FA3DDF1405D50300833217 /* ValueObjectConstResultChild.cpp */; };
 		9A19A6AF1163BBB200E0D453 /* SBValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A19A6A51163BB7E00E0D453 /* SBValue.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -561,6 +581,8 @@
 		9AC70390117675270086C050 /* SBInstructionList.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AC7038F117675270086C050 /* SBInstructionList.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		9AC703AF117675410086C050 /* SBInstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC703AE117675410086C050 /* SBInstruction.cpp */; };
 		9AC703B1117675490086C050 /* SBInstructionList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AC703B0117675490086C050 /* SBInstructionList.cpp */; };
+		AF254E31170CCC33007AE5C9 /* PlatformDarwinKernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF254E2F170CCC33007AE5C9 /* PlatformDarwinKernel.cpp */; };
+		AF254E32170CCC33007AE5C9 /* PlatformDarwinKernel.h in Headers */ = {isa = PBXBuildFile; fileRef = AF254E30170CCC33007AE5C9 /* PlatformDarwinKernel.h */; };
 		AF90106515AB7D3600FF120D /* lldb.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = AF90106315AB7C5700FF120D /* lldb.1 */; };
 		AFF87C87150FF669000E1742 /* com.apple.debugserver.plist in CopyFiles */ = {isa = PBXBuildFile; fileRef = AFF87C86150FF669000E1742 /* com.apple.debugserver.plist */; };
 		AFF87C89150FF672000E1742 /* com.apple.debugserver-secure.plist in CopyFiles */ = {isa = PBXBuildFile; fileRef = AFF87C88150FF672000E1742 /* com.apple.debugserver-secure.plist */; };
@@ -568,7 +590,6 @@
 		B207C4931429607D00F36E4E /* CommandObjectWatchpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B207C4921429607D00F36E4E /* CommandObjectWatchpoint.cpp */; };
 		B21EB71515CC99F100E60059 /* cxa_demangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B21EB71415CC99F100E60059 /* cxa_demangle.cpp */; settings = {COMPILER_FLAGS = "-frtti"; }; };
 		B2462247141AD37D00F3D409 /* OptionGroupWatchpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B2462246141AD37D00F3D409 /* OptionGroupWatchpoint.cpp */; };
-		B271B11413D6139300C3FEDB /* FormatClasses.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94A9112D13D5DF210046D8A6 /* FormatClasses.cpp */; };
 		B27318421416AC12006039C8 /* WatchpointList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B27318411416AC12006039C8 /* WatchpointList.cpp */; };
 		B28058A1139988B0002D96D0 /* InferiorCallPOSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B28058A0139988B0002D96D0 /* InferiorCallPOSIX.cpp */; };
 		B299580B14F2FA1400050A04 /* DisassemblerLLVMC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B299580A14F2FA1400050A04 /* DisassemblerLLVMC.cpp */; };
@@ -1317,6 +1338,10 @@
 		26D0DD5310FE555900271C65 /* BreakpointResolverAddress.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BreakpointResolverAddress.cpp; path = source/Breakpoint/BreakpointResolverAddress.cpp; sourceTree = "<group>"; };
 		26D0DD5410FE555900271C65 /* BreakpointResolverFileLine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BreakpointResolverFileLine.cpp; path = source/Breakpoint/BreakpointResolverFileLine.cpp; sourceTree = "<group>"; };
 		26D0DD5510FE555900271C65 /* BreakpointResolverName.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BreakpointResolverName.cpp; path = source/Breakpoint/BreakpointResolverName.cpp; sourceTree = "<group>"; };
+		26D1803C16CEBFD300EDFB5B /* KQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = KQueue.cpp; path = source/Utility/KQueue.cpp; sourceTree = "<group>"; };
+		26D1804016CEDF0700EDFB5B /* TimeSpecTimeout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TimeSpecTimeout.cpp; path = source/Utility/TimeSpecTimeout.cpp; sourceTree = "<group>"; };
+		26D1804416CEE12500EDFB5B /* KQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KQueue.h; path = source/Utility/KQueue.h; sourceTree = "<group>"; };
+		26D1804616CEE12C00EDFB5B /* TimeSpecTimeout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TimeSpecTimeout.h; path = source/Utility/TimeSpecTimeout.h; sourceTree = "<group>"; };
 		26D27C9D11ED3A4E0024D721 /* ELFHeader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ELFHeader.cpp; sourceTree = "<group>"; };
 		26D27C9E11ED3A4E0024D721 /* ELFHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ELFHeader.h; sourceTree = "<group>"; };
 		26D55234159A7DB100708D8D /* libxml2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxml2.dylib; path = /usr/lib/libxml2.dylib; sourceTree = "<absolute>"; };
@@ -1356,10 +1381,8 @@
 		26DE20601161902600A093E2 /* SBBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBBlock.cpp; path = source/API/SBBlock.cpp; sourceTree = "<group>"; };
 		26DE20621161904200A093E2 /* SBLineEntry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBLineEntry.cpp; path = source/API/SBLineEntry.cpp; sourceTree = "<group>"; };
 		26DE20641161904E00A093E2 /* SBSymbol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBSymbol.cpp; path = source/API/SBSymbol.cpp; sourceTree = "<group>"; };
-		26DFBC50113B48D600DD817F /* CommandObjectCrossref.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectCrossref.h; path = include/lldb/Interpreter/CommandObjectCrossref.h; sourceTree = "<group>"; };
 		26DFBC51113B48D600DD817F /* CommandObjectMultiword.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectMultiword.h; path = include/lldb/Interpreter/CommandObjectMultiword.h; sourceTree = "<group>"; };
 		26DFBC52113B48D600DD817F /* CommandObjectRegexCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectRegexCommand.h; path = include/lldb/Interpreter/CommandObjectRegexCommand.h; sourceTree = "<group>"; };
-		26DFBC57113B48F300DD817F /* CommandObjectCrossref.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectCrossref.cpp; path = source/Commands/CommandObjectCrossref.cpp; sourceTree = "<group>"; };
 		26DFBC58113B48F300DD817F /* CommandObjectMultiword.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectMultiword.cpp; path = source/Commands/CommandObjectMultiword.cpp; sourceTree = "<group>"; };
 		26DFBC59113B48F300DD817F /* CommandObjectRegexCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectRegexCommand.cpp; path = source/Interpreter/CommandObjectRegexCommand.cpp; sourceTree = "<group>"; };
 		26E152231419CACA007967D0 /* ObjectFilePECOFF.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ObjectFilePECOFF.cpp; sourceTree = "<group>"; };
@@ -1428,8 +1451,7 @@
 		49A8A3A311D568BF00AD3B68 /* ASTResultSynthesizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASTResultSynthesizer.h; path = include/lldb/Expression/ASTResultSynthesizer.h; sourceTree = "<group>"; };
 		49B01A2D15F67B1700666829 /* TypeVendor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TypeVendor.h; path = include/lldb/Symbol/TypeVendor.h; sourceTree = "<group>"; };
 		49BB309511F79450001A4197 /* TaggedASTType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TaggedASTType.h; path = include/lldb/Symbol/TaggedASTType.h; sourceTree = "<group>"; };
-		49C850761384A02F007DB519 /* ProcessDataAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProcessDataAllocator.h; path = include/lldb/Expression/ProcessDataAllocator.h; sourceTree = "<group>"; };
-		49C850781384A0CA007DB519 /* ProcessDataAllocator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ProcessDataAllocator.cpp; path = source/Expression/ProcessDataAllocator.cpp; sourceTree = "<group>"; };
+		49C66B1C17011A43004D1922 /* IRMemoryMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = IRMemoryMap.h; path = include/lldb/Expression/IRMemoryMap.h; sourceTree = "<group>"; };
 		49CF9829122C70BD007A0B96 /* IRDynamicChecks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IRDynamicChecks.cpp; path = source/Expression/IRDynamicChecks.cpp; sourceTree = "<group>"; };
 		49CF9833122C718B007A0B96 /* IRDynamicChecks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IRDynamicChecks.h; path = include/lldb/Expression/IRDynamicChecks.h; sourceTree = "<group>"; };
 		49D4FE821210B5FB00CDB854 /* ClangPersistentVariables.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangPersistentVariables.h; path = include/lldb/Expression/ClangPersistentVariables.h; sourceTree = "<group>"; };
@@ -1440,6 +1462,9 @@
 		49D8FB3713B5594900411094 /* ClangASTImporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangASTImporter.h; path = include/lldb/Symbol/ClangASTImporter.h; sourceTree = "<group>"; };
 		49DA65021485C92A005FF180 /* AppleObjCTypeVendor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AppleObjCTypeVendor.cpp; sourceTree = "<group>"; };
 		49DA65041485C942005FF180 /* AppleObjCTypeVendor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppleObjCTypeVendor.h; sourceTree = "<group>"; };
+		49DCF6FD170E6B4A0092F75E /* IRMemoryMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IRMemoryMap.cpp; path = source/Expression/IRMemoryMap.cpp; sourceTree = "<group>"; };
+		49DCF6FF170E6FD90092F75E /* Materializer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Materializer.h; path = include/lldb/Expression/Materializer.h; sourceTree = "<group>"; };
+		49DCF700170E70120092F75E /* Materializer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Materializer.cpp; path = source/Expression/Materializer.cpp; sourceTree = "<group>"; };
 		49E45FA911F660DC008F7B28 /* ClangASTType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangASTType.h; path = include/lldb/Symbol/ClangASTType.h; sourceTree = "<group>"; };
 		49E45FAD11F660FE008F7B28 /* ClangASTType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClangASTType.cpp; path = source/Symbol/ClangASTType.cpp; sourceTree = "<group>"; };
 		49EC3E98118F90AC00B1265E /* ThreadPlanCallFunction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadPlanCallFunction.cpp; path = source/Target/ThreadPlanCallFunction.cpp; sourceTree = "<group>"; };
@@ -1468,9 +1493,9 @@
 		4C7CF7E31295E10E00B4FBB5 /* ThreadPlanCallUserExpression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadPlanCallUserExpression.h; path = include/lldb/Target/ThreadPlanCallUserExpression.h; sourceTree = "<group>"; };
 		4C7CF7E51295E12B00B4FBB5 /* ThreadPlanCallUserExpression.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadPlanCallUserExpression.cpp; path = source/Target/ThreadPlanCallUserExpression.cpp; sourceTree = "<group>"; };
 		4C98D3DA118FB96F00E575D0 /* ClangFunction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClangFunction.cpp; path = source/Expression/ClangFunction.cpp; sourceTree = "<group>"; };
-		4C98D3DB118FB96F00E575D0 /* RecordingMemoryManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RecordingMemoryManager.cpp; path = source/Expression/RecordingMemoryManager.cpp; sourceTree = "<group>"; };
+		4C98D3DB118FB96F00E575D0 /* IRExecutionUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IRExecutionUnit.cpp; path = source/Expression/IRExecutionUnit.cpp; sourceTree = "<group>"; };
 		4C98D3E0118FB98F00E575D0 /* ClangFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClangFunction.h; path = include/lldb/Expression/ClangFunction.h; sourceTree = "<group>"; };
-		4C98D3E1118FB98F00E575D0 /* RecordingMemoryManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RecordingMemoryManager.h; path = include/lldb/Expression/RecordingMemoryManager.h; sourceTree = "<group>"; };
+		4C98D3E1118FB98F00E575D0 /* IRExecutionUnit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IRExecutionUnit.h; path = include/lldb/Expression/IRExecutionUnit.h; sourceTree = "<group>"; };
 		4CA9637911B6E99A00780E28 /* CommandObjectApropos.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandObjectApropos.cpp; path = source/Commands/CommandObjectApropos.cpp; sourceTree = "<group>"; };
 		4CA9637A11B6E99A00780E28 /* CommandObjectApropos.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectApropos.h; path = source/Commands/CommandObjectApropos.h; sourceTree = "<group>"; };
 		4CAA56121422D96A001FFA01 /* BreakpointResolverFileRegex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BreakpointResolverFileRegex.h; path = include/lldb/Breakpoint/BreakpointResolverFileRegex.h; sourceTree = "<group>"; };
@@ -1519,8 +1544,19 @@
 		94031A9F13CF5B3D00DCFF3C /* PriorityPointerPair.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PriorityPointerPair.h; path = include/lldb/Utility/PriorityPointerPair.h; sourceTree = "<group>"; };
 		94094C68163B6CCC0083A547 /* ValueObjectCast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ValueObjectCast.h; path = include/lldb/Core/ValueObjectCast.h; sourceTree = "<group>"; };
 		94094C69163B6CD90083A547 /* ValueObjectCast.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValueObjectCast.cpp; path = source/Core/ValueObjectCast.cpp; sourceTree = "<group>"; };
-		9415F61613B2C0DC00A52B36 /* FormatManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = FormatManager.h; path = include/lldb/Core/FormatManager.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
-		9415F61713B2C0EF00A52B36 /* FormatManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = FormatManager.cpp; path = source/Core/FormatManager.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
+		940DB8CA16EA66FB00D3C2F1 /* Gauge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Gauge.h; sourceTree = "<group>"; };
+		940DB8CE16EA670C00D3C2F1 /* Measurement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Measurement.h; sourceTree = "<group>"; };
+		940DB8D116EA671800D3C2F1 /* MemoryGauge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryGauge.cpp; sourceTree = "<group>"; };
+		940DB8D216EA671800D3C2F1 /* MemoryGauge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemoryGauge.h; sourceTree = "<group>"; };
+		940DB8D516EA672200D3C2F1 /* Metric.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Metric.cpp; sourceTree = "<group>"; };
+		940DB8D616EA672200D3C2F1 /* Metric.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Metric.h; sourceTree = "<group>"; };
+		940DB8D916EA672D00D3C2F1 /* TestCase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TestCase.cpp; sourceTree = "<group>"; };
+		940DB8DA16EA672D00D3C2F1 /* TestCase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestCase.h; sourceTree = "<group>"; };
+		940DB8DD16EA673800D3C2F1 /* Timer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Timer.cpp; sourceTree = "<group>"; };
+		940DB8DE16EA673800D3C2F1 /* Timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Timer.h; sourceTree = "<group>"; };
+		940DB8E116EA674000D3C2F1 /* Xcode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Xcode.cpp; sourceTree = "<group>"; };
+		940DB8E216EA674000D3C2F1 /* Xcode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Xcode.h; sourceTree = "<group>"; };
+		940DB8E616EA709400D3C2F1 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; };
 		9443B120140C18A90013457C /* SBData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SBData.h; path = include/lldb/API/SBData.h; sourceTree = "<group>"; };
 		9443B121140C18C10013457C /* SBData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBData.cpp; path = source/API/SBData.cpp; sourceTree = "<group>"; };
 		9452573616262CD000325455 /* SBDeclaration.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBDeclaration.i; sourceTree = "<group>"; };
@@ -1546,8 +1582,6 @@
 		9463D4CE13B179A500C230D4 /* CommandObjectType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CommandObjectType.h; path = source/Commands/CommandObjectType.h; sourceTree = "<group>"; };
 		9467E65113C3D97600B3B6F3 /* TypeHierarchyNavigator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TypeHierarchyNavigator.cpp; path = source/Symbol/TypeHierarchyNavigator.cpp; sourceTree = "<group>"; };
 		9467E65413C3D98900B3B6F3 /* TypeHierarchyNavigator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TypeHierarchyNavigator.h; path = include/lldb/Symbol/TypeHierarchyNavigator.h; sourceTree = "<group>"; };
-		9470A8EE1402DF940056FF61 /* DataVisualization.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = DataVisualization.h; path = include/lldb/Core/DataVisualization.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
-		9470A8EF1402DFFB0056FF61 /* DataVisualization.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = DataVisualization.cpp; path = source/Core/DataVisualization.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
 		9475C18514E5E9C5001BFC6D /* SBTypeCategory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SBTypeCategory.h; path = include/lldb/API/SBTypeCategory.h; sourceTree = "<group>"; };
 		9475C18714E5E9FA001BFC6D /* SBTypeCategory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBTypeCategory.cpp; path = source/API/SBTypeCategory.cpp; sourceTree = "<group>"; };
 		9475C18A14E5EA1C001BFC6D /* SBTypeCategory.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBTypeCategory.i; sourceTree = "<group>"; };
@@ -1558,13 +1592,39 @@
 		947A1D631616476A0017C8D1 /* CommandObjectPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommandObjectPlugin.h; path = source/Commands/CommandObjectPlugin.h; sourceTree = "<group>"; };
 		949ADF001406F62E004833E1 /* ValueObjectConstResultImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ValueObjectConstResultImpl.h; path = include/lldb/Core/ValueObjectConstResultImpl.h; sourceTree = "<group>"; };
 		949ADF021406F648004833E1 /* ValueObjectConstResultImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValueObjectConstResultImpl.cpp; path = source/Core/ValueObjectConstResultImpl.cpp; sourceTree = "<group>"; };
-		94A8287514031D05006C37A8 /* FormatNavigator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FormatNavigator.h; path = include/lldb/Core/FormatNavigator.h; sourceTree = "<group>"; };
-		94A9112B13D5DEF80046D8A6 /* FormatClasses.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FormatClasses.h; path = include/lldb/Core/FormatClasses.h; sourceTree = "<group>"; };
-		94A9112D13D5DF210046D8A6 /* FormatClasses.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FormatClasses.cpp; path = source/Core/FormatClasses.cpp; sourceTree = "<group>"; };
 		94B6E76013D8833C005F417F /* ValueObjectSyntheticFilter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ValueObjectSyntheticFilter.h; path = include/lldb/Core/ValueObjectSyntheticFilter.h; sourceTree = "<group>"; };
 		94B6E76113D88362005F417F /* ValueObjectSyntheticFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ValueObjectSyntheticFilter.cpp; path = source/Core/ValueObjectSyntheticFilter.cpp; sourceTree = "<group>"; };
-		94CDEB9A15F0226900DD2A7A /* CXXFormatterFunctions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CXXFormatterFunctions.h; path = include/lldb/Core/CXXFormatterFunctions.h; sourceTree = "<group>"; };
-		94CDEB9C15F0258400DD2A7A /* CXXFormatterFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CXXFormatterFunctions.cpp; path = source/Core/CXXFormatterFunctions.cpp; sourceTree = "<group>"; };
+		94CB255716B069770059775D /* CXXFormatterFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CXXFormatterFunctions.cpp; path = source/DataFormatters/CXXFormatterFunctions.cpp; sourceTree = "<group>"; };
+		94CB255816B069770059775D /* DataVisualization.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DataVisualization.cpp; path = source/DataFormatters/DataVisualization.cpp; sourceTree = "<group>"; };
+		94CB255916B069770059775D /* FormatClasses.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FormatClasses.cpp; path = source/DataFormatters/FormatClasses.cpp; sourceTree = "<group>"; };
+		94CB255A16B069770059775D /* FormatManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FormatManager.cpp; path = source/DataFormatters/FormatManager.cpp; sourceTree = "<group>"; };
+		94CB255F16B069800059775D /* CXXFormatterFunctions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CXXFormatterFunctions.h; path = include/lldb/DataFormatters/CXXFormatterFunctions.h; sourceTree = "<group>"; };
+		94CB256016B069800059775D /* DataVisualization.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DataVisualization.h; path = include/lldb/DataFormatters/DataVisualization.h; sourceTree = "<group>"; };
+		94CB256116B069800059775D /* FormatClasses.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FormatClasses.h; path = include/lldb/DataFormatters/FormatClasses.h; sourceTree = "<group>"; };
+		94CB256216B069800059775D /* FormatManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FormatManager.h; path = include/lldb/DataFormatters/FormatManager.h; sourceTree = "<group>"; };
+		94CB256316B069800059775D /* FormatNavigator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FormatNavigator.h; path = include/lldb/DataFormatters/FormatNavigator.h; sourceTree = "<group>"; };
+		94CB256416B096F10059775D /* TypeCategory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TypeCategory.cpp; path = source/DataFormatters/TypeCategory.cpp; sourceTree = "<group>"; };
+		94CB256516B096F10059775D /* TypeCategoryMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TypeCategoryMap.cpp; path = source/DataFormatters/TypeCategoryMap.cpp; sourceTree = "<group>"; };
+		94CB256816B096F90059775D /* TypeCategory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TypeCategory.h; path = include/lldb/DataFormatters/TypeCategory.h; sourceTree = "<group>"; };
+		94CB256916B096FA0059775D /* TypeCategoryMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TypeCategoryMap.h; path = include/lldb/DataFormatters/TypeCategoryMap.h; sourceTree = "<group>"; };
+		94CB256A16B0A4030059775D /* TypeFormat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TypeFormat.h; path = include/lldb/DataFormatters/TypeFormat.h; sourceTree = "<group>"; };
+		94CB256B16B0A4030059775D /* TypeSummary.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TypeSummary.h; path = include/lldb/DataFormatters/TypeSummary.h; sourceTree = "<group>"; };
+		94CB256C16B0A4040059775D /* TypeSynthetic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TypeSynthetic.h; path = include/lldb/DataFormatters/TypeSynthetic.h; sourceTree = "<group>"; };
+		94CB256D16B0A4260059775D /* TypeFormat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TypeFormat.cpp; path = source/DataFormatters/TypeFormat.cpp; sourceTree = "<group>"; };
+		94CB256E16B0A4260059775D /* TypeSummary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TypeSummary.cpp; path = source/DataFormatters/TypeSummary.cpp; sourceTree = "<group>"; };
+		94CB256F16B0A4270059775D /* TypeSynthetic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TypeSynthetic.cpp; path = source/DataFormatters/TypeSynthetic.cpp; sourceTree = "<group>"; };
+		94CB257316B1D3870059775D /* FormatCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FormatCache.cpp; path = source/DataFormatters/FormatCache.cpp; sourceTree = "<group>"; };
+		94CB257516B1D3910059775D /* FormatCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FormatCache.h; path = include/lldb/DataFormatters/FormatCache.h; sourceTree = "<group>"; };
+		94CD704B16F8DDEA00CF1E42 /* CF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CF.cpp; path = source/DataFormatters/CF.cpp; sourceTree = "<group>"; };
+		94CD704C16F8DDEA00CF1E42 /* Cocoa.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Cocoa.cpp; path = source/DataFormatters/Cocoa.cpp; sourceTree = "<group>"; };
+		94CD704F16F8DF1C00CF1E42 /* LibCxxList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LibCxxList.cpp; path = source/DataFormatters/LibCxxList.cpp; sourceTree = "<group>"; };
+		94CD705116F8F5BC00CF1E42 /* LibCxxMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LibCxxMap.cpp; path = source/DataFormatters/LibCxxMap.cpp; sourceTree = "<group>"; };
+		94D0B10A16D5535900EA9C70 /* LibCxx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LibCxx.cpp; path = source/DataFormatters/LibCxx.cpp; sourceTree = "<group>"; };
+		94D0B10B16D5535900EA9C70 /* LibStdcpp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LibStdcpp.cpp; path = source/DataFormatters/LibStdcpp.cpp; sourceTree = "<group>"; };
+		94D6A0A716CEB55F00833B6E /* NSArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NSArray.cpp; path = source/DataFormatters/NSArray.cpp; sourceTree = "<group>"; };
+		94D6A0A816CEB55F00833B6E /* NSDictionary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NSDictionary.cpp; path = source/DataFormatters/NSDictionary.cpp; sourceTree = "<group>"; };
+		94D6A0A916CEB55F00833B6E /* NSSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NSSet.cpp; path = source/DataFormatters/NSSet.cpp; sourceTree = "<group>"; };
+		94DB60F016EA888A00459D9E /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; };
 		94E367CC140C4EC4001C7A5A /* modify-python-lldb.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = "modify-python-lldb.py"; sourceTree = "<group>"; };
 		94E367CE140C4EEA001C7A5A /* python-typemaps.swig */ = {isa = PBXFileReference; lastKnownFileType = text; path = "python-typemaps.swig"; sourceTree = "<group>"; };
 		94EA1D5A15E6C99B00D4171A /* PythonDataObjects.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PythonDataObjects.h; path = include/lldb/Interpreter/PythonDataObjects.h; sourceTree = "<group>"; };
@@ -1643,6 +1703,8 @@
 		9AF16A9E11402D69007A7B3F /* SBBreakpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBBreakpoint.h; path = include/lldb/API/SBBreakpoint.h; sourceTree = "<group>"; };
 		9AF16CC611408686007A7B3F /* SBBreakpointLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SBBreakpointLocation.h; path = include/lldb/API/SBBreakpointLocation.h; sourceTree = "<group>"; };
 		9AF16CC7114086A1007A7B3F /* SBBreakpointLocation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SBBreakpointLocation.cpp; path = source/API/SBBreakpointLocation.cpp; sourceTree = "<group>"; };
+		AF254E2F170CCC33007AE5C9 /* PlatformDarwinKernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformDarwinKernel.cpp; sourceTree = "<group>"; };
+		AF254E30170CCC33007AE5C9 /* PlatformDarwinKernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformDarwinKernel.h; sourceTree = "<group>"; };
 		AF68D2541255416E002FF25B /* RegisterContextLLDB.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterContextLLDB.cpp; path = Utility/RegisterContextLLDB.cpp; sourceTree = "<group>"; };
 		AF68D2551255416E002FF25B /* RegisterContextLLDB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterContextLLDB.h; path = Utility/RegisterContextLLDB.h; sourceTree = "<group>"; };
 		AF68D32F1255A110002FF25B /* UnwindLLDB.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UnwindLLDB.cpp; path = Utility/UnwindLLDB.cpp; sourceTree = "<group>"; };
@@ -1785,6 +1847,7 @@
 				26BC7CEB10F1B70800F91463 /* Breakpoint */,
 				26BC7D0D10F1B71D00F91463 /* Commands */,
 				26BC7C1010F1B34800F91463 /* Core */,
+				94CB255616B0683B0059775D /* DataFormatters */,
 				26BC7DBE10F1B78200F91463 /* Expression */,
 				26BC7DD010F1B7C100F91463 /* Host */,
 				26BC7DDF10F1B7E200F91463 /* Interpreter */,
@@ -2325,6 +2388,8 @@
 				26ECA04213665FED008D1F18 /* ARM_DWARF_Registers.cpp */,
 				26F996A8119B79C300412154 /* ARM_GCC_Registers.h */,
 				264723A511FA076E00DE380C /* CleanUp.h */,
+				26D1804416CEE12500EDFB5B /* KQueue.h */,
+				26D1803C16CEBFD300EDFB5B /* KQueue.cpp */,
 				94031A9F13CF5B3D00DCFF3C /* PriorityPointerPair.h */,
 				2682F16B115EDA0D00CCFF99 /* PseudoTerminal.h */,
 				2682F16A115EDA0D00CCFF99 /* PseudoTerminal.cpp */,
@@ -2337,6 +2402,8 @@
 				2660D9F611922A1300958FBD /* StringExtractor.cpp */,
 				2676A094119C93C8008A98EF /* StringExtractorGDBRemote.h */,
 				2676A093119C93C8008A98EF /* StringExtractorGDBRemote.cpp */,
+				26D1804616CEE12C00EDFB5B /* TimeSpecTimeout.h */,
+				26D1804016CEDF0700EDFB5B /* TimeSpecTimeout.cpp */,
 				94EBAC8313D9EE26009BA64E /* PythonPointer.h */,
 				B2462249141AE62200F3D409 /* Utils.h */,
 			);
@@ -2492,8 +2559,6 @@
 				266603C91345B5A8004DA8B6 /* ConnectionSharedMemory.cpp */,
 				26BC7D7C10F1B77400F91463 /* ConstString.h */,
 				26BC7E9410F1B85900F91463 /* ConstString.cpp */,
-				94CDEB9A15F0226900DD2A7A /* CXXFormatterFunctions.h */,
-				94CDEB9C15F0258400DD2A7A /* CXXFormatterFunctions.cpp */,
 				26BC7D5910F1B77400F91463 /* DataBuffer.h */,
 				26BC7D5B10F1B77400F91463 /* DataBufferHeap.h */,
 				26BC7E7210F1B85900F91463 /* DataBufferHeap.cpp */,
@@ -2503,8 +2568,6 @@
 				268ED0A4140FF54200DE830F /* DataEncoder.cpp */,
 				26BC7D5A10F1B77400F91463 /* DataExtractor.h */,
 				26BC7E7110F1B85900F91463 /* DataExtractor.cpp */,
-				9470A8EE1402DF940056FF61 /* DataVisualization.h */,
-				9470A8EF1402DFFB0056FF61 /* DataVisualization.cpp */,
 				263664941140A4C10075843B /* Debugger.h */,
 				263664921140A4930075843B /* Debugger.cpp */,
 				26BC7D5E10F1B77400F91463 /* Disassembler.h */,
@@ -2521,11 +2584,6 @@
 				26BC7D6310F1B77400F91463 /* FileSpecList.h */,
 				26BC7E7B10F1B85900F91463 /* FileSpecList.cpp */,
 				26BC7D6410F1B77400F91463 /* Flags.h */,
-				94A9112B13D5DEF80046D8A6 /* FormatClasses.h */,
-				94A9112D13D5DF210046D8A6 /* FormatClasses.cpp */,
-				9415F61613B2C0DC00A52B36 /* FormatManager.h */,
-				9415F61713B2C0EF00A52B36 /* FormatManager.cpp */,
-				94A8287514031D05006C37A8 /* FormatNavigator.h */,
 				26F7305F139D8FC900FD51C7 /* History.h */,
 				26F73061139D8FDB00FD51C7 /* History.cpp */,
 				9AA69DBB118A029E00D753A0 /* InputReader.h */,
@@ -2840,14 +2898,16 @@
 				491193501226386000578B7F /* ASTStructExtractor.cpp */,
 				49CF9833122C718B007A0B96 /* IRDynamicChecks.h */,
 				49CF9829122C70BD007A0B96 /* IRDynamicChecks.cpp */,
+				49C66B1C17011A43004D1922 /* IRMemoryMap.h */,
+				49DCF6FD170E6B4A0092F75E /* IRMemoryMap.cpp */,
+				4C98D3E1118FB98F00E575D0 /* IRExecutionUnit.h */,
+				4C98D3DB118FB96F00E575D0 /* IRExecutionUnit.cpp */,
 				49307AB111DEA4F20081F992 /* IRForTarget.h */,
 				49307AAD11DEA4D90081F992 /* IRForTarget.cpp */,
 				496B015A1406DEB100F830D5 /* IRInterpreter.h */,
 				496B01581406DE8900F830D5 /* IRInterpreter.cpp */,
-				4C98D3E1118FB98F00E575D0 /* RecordingMemoryManager.h */,
-				4C98D3DB118FB96F00E575D0 /* RecordingMemoryManager.cpp */,
-				49C850761384A02F007DB519 /* ProcessDataAllocator.h */,
-				49C850781384A0CA007DB519 /* ProcessDataAllocator.cpp */,
+				49DCF6FF170E6FD90092F75E /* Materializer.h */,
+				49DCF700170E70120092F75E /* Materializer.cpp */,
 			);
 			name = Expression;
 			sourceTree = "<group>";
@@ -2888,8 +2948,6 @@
 				26BC7F0810F1B8DD00F91463 /* CommandInterpreter.cpp */,
 				26BC7DE310F1B7F900F91463 /* CommandObject.h */,
 				26BC7F0910F1B8DD00F91463 /* CommandObject.cpp */,
-				26DFBC50113B48D600DD817F /* CommandObjectCrossref.h */,
-				26DFBC57113B48F300DD817F /* CommandObjectCrossref.cpp */,
 				26DFBC51113B48D600DD817F /* CommandObjectMultiword.h */,
 				26DFBC58113B48F300DD817F /* CommandObjectMultiword.cpp */,
 				26DFBC52113B48D600DD817F /* CommandObjectRegexCommand.h */,
@@ -3094,6 +3152,8 @@
 		26C5577F132575C8008FD8FE /* MacOSX */ = {
 			isa = PBXGroup;
 			children = (
+				AF254E2F170CCC33007AE5C9 /* PlatformDarwinKernel.cpp */,
+				AF254E30170CCC33007AE5C9 /* PlatformDarwinKernel.h */,
 				2697A54B133A6305004E4240 /* PlatformDarwin.cpp */,
 				2697A54C133A6305004E4240 /* PlatformDarwin.h */,
 				26B7564C14F89356008D9CB3 /* PlatformiOSSimulator.cpp */,
@@ -3186,6 +3246,7 @@
 				265E9BE0115C2B8500D0DCCB /* debugserver */,
 				26F5C22510F3D956009D5894 /* Driver */,
 				2665CD0915080846002C8FAE /* install-headers */,
+				940DB8C416EA64D400D3C2F1 /* lldb-perf */,
 				26DC6A1B1337FEA400FF7998 /* lldb-platform */,
 			);
 			name = Tools;
@@ -3328,6 +3389,97 @@
 			path = source/Host/common;
 			sourceTree = "<group>";
 		};
+		940DB8C416EA64D400D3C2F1 /* lldb-perf */ = {
+			isa = PBXGroup;
+			children = (
+				940DB8C616EA654E00D3C2F1 /* darwin */,
+				940DB8C516EA654900D3C2F1 /* lib */,
+			);
+			name = "lldb-perf";
+			path = "tools/lldb-perf";
+			sourceTree = "<group>";
+		};
+		940DB8C516EA654900D3C2F1 /* lib */ = {
+			isa = PBXGroup;
+			children = (
+				940DB8CA16EA66FB00D3C2F1 /* Gauge.h */,
+				940DB8CE16EA670C00D3C2F1 /* Measurement.h */,
+				940DB8D116EA671800D3C2F1 /* MemoryGauge.cpp */,
+				940DB8D216EA671800D3C2F1 /* MemoryGauge.h */,
+				940DB8D516EA672200D3C2F1 /* Metric.cpp */,
+				940DB8D616EA672200D3C2F1 /* Metric.h */,
+				940DB8D916EA672D00D3C2F1 /* TestCase.cpp */,
+				940DB8DA16EA672D00D3C2F1 /* TestCase.h */,
+				940DB8DD16EA673800D3C2F1 /* Timer.cpp */,
+				940DB8DE16EA673800D3C2F1 /* Timer.h */,
+				940DB8E116EA674000D3C2F1 /* Xcode.cpp */,
+				940DB8E216EA674000D3C2F1 /* Xcode.h */,
+			);
+			path = lib;
+			sourceTree = "<group>";
+		};
+		940DB8C616EA654E00D3C2F1 /* darwin */ = {
+			isa = PBXGroup;
+			children = (
+				940DB8FB16EA84BF00D3C2F1 /* formatters */,
+				940DB8C716EA655400D3C2F1 /* sketch */,
+			);
+			path = darwin;
+			sourceTree = "<group>";
+		};
+		940DB8C716EA655400D3C2F1 /* sketch */ = {
+			isa = PBXGroup;
+			children = (
+				940DB8E616EA709400D3C2F1 /* main.cpp */,
+			);
+			path = sketch;
+			sourceTree = "<group>";
+		};
+		940DB8FB16EA84BF00D3C2F1 /* formatters */ = {
+			isa = PBXGroup;
+			children = (
+				94DB60F016EA888A00459D9E /* main.cpp */,
+			);
+			path = formatters;
+			sourceTree = "<group>";
+		};
+		94CB255616B0683B0059775D /* DataFormatters */ = {
+			isa = PBXGroup;
+			children = (
+				94CD704B16F8DDEA00CF1E42 /* CF.cpp */,
+				94CD704C16F8DDEA00CF1E42 /* Cocoa.cpp */,
+				94CB255F16B069800059775D /* CXXFormatterFunctions.h */,
+				94CB255716B069770059775D /* CXXFormatterFunctions.cpp */,
+				94CB256016B069800059775D /* DataVisualization.h */,
+				94CB255816B069770059775D /* DataVisualization.cpp */,
+				94CB257516B1D3910059775D /* FormatCache.h */,
+				94CB257316B1D3870059775D /* FormatCache.cpp */,
+				94CB256116B069800059775D /* FormatClasses.h */,
+				94CB255916B069770059775D /* FormatClasses.cpp */,
+				94CB256216B069800059775D /* FormatManager.h */,
+				94CB255A16B069770059775D /* FormatManager.cpp */,
+				94CB256316B069800059775D /* FormatNavigator.h */,
+				94D0B10A16D5535900EA9C70 /* LibCxx.cpp */,
+				94CD704F16F8DF1C00CF1E42 /* LibCxxList.cpp */,
+				94CD705116F8F5BC00CF1E42 /* LibCxxMap.cpp */,
+				94D0B10B16D5535900EA9C70 /* LibStdcpp.cpp */,
+				94D6A0A716CEB55F00833B6E /* NSArray.cpp */,
+				94D6A0A816CEB55F00833B6E /* NSDictionary.cpp */,
+				94D6A0A916CEB55F00833B6E /* NSSet.cpp */,
+				94CB256816B096F90059775D /* TypeCategory.h */,
+				94CB256416B096F10059775D /* TypeCategory.cpp */,
+				94CB256916B096FA0059775D /* TypeCategoryMap.h */,
+				94CB256516B096F10059775D /* TypeCategoryMap.cpp */,
+				94CB256A16B0A4030059775D /* TypeFormat.h */,
+				94CB256D16B0A4260059775D /* TypeFormat.cpp */,
+				94CB256B16B0A4030059775D /* TypeSummary.h */,
+				94CB256E16B0A4260059775D /* TypeSummary.cpp */,
+				94CB256C16B0A4040059775D /* TypeSynthetic.h */,
+				94CB256F16B0A4270059775D /* TypeSynthetic.cpp */,
+			);
+			name = DataFormatters;
+			sourceTree = "<group>";
+		};
 		EDC6D49114E5C15C001B75F8 /* launcherXPCService */ = {
 			isa = PBXGroup;
 			children = (
@@ -3418,6 +3570,7 @@
 				26FFC19A14FC072100087D58 /* AuxVector.h in Headers */,
 				26FFC19C14FC072100087D58 /* DYLDRendezvous.h in Headers */,
 				26FFC19E14FC072100087D58 /* DynamicLoaderPOSIXDYLD.h in Headers */,
+				AF254E32170CCC33007AE5C9 /* PlatformDarwinKernel.h in Headers */,
 				2694E99E14FC0BB30076DE67 /* PlatformFreeBSD.h in Headers */,
 				2694E9A514FC0BBD0076DE67 /* PlatformLinux.h in Headers */,
 				2663E379152BD1890091EC22 /* ReadWriteLock.h in Headers */,
@@ -3429,8 +3582,10 @@
 				260CC63215D04377002BF2E0 /* OptionValueDictionary.h in Headers */,
 				260CC63315D04377002BF2E0 /* OptionValueEnumeration.h in Headers */,
 				260CC63415D04377002BF2E0 /* OptionValueFileSpec.h in Headers */,
+				26D1804716CEE12C00EDFB5B /* TimeSpecTimeout.h in Headers */,
 				260CC63515D04377002BF2E0 /* OptionValueFileSpecList.h in Headers */,
 				260CC63615D04377002BF2E0 /* OptionValueFormat.h in Headers */,
+				26D1804516CEE12500EDFB5B /* KQueue.h in Headers */,
 				260CC63715D04377002BF2E0 /* OptionValueSInt64.h in Headers */,
 				260CC63815D04377002BF2E0 /* OptionValueString.h in Headers */,
 				260CC63915D04377002BF2E0 /* OptionValueUInt64.h in Headers */,
@@ -3599,7 +3754,7 @@
 		08FB7793FE84155DC02AAC07 /* Project object */ = {
 			isa = PBXProject;
 			attributes = {
-				LastUpgradeCheck = 0450;
+				LastUpgradeCheck = 0500;
 			};
 			buildConfigurationList = 1DEB91EF08733DB70010E9CD /* Build configuration list for PBXProject "lldb" */;
 			compatibilityVersion = "Xcode 3.2";
@@ -3682,7 +3837,7 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
-			shellScript = "cd \"${TARGET_BUILD_DIR}/${PUBLIC_HEADERS_FOLDER_PATH}\"\nfor file in *.h\ndo\n\t/usr/bin/sed -i '' 's/\\(#include\\)[ ]*\"lldb\\/\\(API\\/\\)\\{0,1\\}\\(.*\\)\"/\\1 <LLDB\\/\\3>/1' \"$file\"\n\t/usr/bin/sed -i '' 's|<LLDB/Utility|<LLDB|' \"$file\"\n\tTRUNCATED_VERSION=`echo ${CURRENT_PROJECT_VERSION} | /usr/bin/sed -E 's/^([0-9]+)(\\.[0-9]+)?$/\\1/g'`\n\t/usr/bin/sed -i '' \"s|//#define LLDB_VERSION|#define LLDB_VERSION $TRUNCATED_VERSION |\" \"$file\"\ndone\n";
+			shellScript = "cd \"${TARGET_BUILD_DIR}/${PUBLIC_HEADERS_FOLDER_PATH}\"\nfor file in *.h\ndo\n\t/usr/bin/sed -i '' 's/\\(#include\\)[ ]*\"lldb\\/\\(API\\/\\)\\{0,1\\}\\(.*\\)\"/\\1 <LLDB\\/\\3>/1' \"$file\"\n\t/usr/bin/sed -i '' 's|<LLDB/Utility|<LLDB|' \"$file\"\n\tLLDB_VERSION=`echo ${CURRENT_PROJECT_VERSION} | /usr/bin/sed -E 's/^([0-9]+).([0-9]+).([0-9]+)(.[0-9]+)?$/\\1/g'`\n    LLDB_REVISION=`echo ${CURRENT_PROJECT_VERSION} | /usr/bin/sed -E 's/^([0-9]+).([0-9]+).([0-9]+)(.[0-9]+)?$/\\3/g'`\n    LLDB_VERSION_STRING=`echo ${CURRENT_PROJECT_VERSION}`\n\t/usr/bin/sed -i '' \"s|//#define LLDB_VERSION$|#define LLDB_VERSION $LLDB_VERSION |\" \"$file\"\n    /usr/bin/sed -i '' \"s|//#define LLDB_REVISION|#define LLDB_REVISION $LLDB_REVISION |\" \"$file\"\n    /usr/bin/sed -i '' \"s|//#define LLDB_VERSION_STRING|#define LLDB_VERSION_STRING \\\"$LLDB_VERSION_STRING\\\" |\" \"$file\"\ndone\n";
 		};
 		261EECA21337D399001D193C /* Build llvm and clang */ = {
 			isa = PBXShellScriptBuildPhase;
@@ -3806,13 +3961,14 @@
 			buildActionMask = 2147483647;
 			files = (
 				9456F2241616671900656F91 /* DynamicLibrary.cpp in Sources */,
-				49C8507C1384A786007DB519 /* ProcessDataAllocator.cpp in Sources */,
+				26D1804216CEDF0700EDFB5B /* TimeSpecTimeout.cpp in Sources */,
 				2689FFDA13353D9D00698AC0 /* lldb.cpp in Sources */,
 				2689FFDB13353DA300698AC0 /* lldb-log.cpp in Sources */,
 				2689FFEF13353DB600698AC0 /* Breakpoint.cpp in Sources */,
 				2689FFF113353DB600698AC0 /* BreakpointID.cpp in Sources */,
 				2689FFF313353DB600698AC0 /* BreakpointIDList.cpp in Sources */,
 				2689FFF513353DB600698AC0 /* BreakpointList.cpp in Sources */,
+				94CD704D16F8DDEA00CF1E42 /* CF.cpp in Sources */,
 				2689FFF713353DB600698AC0 /* BreakpointLocation.cpp in Sources */,
 				2689FFF913353DB600698AC0 /* BreakpointLocationCollection.cpp in Sources */,
 				2689FFFB13353DB600698AC0 /* BreakpointLocationList.cpp in Sources */,
@@ -3820,6 +3976,7 @@
 				2689FFFF13353DB600698AC0 /* BreakpointResolver.cpp in Sources */,
 				2689000113353DB600698AC0 /* BreakpointResolverAddress.cpp in Sources */,
 				2689000313353DB600698AC0 /* BreakpointResolverFileLine.cpp in Sources */,
+				94CD705216F8F5BC00CF1E42 /* LibCxxMap.cpp in Sources */,
 				2689000513353DB600698AC0 /* BreakpointResolverName.cpp in Sources */,
 				2689000713353DB600698AC0 /* BreakpointSite.cpp in Sources */,
 				2689000913353DB600698AC0 /* BreakpointSiteList.cpp in Sources */,
@@ -3857,6 +4014,7 @@
 				2689002F13353E0400698AC0 /* ArchSpec.cpp in Sources */,
 				2689003013353E0400698AC0 /* Baton.cpp in Sources */,
 				2689003113353E0400698AC0 /* Broadcaster.cpp in Sources */,
+				49DCF702170E70120092F75E /* Materializer.cpp in Sources */,
 				2689003213353E0400698AC0 /* Communication.cpp in Sources */,
 				2689003313353E0400698AC0 /* Connection.cpp in Sources */,
 				2689003413353E0400698AC0 /* ConnectionFileDescriptor.cpp in Sources */,
@@ -3879,12 +4037,14 @@
 				2689004513353E0400698AC0 /* ModuleChild.cpp in Sources */,
 				2689004613353E0400698AC0 /* ModuleList.cpp in Sources */,
 				2689004713353E0400698AC0 /* PluginManager.cpp in Sources */,
+				AF254E31170CCC33007AE5C9 /* PlatformDarwinKernel.cpp in Sources */,
 				2689004813353E0400698AC0 /* RegularExpression.cpp in Sources */,
 				2689004913353E0400698AC0 /* Scalar.cpp in Sources */,
 				2689004A13353E0400698AC0 /* SearchFilter.cpp in Sources */,
 				2689004B13353E0400698AC0 /* Section.cpp in Sources */,
 				2689004C13353E0400698AC0 /* SourceManager.cpp in Sources */,
 				2689004D13353E0400698AC0 /* State.cpp in Sources */,
+				94D0B10D16D5535900EA9C70 /* LibStdcpp.cpp in Sources */,
 				2689004E13353E0400698AC0 /* Stream.cpp in Sources */,
 				2689004F13353E0400698AC0 /* StreamFile.cpp in Sources */,
 				2689005013353E0400698AC0 /* StreamString.cpp in Sources */,
@@ -3915,8 +4075,9 @@
 				2689006913353E0E00698AC0 /* ASTStructExtractor.cpp in Sources */,
 				2689006A13353E0E00698AC0 /* IRDynamicChecks.cpp in Sources */,
 				2689006B13353E0E00698AC0 /* IRForTarget.cpp in Sources */,
-				2689006D13353E0E00698AC0 /* RecordingMemoryManager.cpp in Sources */,
+				2689006D13353E0E00698AC0 /* IRExecutionUnit.cpp in Sources */,
 				2689006E13353E1A00698AC0 /* File.cpp in Sources */,
+				94D6A0AB16CEB55F00833B6E /* NSDictionary.cpp in Sources */,
 				2689006F13353E1A00698AC0 /* FileSpec.cpp in Sources */,
 				2689007013353E1A00698AC0 /* Condition.cpp in Sources */,
 				2689007113353E1A00698AC0 /* Host.cpp in Sources */,
@@ -3935,7 +4096,6 @@
 				2689007F13353E2200698AC0 /* CommandCompletions.cpp in Sources */,
 				2689008013353E2200698AC0 /* CommandInterpreter.cpp in Sources */,
 				2689008113353E2200698AC0 /* CommandObject.cpp in Sources */,
-				2689008213353E2200698AC0 /* CommandObjectCrossref.cpp in Sources */,
 				2689008313353E2200698AC0 /* CommandObjectMultiword.cpp in Sources */,
 				2689008413353E2200698AC0 /* CommandObjectRegexCommand.cpp in Sources */,
 				2689008513353E2200698AC0 /* CommandReturnObject.cpp in Sources */,
@@ -3976,6 +4136,7 @@
 				268900C213353E5F00698AC0 /* DWARFDebugPubnamesSet.cpp in Sources */,
 				268900C313353E5F00698AC0 /* DWARFDebugRanges.cpp in Sources */,
 				268900C413353E5F00698AC0 /* DWARFDefines.cpp in Sources */,
+				94D0B10C16D5535900EA9C70 /* LibCxx.cpp in Sources */,
 				268900C513353E5F00698AC0 /* DWARFDIECollection.cpp in Sources */,
 				268900C613353E5F00698AC0 /* DWARFFormValue.cpp in Sources */,
 				268900C713353E5F00698AC0 /* DWARFLocationDescription.cpp in Sources */,
@@ -4051,6 +4212,7 @@
 				2689011113353E8200698AC0 /* StringExtractor.cpp in Sources */,
 				2689011213353E8200698AC0 /* StringExtractorGDBRemote.cpp in Sources */,
 				2689011313353E8200698AC0 /* PseudoTerminal.cpp in Sources */,
+				94D6A0AA16CEB55F00833B6E /* NSArray.cpp in Sources */,
 				26B1FCC21338115F002886E2 /* Host.mm in Sources */,
 				26744EF11338317700EF765A /* GDBRemoteCommunicationClient.cpp in Sources */,
 				26744EF31338317700EF765A /* GDBRemoteCommunicationServer.cpp in Sources */,
@@ -4082,6 +4244,7 @@
 				26DB3E161379E7AD0080DC73 /* ABIMacOSX_arm.cpp in Sources */,
 				26DB3E1C1379E7AD0080DC73 /* ABIMacOSX_i386.cpp in Sources */,
 				26DB3E1F1379E7AD0080DC73 /* ABISysV_x86_64.cpp in Sources */,
+				26D1803E16CEBFD300EDFB5B /* KQueue.cpp in Sources */,
 				26A69C5F137A17A500262477 /* RegisterValue.cpp in Sources */,
 				2690B3711381D5C300ECFBAE /* Memory.cpp in Sources */,
 				9A9E1EFF1398086D005AC039 /* InputReaderStack.cpp in Sources */,
@@ -4094,7 +4257,6 @@
 				4CCA645613B40B82003BDF98 /* AppleObjCTrampolineHandler.cpp in Sources */,
 				4CCA645813B40B82003BDF98 /* AppleThreadPlanStepThroughObjCTrampoline.cpp in Sources */,
 				9463D4CD13B1798800C230D4 /* CommandObjectType.cpp in Sources */,
-				9415F61813B2C0EF00A52B36 /* FormatManager.cpp in Sources */,
 				49D8FB3913B5598F00411094 /* ClangASTImporter.cpp in Sources */,
 				9467E65213C3D97600B3B6F3 /* TypeHierarchyNavigator.cpp in Sources */,
 				26ED3D6D13C563810017D45E /* OptionGroupVariable.cpp in Sources */,
@@ -4111,13 +4273,11 @@
 				265205AC13D3E3F700132FE2 /* RegisterContextKDP_x86_64.cpp in Sources */,
 				2628A4D513D4977900F5487A /* ThreadKDP.cpp in Sources */,
 				26D7E45D13D5E30A007FD12B /* SocketAddress.cpp in Sources */,
-				B271B11413D6139300C3FEDB /* FormatClasses.cpp in Sources */,
 				94B6E76213D88365005F417F /* ValueObjectSyntheticFilter.cpp in Sources */,
 				262D24E613FB8710002D1960 /* RegisterContextMemory.cpp in Sources */,
 				26F4A21C13FBA31A0064B613 /* ThreadMemory.cpp in Sources */,
 				266DFE9713FD656E00D0C574 /* OperatingSystem.cpp in Sources */,
 				26954EBE1401EE8B00294D09 /* DynamicRegisterInfo.cpp in Sources */,
-				9470A8F01402DFFB0056FF61 /* DataVisualization.cpp in Sources */,
 				26274FA214030EEF006BA130 /* OperatingSystemDarwinKernel.cpp in Sources */,
 				26274FA714030F79006BA130 /* DynamicLoaderDarwinKernel.cpp in Sources */,
 				94FA3DE01405D50400833217 /* ValueObjectConstResultChild.cpp in Sources */,
@@ -4149,6 +4309,7 @@
 				260CC64A15D0440D002BF2E0 /* OptionValueBoolean.cpp in Sources */,
 				260CC64B15D0440D002BF2E0 /* OptionValueProperties.cpp in Sources */,
 				260CC64C15D0440D002BF2E0 /* OptionValueDictionary.cpp in Sources */,
+				49DCF6FE170E6B4A0092F75E /* IRMemoryMap.cpp in Sources */,
 				260CC64D15D0440D002BF2E0 /* OptionValueEnumeration.cpp in Sources */,
 				260CC64E15D0440D002BF2E0 /* OptionValueFileSpec.cpp in Sources */,
 				260CC64F15D0440D002BF2E0 /* OptionValueFileSpecLIst.cpp in Sources */,
@@ -4164,11 +4325,23 @@
 				26491E3E15E1DB9F00CBFFC2 /* OptionValueRegex.cpp in Sources */,
 				2697A39315E404B1003E682C /* OptionValueArch.cpp in Sources */,
 				94EA1D5C15E6C9B400D4171A /* PythonDataObjects.cpp in Sources */,
+				94D6A0AC16CEB55F00833B6E /* NSSet.cpp in Sources */,
+				94CD704E16F8DDEA00CF1E42 /* Cocoa.cpp in Sources */,
 				2698699B15E6CBD0002415FF /* OperatingSystemPython.cpp in Sources */,
-				94CDEB9D15F0258500DD2A7A /* CXXFormatterFunctions.cpp in Sources */,
 				947A1D641616476B0017C8D1 /* CommandObjectPlugin.cpp in Sources */,
 				262ED0081631FA3A00879631 /* OptionGroupString.cpp in Sources */,
 				94094C6B163B6F840083A547 /* ValueObjectCast.cpp in Sources */,
+				94CB255B16B069770059775D /* CXXFormatterFunctions.cpp in Sources */,
+				94CB255C16B069770059775D /* DataVisualization.cpp in Sources */,
+				94CD705016F8DF1C00CF1E42 /* LibCxxList.cpp in Sources */,
+				94CB255D16B069770059775D /* FormatClasses.cpp in Sources */,
+				94CB255E16B069770059775D /* FormatManager.cpp in Sources */,
+				94CB256616B096F10059775D /* TypeCategory.cpp in Sources */,
+				94CB256716B096F10059775D /* TypeCategoryMap.cpp in Sources */,
+				94CB257016B0A4270059775D /* TypeFormat.cpp in Sources */,
+				94CB257116B0A4270059775D /* TypeSummary.cpp in Sources */,
+				94CB257216B0A4270059775D /* TypeSynthetic.cpp in Sources */,
+				94CB257416B1D3880059775D /* FormatCache.cpp in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -4291,6 +4464,11 @@
 				);
 				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
 				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				COPY_PHASE_STRIP = NO;
 				DEBUG_INFORMATION_FORMAT = dwarf;
 				GCC_C_LANGUAGE_STANDARD = c99;
@@ -4334,10 +4512,8 @@
 					"-flimit-debug-info",
 					"-Wparentheses",
 				);
-				SDKROOT = macosx;
 				STRIP_INSTALLED_PRODUCT = NO;
 				STRIP_STYLE = debugging;
-				VALID_ARCHS = "armv4t armv5 armv6 armv7 armv7s i386 ppc ppc64 ppc7400 ppc970 x86_64";
 				WARNING_CFLAGS = "-Wreorder";
 			};
 			name = Debug;
@@ -4351,6 +4527,11 @@
 				"ARCHS[sdk=macosx*]" = "$(ARCHS_STANDARD_64_BIT)";
 				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
 				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				COPY_PHASE_STRIP = NO;
 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 				GCC_C_LANGUAGE_STANDARD = c99;
@@ -4393,10 +4574,8 @@
 					"-flimit-debug-info",
 					"-Wparentheses",
 				);
-				SDKROOT = macosx;
 				STRIP_INSTALLED_PRODUCT = NO;
 				STRIP_STYLE = debugging;
-				VALID_ARCHS = "armv4t armv5 armv6 armv7 armv7s i386 ppc ppc64 ppc7400 ppc970 x86_64";
 				WARNING_CFLAGS = "-Wreorder";
 			};
 			name = Release;
@@ -4447,9 +4626,9 @@
 				CLANG_LINK_OBJC_RUNTIME = NO;
 				CLANG_OBJC_RUNTIME = NO;
 				COMBINE_HIDPI_IMAGES = YES;
-				CURRENT_PROJECT_VERSION = 178;
+				CURRENT_PROJECT_VERSION = 300.99.0;
 				DYLIB_COMPATIBILITY_VERSION = 1;
-				DYLIB_CURRENT_VERSION = 178;
+				DYLIB_CURRENT_VERSION = 300.99.0;
 				EXPORTED_SYMBOLS_FILE = "resources/lldb-framework-exports";
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
@@ -4504,10 +4683,10 @@
 				CLANG_LINK_OBJC_RUNTIME = NO;
 				CLANG_OBJC_RUNTIME = NO;
 				COMBINE_HIDPI_IMAGES = YES;
-				CURRENT_PROJECT_VERSION = 178;
+				CURRENT_PROJECT_VERSION = 300.99.0;
 				DEAD_CODE_STRIPPING = YES;
 				DYLIB_COMPATIBILITY_VERSION = 1;
-				DYLIB_CURRENT_VERSION = 178;
+				DYLIB_CURRENT_VERSION = 300.99.0;
 				EXPORTED_SYMBOLS_FILE = "resources/lldb-framework-exports";
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
@@ -4562,7 +4741,7 @@
 				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				COMBINE_HIDPI_IMAGES = YES;
-				CURRENT_PROJECT_VERSION = 178;
+				CURRENT_PROJECT_VERSION = 300.99.0;
 				DEBUGGING_SYMBOLS = YES;
 				GCC_DYNAMIC_NO_PIC = NO;
 				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
@@ -4588,7 +4767,7 @@
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				COPY_PHASE_STRIP = YES;
-				CURRENT_PROJECT_VERSION = 178;
+				CURRENT_PROJECT_VERSION = 300.99.0;
 				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
 				OTHER_CFLAGS = "";
@@ -4605,7 +4784,7 @@
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				COPY_PHASE_STRIP = YES;
-				CURRENT_PROJECT_VERSION = 178;
+				CURRENT_PROJECT_VERSION = 300.99.0;
 				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
 				OTHER_CFLAGS = "";
@@ -4619,8 +4798,8 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				COMBINE_HIDPI_IMAGES = YES;
-				CURRENT_PROJECT_VERSION = 178;
-				DYLIB_CURRENT_VERSION = 178;
+				CURRENT_PROJECT_VERSION = 300.99.0;
+				DYLIB_CURRENT_VERSION = 300.99.0;
 				EXECUTABLE_EXTENSION = a;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
@@ -4629,7 +4808,6 @@
 				GCC_ENABLE_OBJC_GC = supported;
 				GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
 				HEADER_SEARCH_PATHS = /usr/include/libxml2;
-				LD_DYLIB_INSTALL_NAME = "$(DEVELOPER_DIR)/Library/PrivateFrameworks/LLDB.framework/Resources/lldb-core.a";
 				MACH_O_TYPE = staticlib;
 				OTHER_CPLUSPLUSFLAGS = (
 					"-fno-rtti",
@@ -4649,8 +4827,8 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				COMBINE_HIDPI_IMAGES = YES;
-				CURRENT_PROJECT_VERSION = 178;
-				DYLIB_CURRENT_VERSION = 178;
+				CURRENT_PROJECT_VERSION = 300.99.0;
+				DYLIB_CURRENT_VERSION = 300.99.0;
 				EXECUTABLE_EXTENSION = a;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
@@ -4659,7 +4837,6 @@
 				GCC_ENABLE_OBJC_GC = supported;
 				GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
 				HEADER_SEARCH_PATHS = /usr/include/libxml2;
-				LD_DYLIB_INSTALL_NAME = "$(DEVELOPER_DIR)/Library/PrivateFrameworks/LLDB.framework/Resources/lldb-core.a";
 				MACH_O_TYPE = staticlib;
 				OTHER_CPLUSPLUSFLAGS = (
 					"-fno-rtti",
@@ -4679,8 +4856,8 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				COMBINE_HIDPI_IMAGES = YES;
-				CURRENT_PROJECT_VERSION = 178;
-				DYLIB_CURRENT_VERSION = 178;
+				CURRENT_PROJECT_VERSION = 300.99.0;
+				DYLIB_CURRENT_VERSION = 300.99.0;
 				EXECUTABLE_EXTENSION = a;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
@@ -4689,7 +4866,6 @@
 				GCC_ENABLE_OBJC_GC = supported;
 				GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
 				HEADER_SEARCH_PATHS = /usr/include/libxml2;
-				LD_DYLIB_INSTALL_NAME = "$(DEVELOPER_DIR)/Library/PrivateFrameworks/LLDB.framework/Resources/lldb-core.a";
 				MACH_O_TYPE = staticlib;
 				OTHER_CPLUSPLUSFLAGS = (
 					"-fno-rtti",
@@ -4717,6 +4893,11 @@
 				);
 				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
 				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				COPY_PHASE_STRIP = NO;
 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 				GCC_C_LANGUAGE_STANDARD = c99;
@@ -4760,10 +4941,8 @@
 					"-flimit-debug-info",
 					"-Wparentheses",
 				);
-				SDKROOT = "";
 				STRIP_INSTALLED_PRODUCT = NO;
 				STRIP_STYLE = debugging;
-				VALID_ARCHS = "armv4t armv5 armv6 armv7 armv7s i386 ppc ppc64 ppc7400 ppc970 x86_64";
 				WARNING_CFLAGS = "-Wreorder";
 			};
 			name = BuildAndIntegration;
@@ -4772,7 +4951,7 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				COPY_PHASE_STRIP = YES;
-				CURRENT_PROJECT_VERSION = 178;
+				CURRENT_PROJECT_VERSION = 300.99.0;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					"\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"",
@@ -4814,10 +4993,10 @@
 				CLANG_OBJC_RUNTIME = NO;
 				COMBINE_HIDPI_IMAGES = YES;
 				COPY_PHASE_STRIP = YES;
-				CURRENT_PROJECT_VERSION = 178;
+				CURRENT_PROJECT_VERSION = 300.99.0;
 				DEAD_CODE_STRIPPING = YES;
 				DYLIB_COMPATIBILITY_VERSION = 1;
-				DYLIB_CURRENT_VERSION = 178;
+				DYLIB_CURRENT_VERSION = 300.99.0;
 				EXPORTED_SYMBOLS_FILE = "resources/lldb-framework-exports";
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
@@ -5135,7 +5314,7 @@
 		26F5C26C10F3D9A5009D5894 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				CURRENT_PROJECT_VERSION = 178;
+				CURRENT_PROJECT_VERSION = 300.99.0;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					"\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"",
@@ -5165,7 +5344,7 @@
 		26F5C26D10F3D9A5009D5894 /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				CURRENT_PROJECT_VERSION = 178;
+				CURRENT_PROJECT_VERSION = 300.99.0;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					"\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"",
@@ -5201,6 +5380,11 @@
 				);
 				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
 				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				COPY_PHASE_STRIP = NO;
 				DEBUG_INFORMATION_FORMAT = dwarf;
 				GCC_C_LANGUAGE_STANDARD = c99;
@@ -5244,10 +5428,8 @@
 					"-flimit-debug-info",
 					"-Wparentheses",
 				);
-				SDKROOT = macosx;
 				STRIP_INSTALLED_PRODUCT = NO;
 				STRIP_STYLE = debugging;
-				VALID_ARCHS = "armv4t armv5 armv6 armv7 armv7s i386 ppc ppc64 ppc7400 ppc970 x86_64";
 				WARNING_CFLAGS = "-Wreorder";
 			};
 			name = DebugClang;
@@ -5280,7 +5462,7 @@
 		49BB8F381611172B00BDD462 /* DebugClang */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				CURRENT_PROJECT_VERSION = 178;
+				CURRENT_PROJECT_VERSION = 300.99.0;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					"\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"",
@@ -5314,9 +5496,9 @@
 				CLANG_LINK_OBJC_RUNTIME = NO;
 				CLANG_OBJC_RUNTIME = NO;
 				COMBINE_HIDPI_IMAGES = YES;
-				CURRENT_PROJECT_VERSION = 178;
+				CURRENT_PROJECT_VERSION = 300.99.0;
 				DYLIB_COMPATIBILITY_VERSION = 1;
-				DYLIB_CURRENT_VERSION = 178;
+				DYLIB_CURRENT_VERSION = 300.99.0;
 				EXPORTED_SYMBOLS_FILE = "resources/lldb-framework-exports";
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
@@ -5381,8 +5563,8 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				COMBINE_HIDPI_IMAGES = YES;
-				CURRENT_PROJECT_VERSION = 178;
-				DYLIB_CURRENT_VERSION = 178;
+				CURRENT_PROJECT_VERSION = 300.99.0;
+				DYLIB_CURRENT_VERSION = 300.99.0;
 				EXECUTABLE_EXTENSION = a;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
@@ -5391,7 +5573,6 @@
 				GCC_ENABLE_OBJC_GC = supported;
 				GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
 				HEADER_SEARCH_PATHS = /usr/include/libxml2;
-				LD_DYLIB_INSTALL_NAME = "$(DEVELOPER_DIR)/Library/PrivateFrameworks/LLDB.framework/Resources/lldb-core.a";
 				MACH_O_TYPE = staticlib;
 				OTHER_CPLUSPLUSFLAGS = (
 					"-fno-rtti",
@@ -5549,7 +5730,7 @@
 				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				COMBINE_HIDPI_IMAGES = YES;
-				CURRENT_PROJECT_VERSION = 178;
+				CURRENT_PROJECT_VERSION = 300.99.0;
 				DEBUGGING_SYMBOLS = YES;
 				GCC_DYNAMIC_NO_PIC = NO;
 				GCC_ENABLE_OBJC_EXCEPTIONS = YES;

Modified: lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/LLDB.xcscheme
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/LLDB.xcscheme?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/LLDB.xcscheme (original)
+++ lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/LLDB.xcscheme Wed Apr 17 03:38:48 2013
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "0450"
+   LastUpgradeVersion = "0500"
    version = "1.8">
    <BuildAction
       parallelizeBuildables = "NO"
@@ -56,7 +56,6 @@
       buildConfiguration = "Debug"
       ignoresPersistentStateOnLaunch = "NO"
       debugDocumentVersioning = "YES"
-      enableOpenGLFrameCaptureMode = "0"
       allowLocationSimulation = "YES">
       <BuildableProductRunnable>
          <BuildableReference

Modified: lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/darwin-debug.xcscheme
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/darwin-debug.xcscheme?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/darwin-debug.xcscheme (original)
+++ lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/darwin-debug.xcscheme Wed Apr 17 03:38:48 2013
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "0450"
+   LastUpgradeVersion = "0500"
    version = "1.8">
    <BuildAction
       parallelizeBuildables = "NO"
@@ -47,7 +47,6 @@
       buildConfiguration = "Debug"
       ignoresPersistentStateOnLaunch = "NO"
       debugDocumentVersioning = "YES"
-      enableOpenGLFrameCaptureMode = "0"
       allowLocationSimulation = "YES">
       <BuildableProductRunnable>
          <BuildableReference

Modified: lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/launcherRootXPCService.xcscheme
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/launcherRootXPCService.xcscheme?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/launcherRootXPCService.xcscheme (original)
+++ lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/launcherRootXPCService.xcscheme Wed Apr 17 03:38:48 2013
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "0450"
+   LastUpgradeVersion = "0500"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"
@@ -38,7 +38,6 @@
       buildConfiguration = "Debug"
       ignoresPersistentStateOnLaunch = "NO"
       debugDocumentVersioning = "YES"
-      enableOpenGLFrameCaptureMode = "0"
       allowLocationSimulation = "YES">
       <AdditionalOptions>
       </AdditionalOptions>

Modified: lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/launcherXPCService.xcscheme
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/launcherXPCService.xcscheme?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/launcherXPCService.xcscheme (original)
+++ lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/launcherXPCService.xcscheme Wed Apr 17 03:38:48 2013
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "0450"
+   LastUpgradeVersion = "0500"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"
@@ -38,7 +38,6 @@
       buildConfiguration = "Debug"
       ignoresPersistentStateOnLaunch = "NO"
       debugDocumentVersioning = "YES"
-      enableOpenGLFrameCaptureMode = "0"
       allowLocationSimulation = "YES">
       <PathRunnable
          FilePath = "/Users/moi/Library/Developer/Xcode/DerivedData/Xcode-ezhudafllefyhcfivqaeslnymjsj/Build/Products/Debug/LLDB.framework/XPCServices/com.apple.lldb.launcherXPCService.xpc/Contents/MacOS/com.apple.lldb.launcherXPCService">

Modified: lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/lldb-tool.xcscheme
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/lldb-tool.xcscheme?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/lldb-tool.xcscheme (original)
+++ lldb/branches/windows/lldb.xcodeproj/xcshareddata/xcschemes/lldb-tool.xcscheme Wed Apr 17 03:38:48 2013
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "0450"
+   LastUpgradeVersion = "0500"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "NO"
@@ -84,7 +84,7 @@
    <LaunchAction
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      launchStyle = "1"
+      launchStyle = "0"
       useCustomWorkingDirectory = "NO"
       customWorkingDirectory = "/Volumes/work/gclayton/Documents/devb/attach"
       buildConfiguration = "Debug"

Modified: lldb/branches/windows/lldb.xcworkspace/contents.xcworkspacedata
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/lldb.xcworkspace/contents.xcworkspacedata?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/lldb.xcworkspace/contents.xcworkspacedata (original)
+++ lldb/branches/windows/lldb.xcworkspace/contents.xcworkspacedata Wed Apr 17 03:38:48 2013
@@ -7,4 +7,7 @@
    <FileRef
       location = "group:tools/debugserver/debugserver.xcodeproj">
    </FileRef>
+   <FileRef
+      location = "group:tools/lldb-perf/lldbperf.xcodeproj">
+   </FileRef>
 </Workspace>

Modified: lldb/branches/windows/resources/LLDB-Info.plist
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/resources/LLDB-Info.plist?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/resources/LLDB-Info.plist (original)
+++ lldb/branches/windows/resources/LLDB-Info.plist Wed Apr 17 03:38:48 2013
@@ -17,7 +17,7 @@
 	<key>CFBundleSignature</key>
 	<string>????</string>
 	<key>CFBundleVersion</key>
-	<string>178</string>
+	<string>300.99.0</string>
 	<key>CFBundleName</key>
 	<string>${EXECUTABLE_NAME}</string>
 </dict>

Modified: lldb/branches/windows/scripts/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/scripts/CMakeLists.txt?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/scripts/CMakeLists.txt (original)
+++ lldb/branches/windows/scripts/CMakeLists.txt Wed Apr 17 03:38:48 2013
@@ -1,12 +1,15 @@
 set(LLVM_NO_RTTI 1)
 
 add_custom_command(
-  OUTPUT ${LLDB_SOURCE_DIR}/source/LLDBWrapPython.cpp
+  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapPython.cpp
   DEPENDS ${LLDB_SOURCE_DIR}/scripts/lldb.swig
-  COMMAND swig -c++ -shadow -python -I${LLDB_SOURCE_DIR}/include -I./. -outdir ${LLDB_SOURCE_DIR}/scripts/Python  -o ${LLDB_SOURCE_DIR}/source/LLDBWrapPython.cpp ${LLDB_SOURCE_DIR}/scripts/lldb.swig
-  COMMENT "Building lldb pyhton wrapper")
-set_source_files_properties(${LLDB_SOURCE_DIR}/source/LLDBWrapPython.cpp PROPERTIES GENERATED 1)
+  # swig was directly invoked on Windows (where the Python API is not being generated) but on other platforms, we need to run the *swig-wrapper-classes.sh shell-scripts.
+  #COMMAND swig -c++ -shadow -python -I${LLDB_SOURCE_DIR}/include -I./. -outdir ${LLDB_SOURCE_DIR}/scripts/Python  -o ${LLDB_SOURCE_DIR}/source/LLDBWrapPython.cpp ${LLDB_SOURCE_DIR}/scripts/lldb.swig
+  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/build-swig-wrapper-classes.sh ${LLDB_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR} -m
+  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/finish-swig-wrapper-classes.sh ${LLDB_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR} -m
+  COMMENT "Building lldb python wrapper")
+set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapPython.cpp PROPERTIES GENERATED 1)
 
-ADD_CUSTOM_TARGET(swig_wrapper ALL echo
-      DEPENDS ${LLDB_SOURCE_DIR}/source/LLDBWrapPython.cpp
+ADD_CUSTOM_TARGET(swig_wrapper ALL echo -n
+    DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapPython.cpp
     )

Modified: lldb/branches/windows/scripts/Python/finish-swig-Python-LLDB.sh
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/scripts/Python/finish-swig-Python-LLDB.sh?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/scripts/Python/finish-swig-Python-LLDB.sh (original)
+++ lldb/branches/windows/scripts/Python/finish-swig-Python-LLDB.sh Wed Apr 17 03:38:48 2013
@@ -192,14 +192,14 @@ create_python_package () {
     package_init_file="${package_dir}/__init__.py"
     if [ ! -f "${package_init_file}" ]
     then
-        echo -n "__all__ = [" > "${package_init_file}"
+        printf "__all__ = [" > "${package_init_file}"
         python_module_separator=""
         for package_file in $package_files
         do
             if [ -f "${package_file}" ]
             then
                 package_file_basename=$(basename "${package_file}")
-                echo -n "${python_module_separator}\"${package_file_basename%.*}\"" >> "${package_init_file}"
+                printf "${python_module_separator}\"${package_file_basename%.*}\"" >> "${package_init_file}"
                 python_module_separator=", "
             fi
         done
@@ -223,38 +223,11 @@ package_files="${SRC_ROOT}/examples/synt
 ${SRC_ROOT}/examples/synthetic/libcxx.py"
 create_python_package "/formatters/cpp" "${package_files}"
 
-# lldb/formatters/objc
-package_files="${SRC_ROOT}/examples/summaries/cocoa/Selector.py
-${SRC_ROOT}/examples/summaries/objc.py
-${SRC_ROOT}/examples/summaries/cocoa/Class.py
-${SRC_ROOT}/examples/summaries/cocoa/CFArray.py
-${SRC_ROOT}/examples/summaries/cocoa/CFBag.py
-${SRC_ROOT}/examples/summaries/cocoa/CFBinaryHeap.py
-${SRC_ROOT}/examples/summaries/cocoa/CFBitVector.py
-${SRC_ROOT}/examples/summaries/cocoa/CFDictionary.py
-${SRC_ROOT}/examples/summaries/cocoa/CFString.py
-${SRC_ROOT}/examples/summaries/cocoa/NSBundle.py
-${SRC_ROOT}/examples/summaries/cocoa/NSData.py
-${SRC_ROOT}/examples/summaries/cocoa/NSDate.py
-${SRC_ROOT}/examples/summaries/cocoa/NSException.py
-${SRC_ROOT}/examples/summaries/cocoa/NSIndexSet.py
-${SRC_ROOT}/examples/summaries/cocoa/NSMachPort.py
-${SRC_ROOT}/examples/summaries/cocoa/NSNotification.py
-${SRC_ROOT}/examples/summaries/cocoa/NSNumber.py
-${SRC_ROOT}/examples/summaries/cocoa/NSSet.py
-${SRC_ROOT}/examples/summaries/cocoa/NSURL.py"
-create_python_package "/formatters/objc" "${package_files}"
-
-
 # make an empty __init__.py in lldb/runtime
 # this is required for Python to recognize lldb.runtime as a valid package
 # (and hence, lldb.runtime.objc as a valid contained package)
 create_python_package "/runtime" ""
 
-# lldb/runtime/objc
-package_files="${SRC_ROOT}/examples/summaries/cocoa/objc_runtime.py"
-create_python_package "/runtime/objc" "${package_files}"
-
 # lldb/formatters
 # having these files copied here ensures that lldb/formatters is a valid package itself
 package_files="${SRC_ROOT}/examples/summaries/cocoa/cache.py

Modified: lldb/branches/windows/scripts/Python/interface/SBBlock.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/scripts/Python/interface/SBBlock.i?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/scripts/Python/interface/SBBlock.i (original)
+++ lldb/branches/windows/scripts/Python/interface/SBBlock.i Wed Apr 17 03:38:48 2013
@@ -106,7 +106,7 @@ public:
     %pythoncode %{
         def get_range_at_index(self, idx):
             if idx < self.GetNumRanges():
-                return [self.sbblock.GetRangeStartAddress(key), self.sbblock.GetRangeEndAddress(key)]
+                return [self.GetRangeStartAddress(idx), self.GetRangeEndAddress(idx)]
             return []
 
         class ranges_access(object):
@@ -137,11 +137,11 @@ public:
         
         def get_ranges_array(self):
             '''An accessor function that returns an array object that contains all ranges in this block object.'''
-            if not hasattr(self, 'ranges'):
-                self.ranges = []
+            if not hasattr(self, 'ranges_array'):
+                self.ranges_array = []
                 for idx in range(self.num_ranges):
-                    self.ranges.append (self.get_range_at_index (idx))
-            return self.ranges
+                    self.ranges_array.append ([self.GetRangeStartAddress(idx), self.GetRangeEndAddress(idx)])
+            return self.ranges_array
         
         def get_call_site(self):
             return declaration(self.GetInlinedCallSiteFile(), self.GetInlinedCallSiteLine(), self.GetInlinedCallSiteColumn())

Modified: lldb/branches/windows/scripts/Python/interface/SBCommandReturnObject.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/scripts/Python/interface/SBCommandReturnObject.i?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/scripts/Python/interface/SBCommandReturnObject.i (original)
+++ lldb/branches/windows/scripts/Python/interface/SBCommandReturnObject.i Wed Apr 17 03:38:48 2013
@@ -86,8 +86,14 @@ public:
 	void
 	PutCString(const char* string, int len = -1);
 
-	size_t
-	Printf(const char* format, ...);
+    // wrapping the variadic Printf() with a plain Print()
+    // because it is hard to support varargs in SWIG bridgings
+    %extend {
+        void Print (const char* str)
+        {
+            self->Printf("%s", str);
+        }
+    }
 
 };
 

Modified: lldb/branches/windows/scripts/Python/interface/SBData.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/scripts/Python/interface/SBData.i?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/scripts/Python/interface/SBData.i (original)
+++ lldb/branches/windows/scripts/Python/interface/SBData.i Wed Apr 17 03:38:48 2013
@@ -42,50 +42,50 @@ public:
     SetByteOrder (lldb::ByteOrder endian);
 
     float
-    GetFloat (lldb::SBError& error, uint32_t offset);
+    GetFloat (lldb::SBError& error, lldb::offset_t offset);
 
     double
-    GetDouble (lldb::SBError& error, uint32_t offset);
+    GetDouble (lldb::SBError& error, lldb::offset_t offset);
 
     long double
-    GetLongDouble (lldb::SBError& error, uint32_t offset);
+    GetLongDouble (lldb::SBError& error, lldb::offset_t offset);
 
     lldb::addr_t
-    GetAddress (lldb::SBError& error, uint32_t offset);
+    GetAddress (lldb::SBError& error, lldb::offset_t offset);
 
     uint8_t
-    GetUnsignedInt8 (lldb::SBError& error, uint32_t offset);
+    GetUnsignedInt8 (lldb::SBError& error, lldb::offset_t offset);
 
     uint16_t
-    GetUnsignedInt16 (lldb::SBError& error, uint32_t offset);
+    GetUnsignedInt16 (lldb::SBError& error, lldb::offset_t offset);
 
     uint32_t
-    GetUnsignedInt32 (lldb::SBError& error, uint32_t offset);
+    GetUnsignedInt32 (lldb::SBError& error, lldb::offset_t offset);
 
     uint64_t
-    GetUnsignedInt64 (lldb::SBError& error, uint32_t offset);
+    GetUnsignedInt64 (lldb::SBError& error, lldb::offset_t offset);
 
     int8_t
-    GetSignedInt8 (lldb::SBError& error, uint32_t offset);
+    GetSignedInt8 (lldb::SBError& error, lldb::offset_t offset);
 
     int16_t
-    GetSignedInt16 (lldb::SBError& error, uint32_t offset);
+    GetSignedInt16 (lldb::SBError& error, lldb::offset_t offset);
 
     int32_t
-    GetSignedInt32 (lldb::SBError& error, uint32_t offset);
+    GetSignedInt32 (lldb::SBError& error, lldb::offset_t offset);
 
     int64_t
-    GetSignedInt64 (lldb::SBError& error, uint32_t offset);
+    GetSignedInt64 (lldb::SBError& error, lldb::offset_t offset);
 
     const char*
-    GetString (lldb::SBError& error, uint32_t offset);
+    GetString (lldb::SBError& error, lldb::offset_t offset);
 
     bool
     GetDescription (lldb::SBStream &description, lldb::addr_t base_addr);
 
     size_t
     ReadRawData (lldb::SBError& error,
-                 uint32_t offset,
+                 lldb::offset_t offset,
                  void *buf,
                  size_t size);
 

Modified: lldb/branches/windows/scripts/Python/interface/SBDebugger.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/scripts/Python/interface/SBDebugger.i?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/scripts/Python/interface/SBDebugger.i (original)
+++ lldb/branches/windows/scripts/Python/interface/SBDebugger.i Wed Apr 17 03:38:48 2013
@@ -87,7 +87,7 @@ if target:
                         #print value
                         print '%s (number of children = %d):' % (value.GetName(), value.GetNumChildren())
                         for child in value:
-                            print 'Name: ', child.GetName(), ' Value: ', child.GetValue(frame)
+                            print 'Name: ', child.GetName(), ' Value: ', child.GetValue()
 
             print 'Hit the breakpoint at main, enter to continue and wait for program to exit or \'Ctrl-D\'/\'quit\' to terminate the program'
             next = sys.stdin.readline()

Modified: lldb/branches/windows/scripts/Python/interface/SBExpressionOptions.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/scripts/Python/interface/SBExpressionOptions.i?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/scripts/Python/interface/SBExpressionOptions.i (original)
+++ lldb/branches/windows/scripts/Python/interface/SBExpressionOptions.i Wed Apr 17 03:38:48 2013
@@ -39,7 +39,15 @@ public:
     %feature("docstring", "Sets whether to unwind the expression stack on error.") SetUnwindOnError;
     
     void
-    SetUnwindOnError (bool unwind = false);
+    SetUnwindOnError (bool unwind = true);
+    
+    bool
+    GetIgnoreBreakpoints () const;
+    
+    %feature("docstring", "Sets whether to ignore breakpoint hits while running expressions.") SetUnwindOnError;
+    
+    void
+    SetIgnoreBreakpoints (bool ignore = true);
     
     lldb::DynamicValueType
     GetFetchDynamicValue () const;

Modified: lldb/branches/windows/scripts/Python/interface/SBFunction.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/scripts/Python/interface/SBFunction.i?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/scripts/Python/interface/SBFunction.i (original)
+++ lldb/branches/windows/scripts/Python/interface/SBFunction.i Wed Apr 17 03:38:48 2013
@@ -65,6 +65,9 @@ public:
     lldb::SBInstructionList
     GetInstructions (lldb::SBTarget target);
 
+    lldb::SBInstructionList
+    GetInstructions (lldb::SBTarget target, const char *flavor);
+
     lldb::SBAddress
     GetStartAddress ();
 

Modified: lldb/branches/windows/scripts/Python/interface/SBModule.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/scripts/Python/interface/SBModule.i?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/scripts/Python/interface/SBModule.i (original)
+++ lldb/branches/windows/scripts/Python/interface/SBModule.i Wed Apr 17 03:38:48 2013
@@ -248,6 +248,24 @@ public:
                          const char *name, 
                          uint32_t max_matches);
     
+    %feature("docstring", "
+    //------------------------------------------------------------------
+    /// Find the first global (or static) variable by name.
+    ///
+    /// @param[in] target
+    ///     A valid SBTarget instance representing the debuggee.
+    ///
+    /// @param[in] name
+    ///     The name of the global or static variable we are looking
+    ///     for.
+    ///
+    /// @return
+    ///     An SBValue that gets filled in with the found variable (if any).
+    //------------------------------------------------------------------
+    ") FindFirstGlobalVariable;
+    lldb::SBValue
+    FindFirstGlobalVariable (lldb::SBTarget &target, const char *name);
+             
     lldb::ByteOrder
     GetByteOrder ();
     
@@ -264,7 +282,7 @@ public:
     %pythoncode %{
         class symbols_access(object):
             re_compile_type = type(re.compile('.'))
-            '''A helper object that will lazily hand out lldb.SBModule objects for a target when supplied an index, or by full or partial path.'''
+            '''A helper object that will lazily hand out lldb.SBSymbol objects for a module when supplied an index, name, or regular expression.'''
             def __init__(self, sbmodule):
                 self.sbmodule = sbmodule
         
@@ -312,6 +330,10 @@ public:
             '''An accessor function that returns a symbols_access() object which allows lazy symbol access from a lldb.SBModule object.'''
             return self.symbols_access (self)
         
+        def get_compile_units_access_object (self):
+            '''An accessor function that returns a compile_units_access() object which allows lazy compile unit access from a lldb.SBModule object.'''
+            return self.compile_units_access (self)
+        
         def get_symbols_array(self):
             '''An accessor function that returns a list() that contains all symbols in a lldb.SBModule object.'''
             symbols = []
@@ -321,7 +343,7 @@ public:
 
         class sections_access(object):
             re_compile_type = type(re.compile('.'))
-            '''A helper object that will lazily hand out lldb.SBModule objects for a target when supplied an index, or by full or partial path.'''
+            '''A helper object that will lazily hand out lldb.SBSection objects for a module when supplied an index, name, or regular expression.'''
             def __init__(self, sbmodule):
                 self.sbmodule = sbmodule
         
@@ -353,18 +375,66 @@ public:
                 else:
                     print "error: unsupported item type: %s" % type(key)
                 return None
+
+        class compile_units_access(object):
+            re_compile_type = type(re.compile('.'))
+            '''A helper object that will lazily hand out lldb.SBCompileUnit objects for a module when supplied an index, full or partial path, or regular expression.'''
+            def __init__(self, sbmodule):
+                self.sbmodule = sbmodule
         
+            def __len__(self):
+                if self.sbmodule:
+                    return int(self.sbmodule.GetNumCompileUnits())
+                return 0
+        
+            def __getitem__(self, key):
+                count = len(self)
+                if type(key) is int:
+                    if key < count:
+                        return self.sbmodule.GetCompileUnitAtIndex(key)
+                elif type(key) is str:
+                    is_full_path = key[0] == '/'
+                    for idx in range(count):
+                        comp_unit = self.sbmodule.GetCompileUnitAtIndex(idx)
+                        if is_full_path:
+                            if comp_unit.file.fullpath == key:
+                                return comp_unit
+                        else:
+                            if comp_unit.file.basename == key:
+                                return comp_unit
+                elif isinstance(key, self.re_compile_type):
+                    matches = []
+                    for idx in range(count):
+                        comp_unit = self.sbmodule.GetCompileUnitAtIndex(idx)
+                        fullpath = comp_unit.file.fullpath
+                        if fullpath:
+                            re_match = key.search(fullpath)
+                            if re_match:
+                                matches.append(comp_unit)
+                    return matches
+                else:
+                    print "error: unsupported item type: %s" % type(key)
+                return None
+
         def get_sections_access_object(self):
             '''An accessor function that returns a sections_access() object which allows lazy section array access.'''
             return self.sections_access (self)
         
         def get_sections_array(self):
             '''An accessor function that returns an array object that contains all sections in this module object.'''
-            if not hasattr(self, 'sections'):
-                self.sections = []
+            if not hasattr(self, 'sections_array'):
+                self.sections_array = []
                 for idx in range(self.num_sections):
-                    self.sections.append(self.GetSectionAtIndex(idx))
-            return self.sections
+                    self.sections_array.append(self.GetSectionAtIndex(idx))
+            return self.sections_array
+
+        def get_compile_units_array(self):
+            '''An accessor function that returns an array object that contains all compile_units in this module object.'''
+            if not hasattr(self, 'compile_units_array'):
+                self.compile_units_array = []
+                for idx in range(self.GetNumCompileUnits()):
+                    self.compile_units_array.append(self.GetCompileUnitAtIndex(idx))
+            return self.compile_units_array
 
         __swig_getmethods__["symbols"] = get_symbols_array
         if _newclass: symbols = property(get_symbols_array, None, doc='''A read only property that returns a list() of lldb.SBSymbol objects contained in this module.''')
@@ -374,10 +444,16 @@ public:
 
         __swig_getmethods__["sections"] = get_sections_array
         if _newclass: sections = property(get_sections_array, None, doc='''A read only property that returns a list() of lldb.SBSection objects contained in this module.''')
-        
+
+        __swig_getmethods__["compile_units"] = get_compile_units_array
+        if _newclass: compile_units = property(get_compile_units_array, None, doc='''A read only property that returns a list() of lldb.SBCompileUnit objects contained in this module.''')
+
         __swig_getmethods__["section"] = get_sections_access_object
         if _newclass: section = property(get_sections_access_object, None, doc='''A read only property that can be used to access symbols by index ("section = module.section[0]"), name ("sections = module.section[\'main\']"), or using a regular expression ("sections = module.section[re.compile(...)]"). The return value is a single lldb.SBSection object for array access, and a list() of lldb.SBSection objects for name and regular expression access''')
 
+        __swig_getmethods__["compile_unit"] = get_compile_units_access_object
+        if _newclass: section = property(get_sections_access_object, None, doc='''A read only property that can be used to access compile units by index ("compile_unit = module.compile_unit[0]"), name ("compile_unit = module.compile_unit[\'main.cpp\']"), or using a regular expression ("compile_unit = module.compile_unit[re.compile(...)]"). The return value is a single lldb.SBCompileUnit object for array access or by full or partial path, and a list() of lldb.SBCompileUnit objects regular expressions.''')
+
         def get_uuid(self):
             return uuid.UUID (self.GetUUIDString())
         

Modified: lldb/branches/windows/scripts/Python/interface/SBProcess.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/scripts/Python/interface/SBProcess.i?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/scripts/Python/interface/SBProcess.i (original)
+++ lldb/branches/windows/scripts/Python/interface/SBProcess.i Wed Apr 17 03:38:48 2013
@@ -164,6 +164,12 @@ public:
     lldb::SBThread
     GetSelectedThread () const;
 
+    %feature("autodoc", "
+    Lazily create a thread on demand through the current OperatingSystem plug-in, if the current OperatingSystem plug-in supports it.
+    ") CreateOSPluginThread;
+    lldb::SBThread
+    CreateOSPluginThread (lldb::tid_t tid, lldb::addr_t context);
+
     bool
     SetSelectedThread (const lldb::SBThread &thread);
 
@@ -186,8 +192,17 @@ public:
     const char *
     GetExitDescription ();
 
+    %feature("autodoc", "
+    Returns the process ID of the process.
+    ") GetProcessID;
     lldb::pid_t
     GetProcessID ();
+    
+    %feature("autodoc", "
+    Returns an integer ID that is guaranteed to be unique across all process instances. This is not the process ID, just a unique integer for comparison and caching purposes.
+    ") GetUniqueID;
+    uint32_t
+    GetUniqueID();
 
     uint32_t
     GetAddressByteSize() const;
@@ -216,6 +231,16 @@ public:
     lldb::SBError
     Signal (int signal);
 
+    %feature("docstring", "
+    Returns a stop id that will increase every time the process executes.  If
+    include_expression_stops is true, then stops caused by expression evaluation
+    will cause the returned value to increase, otherwise the counter returned will
+    only increase when execution is continued explicitly by the user.  Note, the value
+    will always increase, but may increase by more than one per stop.
+    ") GetStopID;
+    uint32_t
+    GetStopID(bool include_expression_stops = false);
+    
     void
     SendAsyncInterrupt();
     
@@ -303,6 +328,12 @@ public:
     static bool
     GetRestartedFromEvent (const lldb::SBEvent &event);
 
+    static size_t
+    GetNumRestartedReasonsFromEvent (const lldb::SBEvent &event);
+    
+    static const char *
+    GetRestartedReasonAtIndexFromEvent (const lldb::SBEvent &event, size_t idx);
+
     static lldb::SBProcess
     GetProcessFromEvent (const lldb::SBEvent &event);
 

Modified: lldb/branches/windows/scripts/Python/interface/SBSymbol.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/scripts/Python/interface/SBSymbol.i?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/scripts/Python/interface/SBSymbol.i (original)
+++ lldb/branches/windows/scripts/Python/interface/SBSymbol.i Wed Apr 17 03:38:48 2013
@@ -38,6 +38,9 @@ public:
     lldb::SBInstructionList
     GetInstructions (lldb::SBTarget target);
 
+    lldb::SBInstructionList
+    GetInstructions (lldb::SBTarget target, const char *flavor_string);
+
     SBAddress
     GetStartAddress ();
     

Modified: lldb/branches/windows/scripts/Python/interface/SBTarget.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/scripts/Python/interface/SBTarget.i?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/scripts/Python/interface/SBTarget.i (original)
+++ lldb/branches/windows/scripts/Python/interface/SBTarget.i Wed Apr 17 03:38:48 2013
@@ -239,7 +239,8 @@ public:
         eBroadcastBitBreakpointChanged  = (1 << 0),
         eBroadcastBitModulesLoaded      = (1 << 1),
         eBroadcastBitModulesUnloaded    = (1 << 2),
-        eBroadcastBitWatchpointChanged  = (1 << 3)
+        eBroadcastBitWatchpointChanged  = (1 << 3),
+        eBroadcastBitSymbolsLoaded      = (1 << 4)
     };
 
     //------------------------------------------------------------------
@@ -389,6 +390,26 @@ public:
     
     lldb::SBProcess
     Launch (lldb::SBLaunchInfo &launch_info, lldb::SBError& error);
+
+    %feature("docstring", "
+    //------------------------------------------------------------------
+    /// Load a core file
+    ///
+    /// @param[in] core_file
+    ///     File path of the core dump.
+    ///
+    /// @return
+    ///      A process object for the newly created core file.
+    //------------------------------------------------------------------
+
+    For example,
+
+        process = target.LoadCore('./a.out.core')
+
+    loads a new core file and returns the process object.
+    ") LoadCore;
+    lldb::SBProcess
+    LoadCore(const char *core_file);
     
     lldb::SBProcess
     Attach (lldb::SBAttachInfo &attach_info, lldb::SBError& error);
@@ -586,6 +607,21 @@ public:
     FindGlobalVariables (const char *name, 
                          uint32_t max_matches);
 
+     %feature("docstring", "
+    //------------------------------------------------------------------
+    /// Find the first global (or static) variable by name.
+    ///
+    /// @param[in] name
+    ///     The name of the global or static variable we are looking
+    ///     for.
+    ///
+    /// @return
+    ///     An SBValue that gets filled in with the found variable (if any).
+    //------------------------------------------------------------------
+    ") FindFirstGlobalVariable;
+    lldb::SBValue
+    FindFirstGlobalVariable (const char* name);
+
     void
     Clear ();
 
@@ -689,14 +725,23 @@ public:
     ReadInstructions (lldb::SBAddress base_addr, uint32_t count);    
 
     lldb::SBInstructionList
+    ReadInstructions (lldb::SBAddress base_addr, uint32_t count, const char *flavor_string);
+
+    lldb::SBInstructionList
     GetInstructions (lldb::SBAddress base_addr, const void *buf, size_t size);
     
+    lldb::SBInstructionList
+    GetInstructionsWithFlavor (lldb::SBAddress base_addr, const char *flavor_string, const void *buf, size_t size);
+    
     lldb::SBSymbolContextList
     FindSymbols (const char *name, lldb::SymbolType type = eSymbolTypeAny);
 
     bool
     GetDescription (lldb::SBStream &description, lldb::DescriptionLevel description_level);
     
+    lldb::addr_t
+    GetStackRedZoneSize();
+
     lldb::SBValue
     EvaluateExpression (const char *expr, const lldb::SBExpressionOptions &options);
     %pythoncode %{
@@ -727,12 +772,15 @@ public:
                             if module.file.fullpath == key:
                                 return module
                     # See if the string is a UUID
-                    the_uuid = uuid.UUID(key)
-                    if the_uuid:
-                        for idx in range(num_modules):
-                            module = self.sbtarget.GetModuleAtIndex(idx)
-                            if module.uuid == the_uuid:
-                                return module
+                    try:
+                        the_uuid = uuid.UUID(key)
+                        if the_uuid:
+                            for idx in range(num_modules):
+                                module = self.sbtarget.GetModuleAtIndex(idx)
+                                if module.uuid == the_uuid:
+                                    return module
+                    except:
+                        return None
                 elif type(key) is uuid.UUID:
                     for idx in range(num_modules):
                         module = self.sbtarget.GetModuleAtIndex(idx)

Modified: lldb/branches/windows/scripts/Python/interface/SBThread.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/scripts/Python/interface/SBThread.i?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/scripts/Python/interface/SBThread.i (original)
+++ lldb/branches/windows/scripts/Python/interface/SBThread.i Wed Apr 17 03:38:48 2013
@@ -178,6 +178,9 @@ public:
     bool
     IsSuspended();
 
+    bool
+    IsStopped();
+
     uint32_t
     GetNumFrames ();
 
@@ -258,6 +261,9 @@ public:
 
         __swig_getmethods__["is_suspended"] = IsSuspended
         if _newclass: is_suspended = property(IsSuspended, None, doc='''A read only property that returns a boolean value that indicates if this thread is suspended.''')
+
+        __swig_getmethods__["is_stopped"] = IsStopped
+        if _newclass: is_stopped = property(IsStopped, None, doc='''A read only property that returns a boolean value that indicates if this thread is stopped but not exited.''')
     %}
 
 };

Modified: lldb/branches/windows/scripts/Python/interface/SBType.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/scripts/Python/interface/SBType.i?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/scripts/Python/interface/SBType.i (original)
+++ lldb/branches/windows/scripts/Python/interface/SBType.i Wed Apr 17 03:38:48 2013
@@ -153,7 +153,7 @@ public:
     bool
     IsValid();
 
-    size_t
+    uint64_t
     GetByteSize();
 
     bool

Modified: lldb/branches/windows/scripts/Python/interface/SBValue.i
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/scripts/Python/interface/SBValue.i?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/scripts/Python/interface/SBValue.i (original)
+++ lldb/branches/windows/scripts/Python/interface/SBValue.i Wed Apr 17 03:38:48 2013
@@ -393,6 +393,9 @@ public:
 	") GetData;
     lldb::SBData
     GetData ();
+             
+    bool
+    SetData (lldb::SBData &data, lldb::SBError& error);
 
 	lldb::addr_t
 	GetLoadAddress();

Modified: lldb/branches/windows/scripts/Python/python-extensions.swig
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/scripts/Python/python-extensions.swig?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/scripts/Python/python-extensions.swig (original)
+++ lldb/branches/windows/scripts/Python/python-extensions.swig Wed Apr 17 03:38:48 2013
@@ -68,6 +68,19 @@
                 else
                     return PyString_FromString("");
         }
+        
+        /* the write() and flush() calls are not part of the SB API proper, and are solely for Python usage
+        they are meant to make an SBCommandReturnObject into a file-like object so that instructions of the sort
+        print >>sb_command_return_object, "something"
+        will work correctly */
+
+        void lldb::SBCommandReturnObject::write (const char* str)
+        {
+            if (str)
+                $self->Printf("%s",str);
+        }
+        void lldb::SBCommandReturnObject::flush ()
+        {}
 }
 %extend lldb::SBCompileUnit {
         PyObject *lldb::SBCompileUnit::__str__ (){
@@ -265,6 +278,20 @@
                     return PyString_FromString("");
         }
 }
+%extend lldb::SBStream {
+        /* the write() and flush() calls are not part of the SB API proper, and are solely for Python usage
+        they are meant to make an SBStream into a file-like object so that instructions of the sort
+        print >>sb_stream, "something"
+        will work correctly */
+
+        void lldb::SBStream::write (const char* str)
+        {
+            if (str)
+                $self->Printf("%s",str);
+        }
+        void lldb::SBStream::flush ()
+        {}
+}
 %extend lldb::SBSymbol {
         PyObject *lldb::SBSymbol::__str__ (){
                 lldb::SBStream description;
@@ -462,7 +489,7 @@
         }
 }
 %extend lldb::SBValueList {
-        PyObject *lldb::SBValueList::__repr__ (){
+        PyObject *lldb::SBValueList::__str__ (){
                 lldb::SBStream description;
                 const size_t n = $self->GetSize();
                 if (n)
@@ -480,7 +507,8 @@
                     --desc_len;
                 if (desc_len > 0)
                     return PyString_FromStringAndSize (desc, desc_len);
-                return Py_None;
+                else
+                    return PyString_FromString("");
         }
 }
 %extend lldb::SBWatchpoint {
@@ -526,6 +554,24 @@ class declaration(object):
         self.line = line
         self.col = col
 
+class value_iter(object):
+    def __iter__(self):
+        return self
+    
+    def next(self):
+        if self.index >= self.length:
+            raise StopIteration()
+        child_sbvalue = self.sbvalue.GetChildAtIndex(self.index)
+        self.index += 1
+        return value(child_sbvalue)
+        
+    def __init__(self,value):
+        self.index = 0
+        self.sbvalue = value
+        if type(self.sbvalue) is value:
+            self.sbvalue = self.sbvalue.sbvalue
+        self.length = self.sbvalue.GetNumChildren()
+
 class value(object):
     '''A class designed to wrap lldb.SBValue() objects so the resulting object
     can be used as a variable would be in code. So if you have a Point structure
@@ -551,15 +597,21 @@ class value(object):
 
     def __getitem__(self, key):
         # Allow array access if this value has children...
-        if type(key) is int:
-            return value(self.sbvalue.GetValueForExpressionPath("[%i]" % key))
         if type(key) is value:
-            return value(self.sbvalue.GetValueForExpressionPath("[%i]" % int(key)))
+            key = int(key)
+        if type(key) is int:
+            child_sbvalue = (self.sbvalue.GetValueForExpressionPath("[%i]" % key))
+            if child_sbvalue and child_sbvalue.IsValid():
+                return value(child_sbvalue)
+            raise IndexError("Index '%d' is out of range" % key)
         raise TypeError("No array item of type %s" % str(type(key)))
 
+    def __iter__(self):
+        return value_iter(self.sbvalue)
+
     def __getattr__(self, name):
         child_sbvalue = self.sbvalue.GetChildMemberWithName (name)
-        if child_sbvalue:
+        if child_sbvalue and child_sbvalue.IsValid():
             return value(child_sbvalue)
         raise AttributeError("Attribute '%s' is not defined" % name)
 
@@ -705,6 +757,9 @@ class value(object):
     def __hex__(self):
         return '0x%x' % self.sbvalue.GetValueAsUnsigned()
 
+    def __len__(self):
+        return self.sbvalue.GetNumChildren()
+
     def __eq__(self, other):
         if type(other) is int:
                 return int(self) == other

Modified: lldb/branches/windows/scripts/Python/python-wrapper.swig
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/scripts/Python/python-wrapper.swig?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/scripts/Python/python-wrapper.swig (original)
+++ lldb/branches/windows/scripts/Python/python-wrapper.swig Wed Apr 17 03:38:48 2013
@@ -267,6 +267,8 @@ LLDBSwigPythonCallTypeScript
 {
     lldb::SBValue sb_value (valobj_sp);
 
+    retval.clear();
+
     PyObject *ValObj_PyObj = SWIG_NewPointerObj((void *) &sb_value, SWIGTYPE_p_lldb__SBValue, 0);
     
     if (ValObj_PyObj == NULL)
@@ -323,14 +325,14 @@ LLDBSwigPythonCallTypeScript
 SWIGEXPORT void*
 LLDBSwigPythonCreateSyntheticProvider 
 (
-    const std::string python_class_name,
+    const char *python_class_name,
     const char *session_dictionary_name,
     const lldb::ValueObjectSP& valobj_sp
 )
 {
     PyObject* retval = NULL;
 
-    if (python_class_name.empty() || !session_dictionary_name)
+    if (python_class_name == NULL || python_class_name[0] == '\0' || !session_dictionary_name)
         Py_RETURN_NONE;
 
     // I do not want the SBValue to be deallocated when going out of scope because python
@@ -343,7 +345,7 @@ LLDBSwigPythonCreateSyntheticProvider
     if (ValObj_PyObj == NULL)
         Py_RETURN_NONE;
 
-    const char* python_function_name = python_class_name.c_str();
+    const char* python_function_name = python_class_name;
 
     PyObject *session_dict, *pfunc;
     PyObject *pvalue;
@@ -778,14 +780,14 @@ LLDBSwigPythonCallCommand
 SWIGEXPORT void*
 LLDBSWIGPythonCreateOSPlugin
 (
-    const std::string python_class_name,
+    const char *python_class_name,
     const char *session_dictionary_name,
     const lldb::ProcessSP& process_sp
 )
 {
     PyObject* retval = NULL;
 
-    if (python_class_name.empty() || !session_dictionary_name)
+    if (python_class_name == NULL || python_class_name[0] == '\0' || !session_dictionary_name)
         Py_RETURN_NONE;
 
     // I do not want the SBValue to be deallocated when going out of scope because python
@@ -797,7 +799,7 @@ LLDBSWIGPythonCreateOSPlugin
     if (SBProc_PyObj == NULL)
         Py_RETURN_NONE;
 
-    const char* python_function_name = python_class_name.c_str();
+    const char* python_function_name = python_class_name;
 
     PyObject *session_dict, *pfunc;
     PyObject *pvalue;
@@ -875,7 +877,7 @@ LLDBSWIGPythonCreateOSPlugin
 SWIGEXPORT bool
 LLDBSwigPythonCallModuleInit 
 (
-    const std::string python_module_name,
+    const char *python_module_name,
     const char *session_dictionary_name,
     lldb::DebuggerSP& debugger
 )
@@ -890,7 +892,7 @@ LLDBSwigPythonCallModuleInit
     if (DebuggerObj_PyObj == NULL)
         return retval;
         
-    if (!(python_module_name.length()) || !session_dictionary_name)
+    if (python_module_name == NULL || python_module_name[0] == '\0' || !session_dictionary_name)
         return retval;
 
     PyObject *session_dict, *pfunc;
@@ -898,7 +900,8 @@ LLDBSwigPythonCallModuleInit
     
     session_dict = FindSessionDictionary (session_dictionary_name);
     
-    std::string python_function_name_string = python_module_name + (".__lldb_init_module");
+    std::string python_function_name_string = python_module_name;
+    python_function_name_string += ".__lldb_init_module";
     const char* python_function_name = python_function_name_string.c_str();
     
     if (session_dict != NULL)

Modified: lldb/branches/windows/scripts/build-llvm.pl
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/scripts/build-llvm.pl?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/scripts/build-llvm.pl (original)
+++ lldb/branches/windows/scripts/build-llvm.pl Wed Apr 17 03:38:48 2013
@@ -31,75 +31,75 @@ my $os_release = 11;
 my $original_env_path = $ENV{PATH};
 
 our %llvm_config_info = (
- 'Debug'         => { configure_options => '--disable-optimized --disable-assertions --enable-libcpp', make_options => 'DEBUG_SYMBOLS=1'},
- 'Debug+Asserts' => { configure_options => '--disable-optimized --enable-assertions --enable-libcpp' , make_options => 'DEBUG_SYMBOLS=1'},
- 'Release'       => { configure_options => '--enable-optimized --disable-assertions --enable-libcpp' , make_options => ''},
- 'Release+Debug' => { configure_options => '--enable-optimized --disable-assertions --enable-libcpp' , make_options => 'DEBUG_SYMBOLS=1'},
- 'Release+Asserts' => { configure_options => '--enable-optimized --enable-assertions --enable-libcpp' , make_options => ''},
+    'Debug'         => { configure_options => '--disable-optimized --disable-assertions --enable-libcpp', make_options => 'DEBUG_SYMBOLS=1'},
+    'Debug+Asserts' => { configure_options => '--disable-optimized --enable-assertions --enable-libcpp' , make_options => 'DEBUG_SYMBOLS=1'},
+    'Release'       => { configure_options => '--enable-optimized --disable-assertions --enable-libcpp' , make_options => ''},
+    'Release+Debug' => { configure_options => '--enable-optimized --disable-assertions --enable-libcpp' , make_options => 'DEBUG_SYMBOLS=1'},
+    'Release+Asserts' => { configure_options => '--enable-optimized --enable-assertions --enable-libcpp' , make_options => ''},
 );
 
 our $llvm_config_href = undef;
 if (exists $llvm_config_info{"$llvm_configuration"})
 {
-	$llvm_config_href = $llvm_config_info{$llvm_configuration};
+    $llvm_config_href = $llvm_config_info{$llvm_configuration};
 }
 else
 {
-	die "Unsupported LLVM configuration: '$llvm_configuration'\n";
+    die "Unsupported LLVM configuration: '$llvm_configuration'\n";
 }
 
-our @archive_files = (  
+our @archive_files = (
     "$llvm_configuration/lib/libclang.a",
-	"$llvm_configuration/lib/libclangAnalysis.a",
-	"$llvm_configuration/lib/libclangAST.a",
-	"$llvm_configuration/lib/libclangBasic.a",
-	"$llvm_configuration/lib/libclangCodeGen.a",
+    "$llvm_configuration/lib/libclangAnalysis.a",
+    "$llvm_configuration/lib/libclangAST.a",
+    "$llvm_configuration/lib/libclangBasic.a",
+    "$llvm_configuration/lib/libclangCodeGen.a",
     "$llvm_configuration/lib/libclangEdit.a",
-	"$llvm_configuration/lib/libclangFrontend.a",
-	"$llvm_configuration/lib/libclangDriver.a",
-	"$llvm_configuration/lib/libclangLex.a",
-	"$llvm_configuration/lib/libclangParse.a",
-	"$llvm_configuration/lib/libclangSema.a",
+    "$llvm_configuration/lib/libclangFrontend.a",
+    "$llvm_configuration/lib/libclangDriver.a",
+    "$llvm_configuration/lib/libclangLex.a",
+    "$llvm_configuration/lib/libclangParse.a",
+    "$llvm_configuration/lib/libclangSema.a",
     "$llvm_configuration/lib/libclangSerialization.a",
-	"$llvm_configuration/lib/libLLVMAnalysis.a",
-	"$llvm_configuration/lib/libLLVMArchive.a",
-	"$llvm_configuration/lib/libLLVMARMAsmParser.a",
-	"$llvm_configuration/lib/libLLVMARMAsmPrinter.a",
-	"$llvm_configuration/lib/libLLVMARMCodeGen.a",
+    "$llvm_configuration/lib/libLLVMAnalysis.a",
+    "$llvm_configuration/lib/libLLVMArchive.a",
+    "$llvm_configuration/lib/libLLVMARMAsmParser.a",
+    "$llvm_configuration/lib/libLLVMARMAsmPrinter.a",
+    "$llvm_configuration/lib/libLLVMARMCodeGen.a",
     "$llvm_configuration/lib/libLLVMARMDesc.a",
-	"$llvm_configuration/lib/libLLVMARMDisassembler.a",
-	"$llvm_configuration/lib/libLLVMARMInfo.a",
-	"$llvm_configuration/lib/libLLVMAsmParser.a",
-	"$llvm_configuration/lib/libLLVMAsmPrinter.a",
-	"$llvm_configuration/lib/libLLVMBitReader.a",
-	"$llvm_configuration/lib/libLLVMBitWriter.a",
-	"$llvm_configuration/lib/libLLVMCodeGen.a",
-	"$llvm_configuration/lib/libLLVMCore.a",
-	"$llvm_configuration/lib/libLLVMExecutionEngine.a",
-	"$llvm_configuration/lib/libLLVMInstCombine.a",
-	"$llvm_configuration/lib/libLLVMInstrumentation.a",
-	"$llvm_configuration/lib/libLLVMipa.a",
-	"$llvm_configuration/lib/libLLVMInterpreter.a",
-	"$llvm_configuration/lib/libLLVMipo.a",
-	"$llvm_configuration/lib/libLLVMJIT.a",
-	"$llvm_configuration/lib/libLLVMLinker.a",
-	"$llvm_configuration/lib/libLLVMMC.a",
-	"$llvm_configuration/lib/libLLVMMCParser.a",
-	"$llvm_configuration/lib/libLLVMMCDisassembler.a",
+    "$llvm_configuration/lib/libLLVMARMDisassembler.a",
+    "$llvm_configuration/lib/libLLVMARMInfo.a",
+    "$llvm_configuration/lib/libLLVMAsmParser.a",
+    "$llvm_configuration/lib/libLLVMAsmPrinter.a",
+    "$llvm_configuration/lib/libLLVMBitReader.a",
+    "$llvm_configuration/lib/libLLVMBitWriter.a",
+    "$llvm_configuration/lib/libLLVMCodeGen.a",
+    "$llvm_configuration/lib/libLLVMCore.a",
+    "$llvm_configuration/lib/libLLVMExecutionEngine.a",
+    "$llvm_configuration/lib/libLLVMInstCombine.a",
+    "$llvm_configuration/lib/libLLVMInstrumentation.a",
+    "$llvm_configuration/lib/libLLVMipa.a",
+    "$llvm_configuration/lib/libLLVMInterpreter.a",
+    "$llvm_configuration/lib/libLLVMipo.a",
+    "$llvm_configuration/lib/libLLVMJIT.a",
+    "$llvm_configuration/lib/libLLVMLinker.a",
+    "$llvm_configuration/lib/libLLVMMC.a",
+    "$llvm_configuration/lib/libLLVMMCParser.a",
+    "$llvm_configuration/lib/libLLVMMCDisassembler.a",
     "$llvm_configuration/lib/libLLVMMCJIT.a",
     "$llvm_configuration/lib/libLLVMObject.a",
     "$llvm_configuration/lib/libLLVMRuntimeDyld.a",
-	"$llvm_configuration/lib/libLLVMScalarOpts.a",
-	"$llvm_configuration/lib/libLLVMSelectionDAG.a",
-	"$llvm_configuration/lib/libLLVMSupport.a",
-	"$llvm_configuration/lib/libLLVMTarget.a",
-	"$llvm_configuration/lib/libLLVMTransformUtils.a",
-	"$llvm_configuration/lib/libLLVMX86AsmParser.a",
-	"$llvm_configuration/lib/libLLVMX86AsmPrinter.a",
-	"$llvm_configuration/lib/libLLVMX86CodeGen.a",
+    "$llvm_configuration/lib/libLLVMScalarOpts.a",
+    "$llvm_configuration/lib/libLLVMSelectionDAG.a",
+    "$llvm_configuration/lib/libLLVMSupport.a",
+    "$llvm_configuration/lib/libLLVMTarget.a",
+    "$llvm_configuration/lib/libLLVMTransformUtils.a",
+    "$llvm_configuration/lib/libLLVMX86AsmParser.a",
+    "$llvm_configuration/lib/libLLVMX86AsmPrinter.a",
+    "$llvm_configuration/lib/libLLVMX86CodeGen.a",
     "$llvm_configuration/lib/libLLVMX86Desc.a",
-	"$llvm_configuration/lib/libLLVMX86Disassembler.a",
-	"$llvm_configuration/lib/libLLVMX86Info.a",
+    "$llvm_configuration/lib/libLLVMX86Disassembler.a",
+    "$llvm_configuration/lib/libLLVMX86Info.a",
     "$llvm_configuration/lib/libLLVMX86Utils.a",
 );
 
@@ -111,20 +111,18 @@ if (-e "$llvm_srcroot/lib")
 else
 {
     print "Checking out llvm sources from revision $llvm_revision...\n";
-    do_command ("cd '$SRCROOT' && svn co --quiet --revision $llvm_revision http://llvm.org/svn/llvm-project/llvm/trunk llvm", "checking out llvm from repository", 1); 
+    do_command ("cd '$SRCROOT' && svn co --quiet --revision $llvm_revision http://llvm.org/svn/llvm-project/llvm/trunk llvm", "checking out llvm from repository", 1);
     print "Checking out clang sources from revision $clang_revision...\n";
     do_command ("cd '$llvm_srcroot/tools' && svn co --quiet --revision $clang_revision http://llvm.org/svn/llvm-project/cfe/trunk clang", "checking out clang from repository", 1);
     print "Applying any local patches to LLVM/Clang...";
-    
+
     my @llvm_patches = bsd_glob("$ENV{SRCROOT}/scripts/llvm.*.diff");
-    
     foreach my $patch (@llvm_patches)
     {
         do_command ("cd '$llvm_srcroot' && patch -p0 < $patch");
     }
 
     my @clang_patches = bsd_glob("$ENV{SRCROOT}/scripts/clang.*.diff");
-    
     foreach my $patch (@clang_patches)
     {
         do_command ("cd '$llvm_srcroot/tools/clang' && patch -p0 < $patch");
@@ -134,7 +132,7 @@ else
 # If our output file already exists then we need not generate it again.
 if (-e $llvm_clang_outfile)
 {
-	exit 0;
+    exit 0;
 }
 
 
@@ -144,249 +142,258 @@ our $debug = 1;
 
 sub parallel_guess
 {
-	my $cpus = `sysctl -n hw.availcpu`;
-	chomp ($cpus);
-	my $memsize = `sysctl -n hw.memsize`;
-	chomp ($memsize);
-	my $max_cpus_by_memory = int($memsize / (750 * 1024 * 1024));
-	return min($max_cpus_by_memory, $cpus);
+    my $cpus = `sysctl -n hw.availcpu`;
+    chomp ($cpus);
+    my $memsize = `sysctl -n hw.memsize`;
+    chomp ($memsize);
+    my $max_cpus_by_memory = int($memsize / (750 * 1024 * 1024));
+    return min($max_cpus_by_memory, $cpus);
 }
+
 sub build_llvm
 {
-	#my $extra_svn_options = $debug ? "" : "--quiet";
-	# Make the llvm build directory
+    #my $extra_svn_options = $debug ? "" : "--quiet";
+    # Make the llvm build directory
     my $arch_idx = 0;
     foreach my $arch (@archs)
     {
         my $llvm_dstroot_arch = "${llvm_dstroot}/${arch}";
 
-		# if the arch destination root exists we have already built it
-		my $do_configure = 0;
-		my $do_make = 0;
-		my $is_arm = $arch =~ /^arm/;
-        
-		my $llvm_dstroot_arch_archive = "$llvm_dstroot_arch/$llvm_clang_basename";
-		print "LLVM architecture root for ${arch} exists at '$llvm_dstroot_arch'...";
-		if (-e $llvm_dstroot_arch)
-		{
-			print "YES\n";
-			$do_configure = !-e "$llvm_dstroot_arch/config.log";
-			
-			# dstroot for llvm build exists, make sure all .a files are built
-			for my $llvm_lib (@archive_files)
-			{
-				if (!-e "$llvm_dstroot_arch/$llvm_lib")
-				{
-					print "missing archive: '$llvm_dstroot_arch/$llvm_lib'\n";
-					$do_make = 1;
-				}
-			}	
-			if (!-e $llvm_dstroot_arch_archive)
-			{
-				$do_make = 1;
-			}
-			else
-			{
-				print "LLVM architecture archive for ${arch} is '$llvm_dstroot_arch_archive'\n";
-			}		
-		}
-		else
-		{
-			print "NO\n";
-	        do_command ("mkdir -p '$llvm_dstroot_arch'", "making llvm build directory '$llvm_dstroot_arch'", 1);
-			$do_configure = 1;
-			$do_make = 1;
+        # if the arch destination root exists we have already built it
+        my $do_configure = 0;
+        my $do_make = 0;
+        my $is_arm = $arch =~ /^arm/;
+
+        my $llvm_dstroot_arch_archive = "$llvm_dstroot_arch/$llvm_clang_basename";
+        print "LLVM architecture root for ${arch} exists at '$llvm_dstroot_arch'...";
+        if (-e $llvm_dstroot_arch)
+        {
+            print "YES\n";
+            $do_configure = !-e "$llvm_dstroot_arch/config.log";
 
-			if ($is_arm)
-			{
-		        my $llvm_dstroot_arch_bin = "${llvm_dstroot_arch}/bin";
+            # dstroot for llvm build exists, make sure all .a files are built
+            for my $llvm_lib (@archive_files)
+            {
+                if (!-e "$llvm_dstroot_arch/$llvm_lib")
+                {
+                    print "missing archive: '$llvm_dstroot_arch/$llvm_lib'\n";
+                    $do_make = 1;
+                }
+            }
+            if (!-e $llvm_dstroot_arch_archive)
+            {
+                $do_make = 1;
+            }
+            else
+            {
+                print "LLVM architecture archive for ${arch} is '$llvm_dstroot_arch_archive'\n";
+            }
+        }
+        else
+        {
+            print "NO\n";
+            do_command ("mkdir -p '$llvm_dstroot_arch'", "making llvm build directory '$llvm_dstroot_arch'", 1);
+            $do_configure = 1;
+            $do_make = 1;
 
-				if (!-d $llvm_dstroot_arch_bin)
-				{
-					do_command ("mkdir -p '$llvm_dstroot_arch_bin'", "making llvm build arch bin directory '$llvm_dstroot_arch_bin'", 1);
-					my @tools = ("ar", "nm", "ranlib", "strip", "lipo", "ld", "as");
-					my $script_mode = 0755;
-					my $prog;
-					for $prog (@tools)
-					{
-					   	chomp(my $actual_prog_path = `xcrun -sdk '$ENV{SDKROOT}' -find ${prog}`);
-					   	my $script_prog_path = "$llvm_dstroot_arch_bin/arm-apple-darwin${os_release}-${prog}";
-						open (SCRIPT, ">$script_prog_path") or die "Can't open $! for writing...\n";
-						print SCRIPT "#!/bin/sh\nexec '$actual_prog_path' \"\$\@\"\n";
-						close (SCRIPT);
-					   	chmod($script_mode, $script_prog_path);
-					}
-					#  Tools that must have the "-arch" and "-sysroot" specified
-					my @arch_sysroot_tools = ("clang", "clang++", "gcc", "g++");
-					for $prog (@arch_sysroot_tools)
-					{
-					   	chomp(my $actual_prog_path = `xcrun -sdk '$ENV{SDKROOT}' -find ${prog}`);
-					   	my $script_prog_path = "$llvm_dstroot_arch_bin/arm-apple-darwin${os_release}-${prog}";
-						open (SCRIPT, ">$script_prog_path") or die "Can't open $! for writing...\n";
-						print SCRIPT "#!/bin/sh\nexec '$actual_prog_path' -arch ${arch} -isysroot '$ENV{SDKROOT}' \"\$\@\"\n";
-						close (SCRIPT);
-					   	chmod($script_mode, $script_prog_path);
-					}
-					my $new_path = "$original_env_path:$llvm_dstroot_arch_bin";
-					print "Setting new environment PATH = '$new_path'\n";
-			        $ENV{PATH} = $new_path;
-				}
-			}
-		}
-		
-		if ($do_configure)
-		{
-			# Build llvm and clang
-	        print "Configuring clang ($arch) in '$llvm_dstroot_arch'...\n";
-			my $lldb_configuration_options = "--enable-targets=x86_64,arm $llvm_config_href->{configure_options}";
+            if ($is_arm)
+            {
+                my $llvm_dstroot_arch_bin = "${llvm_dstroot_arch}/bin";
+                if (!-d $llvm_dstroot_arch_bin)
+                {
+                    do_command ("mkdir -p '$llvm_dstroot_arch_bin'", "making llvm build arch bin directory '$llvm_dstroot_arch_bin'", 1);
+                    my @tools = ("ar", "nm", "ranlib", "strip", "lipo", "ld", "as");
+                    my $script_mode = 0755;
+                    my $prog;
+                    for $prog (@tools)
+                    {
+                        chomp(my $actual_prog_path = `xcrun -sdk '$ENV{SDKROOT}' -find ${prog}`);
+                        symlink($actual_prog_path, "$llvm_dstroot_arch_bin/${prog}");
+                        my $script_prog_path = "$llvm_dstroot_arch_bin/arm-apple-darwin${os_release}-${prog}";
+                        open (SCRIPT, ">$script_prog_path") or die "Can't open $! for writing...\n";
+                        print SCRIPT "#!/bin/sh\nexec '$actual_prog_path' \"\$\@\"\n";
+                        close (SCRIPT);
+                        chmod($script_mode, $script_prog_path);
+                    }
+                    #  Tools that must have the "-arch" and "-sysroot" specified
+                    my @arch_sysroot_tools = ("clang", "clang++", "gcc", "g++");
+                    for $prog (@arch_sysroot_tools)
+                    {
+                        chomp(my $actual_prog_path = `xcrun -sdk '$ENV{SDKROOT}' -find ${prog}`);
+                        symlink($actual_prog_path, "$llvm_dstroot_arch_bin/${prog}");
+                        my $script_prog_path = "$llvm_dstroot_arch_bin/arm-apple-darwin${os_release}-${prog}";
+                        open (SCRIPT, ">$script_prog_path") or die "Can't open $! for writing...\n";
+                        print SCRIPT "#!/bin/sh\nexec '$actual_prog_path' -arch ${arch} -isysroot '$ENV{SDKROOT}' \"\$\@\"\n";
+                        close (SCRIPT);
+                        chmod($script_mode, $script_prog_path);
+                    }
+                    my $new_path = "$original_env_path:$llvm_dstroot_arch_bin";
+                    print "Setting new environment PATH = '$new_path'\n";
+                    $ENV{PATH} = $new_path;
+                }
+            }
+        }
+
+        if ($do_configure)
+        {
+            # Build llvm and clang
+            print "Configuring clang ($arch) in '$llvm_dstroot_arch'...\n";
+            my $lldb_configuration_options = "--enable-targets=x86_64,arm $llvm_config_href->{configure_options}";
 
             if ($is_arm)
             {
-                $lldb_configuration_options .= " --host=arm-apple-darwin${os_release} --target=arm-apple-darwin${os_release} --build=i686-apple-darwin${os_release}";
+                $lldb_configuration_options .= " --host=arm-apple-darwin${os_release} --target=arm-apple-darwin${os_release} --build=i686-apple-darwin${os_release} --program-prefix=\"\"";
             }
             else
             {
                 $lldb_configuration_options .= " --build=$arch-apple-darwin${os_release}";
             }
-	        do_command ("cd '$llvm_dstroot_arch' && '$llvm_srcroot/configure' $lldb_configuration_options",
-	                    "configuring llvm build", 1);			
-		}
-
-		if ($do_make)
-		{
-			# Build llvm and clang
-			my $num_cpus = parallel_guess();
-			print "Building clang using $num_cpus cpus ($arch)...\n";
+			if ($is_arm)
+			{
+				# Unset "SDKROOT" for ARM builds
+	            do_command ("cd '$llvm_dstroot_arch' && unset SDKROOT && '$llvm_srcroot/configure' $lldb_configuration_options",
+	                        "configuring llvm build", 1);				
+			}
+			else
+			{
+	            do_command ("cd '$llvm_dstroot_arch' && '$llvm_srcroot/configure' $lldb_configuration_options",
+	                        "configuring llvm build", 1);								
+			}
+        }
+
+        if ($do_make)
+        {
+            # Build llvm and clang
+            my $num_cpus = parallel_guess();
+            print "Building clang using $num_cpus cpus ($arch)...\n";
             my $extra_make_flags = '';
             if ($is_arm)
             {
-                $extra_make_flags = "UNIVERSAL=1 UNIVERSAL_ARCH=${arch} UNIVERSAL_SDK_PATH='$ENV{SDKROOT}'";
+                $extra_make_flags = "UNIVERSAL=1 UNIVERSAL_ARCH=${arch} UNIVERSAL_SDK_PATH='$ENV{SDKROOT}' SDKROOT=";
             }
-            do_command ("cd '$llvm_dstroot_arch' && make -j$num_cpus clang-only VERBOSE=1 $llvm_config_href->{make_options} NO_RUNTIME_LIBS=1 PROJECT_NAME='llvm' $extra_make_flags", "making llvm and clang", 1);			
-            do_command ("cd '$llvm_dstroot_arch' && make -j$num_cpus tools-only VERBOSE=1 $llvm_config_href->{make_options} NO_RUNTIME_LIBS=1 PROJECT_NAME='llvm' $extra_make_flags EDIS_VERSION=1", "making libedis", 1);			
-			# Combine all .o files from a bunch of static libraries from llvm
-			# and clang into a single .a file.
-			create_single_llvm_arhive_for_arch ($llvm_dstroot_arch, 1);
-		}
+            do_command ("cd '$llvm_dstroot_arch' && make -j$num_cpus clang-only VERBOSE=1 $llvm_config_href->{make_options} NO_RUNTIME_LIBS=1 PROJECT_NAME='llvm' $extra_make_flags", "making llvm and clang", 1);
+            do_command ("cd '$llvm_dstroot_arch' && make -j$num_cpus tools-only VERBOSE=1 $llvm_config_href->{make_options} NO_RUNTIME_LIBS=1 PROJECT_NAME='llvm' $extra_make_flags EDIS_VERSION=1", "making libedis", 1);
+            # Combine all .o files from a bunch of static libraries from llvm
+            # and clang into a single .a file.
+            create_single_llvm_archive_for_arch ($llvm_dstroot_arch, 1);
+        }
 
-		++$arch_idx;
-    }	
+        ++$arch_idx;
+    }
 }
 
 #----------------------------------------------------------------------
-# quote the path if needed and realpath it if the -r option was 
+# quote the path if needed and realpath it if the -r option was
 # specified
 #----------------------------------------------------------------------
 sub finalize_path
 {
-	my $path = shift;
-	# Realpath all paths that don't start with "/"
-	$path =~ /^[^\/]/ and $path = abs_path($path);
-
-	# Quote the path if asked to, or if there are special shell characters
-	# in the path name
-	my $has_double_quotes = $path =~ /["]/;
-	my $has_single_quotes = $path =~ /[']/;
-	my $needs_quotes = $path =~ /[ \$\&\*'"]/;
-	if ($needs_quotes)
-	{
-		# escape and double quotes in the path
-		$has_double_quotes and $path =~ s/"/\\"/g;
-		$path = "\"$path\"";
-	}
-	return $path;
+    my $path = shift;
+    # Realpath all paths that don't start with "/"
+    $path =~ /^[^\/]/ and $path = abs_path($path);
+
+    # Quote the path if asked to, or if there are special shell characters
+    # in the path name
+    my $has_double_quotes = $path =~ /["]/;
+    my $has_single_quotes = $path =~ /[']/;
+    my $needs_quotes = $path =~ /[ \$\&\*'"]/;
+    if ($needs_quotes)
+    {
+        # escape and double quotes in the path
+        $has_double_quotes and $path =~ s/"/\\"/g;
+        $path = "\"$path\"";
+    }
+    return $path;
 }
 
 sub do_command
 {
-	my $cmd = shift;
-	my $description = @_ ? shift : "command";
-	my $die_on_fail = @_ ? shift : undef;
-	$debug and print "% $cmd\n";
-	system ($cmd);
-	if ($? == -1) 
-	{
+    my $cmd = shift;
+    my $description = @_ ? shift : "command";
+    my $die_on_fail = @_ ? shift : undef;
+    $debug and print "% $cmd\n";
+    system ($cmd);
+    if ($? == -1)
+    {
         $debug and printf ("error: %s failed to execute: $!\n", $description);
-		$die_on_fail and $? and exit(1);
-		return $?;
+        $die_on_fail and $? and exit(1);
+        return $?;
     }
-    elsif ($? & 127) 
-	{
-        $debug and printf("error: %s child died with signal %d, %s coredump\n", 
-						  $description, 
-						  ($? & 127),  
-						  ($? & 128) ? 'with' : 'without');
-		$die_on_fail and $? and exit(1);
-		return $?;
+    elsif ($? & 127)
+    {
+        $debug and printf("error: %s child died with signal %d, %s coredump\n",
+                          $description,
+                          ($? & 127),
+                          ($? & 128) ? 'with' : 'without');
+        $die_on_fail and $? and exit(1);
+        return $?;
     }
-    else 
-	{
-		my $exit = $? >> 8;
-		if ($exit)
-		{
-			$debug and printf("error: %s child exited with value %d\n", $description, $exit);
-			$die_on_fail and exit(1);
-		}
-		return $exit;
+    else
+    {
+        my $exit = $? >> 8;
+        if ($exit)
+        {
+            $debug and printf("error: %s child exited with value %d\n", $description, $exit);
+            $die_on_fail and exit(1);
+        }
+        return $exit;
     }
 }
 
-sub create_single_llvm_arhive_for_arch
+sub create_single_llvm_archive_for_arch
 {
-	my $arch_dstroot = shift;
+    my $arch_dstroot = shift;
     my $split_into_objects = shift;
-	my @object_dirs;
-	my $object_dir;
-	my $tmp_dir = $arch_dstroot;
-	my $arch_output_file = "$arch_dstroot/$llvm_clang_basename";
+    my @object_dirs;
+    my $object_dir;
+    my $tmp_dir = $arch_dstroot;
+    my $arch_output_file = "$arch_dstroot/$llvm_clang_basename";
     -e $arch_output_file and return;
-	my $files = "$arch_dstroot/files.txt";
-	open (FILES, ">$files") or die "Can't open $! for writing...\n";
+    my $files = "$arch_dstroot/files.txt";
+    open (FILES, ">$files") or die "Can't open $! for writing...\n";
 
-	for my $path (@archive_files) 
-	{
-		my $archive_fullpath = finalize_path ("$arch_dstroot/$path");
-		if (-e $archive_fullpath)
-		{
+    for my $path (@archive_files)
+    {
+        my $archive_fullpath = finalize_path ("$arch_dstroot/$path");
+        if (-e $archive_fullpath)
+        {
             if ($split_into_objects)
             {
                 my ($archive_file, $archive_dir, $archive_ext) = fileparse($archive_fullpath, ('.a'));
-        
                 $object_dir = "$tmp_dir/$archive_file";
                 push @object_dirs, $object_dir;
-            
+
                 do_command ("cd '$tmp_dir'; mkdir '$archive_file'; cd '$archive_file'; ar -x $archive_fullpath");
-        
+
                 my @objects = bsd_glob("$object_dir/*.o");
-        
                 foreach my $object (@objects)
                 {
                     my ($o_file, $o_dir) = fileparse($object);
                     my $new_object = "$object_dir/${archive_file}-$o_file";
                     print FILES "$new_object\n";
                     do_command ("mv '$object' '$new_object'");
-                }				
+                }
             }
             else
             {
                 # just add the .a files into the file list
                 print FILES "$archive_fullpath\n";
             }
-		}
+        }
         else
         {
             print "warning: archive doesn't exist: '$archive_fullpath'\n";
         }
-	}
-	close (FILES);
+    }
+    close (FILES);
     do_command ("libtool -static -o '$arch_output_file' -filelist '$files'");
     do_command ("ranlib '$arch_output_file'");
 
-	foreach $object_dir (@object_dirs)
-	{
-		do_command ("rm -rf '$object_dir'");
-	}
-	do_command ("rm -rf '$files'");
+    foreach $object_dir (@object_dirs)
+    {
+        do_command ("rm -rf '$object_dir'");
+    }
+    do_command ("rm -rf '$files'");
 }
 
 build_llvm();

Modified: lldb/branches/windows/scripts/disasm-gdb-remote.pl
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/scripts/disasm-gdb-remote.pl?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/scripts/disasm-gdb-remote.pl (original)
+++ lldb/branches/windows/scripts/disasm-gdb-remote.pl Wed Apr 17 03:38:48 2013
@@ -771,22 +771,24 @@ sub dump_general_query_rsp
 			
 				my $reg_name = undef;
 				my $byte_size = 0;
+				my $pseudo = 0;
 				foreach (@name_and_values)
 				{
 					my ($name, $value) = split /:/;				
 					if    ($name eq "name") { $reg_name = $value; }
-					elsif ($name eq "bitsize") { $byte_size = $value / 8; last; }
+					elsif ($name eq "bitsize") { $byte_size = $value / 8; }
+					elsif ($name eq "container-regs") { $pseudo = 1; }
 				}
 				if (defined $reg_name and $byte_size > 0)
 				{
-					if    ($byte_size == 4)  {push @$registers_aref, { name => $reg_name, info => $reg32_href };}
-					elsif ($byte_size == 8)  {push @$registers_aref, { name => $reg_name, info => $reg64_href };}
-					elsif ($byte_size == 1)  {push @$registers_aref, { name => $reg_name, info => $reg8_href };}
-					elsif ($byte_size == 2)  {push @$registers_aref, { name => $reg_name, info => $reg16_href };}
-					elsif ($byte_size == 10) {push @$registers_aref, { name => $reg_name, info => $reg80_href };}
-					elsif ($byte_size == 12) {push @$registers_aref, { name => $reg_name, info => $float96_href };}
-					elsif ($byte_size == 16) {push @$registers_aref, { name => $reg_name, info => $reg128_href };}
-					elsif ($byte_size == 32) {push @$registers_aref, { name => $reg_name, info => $reg256_href };}
+					if    ($byte_size == 4)  {push @$registers_aref, { name => $reg_name, info => $reg32_href   , pseudo => $pseudo };}
+					elsif ($byte_size == 8)  {push @$registers_aref, { name => $reg_name, info => $reg64_href   , pseudo => $pseudo };}
+					elsif ($byte_size == 1)  {push @$registers_aref, { name => $reg_name, info => $reg8_href    , pseudo => $pseudo };}
+					elsif ($byte_size == 2)  {push @$registers_aref, { name => $reg_name, info => $reg16_href   , pseudo => $pseudo };}
+					elsif ($byte_size == 10) {push @$registers_aref, { name => $reg_name, info => $reg80_href   , pseudo => $pseudo };}
+					elsif ($byte_size == 12) {push @$registers_aref, { name => $reg_name, info => $float96_href , pseudo => $pseudo };}
+					elsif ($byte_size == 16) {push @$registers_aref, { name => $reg_name, info => $reg128_href  , pseudo => $pseudo };}
+					elsif ($byte_size == 32) {push @$registers_aref, { name => $reg_name, info => $reg256_href  , pseudo => $pseudo };}
 				}
 			}
 			elsif ($gen_query_rsp_len == 3 and index($gen_query_rsp, 'E') == 0)
@@ -883,12 +885,15 @@ sub dump_write_regs_cmd
     foreach my $reg_href (@$registers_aref)
     {
 		last if ($_[0] eq '#');
-        my $reg_info_href = $reg_href->{info};
-        my $reg_name = $reg_href->{name};
-        my $reg_extract = $reg_info_href->{extract};
-        my $reg_format = $reg_info_href->{format};
-        my $reg_val = &$reg_extract(\@_);
-		printf("\t%*s = $reg_format\n", $max_register_name_len, $reg_name, $reg_val);
+		if ($reg_href->{pseudo} == 0)
+		{
+            my $reg_info_href = $reg_href->{info};
+            my $reg_name = $reg_href->{name};
+            my $reg_extract = $reg_info_href->{extract};
+            my $reg_format = $reg_info_href->{format};
+            my $reg_val = &$reg_extract(\@_);
+    		printf("\t%*s = $reg_format\n", $max_register_name_len, $reg_name, $reg_val);		    
+		}
 	}			
 }
 
@@ -901,12 +906,15 @@ sub dump_read_regs_rsp
 	    foreach my $reg_href (@$registers_aref)
 	    {
 			last if ($_[0] eq '#');
-	        my $reg_info_href = $reg_href->{info};
-	        my $reg_name = $reg_href->{name};
-	        my $reg_extract = $reg_info_href->{extract};
-            my $reg_format = $reg_info_href->{format};
-            my $reg_val = &$reg_extract(\@_);
-			printf("\t%*s = $reg_format\n", $max_register_name_len, $reg_name, $reg_val);
+    		if ($reg_href->{pseudo} == 0)
+    		{
+    	        my $reg_info_href = $reg_href->{info};
+    	        my $reg_name = $reg_href->{name};
+    	        my $reg_extract = $reg_info_href->{extract};
+                my $reg_format = $reg_info_href->{format};
+                my $reg_val = &$reg_extract(\@_);
+    			printf("\t%*s = $reg_format\n", $max_register_name_len, $reg_name, $reg_val);
+			}
 		}			
 	}
 }
@@ -1237,6 +1245,10 @@ sub dump_extended_cmd
 	{
 		dump_extended_continue_cmd(splice(@_,5));
 	}
+	elsif (join('', @_[0..7]) eq 'vAttach;')
+	{
+		dump_attach_command (splice(@_,8));
+	}
 	elsif (join('', @_[0..11]) eq 'vAttachWait;')
 	{
 		dump_attach_wait_command (splice(@_,12));
@@ -1270,6 +1282,15 @@ sub dump_attach_wait_command
 }
 
 #----------------------------------------------------------------------
+# 'vAttach' command
+#----------------------------------------------------------------------
+sub dump_attach_command
+{
+	printf("attach ( pid = %i )", get_hex(\@_));
+	$extended_rsp_callback = \&dump_stop_reply_packet;
+}
+
+#----------------------------------------------------------------------
 # 'vCont' command
 #----------------------------------------------------------------------
 sub dump_extended_continue_cmd

Modified: lldb/branches/windows/scripts/generate-vers.pl
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/scripts/generate-vers.pl?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/scripts/generate-vers.pl (original)
+++ lldb/branches/windows/scripts/generate-vers.pl Wed Apr 17 03:38:48 2013
@@ -10,27 +10,37 @@ sub usage()
 
 open $pbxproj, $ARGV[0] or die "Couldn't open ".$ARGV[0];
 
-$current_project_version = None;
-$product_name = None;
+$lldb_version = None;
+$lldb_train = None;
+$lldb_revision = None;
+$lldb_version_string = None;
+
+$product_name = "lldb";
 
 while ($line = <$pbxproj>)
 {
   chomp ($line);
   
-  if ($current_project_version == None &&
-      $line =~ /CURRENT_PROJECT_VERSION = ([0-9]+)/)
-  {
-    $current_project_version = $1;
-  }
-  
-  if ($product_name == None &&
-      $line =~ /productName = ([^;]+)/)
+  if ($lldb_version == None &&
+      $line =~ /CURRENT_PROJECT_VERSION = ([0-9]+).([0-9]+).([0-9]+)(.[0-9])?/)
   {
-    $product_name = $1;
+    $lldb_version = $1;
+    $lldb_train = $2;
+    $lldb_revision = $3;
+    $lldb_patchlevel = $4;
+
+    if ($lldb_patchlevel != None)
+    {
+      $lldb_version_string = $lldb_version.".".$lldb_train.".".$lldb_revision.".".$lldb_patchlevel;
+    }
+    else
+    {
+      $lldb_version_string = $lldb_version.".".$lldb_train.".".$lldb_revision;
+    } 
   }
 }
 
-if (!$product_name || !$current_project_version)
+if (!$product_name || !$lldb_version_string)
 {
   print "Couldn't get needed information from the .pbxproj";
   exit(-1);
@@ -41,6 +51,6 @@ $lowercase_name = lc $product_name;
 
 close $pbxproj;
 
-$file_string = " const unsigned char liblldb_coreVersionString[] __attribute__ ((used)) = \"@(#)PROGRAM:".$uppercase_name."  PROJECT:".$lowercase_name."-".$current_project_version."\" \"\\n\"; const double liblldb_coreVersionNumber __attribute__ ((used)) = (double)".$current_project_version.".;\n";
+$file_string = " const unsigned char liblldb_coreVersionString[] __attribute__ ((used)) = \"@(#)PROGRAM:".$uppercase_name."  PROJECT:".$lowercase_name."-".$lldb_version_string."\" \"\\n\"; const double liblldb_coreVersionNumber __attribute__ ((used)) = (double)".$lldb_version.".".$lldb_train.";\n";
 
 print $file_string;

Modified: lldb/branches/windows/source/API/SBAddress.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBAddress.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBAddress.cpp (original)
+++ lldb/branches/windows/source/API/SBAddress.cpp Wed Apr 17 03:38:48 2013
@@ -115,7 +115,7 @@ SBAddress::GetFileAddress () const
 lldb::addr_t
 SBAddress::GetLoadAddress (const SBTarget &target) const
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     lldb::addr_t addr = LLDB_INVALID_ADDRESS;
     TargetSP target_sp (target.GetSP());

Modified: lldb/branches/windows/source/API/SBBreakpoint.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBBreakpoint.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBBreakpoint.cpp (original)
+++ lldb/branches/windows/source/API/SBBreakpoint.cpp Wed Apr 17 03:38:48 2013
@@ -103,7 +103,7 @@ SBBreakpoint::operator == (const lldb::S
 break_id_t
 SBBreakpoint::GetID () const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     break_id_t break_id = LLDB_INVALID_BREAK_ID;
     if (m_opaque_sp)
@@ -210,7 +210,7 @@ SBBreakpoint::GetLocationAtIndex (uint32
 void
 SBBreakpoint::SetEnabled (bool enable)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBBreakpoint(%p)::SetEnabled (enabled=%i)", m_opaque_sp.get(), enable);
@@ -237,7 +237,7 @@ SBBreakpoint::IsEnabled ()
 void
 SBBreakpoint::SetOneShot (bool one_shot)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBBreakpoint(%p)::SetOneShot (one_shot=%i)", m_opaque_sp.get(), one_shot);
@@ -276,7 +276,7 @@ SBBreakpoint::IsInternal ()
 void
 SBBreakpoint::SetIgnoreCount (uint32_t count)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBBreakpoint(%p)::SetIgnoreCount (count=%u)", m_opaque_sp.get(), count);
@@ -319,7 +319,7 @@ SBBreakpoint::GetHitCount () const
         count = m_opaque_sp->GetHitCount();
     }
 
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBBreakpoint(%p)::GetHitCount () => %u", m_opaque_sp.get(), count);
 
@@ -336,7 +336,7 @@ SBBreakpoint::GetIgnoreCount () const
         count = m_opaque_sp->GetIgnoreCount();
     }
 
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBBreakpoint(%p)::GetIgnoreCount () => %u", m_opaque_sp.get(), count);
 
@@ -351,7 +351,7 @@ SBBreakpoint::SetThreadID (tid_t tid)
         Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex());
         m_opaque_sp->SetThreadID (tid);
     }
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBBreakpoint(%p)::SetThreadID (tid=0x%4.4" PRIx64 ")", m_opaque_sp.get(), tid);
 
@@ -367,7 +367,7 @@ SBBreakpoint::GetThreadID ()
         tid = m_opaque_sp->GetThreadID();
     }
 
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBBreakpoint(%p)::GetThreadID () => 0x%4.4" PRIx64, m_opaque_sp.get(), tid);
     return tid;
@@ -376,7 +376,7 @@ SBBreakpoint::GetThreadID ()
 void
 SBBreakpoint::SetThreadIndex (uint32_t index)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBBreakpoint(%p)::SetThreadIndex (%u)", m_opaque_sp.get(), index);
     if (m_opaque_sp)
@@ -397,7 +397,7 @@ SBBreakpoint::GetThreadIndex() const
         if (thread_spec != NULL)
             thread_idx = thread_spec->GetIndex();
     }
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBBreakpoint(%p)::GetThreadIndex () => %u", m_opaque_sp.get(), thread_idx);
 
@@ -408,7 +408,7 @@ SBBreakpoint::GetThreadIndex() const
 void
 SBBreakpoint::SetThreadName (const char *thread_name)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBBreakpoint(%p)::SetThreadName (%s)", m_opaque_sp.get(), thread_name);
 
@@ -430,7 +430,7 @@ SBBreakpoint::GetThreadName () const
         if (thread_spec != NULL)
             name = thread_spec->GetName();
     }
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBBreakpoint(%p)::GetThreadName () => %s", m_opaque_sp.get(), name);
 
@@ -440,7 +440,7 @@ SBBreakpoint::GetThreadName () const
 void
 SBBreakpoint::SetQueueName (const char *queue_name)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBBreakpoint(%p)::SetQueueName (%s)", m_opaque_sp.get(), queue_name);
     if (m_opaque_sp)
@@ -461,7 +461,7 @@ SBBreakpoint::GetQueueName () const
         if (thread_spec)
             name = thread_spec->GetQueueName();
     }
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBBreakpoint(%p)::GetQueueName () => %s", m_opaque_sp.get(), name);
 
@@ -477,7 +477,7 @@ SBBreakpoint::GetNumResolvedLocations()
         Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex());
         num_resolved = m_opaque_sp->GetNumResolvedLocations();
     }
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBBreakpoint(%p)::GetNumResolvedLocations () => %" PRIu64, m_opaque_sp.get(), (uint64_t)num_resolved);
     return num_resolved;
@@ -492,7 +492,7 @@ SBBreakpoint::GetNumLocations() const
         Mutex::Locker api_locker (m_opaque_sp->GetTarget().GetAPIMutex());
         num_locs = m_opaque_sp->GetNumLocations();
     }
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBBreakpoint(%p)::GetNumLocations () => %" PRIu64, m_opaque_sp.get(), (uint64_t)num_locs);
     return num_locs;
@@ -557,7 +557,7 @@ SBBreakpoint::PrivateBreakpointHitCallba
 void
 SBBreakpoint::SetCallback (BreakpointHitCallback callback, void *baton)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     
     if (log)
         log->Printf ("SBBreakpoint(%p)::SetCallback (callback=%p, baton=%p)", m_opaque_sp.get(), callback, baton);

Modified: lldb/branches/windows/source/API/SBBreakpointLocation.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBBreakpointLocation.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBBreakpointLocation.cpp (original)
+++ lldb/branches/windows/source/API/SBBreakpointLocation.cpp Wed Apr 17 03:38:48 2013
@@ -36,7 +36,7 @@ SBBreakpointLocation::SBBreakpointLocati
 SBBreakpointLocation::SBBreakpointLocation (const lldb::BreakpointLocationSP &break_loc_sp) :
     m_opaque_sp (break_loc_sp)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
     {
@@ -296,7 +296,7 @@ SBBreakpointLocation::GetID ()
 SBBreakpoint
 SBBreakpointLocation::GetBreakpoint ()
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     //if (log)
     //    log->Printf ("SBBreakpointLocation::GetBreakpoint ()");

Modified: lldb/branches/windows/source/API/SBBroadcaster.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBBroadcaster.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBBroadcaster.cpp (original)
+++ lldb/branches/windows/source/API/SBBroadcaster.cpp Wed Apr 17 03:38:48 2013
@@ -29,7 +29,7 @@ SBBroadcaster::SBBroadcaster (const char
     m_opaque_ptr (NULL)
 {
     m_opaque_ptr = m_opaque_sp.get();
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API | LIBLLDB_LOG_VERBOSE));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API | LIBLLDB_LOG_VERBOSE));
 
     if (log)
         log->Printf ("SBBroadcaster::SBBroadcaster (name=\"%s\") => SBBroadcaster(%p)",
@@ -40,7 +40,7 @@ SBBroadcaster::SBBroadcaster (lldb_priva
     m_opaque_sp (owns ? broadcaster : NULL),
     m_opaque_ptr (broadcaster)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API | LIBLLDB_LOG_VERBOSE));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API | LIBLLDB_LOG_VERBOSE));
 
     if (log)
         log->Printf ("SBBroadcaster::SBBroadcaster (broadcaster=%p, bool owns=%i) => SBBroadcaster(%p)", 
@@ -72,7 +72,7 @@ SBBroadcaster::~SBBroadcaster()
 void
 SBBroadcaster::BroadcastEventByType (uint32_t event_type, bool unique)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBBroadcaster(%p)::BroadcastEventByType (event_type=0x%8.8x, unique=%i)", m_opaque_ptr, event_type, unique);
@@ -89,7 +89,7 @@ SBBroadcaster::BroadcastEventByType (uin
 void
 SBBroadcaster::BroadcastEvent (const SBEvent &event, bool unique)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBBroadcaster(%p)::BroadcastEventByType (SBEvent(%p), unique=%i)", m_opaque_ptr, event.get(), unique);
@@ -107,7 +107,7 @@ SBBroadcaster::BroadcastEvent (const SBE
 void
 SBBroadcaster::AddInitialEventsToListener (const SBListener &listener, uint32_t requested_events)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBBroadcaster(%p)::AddInitialEventsToListener (SBListener(%p), event_mask=0x%8.8x)", m_opaque_ptr, listener.get(), requested_events);
     if (m_opaque_ptr)

Modified: lldb/branches/windows/source/API/SBCommandInterpreter.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBCommandInterpreter.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBCommandInterpreter.cpp (original)
+++ lldb/branches/windows/source/API/SBCommandInterpreter.cpp Wed Apr 17 03:38:48 2013
@@ -65,7 +65,7 @@ SBCommandInterpreter::SBCommandInterpret
 SBCommandInterpreter::SBCommandInterpreter (CommandInterpreter *interpreter) :
     m_opaque_ptr (interpreter)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBCommandInterpreter::SBCommandInterpreter (interpreter=%p)"
@@ -114,7 +114,7 @@ SBCommandInterpreter::AliasExists (const
 lldb::ReturnStatus
 SBCommandInterpreter::HandleCommand (const char *command_line, SBCommandReturnObject &result, bool add_to_history)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBCommandInterpreter(%p)::HandleCommand (command=\"%s\", SBCommandReturnObject(%p), add_to_history=%i)", 
@@ -123,10 +123,6 @@ SBCommandInterpreter::HandleCommand (con
     result.Clear();
     if (command_line && m_opaque_ptr)
     {
-        TargetSP target_sp(m_opaque_ptr->GetDebugger().GetSelectedTarget());
-        Mutex::Locker api_locker;
-        if (target_sp)
-            api_locker.Lock(target_sp->GetAPIMutex());
         m_opaque_ptr->HandleCommand (command_line, add_to_history ? eLazyBoolYes : eLazyBoolNo, result.ref());
     }
     else
@@ -156,7 +152,7 @@ SBCommandInterpreter::HandleCompletion (
                                         int max_return_elements,
                                         SBStringList &matches)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     int num_completions = 0;
     
     // Sanity check the arguments that are passed in:
@@ -241,7 +237,7 @@ SBCommandInterpreter::GetProcess ()
             sb_process.SetSP(process_sp);
         }
     }
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBCommandInterpreter(%p)::GetProcess () => SBProcess(%p)", 
@@ -257,7 +253,7 @@ SBCommandInterpreter::GetDebugger ()
     SBDebugger sb_debugger;
     if (m_opaque_ptr)
         sb_debugger.reset(m_opaque_ptr->GetDebugger().shared_from_this());
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     
     if (log)
         log->Printf ("SBCommandInterpreter(%p)::GetDebugger () => SBDebugger(%p)",
@@ -303,7 +299,7 @@ SBCommandInterpreter::SourceInitFileInHo
         result->AppendError ("SBCommandInterpreter is not valid");
         result->SetStatus (eReturnStatusFailed);
     }
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBCommandInterpreter(%p)::SourceInitFileInHomeDirectory (&SBCommandReturnObject(%p))", 
@@ -328,7 +324,7 @@ SBCommandInterpreter::SourceInitFileInCu
         result->AppendError ("SBCommandInterpreter is not valid");
         result->SetStatus (eReturnStatusFailed);
     }
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBCommandInterpreter(%p)::SourceInitFileInCurrentWorkingDirectory (&SBCommandReturnObject(%p))", 
@@ -338,7 +334,7 @@ SBCommandInterpreter::SourceInitFileInCu
 SBBroadcaster
 SBCommandInterpreter::GetBroadcaster ()
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     SBBroadcaster broadcaster (m_opaque_ptr, false);
 

Modified: lldb/branches/windows/source/API/SBCommandReturnObject.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBCommandReturnObject.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBCommandReturnObject.cpp (original)
+++ lldb/branches/windows/source/API/SBCommandReturnObject.cpp Wed Apr 17 03:38:48 2013
@@ -68,7 +68,7 @@ SBCommandReturnObject::IsValid() const
 const char *
 SBCommandReturnObject::GetOutput ()
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (m_opaque_ap.get())
     {
@@ -88,7 +88,7 @@ SBCommandReturnObject::GetOutput ()
 const char *
 SBCommandReturnObject::GetError ()
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (m_opaque_ap.get())
     {

Modified: lldb/branches/windows/source/API/SBCommunication.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBCommunication.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBCommunication.cpp (original)
+++ lldb/branches/windows/source/API/SBCommunication.cpp Wed Apr 17 03:38:48 2013
@@ -28,7 +28,7 @@ SBCommunication::SBCommunication(const c
     m_opaque (new Communication (broadcaster_name)),
     m_opaque_owned (true)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBCommunication::SBCommunication (broadcaster_name=\"%s\") => "
@@ -79,7 +79,7 @@ SBCommunication::Connect (const char *ur
 ConnectionStatus
 SBCommunication::AdoptFileDesriptor (int fd, bool owns_fd)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     ConnectionStatus status = eConnectionStatusNoConnection;
     if (m_opaque)
@@ -107,7 +107,7 @@ SBCommunication::AdoptFileDesriptor (int
 ConnectionStatus
 SBCommunication::Disconnect ()
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     ConnectionStatus status= eConnectionStatusNoConnection;
     if (m_opaque)
@@ -123,7 +123,7 @@ SBCommunication::Disconnect ()
 bool
 SBCommunication::IsConnected () const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     bool result = false;
     if (m_opaque)
         result = m_opaque->IsConnected ();
@@ -137,7 +137,7 @@ SBCommunication::IsConnected () const
 size_t
 SBCommunication::Read (void *dst, size_t dst_len, uint32_t timeout_usec, ConnectionStatus &status)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBCommunication(%p)::Read (dst=%p, dst_len=%" PRIu64 ", timeout_usec=%u, &status)...",
                      m_opaque,
@@ -171,7 +171,7 @@ SBCommunication::Write (const void *src,
     else
         status = eConnectionStatusNoConnection;
 
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBCommunication(%p)::Write (src=%p, src_len=%" PRIu64 ", &status=%s) => %" PRIu64,
                      m_opaque, src, (uint64_t)src_len, Communication::ConnectionStatusAsCString (status), (uint64_t)bytes_written);
@@ -182,7 +182,7 @@ SBCommunication::Write (const void *src,
 bool
 SBCommunication::ReadThreadStart ()
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     bool success = false;
     if (m_opaque)
@@ -199,7 +199,7 @@ SBCommunication::ReadThreadStart ()
 bool
 SBCommunication::ReadThreadStop ()
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBCommunication(%p)::ReadThreadStop ()...", m_opaque);
 
@@ -219,7 +219,7 @@ SBCommunication::ReadThreadIsRunning ()
     bool result = false;
     if (m_opaque)
         result = m_opaque->ReadThreadIsRunning ();
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBCommunication(%p)::ReadThreadIsRunning () => %i", m_opaque, result);
     return result;
@@ -232,7 +232,7 @@ SBCommunication::SetReadThreadBytesRecei
     void *callback_baton
 )
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     bool result = false;
     if (m_opaque)
@@ -253,7 +253,7 @@ SBCommunication::GetBroadcaster ()
 {
     SBBroadcaster broadcaster (m_opaque, false);
 
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBCommunication(%p)::GetBroadcaster () => SBBroadcaster (%p)",

Modified: lldb/branches/windows/source/API/SBCompileUnit.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBCompileUnit.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBCompileUnit.cpp (original)
+++ lldb/branches/windows/source/API/SBCompileUnit.cpp Wed Apr 17 03:38:48 2013
@@ -71,7 +71,7 @@ SBCompileUnit::GetNumLineEntries () cons
 SBLineEntry
 SBCompileUnit::GetLineEntryAtIndex (uint32_t idx) const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     SBLineEntry sb_line_entry;
     if (m_opaque_ptr)
@@ -106,7 +106,7 @@ SBCompileUnit::FindLineEntryIndex (uint3
 uint32_t
 SBCompileUnit::FindLineEntryIndex (uint32_t start_idx, uint32_t line, SBFileSpec *inline_file_spec, bool exact) const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     uint32_t index = UINT32_MAX;
     if (m_opaque_ptr)
@@ -157,7 +157,7 @@ SBCompileUnit::GetNumSupportFiles () con
 SBFileSpec
 SBCompileUnit::GetSupportFileAtIndex (uint32_t idx) const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     SBFileSpec sb_file_spec;
     if (m_opaque_ptr)

Modified: lldb/branches/windows/source/API/SBData.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBData.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBData.cpp (original)
+++ lldb/branches/windows/source/API/SBData.cpp Wed Apr 17 03:38:48 2013
@@ -86,7 +86,7 @@ SBData::IsValid()
 uint8_t
 SBData::GetAddressByteSize ()
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     uint8_t value = 0;
     if (m_opaque_sp.get())
         value = m_opaque_sp->GetAddressByteSize();
@@ -99,7 +99,7 @@ SBData::GetAddressByteSize ()
 void
 SBData::SetAddressByteSize (uint8_t addr_byte_size)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (m_opaque_sp.get())
         m_opaque_sp->SetAddressByteSize(addr_byte_size);
     if (log)
@@ -116,7 +116,7 @@ SBData::Clear ()
 size_t
 SBData::GetByteSize ()
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     size_t value = 0;
     if (m_opaque_sp.get())
         value = m_opaque_sp->GetByteSize();
@@ -129,7 +129,7 @@ SBData::GetByteSize ()
 lldb::ByteOrder
 SBData::GetByteOrder ()
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     lldb::ByteOrder value = eByteOrderInvalid;
     if (m_opaque_sp.get())
         value = m_opaque_sp->GetByteOrder();
@@ -142,7 +142,7 @@ SBData::GetByteOrder ()
 void
 SBData::SetByteOrder (lldb::ByteOrder endian)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (m_opaque_sp.get())
         m_opaque_sp->SetByteOrder(endian);
     if (log)
@@ -151,9 +151,9 @@ SBData::SetByteOrder (lldb::ByteOrder en
 
 
 float
-SBData::GetFloat (lldb::SBError& error, uint32_t offset)
+SBData::GetFloat (lldb::SBError& error, lldb::offset_t offset)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     float value = 0;
     if (!m_opaque_sp.get())
     {
@@ -167,15 +167,15 @@ SBData::GetFloat (lldb::SBError& error,
             error.SetErrorString("unable to read data");
     }
     if (log)
-        log->Printf ("SBData::GetFloat (error=%p,offset=%d) => "
+        log->Printf ("SBData::GetFloat (error=%p,offset=%" PRIu64 ") => "
                      "(%f)", error.get(), offset, value);
     return value;
 }
 
 double
-SBData::GetDouble (lldb::SBError& error, uint32_t offset)
+SBData::GetDouble (lldb::SBError& error, lldb::offset_t offset)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     double value = 0;
     if (!m_opaque_sp.get())
     {
@@ -189,15 +189,15 @@ SBData::GetDouble (lldb::SBError& error,
             error.SetErrorString("unable to read data");
     }
     if (log)
-        log->Printf ("SBData::GetDouble (error=%p,offset=%d) => "
+        log->Printf ("SBData::GetDouble (error=%p,offset=%" PRIu64 ") => "
                      "(%f)", error.get(), offset, value);
     return value;
 }
 
 long double
-SBData::GetLongDouble (lldb::SBError& error, uint32_t offset)
+SBData::GetLongDouble (lldb::SBError& error, lldb::offset_t offset)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     long double value = 0;
     if (!m_opaque_sp.get())
     {
@@ -211,15 +211,15 @@ SBData::GetLongDouble (lldb::SBError& er
             error.SetErrorString("unable to read data");
     }
     if (log)
-        log->Printf ("SBData::GetLongDouble (error=%p,offset=%d) => "
+        log->Printf ("SBData::GetLongDouble (error=%p,offset=%" PRIu64 ") => "
                      "(%Lf)", error.get(), offset, value);
     return value;
 }
 
 lldb::addr_t
-SBData::GetAddress (lldb::SBError& error, uint32_t offset)
+SBData::GetAddress (lldb::SBError& error, lldb::offset_t offset)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     lldb::addr_t value = 0;
     if (!m_opaque_sp.get())
     {
@@ -233,15 +233,15 @@ SBData::GetAddress (lldb::SBError& error
             error.SetErrorString("unable to read data");
     }
     if (log)
-        log->Printf ("SBData::GetAddress (error=%p,offset=%d) => "
+        log->Printf ("SBData::GetAddress (error=%p,offset=%" PRIu64 ") => "
                      "(%p)", error.get(), offset, (void*)value);
     return value;
 }
 
 uint8_t
-SBData::GetUnsignedInt8 (lldb::SBError& error, uint32_t offset)
+SBData::GetUnsignedInt8 (lldb::SBError& error, lldb::offset_t offset)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     uint8_t value = 0;
     if (!m_opaque_sp.get())
     {
@@ -255,15 +255,15 @@ SBData::GetUnsignedInt8 (lldb::SBError&
             error.SetErrorString("unable to read data");
     }
     if (log)
-        log->Printf ("SBData::GetUnsignedInt8 (error=%p,offset=%d) => "
+        log->Printf ("SBData::GetUnsignedInt8 (error=%p,offset=%" PRIu64 ") => "
                      "(%c)", error.get(), offset, value);
     return value;
 }
 
 uint16_t
-SBData::GetUnsignedInt16 (lldb::SBError& error, uint32_t offset)
+SBData::GetUnsignedInt16 (lldb::SBError& error, lldb::offset_t offset)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     uint16_t value = 0;
     if (!m_opaque_sp.get())
     {
@@ -277,15 +277,15 @@ SBData::GetUnsignedInt16 (lldb::SBError&
             error.SetErrorString("unable to read data");
     }
     if (log)
-        log->Printf ("SBData::GetUnsignedInt16 (error=%p,offset=%d) => "
+        log->Printf ("SBData::GetUnsignedInt16 (error=%p,offset=%" PRIu64 ") => "
                      "(%hd)", error.get(), offset, value);
     return value;
 }
 
 uint32_t
-SBData::GetUnsignedInt32 (lldb::SBError& error, uint32_t offset)
+SBData::GetUnsignedInt32 (lldb::SBError& error, lldb::offset_t offset)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     uint32_t value = 0;
     if (!m_opaque_sp.get())
     {
@@ -299,15 +299,15 @@ SBData::GetUnsignedInt32 (lldb::SBError&
             error.SetErrorString("unable to read data");
     }
     if (log)
-        log->Printf ("SBData::GetUnsignedInt32 (error=%p,offset=%d) => "
+        log->Printf ("SBData::GetUnsignedInt32 (error=%p,offset=%" PRIu64 ") => "
                      "(%d)", error.get(), offset, value);
     return value;
 }
 
 uint64_t
-SBData::GetUnsignedInt64 (lldb::SBError& error, uint32_t offset)
+SBData::GetUnsignedInt64 (lldb::SBError& error, lldb::offset_t offset)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     uint64_t value = 0;
     if (!m_opaque_sp.get())
     {
@@ -321,15 +321,15 @@ SBData::GetUnsignedInt64 (lldb::SBError&
             error.SetErrorString("unable to read data");
     }
     if (log)
-        log->Printf ("SBData::GetUnsignedInt64 (error=%p,offset=%d) => "
+        log->Printf ("SBData::GetUnsignedInt64 (error=%p,offset=%" PRIu64 ") => "
                      "(%" PRId64 ")", error.get(), offset, value);
     return value;
 }
 
 int8_t
-SBData::GetSignedInt8 (lldb::SBError& error, uint32_t offset)
+SBData::GetSignedInt8 (lldb::SBError& error, lldb::offset_t offset)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     int8_t value = 0;
     if (!m_opaque_sp.get())
     {
@@ -343,15 +343,15 @@ SBData::GetSignedInt8 (lldb::SBError& er
             error.SetErrorString("unable to read data");
     }
     if (log)
-        log->Printf ("SBData::GetSignedInt8 (error=%p,offset=%d) => "
+        log->Printf ("SBData::GetSignedInt8 (error=%p,offset=%" PRIu64 ") => "
                      "(%c)", error.get(), offset, value);
     return value;
 }
 
 int16_t
-SBData::GetSignedInt16 (lldb::SBError& error, uint32_t offset)
+SBData::GetSignedInt16 (lldb::SBError& error, lldb::offset_t offset)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     int16_t value = 0;
     if (!m_opaque_sp.get())
     {
@@ -365,15 +365,15 @@ SBData::GetSignedInt16 (lldb::SBError& e
             error.SetErrorString("unable to read data");
     }
     if (log)
-        log->Printf ("SBData::GetSignedInt16 (error=%p,offset=%d) => "
+        log->Printf ("SBData::GetSignedInt16 (error=%p,offset=%" PRIu64 ") => "
                      "(%hd)", error.get(), offset, value);
     return value;
 }
 
 int32_t
-SBData::GetSignedInt32 (lldb::SBError& error, uint32_t offset)
+SBData::GetSignedInt32 (lldb::SBError& error, lldb::offset_t offset)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     int32_t value = 0;
     if (!m_opaque_sp.get())
     {
@@ -387,15 +387,15 @@ SBData::GetSignedInt32 (lldb::SBError& e
             error.SetErrorString("unable to read data");
     }
     if (log)
-        log->Printf ("SBData::GetSignedInt32 (error=%p,offset=%d) => "
+        log->Printf ("SBData::GetSignedInt32 (error=%p,offset=%" PRIu64 ") => "
                      "(%d)", error.get(), offset, value);
     return value;
 }
 
 int64_t
-SBData::GetSignedInt64 (lldb::SBError& error, uint32_t offset)
+SBData::GetSignedInt64 (lldb::SBError& error, lldb::offset_t offset)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     int64_t value = 0;
     if (!m_opaque_sp.get())
     {
@@ -409,15 +409,15 @@ SBData::GetSignedInt64 (lldb::SBError& e
             error.SetErrorString("unable to read data");
     }
     if (log)
-        log->Printf ("SBData::GetSignedInt64 (error=%p,offset=%d) => "
+        log->Printf ("SBData::GetSignedInt64 (error=%p,offset=%" PRIu64 ") => "
                      "(%" PRId64 ")", error.get(), offset, value);
     return value;
 }
 
 const char*
-SBData::GetString (lldb::SBError& error, uint32_t offset)
+SBData::GetString (lldb::SBError& error, lldb::offset_t offset)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     const char* value = 0;
     if (!m_opaque_sp.get())
     {
@@ -431,7 +431,7 @@ SBData::GetString (lldb::SBError& error,
             error.SetErrorString("unable to read data");
     }
     if (log)
-        log->Printf ("SBData::GetString (error=%p,offset=%d) => "
+        log->Printf ("SBData::GetString (error=%p,offset=%" PRIu64 ") => "
                      "(%p)", error.get(), offset, value);
     return value;
 }
@@ -461,11 +461,11 @@ SBData::GetDescription (lldb::SBStream &
 
 size_t
 SBData::ReadRawData (lldb::SBError& error,
-                     uint32_t offset,
+                     lldb::offset_t offset,
                      void *buf,
                      size_t size)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     void* ok = NULL;
     if (!m_opaque_sp.get())
     {
@@ -479,7 +479,7 @@ SBData::ReadRawData (lldb::SBError& erro
             error.SetErrorString("unable to read data");
     }
     if (log)
-        log->Printf ("SBData::ReadRawData (error=%p,offset=%d,buf=%p,size=%lu) => "
+        log->Printf ("SBData::ReadRawData (error=%p,offset=%" PRIu64 ",buf=%p,size=%lu) => "
                      "(%p)", error.get(), offset, buf, size, ok);
     return ok ? size : 0;
 }
@@ -491,7 +491,7 @@ SBData::SetData (lldb::SBError& error,
                  lldb::ByteOrder endian,
                  uint8_t addr_size)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (!m_opaque_sp.get())
         m_opaque_sp.reset(new DataExtractor(buf, size, endian, addr_size));
     else
@@ -504,7 +504,7 @@ SBData::SetData (lldb::SBError& error,
 bool
 SBData::Append (const SBData& rhs)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     bool value = false;
     if (m_opaque_sp.get() && rhs.m_opaque_sp.get())
         value = m_opaque_sp.get()->Append(*rhs.m_opaque_sp);
@@ -613,7 +613,7 @@ SBData::CreateDataFromDoubleArray (lldb:
 bool
 SBData::SetDataFromCString (const char* data)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     
     if (!data)
     {
@@ -642,7 +642,7 @@ SBData::SetDataFromCString (const char*
 bool
 SBData::SetDataFromUInt64Array (uint64_t* array, size_t array_len)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     
     if (!array || array_len == 0)
     {
@@ -671,7 +671,7 @@ SBData::SetDataFromUInt64Array (uint64_t
 bool
 SBData::SetDataFromUInt32Array (uint32_t* array, size_t array_len)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     
     if (!array || array_len == 0)
     {
@@ -700,7 +700,7 @@ SBData::SetDataFromUInt32Array (uint32_t
 bool
 SBData::SetDataFromSInt64Array (int64_t* array, size_t array_len)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     
     if (!array || array_len == 0)
     {
@@ -729,7 +729,7 @@ SBData::SetDataFromSInt64Array (int64_t*
 bool
 SBData::SetDataFromSInt32Array (int32_t* array, size_t array_len)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     
     if (!array || array_len == 0)
     {
@@ -758,7 +758,7 @@ SBData::SetDataFromSInt32Array (int32_t*
 bool
 SBData::SetDataFromDoubleArray (double* array, size_t array_len)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     
     if (!array || array_len == 0)
     {

Modified: lldb/branches/windows/source/API/SBDebugger.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBDebugger.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBDebugger.cpp (original)
+++ lldb/branches/windows/source/API/SBDebugger.cpp Wed Apr 17 03:38:48 2013
@@ -35,9 +35,9 @@
 #include "lldb/API/SBTypeSynthetic.h"
 
 
-#include "lldb/Core/DataVisualization.h"
 #include "lldb/Core/Debugger.h"
 #include "lldb/Core/State.h"
+#include "lldb/DataFormatters/DataVisualization.h"
 #include "lldb/Interpreter/Args.h"
 #include "lldb/Interpreter/CommandInterpreter.h"
 #include "lldb/Interpreter/OptionGroupPlatform.h"
@@ -50,7 +50,7 @@ using namespace lldb_private;
 void
 SBDebugger::Initialize ()
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBDebugger::Initialize ()");
@@ -69,7 +69,7 @@ SBDebugger::Terminate ()
 void
 SBDebugger::Clear ()
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBDebugger(%p)::Clear ()", m_opaque_sp.get());
@@ -96,7 +96,7 @@ SBDebugger
 SBDebugger::Create(bool source_init_files, lldb::LogOutputCallback callback, void *baton)
 
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     SBDebugger debugger;
     debugger.reset(Debugger::CreateInstance(callback, baton));
@@ -127,7 +127,7 @@ SBDebugger::Create(bool source_init_file
 void
 SBDebugger::Destroy (SBDebugger &debugger)
 {
-    LogSP log (GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log (GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     
     if (log)
     {
@@ -149,7 +149,7 @@ SBDebugger::MemoryPressureDetected ()
     // non-mandatory. We have seen deadlocks with this function when called
     // so we need to safeguard against this until we can determine what is
     // causing the deadlocks.
-    LogSP log (GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log (GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     
     const bool mandatory = false;
     if (log)
@@ -231,7 +231,7 @@ SBDebugger::SkipAppInitFiles (bool b)
 void
 SBDebugger::SetInputFileHandle (FILE *fh, bool transfer_ownership)
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBDebugger(%p)::SetInputFileHandle (fh=%p, transfer_ownership=%i)", m_opaque_sp.get(),
@@ -244,7 +244,7 @@ SBDebugger::SetInputFileHandle (FILE *fh
 void
 SBDebugger::SetOutputFileHandle (FILE *fh, bool transfer_ownership)
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
 
     if (log)
@@ -258,7 +258,7 @@ SBDebugger::SetOutputFileHandle (FILE *f
 void
 SBDebugger::SetErrorFileHandle (FILE *fh, bool transfer_ownership)
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
 
     if (log)
@@ -310,7 +310,7 @@ SBDebugger::RestoreInputTerminalState()
 SBCommandInterpreter
 SBDebugger::GetCommandInterpreter ()
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     SBCommandInterpreter sb_interpreter;
     if (m_opaque_sp)
@@ -364,7 +364,7 @@ SBDebugger::HandleCommand (const char *c
 SBListener
 SBDebugger::GetListener ()
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     SBListener sb_listener;
     if (m_opaque_sp)
@@ -492,7 +492,7 @@ SBDebugger::StateAsCString (StateType st
 bool
 SBDebugger::StateIsRunningState (StateType state)
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     const bool result = lldb_private::StateIsRunningState (state);
     if (log)
@@ -505,7 +505,7 @@ SBDebugger::StateIsRunningState (StateTy
 bool
 SBDebugger::StateIsStoppedState (StateType state)
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     const bool result = lldb_private::StateIsStoppedState (state, false);
     if (log)
@@ -545,7 +545,7 @@ SBDebugger::CreateTarget (const char *fi
         sb_error.SetErrorString("invalid target");
     }
     
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
     {
         log->Printf ("SBDebugger(%p)::CreateTarget (filename=\"%s\", triple=%s, platform_name=%s, add_dependent_modules=%u, error=%s) => SBTarget(%p)", 
@@ -579,7 +579,7 @@ SBDebugger::CreateTargetWithFileAndTarge
         sb_target.SetSP (target_sp);
     }
     
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
     {
         log->Printf ("SBDebugger(%p)::CreateTargetWithFileAndTargetTriple (filename=\"%s\", triple=%s) => SBTarget(%p)", 
@@ -592,7 +592,7 @@ SBDebugger::CreateTargetWithFileAndTarge
 SBTarget
 SBDebugger::CreateTargetWithFileAndArch (const char *filename, const char *arch_cstr)
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     SBTarget sb_target;
     TargetSP target_sp;
@@ -649,7 +649,7 @@ SBDebugger::CreateTarget (const char *fi
             sb_target.SetSP (target_sp);
         }
     }
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
     {
         log->Printf ("SBDebugger(%p)::CreateTarget (filename=\"%s\") => SBTarget(%p)", 
@@ -676,7 +676,7 @@ SBDebugger::DeleteTarget (lldb::SBTarget
         }
     }
 
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
     {
         log->Printf ("SBDebugger(%p)::DeleteTarget (SBTarget(%p)) => %i", m_opaque_sp.get(), target.m_opaque_sp.get(), result);
@@ -763,7 +763,7 @@ SBDebugger::GetNumTargets ()
 SBTarget
 SBDebugger::GetSelectedTarget ()
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     SBTarget sb_target;
     TargetSP target_sp;
@@ -788,7 +788,7 @@ SBDebugger::GetSelectedTarget ()
 void
 SBDebugger::SetSelectedTarget (SBTarget &sb_target)
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     TargetSP target_sp (sb_target.GetSP());
     if (m_opaque_sp)
@@ -813,7 +813,7 @@ SBDebugger::DispatchInput (void* baton,
 void
 SBDebugger::DispatchInput (const void *data, size_t data_len)
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBDebugger(%p)::DispatchInput (data=\"%.*s\", size_t=%" PRIu64 ")",
@@ -843,7 +843,7 @@ SBDebugger::DispatchInputEndOfFile ()
 bool
 SBDebugger::InputReaderIsTopReader (const lldb::SBInputReader &reader)
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBDebugger(%p)::InputReaderIsTopReader (SBInputReader(%p))", m_opaque_sp.get(), &reader);
@@ -861,7 +861,7 @@ SBDebugger::InputReaderIsTopReader (cons
 void
 SBDebugger::PushInputReader (SBInputReader &reader)
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBDebugger(%p)::PushInputReader (SBInputReader(%p))", m_opaque_sp.get(), &reader);
@@ -880,7 +880,7 @@ SBDebugger::PushInputReader (SBInputRead
 void
 SBDebugger::NotifyTopInputReader (InputReaderAction notification)
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBDebugger(%p)::NotifyTopInputReader (%d)", m_opaque_sp.get(), notification);
@@ -1004,7 +1004,7 @@ SBDebugger::SetTerminalWidth (uint32_t t
 const char *
 SBDebugger::GetPrompt() const
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     
     if (log)
         log->Printf ("SBDebugger(%p)::GetPrompt () => \"%s\"", m_opaque_sp.get(), 

Modified: lldb/branches/windows/source/API/SBDeclaration.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBDeclaration.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBDeclaration.cpp (original)
+++ lldb/branches/windows/source/API/SBDeclaration.cpp Wed Apr 17 03:38:48 2013
@@ -73,7 +73,7 @@ SBDeclaration::IsValid () const
 SBFileSpec
 SBDeclaration::GetFileSpec () const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     
     SBFileSpec sb_file_spec;
     if (m_opaque_ap.get() && m_opaque_ap->GetFile())
@@ -93,7 +93,7 @@ SBDeclaration::GetFileSpec () const
 uint32_t
 SBDeclaration::GetLine () const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     
     uint32_t line = 0;
     if (m_opaque_ap.get())

Modified: lldb/branches/windows/source/API/SBError.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBError.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBError.cpp (original)
+++ lldb/branches/windows/source/API/SBError.cpp Wed Apr 17 03:38:48 2013
@@ -70,7 +70,7 @@ SBError::Clear ()
 bool
 SBError::Fail () const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     bool ret_value = false;
     if (m_opaque_ap.get())
@@ -85,7 +85,7 @@ SBError::Fail () const
 bool
 SBError::Success () const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     bool ret_value = true;
     if (m_opaque_ap.get())
         ret_value = m_opaque_ap->Success();
@@ -99,7 +99,7 @@ SBError::Success () const
 uint32_t
 SBError::GetError () const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     uint32_t err = 0;
     if (m_opaque_ap.get())
@@ -115,7 +115,7 @@ SBError::GetError () const
 ErrorType
 SBError::GetType () const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     ErrorType err_type = eErrorTypeInvalid;
     if (m_opaque_ap.get())
         err_type = m_opaque_ap->GetType();

Modified: lldb/branches/windows/source/API/SBEvent.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBEvent.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBEvent.cpp (original)
+++ lldb/branches/windows/source/API/SBEvent.cpp Wed Apr 17 03:38:48 2013
@@ -81,7 +81,7 @@ SBEvent::GetDataFlavor ()
 uint32_t
 SBEvent::GetType () const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     const Event *lldb_event = get();
     uint32_t event_type = 0;
@@ -139,7 +139,7 @@ SBEvent::BroadcasterMatchesRef (const SB
         success = lldb_event->BroadcasterIs (broadcaster.get());
 
     // For logging, this gets a little chatty so only enable this when verbose logging is on
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API | LIBLLDB_LOG_VERBOSE));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API | LIBLLDB_LOG_VERBOSE));
     if (log)
         log->Printf ("SBEvent(%p)::BroadcasterMatchesRef (SBBroadcaster(%p): %s) => %i", 
                      get(),
@@ -203,7 +203,7 @@ SBEvent::IsValid() const
 const char *
 SBEvent::GetCStringFromEvent (const SBEvent &event)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBEvent(%p)::GetCStringFromEvent () => \"%s\"", 

Modified: lldb/branches/windows/source/API/SBExpressionOptions.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBExpressionOptions.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBExpressionOptions.cpp (original)
+++ lldb/branches/windows/source/API/SBExpressionOptions.cpp Wed Apr 17 03:38:48 2013
@@ -65,6 +65,18 @@ SBExpressionOptions::SetUnwindOnError (b
     m_opaque_ap->SetUnwindOnError (unwind);
 }
 
+bool
+SBExpressionOptions::GetIgnoreBreakpoints () const
+{
+    return m_opaque_ap->DoesIgnoreBreakpoints ();
+}
+
+void
+SBExpressionOptions::SetIgnoreBreakpoints (bool ignore)
+{
+    m_opaque_ap->SetIgnoreBreakpoints (ignore);
+}
+
 lldb::DynamicValueType
 SBExpressionOptions::GetFetchDynamicValue () const
 {

Modified: lldb/branches/windows/source/API/SBFileSpec.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBFileSpec.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBFileSpec.cpp (original)
+++ lldb/branches/windows/source/API/SBFileSpec.cpp Wed Apr 17 03:38:48 2013
@@ -28,7 +28,7 @@ SBFileSpec::SBFileSpec () :
 SBFileSpec::SBFileSpec (const SBFileSpec &rhs) :
     m_opaque_ap()
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (rhs.m_opaque_ap.get())
         m_opaque_ap.reset (new FileSpec (rhs.get()));
@@ -51,7 +51,7 @@ SBFileSpec::SBFileSpec (const char *path
 SBFileSpec::SBFileSpec (const char *path, bool resolve) :
     m_opaque_ap(new FileSpec (path, resolve))
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBFileSpec::SBFileSpec (path=\"%s\", resolve=%i) => SBFileSpec(%p)", path, 
@@ -82,7 +82,7 @@ SBFileSpec::IsValid() const
 bool
 SBFileSpec::Exists () const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     bool result = false;
     if (m_opaque_ap.get())
@@ -115,7 +115,7 @@ SBFileSpec::GetFilename() const
     if (m_opaque_ap.get())
         s = m_opaque_ap->GetFilename().AsCString();
 
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
     {
         if (s)
@@ -133,7 +133,7 @@ SBFileSpec::GetDirectory() const
     const char *s = NULL;
     if (m_opaque_ap.get())
         s = m_opaque_ap->GetDirectory().AsCString();
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
     {
         if (s)
@@ -147,7 +147,7 @@ SBFileSpec::GetDirectory() const
 uint32_t
 SBFileSpec::GetPath (char *dst_path, size_t dst_len) const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     uint32_t result = 0;
     if (m_opaque_ap.get())

Modified: lldb/branches/windows/source/API/SBFileSpecList.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBFileSpecList.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBFileSpecList.cpp (original)
+++ lldb/branches/windows/source/API/SBFileSpecList.cpp Wed Apr 17 03:38:48 2013
@@ -30,7 +30,7 @@ SBFileSpecList::SBFileSpecList () :
 SBFileSpecList::SBFileSpecList (const SBFileSpecList &rhs) :
     m_opaque_ap()
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (rhs.m_opaque_ap.get())
         m_opaque_ap.reset (new FileSpecList (*(rhs.get())));

Modified: lldb/branches/windows/source/API/SBFrame.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBFrame.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBFrame.cpp (original)
+++ lldb/branches/windows/source/API/SBFrame.cpp Wed Apr 17 03:38:48 2013
@@ -57,7 +57,7 @@ SBFrame::SBFrame () :
 SBFrame::SBFrame (const StackFrameSP &lldb_object_sp) :
     m_opaque_sp (new ExecutionContextRef (lldb_object_sp))
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
     {
@@ -109,7 +109,7 @@ SBFrame::IsValid() const
 SBSymbolContext
 SBFrame::GetSymbolContext (uint32_t resolve_scope) const
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     SBSymbolContext sb_sym_ctx;
     Mutex::Locker api_locker;
     ExecutionContext exe_ctx (m_opaque_sp.get(), api_locker);
@@ -150,7 +150,7 @@ SBFrame::GetSymbolContext (uint32_t reso
 SBModule
 SBFrame::GetModule () const
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     SBModule sb_module;
     ModuleSP module_sp;
     Mutex::Locker api_locker;
@@ -193,7 +193,7 @@ SBFrame::GetModule () const
 SBCompileUnit
 SBFrame::GetCompileUnit () const
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     SBCompileUnit sb_comp_unit;
     Mutex::Locker api_locker;
     ExecutionContext exe_ctx (m_opaque_sp.get(), api_locker);
@@ -233,7 +233,7 @@ SBFrame::GetCompileUnit () const
 SBFunction
 SBFrame::GetFunction () const
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     SBFunction sb_function;
     Mutex::Locker api_locker;
     ExecutionContext exe_ctx (m_opaque_sp.get(), api_locker);
@@ -273,7 +273,7 @@ SBFrame::GetFunction () const
 SBSymbol
 SBFrame::GetSymbol () const
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     SBSymbol sb_symbol;
     Mutex::Locker api_locker;
     ExecutionContext exe_ctx (m_opaque_sp.get(), api_locker);
@@ -312,7 +312,7 @@ SBFrame::GetSymbol () const
 SBBlock
 SBFrame::GetBlock () const
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     SBBlock sb_block;
     Mutex::Locker api_locker;
     ExecutionContext exe_ctx (m_opaque_sp.get(), api_locker);
@@ -357,7 +357,7 @@ SBFrame::GetFrameBlock () const
 
     StackFrame *frame = NULL;
     Target *target = exe_ctx.GetTargetPtr();
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     Process *process = exe_ctx.GetProcessPtr();
     if (target && process)
     {
@@ -390,7 +390,7 @@ SBFrame::GetFrameBlock () const
 SBLineEntry
 SBFrame::GetLineEntry () const
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     SBLineEntry sb_line_entry;
     Mutex::Locker api_locker;
     ExecutionContext exe_ctx (m_opaque_sp.get(), api_locker);
@@ -436,7 +436,7 @@ SBFrame::GetFrameID () const
     if (frame)
         frame_idx = frame->GetFrameIndex ();
     
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBFrame(%p)::GetFrameID () => %u", 
                      frame, frame_idx);
@@ -446,7 +446,7 @@ SBFrame::GetFrameID () const
 addr_t
 SBFrame::GetPC () const
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     addr_t addr = LLDB_INVALID_ADDRESS;
     Mutex::Locker api_locker;
     ExecutionContext exe_ctx (m_opaque_sp.get(), api_locker);
@@ -486,7 +486,7 @@ SBFrame::GetPC () const
 bool
 SBFrame::SetPC (addr_t new_pc)
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     bool ret_val = false;
     Mutex::Locker api_locker;
     ExecutionContext exe_ctx (m_opaque_sp.get(), api_locker);
@@ -527,7 +527,7 @@ SBFrame::SetPC (addr_t new_pc)
 addr_t
 SBFrame::GetSP () const
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     addr_t addr = LLDB_INVALID_ADDRESS;
     Mutex::Locker api_locker;
     ExecutionContext exe_ctx (m_opaque_sp.get(), api_locker);
@@ -567,7 +567,7 @@ SBFrame::GetSP () const
 addr_t
 SBFrame::GetFP () const
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     addr_t addr = LLDB_INVALID_ADDRESS;
     Mutex::Locker api_locker;
     ExecutionContext exe_ctx (m_opaque_sp.get(), api_locker);
@@ -607,7 +607,7 @@ SBFrame::GetFP () const
 SBAddress
 SBFrame::GetPCAddress () const
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     SBAddress sb_addr;
     Mutex::Locker api_locker;
     ExecutionContext exe_ctx (m_opaque_sp.get(), api_locker);
@@ -668,7 +668,7 @@ SBFrame::GetValueForVariablePath (const
 {
     SBValue sb_value;
     Mutex::Locker api_locker;
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (var_path == NULL || var_path[0] == '\0')
     {
         if (log)
@@ -732,7 +732,7 @@ SBFrame::FindVariable (const char *name)
 SBValue
 SBFrame::FindVariable (const char *name, lldb::DynamicValueType use_dynamic)
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     VariableSP var_sp;
     SBValue sb_value;
 
@@ -820,7 +820,7 @@ SBFrame::FindValue (const char *name, Va
 SBValue
 SBFrame::FindValue (const char *name, ValueType value_type, lldb::DynamicValueType use_dynamic)
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     SBValue sb_value;
     
     if (name == NULL || name[0] == '\0')
@@ -987,7 +987,7 @@ SBFrame::operator != (const SBFrame &rhs
 SBThread
 SBFrame::GetThread () const
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     ExecutionContext exe_ctx(m_opaque_sp.get());
     ThreadSP thread_sp (exe_ctx.GetThreadSP());
@@ -1009,7 +1009,7 @@ SBFrame::GetThread () const
 const char *
 SBFrame::Disassemble () const
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     const char *disassembly = NULL;
     Mutex::Locker api_locker;
     ExecutionContext exe_ctx (m_opaque_sp.get(), api_locker);
@@ -1072,7 +1072,7 @@ SBFrame::GetVariables (bool arguments,
                        bool in_scope_only,
                        lldb::DynamicValueType  use_dynamic)
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     SBValueList value_list;
     Mutex::Locker api_locker;
@@ -1159,8 +1159,7 @@ SBFrame::GetVariables (bool arguments,
 
     if (log)
     {
-        log->Printf ("SBFrame(%p)::GetVariables (...) => SBValueList(%p)", frame,
-                     value_list.get());
+        log->Printf ("SBFrame(%p)::GetVariables (...) => SBValueList(%p)", frame, value_list.opaque_ptr());
     }
 
     return value_list;
@@ -1169,7 +1168,7 @@ SBFrame::GetVariables (bool arguments,
 SBValueList
 SBFrame::GetRegisters ()
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     SBValueList value_list;
     Mutex::Locker api_locker;
@@ -1210,7 +1209,7 @@ SBFrame::GetRegisters ()
     }
 
     if (log)
-        log->Printf ("SBFrame(%p)::GetRegisters () => SBValueList(%p)", frame, value_list.get());
+        log->Printf ("SBFrame(%p)::GetRegisters () => SBValueList(%p)", frame, value_list.opaque_ptr());
 
     return value_list;
 }
@@ -1218,7 +1217,7 @@ SBFrame::GetRegisters ()
 bool
 SBFrame::GetDescription (SBStream &description)
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     Stream &strm = description.ref();
 
     Mutex::Locker api_locker;
@@ -1295,9 +1294,9 @@ SBFrame::EvaluateExpression (const char
 lldb::SBValue
 SBFrame::EvaluateExpression (const char *expr, const SBExpressionOptions &options)
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     
-    LogSP expr_log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
+    Log *expr_log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
 
     ExecutionResults exe_results = eExecutionSetupError;
     SBValue expr_result;
@@ -1377,7 +1376,7 @@ SBFrame::EvaluateExpression (const char
 bool
 SBFrame::IsInlined()
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     ExecutionContext exe_ctx(m_opaque_sp.get());
     StackFrame *frame = NULL;
     Target *target = exe_ctx.GetTargetPtr();
@@ -1414,7 +1413,7 @@ SBFrame::IsInlined()
 const char *
 SBFrame::GetFunctionName()
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     const char *name = NULL;
     ExecutionContext exe_ctx(m_opaque_sp.get());
     StackFrame *frame = NULL;

Modified: lldb/branches/windows/source/API/SBFunction.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBFunction.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBFunction.cpp (original)
+++ lldb/branches/windows/source/API/SBFunction.cpp Wed Apr 17 03:38:48 2013
@@ -62,7 +62,7 @@ SBFunction::GetName() const
     if (m_opaque_ptr)
         cstr = m_opaque_ptr->GetMangled().GetName().AsCString();
 
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
     {
         if (cstr)
@@ -79,7 +79,7 @@ SBFunction::GetMangledName () const
     const char *cstr = NULL;
     if (m_opaque_ptr)
         cstr = m_opaque_ptr->GetMangled().GetMangledName().AsCString();
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
     {
         if (cstr)
@@ -122,6 +122,12 @@ SBFunction::GetDescription (SBStream &s)
 SBInstructionList
 SBFunction::GetInstructions (SBTarget target)
 {
+    return GetInstructions (target, NULL);
+}
+
+SBInstructionList
+SBFunction::GetInstructions (SBTarget target, const char *flavor)
+{
     SBInstructionList sb_instructions;
     if (m_opaque_ptr)
     {
@@ -139,6 +145,7 @@ SBFunction::GetInstructions (SBTarget ta
         {
             sb_instructions.SetDisassembler (Disassembler::DisassembleRange (module_sp->GetArchitecture(),
                                                                              NULL,
+                                                                             flavor,
                                                                              exe_ctx,
                                                                              m_opaque_ptr->GetAddressRange()));
         }

Modified: lldb/branches/windows/source/API/SBHostOS.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBHostOS.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBHostOS.cpp (original)
+++ lldb/branches/windows/source/API/SBHostOS.cpp Wed Apr 17 03:38:48 2013
@@ -47,7 +47,7 @@ SBHostOS::ThreadCreate
     SBError *error_ptr
 )
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBHostOS::ThreadCreate (name=\"%s\", thread_function=%p, thread_arg=%p, error_ptr=%p)", name, 

Modified: lldb/branches/windows/source/API/SBInputReader.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBInputReader.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBInputReader.cpp (original)
+++ lldb/branches/windows/source/API/SBInputReader.cpp Wed Apr 17 03:38:48 2013
@@ -33,7 +33,7 @@ SBInputReader::SBInputReader ()  :
 SBInputReader::SBInputReader (const lldb::InputReaderSP &reader_sp) :
     m_opaque_sp (reader_sp)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBInputReader::SBInputReader (reader_sp=%p) => SBInputReader(%p)", reader_sp.get(), 
@@ -43,7 +43,7 @@ SBInputReader::SBInputReader (const lldb
 SBInputReader::SBInputReader (const SBInputReader &rhs) :
     m_opaque_sp (rhs.m_opaque_sp)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf("SBInputReader::SBInputReader (rhs.sp=%p) => SBInputReader(%p)", 
@@ -84,7 +84,7 @@ SBInputReader::Initialize
     bool echo
 )
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf("SBInputReader(%p)::Initialize (SBDebugger(%p), callback_function=%p, callback_baton=%p, "
@@ -194,7 +194,7 @@ SBInputReader::SetIsDone (bool value)
 bool
 SBInputReader::IsActive () const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     bool ret_value = false;
     if (m_opaque_sp)

Modified: lldb/branches/windows/source/API/SBLineEntry.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBLineEntry.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBLineEntry.cpp (original)
+++ lldb/branches/windows/source/API/SBLineEntry.cpp Wed Apr 17 03:38:48 2013
@@ -71,7 +71,7 @@ SBLineEntry::GetStartAddress () const
     if (m_opaque_ap.get())
         sb_address.SetAddress(&m_opaque_ap->range.GetBaseAddress());
 
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
     {
         StreamString sstr;
@@ -94,7 +94,7 @@ SBLineEntry::GetEndAddress () const
         sb_address.SetAddress(&m_opaque_ap->range.GetBaseAddress());
         sb_address.OffsetAddress(m_opaque_ap->range.GetByteSize());
     }
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
     {
         StreamString sstr;
@@ -117,7 +117,7 @@ SBLineEntry::IsValid () const
 SBFileSpec
 SBLineEntry::GetFileSpec () const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     SBFileSpec sb_file_spec;
     if (m_opaque_ap.get() && m_opaque_ap->file)
@@ -137,7 +137,7 @@ SBLineEntry::GetFileSpec () const
 uint32_t
 SBLineEntry::GetLine () const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     uint32_t line = 0;
     if (m_opaque_ap.get())

Modified: lldb/branches/windows/source/API/SBListener.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBListener.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBListener.cpp (original)
+++ lldb/branches/windows/source/API/SBListener.cpp Wed Apr 17 03:38:48 2013
@@ -38,7 +38,7 @@ SBListener::SBListener (const char *name
 {
     m_opaque_ptr = m_opaque_sp.get();
 
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     if (log)
         log->Printf ("SBListener::SBListener (name=\"%s\") => SBListener(%p)",
@@ -131,7 +131,7 @@ SBListener::StopListeningForEventClass (
 uint32_t
 SBListener::StartListeningForEvents (const SBBroadcaster& broadcaster, uint32_t event_mask)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     uint32_t acquired_event_mask = 0;
     if (m_opaque_ptr && broadcaster.IsValid())
@@ -190,7 +190,7 @@ SBListener::StopListeningForEvents (cons
 bool
 SBListener::WaitForEvent (uint32_t timeout_secs, SBEvent &event)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
     {
         if (timeout_secs == UINT32_MAX)

Modified: lldb/branches/windows/source/API/SBModule.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBModule.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBModule.cpp (original)
+++ lldb/branches/windows/source/API/SBModule.cpp Wed Apr 17 03:38:48 2013
@@ -50,12 +50,14 @@ SBModule::SBModule (lldb::SBProcess &pro
     ProcessSP process_sp (process.GetSP());
     if (process_sp)
     {
-        const bool add_image_to_target = true;
-        const bool load_image_sections_in_target = true;
-        m_opaque_sp = process_sp->ReadModuleFromMemory (FileSpec(), 
-                                                        header_addr, 
-                                                        add_image_to_target,
-                                                        load_image_sections_in_target);
+        m_opaque_sp = process_sp->ReadModuleFromMemory (FileSpec(), header_addr);
+        if (m_opaque_sp)
+        {
+            Target &target = process_sp->GetTarget();
+            bool changed = false;
+            m_opaque_sp->SetLoadAddress(target, 0, changed);
+            target.GetImages().Append(m_opaque_sp);
+        }
     }
 }
 
@@ -86,7 +88,7 @@ SBModule::Clear()
 SBFileSpec
 SBModule::GetFileSpec () const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     SBFileSpec file_spec;
     ModuleSP module_sp (GetSP ());
@@ -105,7 +107,7 @@ SBModule::GetFileSpec () const
 lldb::SBFileSpec
 SBModule::GetPlatformFileSpec () const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     
     SBFileSpec file_spec;
     ModuleSP module_sp (GetSP ());
@@ -126,7 +128,7 @@ bool
 SBModule::SetPlatformFileSpec (const lldb::SBFileSpec &platform_file)
 {
     bool result = false;
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     
     ModuleSP module_sp (GetSP ());
     if (module_sp)
@@ -153,7 +155,7 @@ SBModule::SetPlatformFileSpec (const lld
 const uint8_t *
 SBModule::GetUUIDBytes () const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     const uint8_t *uuid_bytes = NULL;
     ModuleSP module_sp (GetSP ());
@@ -178,7 +180,7 @@ SBModule::GetUUIDBytes () const
 const char *
 SBModule::GetUUIDString () const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     static char uuid_string[80];
     const char * uuid_c_string = NULL;
@@ -465,14 +467,13 @@ SBModule::FindGlobalVariables (SBTarget
 
         if (match_count > 0)
         {
-            ValueObjectList &value_object_list = sb_value_list.ref();
             for (uint32_t i=0; i<match_count; ++i)
             {
                 lldb::ValueObjectSP valobj_sp;
                 TargetSP target_sp (target.GetSP());
                 valobj_sp = ValueObjectVariable::Create (target_sp.get(), variable_list.GetVariableAtIndex(i));
                 if (valobj_sp)
-                    value_object_list.Append(valobj_sp);
+                    sb_value_list.Append(SBValue(valobj_sp));
             }
         }
     }
@@ -480,6 +481,15 @@ SBModule::FindGlobalVariables (SBTarget
     return sb_value_list;
 }
 
+lldb::SBValue
+SBModule::FindFirstGlobalVariable (lldb::SBTarget &target, const char *name)
+{
+    SBValueList sb_value_list(FindGlobalVariables(target, name, 1));
+    if (sb_value_list.IsValid() && sb_value_list.GetSize() > 0)
+        return sb_value_list.GetValueAtIndex(0);
+    return SBValue();
+}
+
 lldb::SBType
 SBModule::FindFirstType (const char *name_cstr)
 {

Modified: lldb/branches/windows/source/API/SBProcess.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBProcess.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBProcess.cpp (original)
+++ lldb/branches/windows/source/API/SBProcess.cpp Wed Apr 17 03:38:48 2013
@@ -143,7 +143,7 @@ SBProcess::RemoteLaunch (char const **ar
                          bool stop_at_entry,
                          lldb::SBError& error)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log) {
         log->Printf ("SBProcess(%p)::RemoteLaunch (argv=%p, envp=%p, stdin=%s, stdout=%s, stderr=%s, working-dir=%s, launch_flags=0x%x, stop_at_entry=%i, &error (%p))...",
                      m_opaque_wp.lock().get(),
@@ -222,7 +222,7 @@ SBProcess::RemoteAttachToProcessWithID (
         error.SetErrorString ("unable to attach pid");
     }
 
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log) {
         SBStream sstr;
         error.GetDescription (sstr);
@@ -236,7 +236,7 @@ SBProcess::RemoteAttachToProcessWithID (
 uint32_t
 SBProcess::GetNumThreads ()
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     uint32_t num_threads = 0;
     ProcessSP process_sp(GetSP());
@@ -258,7 +258,7 @@ SBProcess::GetNumThreads ()
 SBThread
 SBProcess::GetSelectedThread () const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     SBThread sb_thread;
     ThreadSP thread_sp;
@@ -278,10 +278,31 @@ SBProcess::GetSelectedThread () const
     return sb_thread;
 }
 
+SBThread
+SBProcess::CreateOSPluginThread (lldb::tid_t tid, lldb::addr_t context)
+{
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    
+    SBThread sb_thread;
+    ThreadSP thread_sp;
+    ProcessSP process_sp(GetSP());
+    if (process_sp)
+    {
+        Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex());
+        thread_sp = process_sp->CreateOSPluginThread(tid, context);
+        sb_thread.SetThread (thread_sp);
+    }
+    
+    if (log)
+        log->Printf ("SBProcess(%p)::CreateOSPluginThread (tid=0x%" PRIx64 ", context=0x%" PRIx64 ") => SBThread(%p)", process_sp.get(), tid, context, thread_sp.get());
+    
+    return sb_thread;
+}
+
 SBTarget
 SBProcess::GetTarget() const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     SBTarget sb_target;
     TargetSP target_sp;
@@ -302,7 +323,7 @@ SBProcess::GetTarget() const
 size_t
 SBProcess::PutSTDIN (const char *src, size_t src_len)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     size_t ret_val = 0;
     ProcessSP process_sp(GetSP());
@@ -333,7 +354,7 @@ SBProcess::GetSTDOUT (char *dst, size_t
         bytes_read = process_sp->GetSTDOUT (dst, dst_len, error);
     }
     
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBProcess(%p)::GetSTDOUT (dst=\"%.*s\", dst_len=%" PRIu64 ") => %" PRIu64,
                      process_sp.get(),
@@ -356,7 +377,7 @@ SBProcess::GetSTDERR (char *dst, size_t
         bytes_read = process_sp->GetSTDERR (dst, dst_len, error);
     }
 
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBProcess(%p)::GetSTDERR (dst=\"%.*s\", dst_len=%" PRIu64 ") => %" PRIu64,
                      process_sp.get(),
@@ -379,7 +400,7 @@ SBProcess::GetAsyncProfileData(char *dst
         bytes_read = process_sp->GetAsyncProfileData (dst, dst_len, error);
     }
     
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBProcess(%p)::GetProfileData (dst=\"%.*s\", dst_len=%" PRIu64 ") => %" PRIu64,
                      process_sp.get(),
@@ -446,7 +467,7 @@ SBProcess::SetSelectedThread (const SBTh
 bool
 SBProcess::SetSelectedThreadByID (lldb::tid_t tid)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     bool ret_val = false;
     ProcessSP process_sp(GetSP());
@@ -466,7 +487,7 @@ SBProcess::SetSelectedThreadByID (lldb::
 bool
 SBProcess::SetSelectedThreadByIndexID (uint32_t index_id)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     bool ret_val = false;
     ProcessSP process_sp(GetSP());
@@ -486,7 +507,7 @@ SBProcess::SetSelectedThreadByIndexID (u
 SBThread
 SBProcess::GetThreadAtIndex (size_t index)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     SBThread sb_thread;
     ThreadSP thread_sp;
@@ -509,6 +530,21 @@ SBProcess::GetThreadAtIndex (size_t inde
     return sb_thread;
 }
 
+uint32_t
+SBProcess::GetStopID(bool include_expression_stops)
+{
+    ProcessSP process_sp(GetSP());
+    if (process_sp)
+    {
+        Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex());
+        if (include_expression_stops)
+            return process_sp->GetStopID();
+        else
+            return process_sp->GetLastNaturalStopID();
+    }
+    return 0;
+}
+
 StateType
 SBProcess::GetState ()
 {
@@ -521,7 +557,7 @@ SBProcess::GetState ()
         ret_val = process_sp->GetState();
     }
 
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBProcess(%p)::GetState () => %s", 
                      process_sp.get(),
@@ -541,7 +577,7 @@ SBProcess::GetExitStatus ()
         Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex());
         exit_status = process_sp->GetExitStatus ();
     }
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBProcess(%p)::GetExitStatus () => %i (0x%8.8x)", 
                      process_sp.get(), exit_status, exit_status);
@@ -559,7 +595,7 @@ SBProcess::GetExitDescription ()
         Mutex::Locker api_locker (process_sp->GetTarget().GetAPIMutex());
         exit_desc = process_sp->GetExitDescription ();
     }
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBProcess(%p)::GetExitDescription () => %s", 
                      process_sp.get(), exit_desc);
@@ -574,13 +610,30 @@ SBProcess::GetProcessID ()
     if (process_sp)
         ret_val = process_sp->GetID();
 
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBProcess(%p)::GetProcessID () => %" PRIu64, process_sp.get(), ret_val);
 
     return ret_val;
 }
 
+uint32_t
+SBProcess::GetUniqueID()
+{
+    uint32_t ret_val = 0;
+    ProcessSP process_sp(GetSP());
+    if (process_sp)
+        ret_val = process_sp->GetUniqueID();
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    if (log)
+#if _POSIX_SOURCE
+        log->Printf ("SBProcess(%p)::GetUniqueID () => %" PRIu32, process_sp.get(), ret_val);
+#else
+        log->Printf ("SBProcess(%p)::GetUniqueID () => %lu" , process_sp.get(), ret_val);
+#endif
+    return ret_val;
+}
+
 ByteOrder
 SBProcess::GetByteOrder () const
 {
@@ -589,7 +642,7 @@ SBProcess::GetByteOrder () const
     if (process_sp)
         byteOrder = process_sp->GetTarget().GetArchitecture().GetByteOrder();
     
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBProcess(%p)::GetByteOrder () => %d", process_sp.get(), byteOrder);
 
@@ -604,7 +657,7 @@ SBProcess::GetAddressByteSize () const
     if (process_sp)
         size =  process_sp->GetTarget().GetArchitecture().GetAddressByteSize();
 
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBProcess(%p)::GetAddressByteSize () => %d", process_sp.get(), size);
 
@@ -614,7 +667,7 @@ SBProcess::GetAddressByteSize () const
 SBError
 SBProcess::Continue ()
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     
     SBError sb_error;
     ProcessSP process_sp(GetSP());
@@ -665,7 +718,7 @@ SBProcess::Destroy ()
     else
         sb_error.SetErrorString ("SBProcess is invalid");
 
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
     {
         SBStream sstr;
@@ -693,7 +746,7 @@ SBProcess::Stop ()
     else
         sb_error.SetErrorString ("SBProcess is invalid");
     
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
     {
         SBStream sstr;
@@ -720,7 +773,7 @@ SBProcess::Kill ()
     else
         sb_error.SetErrorString ("SBProcess is invalid");
 
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
     {
         SBStream sstr;
@@ -762,7 +815,7 @@ SBProcess::Signal (int signo)
     }
     else
         sb_error.SetErrorString ("SBProcess is invalid");    
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
     {
         SBStream sstr;
@@ -801,7 +854,7 @@ SBProcess::GetThreadByID (tid_t tid)
         sb_thread.SetThread (thread_sp);
     }
 
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
     {
         log->Printf ("SBProcess(%p)::GetThreadByID (tid=0x%4.4" PRIx64 ") => SBThread (%p)",
@@ -828,7 +881,7 @@ SBProcess::GetThreadByIndexID (uint32_t
         sb_thread.SetThread (thread_sp);
     }
 
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
     {
         log->Printf ("SBProcess(%p)::GetThreadByID (tid=0x%x) => SBThread (%p)", 
@@ -843,7 +896,7 @@ SBProcess::GetThreadByIndexID (uint32_t
 StateType
 SBProcess::GetStateFromEvent (const SBEvent &event)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     StateType ret_val = Process::ProcessEventData::GetStateFromEvent (event.get());
     
@@ -860,6 +913,18 @@ SBProcess::GetRestartedFromEvent (const
     return Process::ProcessEventData::GetRestartedFromEvent (event.get());
 }
 
+size_t
+SBProcess::GetNumRestartedReasonsFromEvent (const lldb::SBEvent &event)
+{
+    return Process::ProcessEventData::GetNumRestartedReasons(event.get());
+}
+
+const char *
+SBProcess::GetRestartedReasonAtIndexFromEvent (const lldb::SBEvent &event, size_t idx)
+{
+    return Process::ProcessEventData::GetRestartedReasonAtIndex(event.get(), idx);
+}
+
 SBProcess
 SBProcess::GetProcessFromEvent (const SBEvent &event)
 {
@@ -876,7 +941,7 @@ SBProcess::EventIsProcessEvent (const SB
 SBBroadcaster
 SBProcess::GetBroadcaster () const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     ProcessSP process_sp(GetSP());
 
@@ -898,7 +963,7 @@ SBProcess::GetBroadcasterClass ()
 size_t
 SBProcess::ReadMemory (addr_t addr, void *dst, size_t dst_len, SBError &sb_error)
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     size_t bytes_read = 0;
 
@@ -966,7 +1031,7 @@ SBProcess::ReadCStringFromMemory (addr_t
         }
         else
         {
-            LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+            Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
             if (log)
                 log->Printf ("SBProcess(%p)::ReadCStringFromMemory() => error: process is running", process_sp.get());
             sb_error.SetErrorString("process is running");
@@ -994,7 +1059,7 @@ SBProcess::ReadUnsignedFromMemory (addr_
         }
         else
         {
-            LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+            Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
             if (log)
                 log->Printf ("SBProcess(%p)::ReadUnsignedFromMemory() => error: process is running", process_sp.get());
             sb_error.SetErrorString("process is running");
@@ -1022,7 +1087,7 @@ SBProcess::ReadPointerFromMemory (addr_t
         }
         else
         {
-            LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+            Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
             if (log)
                 log->Printf ("SBProcess(%p)::ReadPointerFromMemory() => error: process is running", process_sp.get());
             sb_error.SetErrorString("process is running");
@@ -1040,7 +1105,7 @@ SBProcess::WriteMemory (addr_t addr, con
 {
     size_t bytes_written = 0;
 
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     ProcessSP process_sp(GetSP());
 
@@ -1118,7 +1183,7 @@ SBProcess::GetDescription (SBStream &des
 uint32_t
 SBProcess::GetNumSupportedHardwareWatchpoints (lldb::SBError &sb_error) const
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     uint32_t num = 0;
     ProcessSP process_sp(GetSP());
@@ -1151,7 +1216,7 @@ SBProcess::LoadImage (lldb::SBFileSpec &
         }
         else
         {
-            LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+            Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
             if (log)
                 log->Printf ("SBProcess(%p)::LoadImage() => error: process is running", process_sp.get());
             sb_error.SetErrorString("process is running");
@@ -1175,7 +1240,7 @@ SBProcess::UnloadImage (uint32_t image_t
         }
         else
         {
-            LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+            Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
             if (log)
                 log->Printf ("SBProcess(%p)::UnloadImage() => error: process is running", process_sp.get());
             sb_error.SetErrorString("process is running");

Modified: lldb/branches/windows/source/API/SBSection.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBSection.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBSection.cpp (original)
+++ lldb/branches/windows/source/API/SBSection.cpp Wed Apr 17 03:38:48 2013
@@ -163,7 +163,7 @@ SBSection::GetFileOffset ()
         {
             ObjectFile *objfile = module_sp->GetObjectFile();
             if (objfile)
-                return objfile->GetOffset() + section_sp->GetFileOffset();
+                return objfile->GetFileOffset() + section_sp->GetFileOffset();
         }
     }
     return UINT64_MAX;
@@ -200,7 +200,7 @@ SBSection::GetSectionData (uint64_t offs
                 ObjectFile *objfile = module_sp->GetObjectFile();
                 if (objfile)
                 {
-                    const uint64_t sect_file_offset = objfile->GetOffset() + section_sp->GetFileOffset();
+                    const uint64_t sect_file_offset = objfile->GetFileOffset() + section_sp->GetFileOffset();
                     const uint64_t file_offset = sect_file_offset + offset;
                     uint64_t file_size = size;
                     if (file_size == UINT64_MAX)

Modified: lldb/branches/windows/source/API/SBSourceManager.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBSourceManager.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBSourceManager.cpp (original)
+++ lldb/branches/windows/source/API/SBSourceManager.cpp Wed Apr 17 03:38:48 2013
@@ -27,22 +27,24 @@ namespace lldb_private
     class SourceManagerImpl
     {
     public:
-        SourceManagerImpl (const lldb::DebuggerSP &debugger_sp)
+        SourceManagerImpl (const lldb::DebuggerSP &debugger_sp) :
+            m_debugger_wp (debugger_sp),
+            m_target_wp ()
         {
-            m_debugger_sp = debugger_sp;
         }
         
-        SourceManagerImpl (const lldb::TargetSP &target_sp)
+        SourceManagerImpl (const lldb::TargetSP &target_sp) :
+            m_debugger_wp (),
+            m_target_wp (target_sp)
         {
-            m_target_sp = target_sp;
         }
         
         SourceManagerImpl (const SourceManagerImpl &rhs)
         {
             if (&rhs == this)
                 return;
-            m_debugger_sp = rhs.m_debugger_sp;
-            m_target_sp   = rhs.m_target_sp;
+            m_debugger_wp = rhs.m_debugger_wp;
+            m_target_wp   = rhs.m_target_wp;
         }
         
         size_t
@@ -56,27 +58,35 @@ namespace lldb_private
             if (!file)
                 return 0;
             
-            if (m_debugger_sp)
-                return m_debugger_sp->GetSourceManager().DisplaySourceLinesWithLineNumbers (file,
-                                                                                            line,
-                                                                                            context_before,
-                                                                                            context_after,
-                                                                                            current_line_cstr,
-                                                                                            s);
-            else if (m_target_sp)
-                return m_target_sp->GetSourceManager().DisplaySourceLinesWithLineNumbers (file,
-                                                                                          line,
-                                                                                          context_before,
-                                                                                          context_after,
-                                                                                          current_line_cstr,
-                                                                                          s);
+            lldb::TargetSP target_sp (m_target_wp.lock());
+            if (target_sp)
+            {
+                return target_sp->GetSourceManager().DisplaySourceLinesWithLineNumbers (file,
+                                                                                        line,
+                                                                                        context_before,
+                                                                                        context_after,
+                                                                                        current_line_cstr,
+                                                                                        s);
+            }
             else
-                return 0;
+            {
+                lldb::DebuggerSP debugger_sp (m_debugger_wp.lock());
+                if (debugger_sp)
+                {
+                    return debugger_sp->GetSourceManager().DisplaySourceLinesWithLineNumbers (file,
+                                                                                              line,
+                                                                                              context_before,
+                                                                                              context_after,
+                                                                                              current_line_cstr,
+                                                                                              s);
+                }
+            }
+            return 0;
         }
         
     private:
-        lldb::DebuggerSP m_debugger_sp;
-        lldb::TargetSP   m_target_sp;
+        lldb::DebuggerWP m_debugger_wp;
+        lldb::TargetWP   m_target_wp;
         
     };
 }

Modified: lldb/branches/windows/source/API/SBSymbol.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBSymbol.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBSymbol.cpp (original)
+++ lldb/branches/windows/source/API/SBSymbol.cpp Wed Apr 17 03:38:48 2013
@@ -65,7 +65,7 @@ SBSymbol::GetName() const
     if (m_opaque_ptr)
         name = m_opaque_ptr->GetMangled().GetName().AsCString();
 
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBSymbol(%p)::GetName () => \"%s\"", m_opaque_ptr, name ? name : "");
     return name;
@@ -77,7 +77,7 @@ SBSymbol::GetMangledName () const
     const char *name = NULL;
     if (m_opaque_ptr)
         name = m_opaque_ptr->GetMangled().GetMangledName().AsCString();
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
     if (log)
         log->Printf ("SBSymbol(%p)::GetMangledName () => \"%s\"", m_opaque_ptr, name ? name : "");
 
@@ -113,11 +113,15 @@ SBSymbol::GetDescription (SBStream &desc
     return true;
 }
 
-
-
 SBInstructionList
 SBSymbol::GetInstructions (SBTarget target)
 {
+    return GetInstructions (target, NULL);
+}
+
+SBInstructionList
+SBSymbol::GetInstructions (SBTarget target, const char *flavor_string)
+{
     SBInstructionList sb_instructions;
     if (m_opaque_ptr)
     {
@@ -137,6 +141,7 @@ SBSymbol::GetInstructions (SBTarget targ
                 AddressRange symbol_range (m_opaque_ptr->GetAddress(), m_opaque_ptr->GetByteSize());
                 sb_instructions.SetDisassembler (Disassembler::DisassembleRange (module_sp->GetArchitecture (),
                                                                                  NULL,
+                                                                                 flavor_string,
                                                                                  exe_ctx,
                                                                                  symbol_range));
             }

Modified: lldb/branches/windows/source/API/SBSymbolContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBSymbolContext.cpp?rev=179679&r1=179678&r2=179679&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBSymbolContext.cpp (original)
+++ lldb/branches/windows/source/API/SBSymbolContext.cpp Wed Apr 17 03:38:48 2013
@@ -72,7 +72,7 @@ SBSymbolContext::SetSymbolContext (const
     else
     {
         if (m_opaque_ap.get())
-            m_opaque_ap->Clear();
+            m_opaque_ap->Clear(true);
     }
 }
 
@@ -87,7 +87,7 @@ SBSymbolContext::IsValid () const
 SBModule
 SBSymbolContext::GetModule ()
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     SBModule sb_module;
     ModuleSP module_sp;
@@ -117,7 +117,7 @@ SBSymbolContext::GetCompileUnit ()
 SBFunction
 SBSymbolContext::GetFunction ()
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     Function *function = NULL;
     
@@ -142,7 +142,7 @@ SBSymbolContext::GetBlock ()
 SBLineEntry
 SBSymbolContext::GetLineEntry ()
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     SBLineEntry sb_line_entry;
     if (m_opaque_ap.get())
@@ -160,7 +160,7 @@ SBSymbolContext::GetLineEntry ()
 SBSymbol
 SBSymbolContext::GetSymbol ()
 {
-    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
 
     Symbol *symbol = NULL;