[Lldb-commits] [lldb] r374187 - Revert [test] Split LLDB tests into API, Shell & Unit

Adrian Prantl via lldb-commits lldb-commits at lists.llvm.org
Wed Oct 9 10:35:45 PDT 2019


Author: adrian
Date: Wed Oct  9 10:35:43 2019
New Revision: 374187

URL: http://llvm.org/viewvc/llvm-project?rev=374187&view=rev
Log:
Revert [test] Split LLDB tests into API, Shell & Unit
as it appears to have broken check-lldb.

This reverts r374184 (git commit 22314179f0660c172514b397060fd8f34b586e82)

Added:
    lldb/trunk/lit/
    lldb/trunk/lit/Breakpoint/
    lldb/trunk/lit/Breakpoint/Inputs/
    lldb/trunk/lit/Breakpoint/Inputs/case-sensitive.c
    lldb/trunk/lit/Breakpoint/Inputs/debug_addrx.yaml
    lldb/trunk/lit/Breakpoint/Inputs/debug_rnglist_basic.yaml
    lldb/trunk/lit/Breakpoint/Inputs/debug_rnglist_offset_pair.yaml
    lldb/trunk/lit/Breakpoint/Inputs/debug_rnglist_rlestartend.yaml
    lldb/trunk/lit/Breakpoint/Inputs/debug_rnglistx_rlex.yaml
    lldb/trunk/lit/Breakpoint/Inputs/implicit_const_form_support.yaml
    lldb/trunk/lit/Breakpoint/Inputs/jitbp.cpp
    lldb/trunk/lit/Breakpoint/Inputs/ppc64-localentry.s
    lldb/trunk/lit/Breakpoint/Inputs/single-file-split-dwarf.o.yaml
    lldb/trunk/lit/Breakpoint/Inputs/single-file-split-dwarf.yaml
    lldb/trunk/lit/Breakpoint/Inputs/split-dwarf-5-addrbase.dwo.yaml
    lldb/trunk/lit/Breakpoint/Inputs/split-dwarf-5-addrbase.yaml
    lldb/trunk/lit/Breakpoint/Inputs/split-dwarf5-debug-stroffsets-file1.dwo.yaml
    lldb/trunk/lit/Breakpoint/Inputs/split-dwarf5-debug-stroffsets-file2.dwo.yaml
    lldb/trunk/lit/Breakpoint/Inputs/split-dwarf5-debug-stroffsets-main.yaml
    lldb/trunk/lit/Breakpoint/case-insensitive.test
    lldb/trunk/lit/Breakpoint/case-sensitive.test
    lldb/trunk/lit/Breakpoint/debug_addrx.test
    lldb/trunk/lit/Breakpoint/debug_rnglist_basic.test
    lldb/trunk/lit/Breakpoint/debug_rnglist_offset_pair.test
    lldb/trunk/lit/Breakpoint/debug_rnglist_rlestartend.test
    lldb/trunk/lit/Breakpoint/debug_rnglistx_rlex.test
    lldb/trunk/lit/Breakpoint/implicit_const_form_support.test
    lldb/trunk/lit/Breakpoint/jitbp_elf.test
    lldb/trunk/lit/Breakpoint/ppc64-localentry.test
    lldb/trunk/lit/Breakpoint/single-file-split-dwarf.test
    lldb/trunk/lit/Breakpoint/split-dwarf-5-addrbase.test
    lldb/trunk/lit/Breakpoint/split-dwarf5-debug-stroffsets.test
    lldb/trunk/lit/BuildScript/
    lldb/trunk/lit/BuildScript/compiler-full-path.test
    lldb/trunk/lit/BuildScript/modes.test
    lldb/trunk/lit/BuildScript/script-args.test
    lldb/trunk/lit/BuildScript/toolchain-clang-cl.test
    lldb/trunk/lit/BuildScript/toolchain-clang.test
    lldb/trunk/lit/BuildScript/toolchain-msvc.test
    lldb/trunk/lit/CMakeLists.txt
    lldb/trunk/lit/Commands/
    lldb/trunk/lit/Commands/CommandScriptImmediateOutput/
    lldb/trunk/lit/Commands/CommandScriptImmediateOutput/CommandScriptImmediateOutputConsole.test
    lldb/trunk/lit/Commands/CommandScriptImmediateOutput/CommandScriptImmediateOutputFile.test
    lldb/trunk/lit/Commands/CommandScriptImmediateOutput/Inputs/
    lldb/trunk/lit/Commands/CommandScriptImmediateOutput/Inputs/custom_command.py
    lldb/trunk/lit/Commands/CommandScriptImmediateOutput/lit.local.cfg
    lldb/trunk/lit/Commands/Inputs/
    lldb/trunk/lit/Commands/Inputs/frame.py
    lldb/trunk/lit/Commands/Inputs/main.c
    lldb/trunk/lit/Commands/command-backtrace.test
    lldb/trunk/lit/Commands/command-regex-delete.test
    lldb/trunk/lit/Commands/command-regex-unalias.test
    lldb/trunk/lit/Commands/command-script-import.test
    lldb/trunk/lit/Commands/command-source.test
    lldb/trunk/lit/Driver/
    lldb/trunk/lit/Driver/Inputs/
    lldb/trunk/lit/Driver/Inputs/.lldbinit
    lldb/trunk/lit/Driver/Inputs/Print0.in
    lldb/trunk/lit/Driver/Inputs/Print2.in
    lldb/trunk/lit/Driver/Inputs/Print4.in
    lldb/trunk/lit/Driver/Inputs/Print6.in
    lldb/trunk/lit/Driver/Inputs/convenience.in
    lldb/trunk/lit/Driver/Inputs/hello.c
    lldb/trunk/lit/Driver/Inputs/hello.cpp
    lldb/trunk/lit/Driver/Inputs/process_attach_pid.in
    lldb/trunk/lit/Driver/Inputs/syntax_error.py
    lldb/trunk/lit/Driver/LocalLLDBInit.test
    lldb/trunk/lit/Driver/TestCommands.test
    lldb/trunk/lit/Driver/TestConvenienceVariables.test
    lldb/trunk/lit/Driver/TestCore.test
    lldb/trunk/lit/Driver/TestFile.test
    lldb/trunk/lit/Driver/TestNoUseColor.test
    lldb/trunk/lit/Driver/TestProcessAttach.test
    lldb/trunk/lit/Driver/TestRepl.test
    lldb/trunk/lit/Driver/TestSingleQuote.test
    lldb/trunk/lit/Driver/TestTarget.test
    lldb/trunk/lit/ExecControl/
    lldb/trunk/lit/ExecControl/StopHook/
    lldb/trunk/lit/ExecControl/StopHook/Inputs/
    lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-1.lldbinit
    lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-2.lldbinit
    lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-3.lldbinit
    lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-threads-1.lldbinit
    lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-threads-2.lldbinit
    lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-threads.cpp
    lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook.c
    lldb/trunk/lit/ExecControl/StopHook/stop-hook-threads.test
    lldb/trunk/lit/ExecControl/StopHook/stop-hook.test
    lldb/trunk/lit/Expr/
    lldb/trunk/lit/Expr/Inputs/
    lldb/trunk/lit/Expr/Inputs/call-function.cpp
    lldb/trunk/lit/Expr/Inputs/ir-memory-map-basic
    lldb/trunk/lit/Expr/Inputs/ir-memory-map-mix-malloc-free
    lldb/trunk/lit/Expr/Inputs/ir-memory-map-overlap1
    lldb/trunk/lit/Expr/TestIRMemoryMap.test
    lldb/trunk/lit/Expr/TestIRMemoryMapWindows.test
    lldb/trunk/lit/Expr/TestMultilineExpr.test
    lldb/trunk/lit/Expr/TestTypeOfDeclTypeExpr.test
    lldb/trunk/lit/Heap/
    lldb/trunk/lit/Heap/Inputs/
    lldb/trunk/lit/Heap/Inputs/cstr.c
    lldb/trunk/lit/Heap/heap-cstr.test
    lldb/trunk/lit/Host/
    lldb/trunk/lit/Host/Inputs/
    lldb/trunk/lit/Host/Inputs/simple.c
    lldb/trunk/lit/Host/TestCustomShell.test
    lldb/trunk/lit/Minidump/
    lldb/trunk/lit/Minidump/Inputs/
    lldb/trunk/lit/Minidump/Inputs/linux-x86_64.syms
    lldb/trunk/lit/Minidump/Inputs/linux-x86_64.yaml
    lldb/trunk/lit/Minidump/Windows/
    lldb/trunk/lit/Minidump/Windows/Inputs/
    lldb/trunk/lit/Minidump/Windows/Inputs/find-module.dmp.yaml
    lldb/trunk/lit/Minidump/Windows/Inputs/find-module.exe.yaml
    lldb/trunk/lit/Minidump/Windows/Sigsegv/
    lldb/trunk/lit/Minidump/Windows/Sigsegv/Inputs/
    lldb/trunk/lit/Minidump/Windows/Sigsegv/Inputs/sigsegv.cpp
    lldb/trunk/lit/Minidump/Windows/Sigsegv/Inputs/sigsegv.dmp   (with props)
    lldb/trunk/lit/Minidump/Windows/Sigsegv/Inputs/sigsegv.lldbinit
    lldb/trunk/lit/Minidump/Windows/Sigsegv/Inputs/sigsegv.pdb   (with props)
    lldb/trunk/lit/Minidump/Windows/Sigsegv/sigsegv.test
    lldb/trunk/lit/Minidump/Windows/find-module.test
    lldb/trunk/lit/Minidump/breakpad-symbols.test
    lldb/trunk/lit/Minidump/disassemble-no-module.yaml
    lldb/trunk/lit/Minidump/dump-all.test
    lldb/trunk/lit/Minidump/fb-dump.test
    lldb/trunk/lit/Minidump/lit.local.cfg
    lldb/trunk/lit/ObjectFile/
    lldb/trunk/lit/ObjectFile/Breakpad/
    lldb/trunk/lit/ObjectFile/Breakpad/Inputs/
    lldb/trunk/lit/ObjectFile/Breakpad/Inputs/bad-module-id-1.syms
    lldb/trunk/lit/ObjectFile/Breakpad/Inputs/bad-module-id-2.syms
    lldb/trunk/lit/ObjectFile/Breakpad/Inputs/bad-module-id-3.syms
    lldb/trunk/lit/ObjectFile/Breakpad/Inputs/discontiguous-sections.syms
    lldb/trunk/lit/ObjectFile/Breakpad/Inputs/identification-linux.syms
    lldb/trunk/lit/ObjectFile/Breakpad/Inputs/identification-macosx-arm64e.syms
    lldb/trunk/lit/ObjectFile/Breakpad/Inputs/identification-macosx.syms
    lldb/trunk/lit/ObjectFile/Breakpad/Inputs/identification-windows.syms
    lldb/trunk/lit/ObjectFile/Breakpad/Inputs/sections-trailing-func.syms
    lldb/trunk/lit/ObjectFile/Breakpad/Inputs/sections.syms
    lldb/trunk/lit/ObjectFile/Breakpad/Inputs/uuid-matching-mac.syms
    lldb/trunk/lit/ObjectFile/Breakpad/Inputs/uuid-matching-mac.yaml
    lldb/trunk/lit/ObjectFile/Breakpad/breakpad-identification.test
    lldb/trunk/lit/ObjectFile/Breakpad/discontiguous-sections.test
    lldb/trunk/lit/ObjectFile/Breakpad/lit.local.cfg
    lldb/trunk/lit/ObjectFile/Breakpad/sections-trailing-func.test
    lldb/trunk/lit/ObjectFile/Breakpad/sections.test
    lldb/trunk/lit/ObjectFile/Breakpad/uuid-matching-mac.test
    lldb/trunk/lit/ObjectFile/ELF/
    lldb/trunk/lit/ObjectFile/ELF/Inputs/
    lldb/trunk/lit/ObjectFile/ELF/Inputs/PT_LOAD-overlap-section.elf   (with props)
    lldb/trunk/lit/ObjectFile/ELF/Inputs/minidebuginfo-main.c
    lldb/trunk/lit/ObjectFile/ELF/Inputs/netbsd-amd64.core   (with props)
    lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-empty.yaml
    lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-overlap-PT_INTERP.yaml
    lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-overlap-PT_TLS.yaml
    lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-overlap-section.yaml
    lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-overlap.yaml
    lldb/trunk/lit/ObjectFile/ELF/PT_LOAD.yaml
    lldb/trunk/lit/ObjectFile/ELF/PT_TLS-overlap-PT_LOAD.yaml
    lldb/trunk/lit/ObjectFile/ELF/aarch64-relocations.yaml
    lldb/trunk/lit/ObjectFile/ELF/base-address.yaml
    lldb/trunk/lit/ObjectFile/ELF/basic-info.yaml
    lldb/trunk/lit/ObjectFile/ELF/build-id-case.yaml
    lldb/trunk/lit/ObjectFile/ELF/compressed-sections.yaml
    lldb/trunk/lit/ObjectFile/ELF/duplicate-section.yaml
    lldb/trunk/lit/ObjectFile/ELF/gnu-debuglink.yaml
    lldb/trunk/lit/ObjectFile/ELF/many-sections.s
    lldb/trunk/lit/ObjectFile/ELF/minidebuginfo-corrupt-xz.yaml
    lldb/trunk/lit/ObjectFile/ELF/minidebuginfo-find-symbols.yaml
    lldb/trunk/lit/ObjectFile/ELF/minidebuginfo-no-lzma.yaml
    lldb/trunk/lit/ObjectFile/ELF/minidebuginfo-set-and-hit-breakpoint.test
    lldb/trunk/lit/ObjectFile/ELF/netbsd-core-amd64.test
    lldb/trunk/lit/ObjectFile/ELF/netbsd-exec-8.99.30-amd64.yaml
    lldb/trunk/lit/ObjectFile/ELF/section-addresses.yaml
    lldb/trunk/lit/ObjectFile/ELF/section-overlap.yaml
    lldb/trunk/lit/ObjectFile/ELF/section-permissions.yaml
    lldb/trunk/lit/ObjectFile/ELF/section-types-edgecases.yaml
    lldb/trunk/lit/ObjectFile/ELF/section-types.yaml
    lldb/trunk/lit/ObjectFile/ELF/short-build-id.yaml
    lldb/trunk/lit/ObjectFile/MachO/
    lldb/trunk/lit/ObjectFile/MachO/lc_build_version.yaml
    lldb/trunk/lit/ObjectFile/MachO/lc_build_version_notools.yaml
    lldb/trunk/lit/ObjectFile/MachO/lc_version_min.yaml
    lldb/trunk/lit/ObjectFile/MachO/subsections.yaml
    lldb/trunk/lit/ObjectFile/MachO/symtab.yaml
    lldb/trunk/lit/ObjectFile/PECOFF/
    lldb/trunk/lit/ObjectFile/PECOFF/basic-info-arm.yaml
    lldb/trunk/lit/ObjectFile/PECOFF/basic-info-arm64.yaml
    lldb/trunk/lit/ObjectFile/PECOFF/basic-info.yaml
    lldb/trunk/lit/ObjectFile/PECOFF/dep-modules.yaml
    lldb/trunk/lit/ObjectFile/PECOFF/export-dllfunc.yaml
    lldb/trunk/lit/ObjectFile/PECOFF/lit.local.cfg
    lldb/trunk/lit/ObjectFile/PECOFF/sections-names.yaml
    lldb/trunk/lit/ObjectFile/PECOFF/subsections.yaml
    lldb/trunk/lit/ObjectFile/PECOFF/uuid.yaml
    lldb/trunk/lit/ObjectFile/lit.local.cfg
    lldb/trunk/lit/Process/
    lldb/trunk/lit/Process/Inputs/
    lldb/trunk/lit/Process/Inputs/env.cpp
    lldb/trunk/lit/Process/TestEnvironment.test
    lldb/trunk/lit/Process/Windows/
    lldb/trunk/lit/Process/Windows/exception_access_violation.cpp
    lldb/trunk/lit/Python/
    lldb/trunk/lit/Python/crashlog.test
    lldb/trunk/lit/Quit/
    lldb/trunk/lit/Quit/TestQuitExitCode-30.test
    lldb/trunk/lit/Quit/TestQuitExitCode0.test
    lldb/trunk/lit/Quit/TestQuitExitCode30.test
    lldb/trunk/lit/Quit/TestQuitExitCodeHex0.test
    lldb/trunk/lit/Quit/TestQuitExitCodeHexA.test
    lldb/trunk/lit/Quit/TestQuitExitCodeImplicit0.test
    lldb/trunk/lit/Quit/TestQuitExitCodeNonInt.test
    lldb/trunk/lit/Quit/TestQuitExitCodeTooManyArgs.test
    lldb/trunk/lit/Quit/expect_exit_code.py   (with props)
    lldb/trunk/lit/Register/
    lldb/trunk/lit/Register/Inputs/
    lldb/trunk/lit/Register/Inputs/x86-64-gp-read.cpp
    lldb/trunk/lit/Register/Inputs/x86-64-gp-write.cpp
    lldb/trunk/lit/Register/Inputs/x86-64-read.cpp
    lldb/trunk/lit/Register/Inputs/x86-64-write.cpp
    lldb/trunk/lit/Register/Inputs/x86-gp-read.cpp
    lldb/trunk/lit/Register/Inputs/x86-gp-write.cpp
    lldb/trunk/lit/Register/Inputs/x86-mm-xmm-read.cpp
    lldb/trunk/lit/Register/Inputs/x86-mm-xmm-write.cpp
    lldb/trunk/lit/Register/Inputs/x86-ymm-read.cpp
    lldb/trunk/lit/Register/Inputs/x86-ymm-write.cpp
    lldb/trunk/lit/Register/Inputs/x86-zmm-read.cpp
    lldb/trunk/lit/Register/Inputs/x86-zmm-write.cpp
    lldb/trunk/lit/Register/x86-64-gp-read.test
    lldb/trunk/lit/Register/x86-64-gp-write.test
    lldb/trunk/lit/Register/x86-64-read.test
    lldb/trunk/lit/Register/x86-64-write.test
    lldb/trunk/lit/Register/x86-64-xmm16-read.test
    lldb/trunk/lit/Register/x86-64-xmm16-write.test
    lldb/trunk/lit/Register/x86-64-ymm-read.test
    lldb/trunk/lit/Register/x86-64-ymm-write.test
    lldb/trunk/lit/Register/x86-64-ymm16-read.test
    lldb/trunk/lit/Register/x86-64-ymm16-write.test
    lldb/trunk/lit/Register/x86-64-zmm-read.test
    lldb/trunk/lit/Register/x86-64-zmm-write.test
    lldb/trunk/lit/Register/x86-gp-read.test
    lldb/trunk/lit/Register/x86-gp-write.test
    lldb/trunk/lit/Register/x86-mm-xmm-read.test
    lldb/trunk/lit/Register/x86-mm-xmm-write.test
    lldb/trunk/lit/Register/x86-ymm-read.test
    lldb/trunk/lit/Register/x86-ymm-write.test
    lldb/trunk/lit/Register/x86-zmm-read.test
    lldb/trunk/lit/Register/x86-zmm-write.test
    lldb/trunk/lit/Reproducer/
    lldb/trunk/lit/Reproducer/Functionalities/
    lldb/trunk/lit/Reproducer/Functionalities/Inputs/
    lldb/trunk/lit/Reproducer/Functionalities/Inputs/DataFormatter.in
    lldb/trunk/lit/Reproducer/Functionalities/Inputs/foo.cpp
    lldb/trunk/lit/Reproducer/Functionalities/Inputs/stepping.c
    lldb/trunk/lit/Reproducer/Functionalities/TestDataFormatter.test
    lldb/trunk/lit/Reproducer/Functionalities/TestImageList.test
    lldb/trunk/lit/Reproducer/Functionalities/TestStepping.test
    lldb/trunk/lit/Reproducer/Inputs/
    lldb/trunk/lit/Reproducer/Inputs/FileCapture.in
    lldb/trunk/lit/Reproducer/Inputs/GDBRemoteCapture.in
    lldb/trunk/lit/Reproducer/Inputs/simple.c
    lldb/trunk/lit/Reproducer/Modules/
    lldb/trunk/lit/Reproducer/Modules/Inputs/
    lldb/trunk/lit/Reproducer/Modules/Inputs/Bar.h
    lldb/trunk/lit/Reproducer/Modules/Inputs/Foo.h
    lldb/trunk/lit/Reproducer/Modules/Inputs/ModuleCXX.in
    lldb/trunk/lit/Reproducer/Modules/Inputs/main.cpp
    lldb/trunk/lit/Reproducer/Modules/Inputs/module.modulemap
    lldb/trunk/lit/Reproducer/Modules/TestModuleCXX.test
    lldb/trunk/lit/Reproducer/TestDriverOptions.test
    lldb/trunk/lit/Reproducer/TestDump.test
    lldb/trunk/lit/Reproducer/TestFileRepro.test
    lldb/trunk/lit/Reproducer/TestGDBRemoteRepro.test
    lldb/trunk/lit/Reproducer/TestRelativePath.test
    lldb/trunk/lit/Reproducer/TestReuseDirectory.test
    lldb/trunk/lit/Reproducer/TestSynchronous.test
    lldb/trunk/lit/Settings/
    lldb/trunk/lit/Settings/Inputs/
    lldb/trunk/lit/Settings/Inputs/DontStopCommandSource.in
    lldb/trunk/lit/Settings/Inputs/EchoCommandsAll.out
    lldb/trunk/lit/Settings/Inputs/EchoCommandsNoComments.out
    lldb/trunk/lit/Settings/Inputs/EchoCommandsNone.out
    lldb/trunk/lit/Settings/Inputs/EchoCommandsQuiet.out
    lldb/trunk/lit/Settings/Inputs/EchoCommandsTest.in
    lldb/trunk/lit/Settings/Inputs/StopCommandSource.in
    lldb/trunk/lit/Settings/Inputs/main.c
    lldb/trunk/lit/Settings/TestDisableColor.test
    lldb/trunk/lit/Settings/TestDisassemblyFormat.test
    lldb/trunk/lit/Settings/TestEchoCommands.test
    lldb/trunk/lit/Settings/TestFrameFormatColor.test
    lldb/trunk/lit/Settings/TestFrameFormatNoColor.test
    lldb/trunk/lit/Settings/TestModuleCacheSanity.test
    lldb/trunk/lit/Settings/TestSettingsSet.test
    lldb/trunk/lit/Settings/TestSettingsWrite.test
    lldb/trunk/lit/Settings/TestStopCommandSourceOnError.test
    lldb/trunk/lit/Suite/
    lldb/trunk/lit/Suite/lit.cfg
    lldb/trunk/lit/Suite/lit.site.cfg.in
    lldb/trunk/lit/Suite/lldbtest.py
    lldb/trunk/lit/SymbolFile/
    lldb/trunk/lit/SymbolFile/Breakpad/
    lldb/trunk/lit/SymbolFile/Breakpad/Inputs/
    lldb/trunk/lit/SymbolFile/Breakpad/Inputs/basic-elf.yaml
    lldb/trunk/lit/SymbolFile/Breakpad/Inputs/basic-macho.yaml
    lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table-discontinuous-file-ids.syms
    lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table-edgecases.syms
    lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table-missing-file.syms
    lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table-mixed-path-styles.syms
    lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table.syms
    lldb/trunk/lit/SymbolFile/Breakpad/Inputs/stack-cfi-parsing.syms
    lldb/trunk/lit/SymbolFile/Breakpad/Inputs/stack-cfi-parsing.yaml
    lldb/trunk/lit/SymbolFile/Breakpad/Inputs/symtab-macho.syms
    lldb/trunk/lit/SymbolFile/Breakpad/Inputs/symtab.syms
    lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-raSearch.syms
    lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-stack-cfi.syms
    lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-stack-cfi.yaml
    lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-stack-win.syms
    lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-stack-win.yaml
    lldb/trunk/lit/SymbolFile/Breakpad/line-table-discontinuous-file-ids.test
    lldb/trunk/lit/SymbolFile/Breakpad/line-table-edgecases.test
    lldb/trunk/lit/SymbolFile/Breakpad/line-table-missing-file.test
    lldb/trunk/lit/SymbolFile/Breakpad/line-table-mixed-path-styles.test
    lldb/trunk/lit/SymbolFile/Breakpad/line-table.test
    lldb/trunk/lit/SymbolFile/Breakpad/stack-cfi-parsing.test
    lldb/trunk/lit/SymbolFile/Breakpad/symtab-macho.test
    lldb/trunk/lit/SymbolFile/Breakpad/symtab.test
    lldb/trunk/lit/SymbolFile/Breakpad/unwind-via-raSearch.test
    lldb/trunk/lit/SymbolFile/Breakpad/unwind-via-stack-cfi.test
    lldb/trunk/lit/SymbolFile/Breakpad/unwind-via-stack-win.test
    lldb/trunk/lit/SymbolFile/DWARF/
    lldb/trunk/lit/SymbolFile/DWARF/Inputs/
    lldb/trunk/lit/SymbolFile/DWARF/Inputs/debug-line-basic.script
    lldb/trunk/lit/SymbolFile/DWARF/Inputs/debug-types-basic.cpp
    lldb/trunk/lit/SymbolFile/DWARF/Inputs/debug-types-expressions.cpp
    lldb/trunk/lit/SymbolFile/DWARF/Inputs/dir-separator-no-comp-dir-relative-name.lldbinit
    lldb/trunk/lit/SymbolFile/DWARF/Inputs/dir-separator-posix.lldbinit
    lldb/trunk/lit/SymbolFile/DWARF/Inputs/dir-separator-windows.lldbinit
    lldb/trunk/lit/SymbolFile/DWARF/Inputs/find-variable-file-2.cpp
    lldb/trunk/lit/SymbolFile/DWARF/apple-index-is-used.cpp
    lldb/trunk/lit/SymbolFile/DWARF/array-sizes.s
    lldb/trunk/lit/SymbolFile/DWARF/childless-compile-unit.s
    lldb/trunk/lit/SymbolFile/DWARF/compilercontext.ll
    lldb/trunk/lit/SymbolFile/DWARF/debug-line-basic.s
    lldb/trunk/lit/SymbolFile/DWARF/debug-names-compressed.cpp
    lldb/trunk/lit/SymbolFile/DWARF/debug-types-address-ranges.s
    lldb/trunk/lit/SymbolFile/DWARF/debug-types-basic.test
    lldb/trunk/lit/SymbolFile/DWARF/debug-types-dwarf5.s
    lldb/trunk/lit/SymbolFile/DWARF/debug-types-dwo-cross-reference.cpp
    lldb/trunk/lit/SymbolFile/DWARF/debug-types-expressions.test
    lldb/trunk/lit/SymbolFile/DWARF/debug-types-line-tables.s
    lldb/trunk/lit/SymbolFile/DWARF/debug-types-missing-signature.test
    lldb/trunk/lit/SymbolFile/DWARF/debug-types-signature-loop.s
    lldb/trunk/lit/SymbolFile/DWARF/debug_aranges-empty-section.s
    lldb/trunk/lit/SymbolFile/DWARF/debug_loc.s
    lldb/trunk/lit/SymbolFile/DWARF/debug_ranges-missing-section.s
    lldb/trunk/lit/SymbolFile/DWARF/debug_ranges.s
    lldb/trunk/lit/SymbolFile/DWARF/debug_ranges_and_rnglists.test
    lldb/trunk/lit/SymbolFile/DWARF/debug_rnglists.s
    lldb/trunk/lit/SymbolFile/DWARF/deterministic-build.cpp
    lldb/trunk/lit/SymbolFile/DWARF/dir-separator-no-comp-dir-relative-name.s
    lldb/trunk/lit/SymbolFile/DWARF/dir-separator-no-comp-dir.s
    lldb/trunk/lit/SymbolFile/DWARF/dir-separator-posix.s
    lldb/trunk/lit/SymbolFile/DWARF/dir-separator-windows.s
    lldb/trunk/lit/SymbolFile/DWARF/dwarf5-index-is-used.cpp
    lldb/trunk/lit/SymbolFile/DWARF/dwarf5-partial-index.cpp
    lldb/trunk/lit/SymbolFile/DWARF/dwarf5_locations.s
    lldb/trunk/lit/SymbolFile/DWARF/find-basic-function.cpp
    lldb/trunk/lit/SymbolFile/DWARF/find-basic-namespace.cpp
    lldb/trunk/lit/SymbolFile/DWARF/find-basic-type.cpp
    lldb/trunk/lit/SymbolFile/DWARF/find-basic-variable.cpp
    lldb/trunk/lit/SymbolFile/DWARF/find-function-regex.cpp
    lldb/trunk/lit/SymbolFile/DWARF/find-inline-method.s
    lldb/trunk/lit/SymbolFile/DWARF/find-method-local-struct.cpp
    lldb/trunk/lit/SymbolFile/DWARF/find-method.cpp
    lldb/trunk/lit/SymbolFile/DWARF/find-qualified-variable.cpp
    lldb/trunk/lit/SymbolFile/DWARF/find-type-in-function.cpp
    lldb/trunk/lit/SymbolFile/DWARF/find-variable-dwo.cpp
    lldb/trunk/lit/SymbolFile/DWARF/find-variable-file.cpp
    lldb/trunk/lit/SymbolFile/DWARF/forward-declarations.s
    lldb/trunk/lit/SymbolFile/DWARF/gnu-style-compression.cpp
    lldb/trunk/lit/SymbolFile/DWARF/lit.local.cfg
    lldb/trunk/lit/SymbolFile/DWARF/parallel-indexing-stress.s
    lldb/trunk/lit/SymbolFile/DWARF/split-dwarf-inlining.cpp
    lldb/trunk/lit/SymbolFile/DWARF/split-dwarf-multiple-cu.ll
    lldb/trunk/lit/SymbolFile/Inputs/
    lldb/trunk/lit/SymbolFile/Inputs/sizeless-symbol.s
    lldb/trunk/lit/SymbolFile/Inputs/target-symbols-add-unwind.c
    lldb/trunk/lit/SymbolFile/NativePDB/
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/ast-functions.lldbinit
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/ast-methods.lldbinit
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/ast-types.lldbinit
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/bitfields.lldbinit
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/break-by-function.lldbinit
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/break-by-line.lldbinit
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/disassembly.lldbinit
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/function-types-builtins.lldbinit
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/function-types-calling-conv.lldbinit
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/function-types-classes.lldbinit
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/globals-bss.lldbinit
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/globals-classes.lldbinit
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/globals-fundamental.lldbinit
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/local-variables.lldbinit
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/nested-types.lldbinit
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/s_constant.lldbinit
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/s_constant.s
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/source-list.lldbinit
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/stack_unwinding01.lldbinit
    lldb/trunk/lit/SymbolFile/NativePDB/Inputs/tag-types.lldbinit
    lldb/trunk/lit/SymbolFile/NativePDB/ast-functions-msvc.cpp
    lldb/trunk/lit/SymbolFile/NativePDB/ast-functions.cpp
    lldb/trunk/lit/SymbolFile/NativePDB/ast-methods.cpp
    lldb/trunk/lit/SymbolFile/NativePDB/ast-types.cpp
    lldb/trunk/lit/SymbolFile/NativePDB/bitfields.cpp
    lldb/trunk/lit/SymbolFile/NativePDB/break-by-function.cpp
    lldb/trunk/lit/SymbolFile/NativePDB/break-by-line.cpp
    lldb/trunk/lit/SymbolFile/NativePDB/disassembly.cpp
    lldb/trunk/lit/SymbolFile/NativePDB/function-types-builtins.cpp
    lldb/trunk/lit/SymbolFile/NativePDB/function-types-calling-conv.cpp
    lldb/trunk/lit/SymbolFile/NativePDB/function-types-classes.cpp
    lldb/trunk/lit/SymbolFile/NativePDB/global-classes.cpp
    lldb/trunk/lit/SymbolFile/NativePDB/globals-bss.cpp
    lldb/trunk/lit/SymbolFile/NativePDB/globals-fundamental.cpp
    lldb/trunk/lit/SymbolFile/NativePDB/local-variables.cpp
    lldb/trunk/lit/SymbolFile/NativePDB/nested-types.cpp
    lldb/trunk/lit/SymbolFile/NativePDB/s_constant.cpp
    lldb/trunk/lit/SymbolFile/NativePDB/source-list.cpp
    lldb/trunk/lit/SymbolFile/NativePDB/stack_unwinding01.cpp
    lldb/trunk/lit/SymbolFile/NativePDB/tag-types.cpp
    lldb/trunk/lit/SymbolFile/NativePDB/typedefs.cpp
    lldb/trunk/lit/SymbolFile/PDB/
    lldb/trunk/lit/SymbolFile/PDB/Inputs/
    lldb/trunk/lit/SymbolFile/PDB/Inputs/AstRestoreTest.cpp
    lldb/trunk/lit/SymbolFile/PDB/Inputs/CallingConventionsTest.cpp
    lldb/trunk/lit/SymbolFile/PDB/Inputs/ClassLayoutTest.cpp
    lldb/trunk/lit/SymbolFile/PDB/Inputs/CompilandsTest.cpp
    lldb/trunk/lit/SymbolFile/PDB/Inputs/ExpressionsTest.cpp
    lldb/trunk/lit/SymbolFile/PDB/Inputs/ExpressionsTest0.script
    lldb/trunk/lit/SymbolFile/PDB/Inputs/ExpressionsTest1.script
    lldb/trunk/lit/SymbolFile/PDB/Inputs/ExpressionsTest2.script
    lldb/trunk/lit/SymbolFile/PDB/Inputs/FuncSymbols.cpp
    lldb/trunk/lit/SymbolFile/PDB/Inputs/FuncSymbolsTestMain.cpp
    lldb/trunk/lit/SymbolFile/PDB/Inputs/FunctionLevelLinkingTest.cpp
    lldb/trunk/lit/SymbolFile/PDB/Inputs/FunctionLevelLinkingTest.h
    lldb/trunk/lit/SymbolFile/PDB/Inputs/FunctionLevelLinkingTest.ord
    lldb/trunk/lit/SymbolFile/PDB/Inputs/FunctionNestedBlockTest.cpp
    lldb/trunk/lit/SymbolFile/PDB/Inputs/PointerTypeTest.cpp
    lldb/trunk/lit/SymbolFile/PDB/Inputs/SimpleTypesTest.cpp
    lldb/trunk/lit/SymbolFile/PDB/Inputs/TypeQualsTest.cpp
    lldb/trunk/lit/SymbolFile/PDB/Inputs/UdtLayoutTest.cpp
    lldb/trunk/lit/SymbolFile/PDB/Inputs/UdtLayoutTest.script
    lldb/trunk/lit/SymbolFile/PDB/Inputs/VBases.cpp
    lldb/trunk/lit/SymbolFile/PDB/Inputs/VBases.script
    lldb/trunk/lit/SymbolFile/PDB/Inputs/VariablesLocationsTest.cpp
    lldb/trunk/lit/SymbolFile/PDB/Inputs/VariablesLocationsTest.script
    lldb/trunk/lit/SymbolFile/PDB/Inputs/VariablesTest.cpp
    lldb/trunk/lit/SymbolFile/PDB/ast-restore.test
    lldb/trunk/lit/SymbolFile/PDB/calling-conventions.test
    lldb/trunk/lit/SymbolFile/PDB/class-layout.test
    lldb/trunk/lit/SymbolFile/PDB/compilands.test
    lldb/trunk/lit/SymbolFile/PDB/enums-layout.test
    lldb/trunk/lit/SymbolFile/PDB/expressions.test
    lldb/trunk/lit/SymbolFile/PDB/func-symbols.test
    lldb/trunk/lit/SymbolFile/PDB/function-level-linking.test
    lldb/trunk/lit/SymbolFile/PDB/function-nested-block.test
    lldb/trunk/lit/SymbolFile/PDB/pointers.test
    lldb/trunk/lit/SymbolFile/PDB/type-quals.test
    lldb/trunk/lit/SymbolFile/PDB/typedefs.test
    lldb/trunk/lit/SymbolFile/PDB/udt-layout.test
    lldb/trunk/lit/SymbolFile/PDB/variables-locations.test
    lldb/trunk/lit/SymbolFile/PDB/variables.test
    lldb/trunk/lit/SymbolFile/PDB/vbases.test
    lldb/trunk/lit/SymbolFile/dissassemble-entry-point.s
    lldb/trunk/lit/SymbolFile/sizeless-symbol.test
    lldb/trunk/lit/SymbolFile/target-symbols-add-unwind.test
    lldb/trunk/lit/Unit/
    lldb/trunk/lit/Unit/lit.cfg.py
    lldb/trunk/lit/Unit/lit.site.cfg.py.in
    lldb/trunk/lit/Unwind/
    lldb/trunk/lit/Unwind/Inputs/
    lldb/trunk/lit/Unwind/Inputs/call-asm.c
    lldb/trunk/lit/Unwind/Inputs/eh-frame-dwarf-unwind.s
    lldb/trunk/lit/Unwind/Inputs/eh-frame-small-fde.s
    lldb/trunk/lit/Unwind/Inputs/prefer-debug-over-eh-frame.s
    lldb/trunk/lit/Unwind/Inputs/trap_frame_sym_ctx.s
    lldb/trunk/lit/Unwind/Inputs/unwind-plan-dwarf-dump.s
    lldb/trunk/lit/Unwind/eh-frame-dwarf-unwind.test
    lldb/trunk/lit/Unwind/eh-frame-small-fde.test
    lldb/trunk/lit/Unwind/prefer-debug-over-eh-frame.test
    lldb/trunk/lit/Unwind/trap_frame_sym_ctx.test
    lldb/trunk/lit/Unwind/unwind-plan-dwarf-dump.test
    lldb/trunk/lit/Watchpoint/
    lldb/trunk/lit/Watchpoint/Inputs/
    lldb/trunk/lit/Watchpoint/Inputs/main.cpp
    lldb/trunk/lit/Watchpoint/SetErrorCases.test
    lldb/trunk/lit/helper/
    lldb/trunk/lit/helper/__init__.py
    lldb/trunk/lit/helper/build.py   (with props)
    lldb/trunk/lit/helper/toolchain.py
    lldb/trunk/lit/lit-lldb-init.in
    lldb/trunk/lit/lit.cfg.py
    lldb/trunk/lit/lit.site.cfg.py.in
    lldb/trunk/test/dotest.py   (with props)
    lldb/trunk/test/testcases   (with props)
    lldb/trunk/test/use_lldb_suite.py
Removed:
    lldb/trunk/test/API/
    lldb/trunk/test/Shell/
    lldb/trunk/test/Unit/
    lldb/trunk/test/lit.cfg.py
Modified:
    lldb/trunk/CMakeLists.txt
    lldb/trunk/test/CMakeLists.txt

Modified: lldb/trunk/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/CMakeLists.txt?rev=374187&r1=374186&r2=374187&view=diff
==============================================================================
--- lldb/trunk/CMakeLists.txt (original)
+++ lldb/trunk/CMakeLists.txt Wed Oct  9 10:35:43 2019
@@ -185,6 +185,7 @@ if(LLDB_INCLUDE_TESTS)
 
   add_subdirectory(test)
   add_subdirectory(unittests)
+  add_subdirectory(lit)
   add_subdirectory(utils/lit-cpuid)
   add_subdirectory(utils/lldb-dotest)
 endif()

Added: lldb/trunk/lit/Breakpoint/Inputs/case-sensitive.c
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/Inputs/case-sensitive.c?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/Inputs/case-sensitive.c (added)
+++ lldb/trunk/lit/Breakpoint/Inputs/case-sensitive.c Wed Oct  9 10:35:43 2019
@@ -0,0 +1,4 @@
+int main() {
+  int x = 47; // REGEX-THIS
+  return x;
+}

Added: lldb/trunk/lit/Breakpoint/Inputs/debug_addrx.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/Inputs/debug_addrx.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/Inputs/debug_addrx.yaml (added)
+++ lldb/trunk/lit/Breakpoint/Inputs/debug_addrx.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,57 @@
+--- !ELF
+FileHeader:      
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x0000000000201000
+Sections:        
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x0000000000201000
+    AddressAlign:    0x0000000000000010
+    Content:         31ED4989D15E4889E24883E4F0505449C7C08011200048C7C11011200048C7C700112000E897010000F4CCCCCCCCCCCC55B810202000483D102020004889E57417B8000000004885C0740D5DBF10202000FFE00F1F4400005DC3660F1F440000BE10202000554881EE102020004889E548C1FE034889F048C1E83F4801C648D1FE7415B8000000004885C0740B5DBF10202000FFE00F1F005DC3660F1F440000803D592F0000007517554889E5E87EFFFFFFC605472F0000015DC30F1F440000F3C30F1F4000662E0F1F840000000000554889E55DEB89CCCCCCCCCCCCCCCCCCC3CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC3CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC31C0C3CCCCCCCCCCCCCCCCCCCCCCCCCC415741564189FF415541544C8D25E61E000055488D2DE61E0000534989F64989D54C29E54883EC0848C1FD03E8430000004885ED742031DB0F1F8400000000004C89EA4C89F64489FF41FF14DC4883C3014839EB75EA4883C4085B5D415C415D415E415FC390662E0F1F840000000000F3C3
+  - Name:            .debug_str_offsets
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         44000000050000006B0000005F0000003A0000000E0000001A0000001E000000930000002E0000001600000067000000050000009A0000008E000000000000006900000095000000
+  - Name:            .debug_str
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         74686973005F5A336261723141005F76707472244100666F6F00696E74005F5F7674626C5F7074725F74797065005F5A4E314133666F6F4576002F686F6D652F756D622F74657374735F323031382F3131326C6C64625F726C657461677300746573742E63630041006100636C616E672076657273696F6E20382E302E3020287472756E6B2033343438333429006D61696E0078006F626A410062617200
+  - Name:            .debug_loc
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         E010200000000000E010200000000000030011009FE010200000000000E1102000000000000500110023019F00000000000000000000000000000000
+  - Name:            .debug_abbrev
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         011101252513050325721710171B25731711015517741700000213011D13360B03250B0B3A0B3B0B0000030D0003254913380B34190000040D00032549133A0B3B0B380B0000052E016E2503253A0B3B0B4C0B4D183C193F191D130000060500491334190000070F0049130000080F00491303250000091500491300000A240003253E0B0B0B00000B2E01111B1206401864137A193B0B471300000C050003254913341900000D3400021703253A0B3B0B491300000E2E01111B120640187A196E2503253A0B3B0B3F1900000F050003253A0B3B0B49130000102E01111B120640187A1903253A0B3B0B49133F19000011340003253A0B3B0B4913000000
+  - Name:            .debug_info
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         C8000000050001080000000001000400010800000000000000020800000000000000000000000C0000000C000000022E000000040910010303035C0000000004066C0000000104080507080105010210002E000000067000000000000761000000086700000005096C0000000A040504072E0000000B000100000001578600000008480000000C0DC60000000D000000000601096C000000000E010100000001570A0B010D0F0E010D2E0000000010020300000001570C01116C000000110F01122E00000000072E00000000
+  - Name:            .debug_rnglists
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         27000000050008000000000007E0102000000000000107F010200000000000010700112000000000000300
+  - Name:            .debug_macinfo
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         '00'
+  - Name:            .debug_addr
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         1C00000005000800E010200000000000F0102000000000000011200000000000
+  - Name:            .debug_line
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         97000000050008004C000000010101FB0E0D00010101010000000100000101011F010000000003011F020F051E02250000000066F622AD4EB40BCEA506478235D9D438250000000066F622AD4EB40BCEA506478235D9D438000902E0102000000000001905010A150201000101000902F010200000000000030C0105010A140201000101000902001120000000000003100105030A170203000101
+  - Name:            .debug_line_str
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         2F686F6D652F756D622F74657374735F323031382F3131326C6C64625F726C657461677300746573742E636300
+Symbols:

Added: lldb/trunk/lit/Breakpoint/Inputs/debug_rnglist_basic.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/Inputs/debug_rnglist_basic.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/Inputs/debug_rnglist_basic.yaml (added)
+++ lldb/trunk/lit/Breakpoint/Inputs/debug_rnglist_basic.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,50 @@
+--- !ELF
+FileHeader:      
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x0000000000400440
+Sections:        
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x0000000000400440
+    AddressAlign:    0x0000000000000010
+    Content:         31ED4989D15E4889E24883E4F0505449C7C0C005400048C7C15005400048C7C730054000E8B7FFFFFFF4660F1F44000055B820204000483D202040004889E57417B8000000004885C0740D5DBF20204000FFE00F1F4400005DC3660F1F440000BE20204000554881EE202040004889E548C1FE034889F048C1E83F4801C648D1FE7415B8000000004885C0740B5DBF20204000FFE00F1F005DC3660F1F440000803D391B0000007517554889E5E87EFFFFFFC605271B0000015DC30F1F440000F3C30F1F4000662E0F1F840000000000554889E55DEB89900F1F840000000000554889E5B8010000005DC30F1F440000554889E54883EC10C745FC00000000E8DCFFFFFF4883C4105DC3660F1F440000415741564189FF415541544C8D25A618000055488D2DA6180000534989F64989D54C29E54883EC0848C1FD03E86FFEFFFF4885ED742031DB0F1F8400000000004C89EA4C89F64489FF41FF14DC4883C3014839EB75EA4883C4085B5D415C415D415E415FC390662E0F1F840000000000F3C3
+  - Name:            .debug_str_offsets
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         200000000500000000000000230000002C0000005D00000065000000690000006D000000
+  - Name:            .debug_str
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         636C616E672076657273696F6E20382E302E3020287472756E6B203334333438372900746573742E637070002F686F6D652F756D622F74657374735F323031382F313033726E676C697374732F6C6C64622F63726561746574657374005F5A337A656476007A656400696E74006D61696E00
+  - Name:            .debug_abbrev
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         011101252513050325721710171B251101551774170000022E001101120640186E2503253A0B3B0B49133F190000032E0011011206401803253A0B3B0B49133F19000004240003253E0B0B0B000000
+  - Name:            .debug_info
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         580000000500010800000000010004000108000000000000000200000000000000000C0000000C0000000220054000000000000B000000015603040101570000000330054000000000001A0000000156060105570000000405050400
+  - Name:            .debug_rnglists
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         1D00000005000800000000000720054000000000000B0730054000000000001A00
+  - Name:            .debug_macinfo
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         '00'
+  - Name:            .debug_line
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         82000000050008004C000000010101FB0E0D00010101010000000100000101011F010000000003011F020F051E023100000000F7B7492A97F18E69F7EC76B19E9024873100000000F7B7492A97F18E69F7EC76B19E90248700090220054000000000000105020A4B020700010100090230054000000000001605090AE5050206580206000101
+  - Name:            .debug_line_str
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         2F686F6D652F756D622F74657374735F323031382F313033726E676C697374732F6C6C64622F6372656174657465737400746573742E63707000
+Symbols:         
+...

Added: lldb/trunk/lit/Breakpoint/Inputs/debug_rnglist_offset_pair.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/Inputs/debug_rnglist_offset_pair.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/Inputs/debug_rnglist_offset_pair.yaml (added)
+++ lldb/trunk/lit/Breakpoint/Inputs/debug_rnglist_offset_pair.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,53 @@
+--- !ELF
+FileHeader:      
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x0000000000400440
+Sections:
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x0000000000400440
+    AddressAlign:    0x0000000000000010
+    Content:         31ED4989D15E4889E24883E4F0505449C7C0C005400048C7C15005400048C7C740054000E8B7FFFFFFF4660F1F44000055B820204000483D202040004889E57417B8000000004885C0740D5DBF20204000FFE00F1F4400005DC3660F1F440000BE20204000554881EE202040004889E548C1FE034889F048C1E83F4801C648D1FE7415B8000000004885C0740B5DBF20204000FFE00F1F005DC3660F1F440000803D391B0000007517554889E5E87EFFFFFFC605271B0000015DC30F1F440000F3C30F1F4000662E0F1F840000000000554889E55DEB89660F1F840000000000B9020000008B05F91A00000F1F44000021F883C1FF75F98905E71A0000C3669050BF01000000E8D5FFFFFF31C059C390415741564189FF415541544C8D25A618000055488D2DA6180000534989F64989D54C29E54883EC0848C1FD03E86FFEFFFF4885ED742031DB0F1F8400000000004C89EA4C89F64489FF41FF14DC4883C3014839EB75EA4883C4085B5D415C415D415E415FC390662E0F1F840000000000F3C3
+  - Name:            .debug_str_offsets
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         300000000500000000000000230000002C0000004F00000051000000550000005D0000006100000066000000680000006A000000
+  - Name:            .debug_str
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         636C616E672076657273696F6E20382E302E3020287472756E6B203334343033352900746573742E637070002F686F6D652F756D622F74657374735F323031382F3130365F726E676C6973747332004300696E74005F5A33666F6F6900666F6F006D61696E00500049005700
+  - Name:            .debug_loc
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         05000000000000001000000000000000030011009F00000000000000000000000000000000
+  - Name:            .debug_abbrev
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         011101252513050325721710171B251101120674170000023400032549133F193A0B3B0B0218000003240003253E0B0B0B0000042E011101120640187A196E2503253A0B3B0B3F190000050500021803253A0B3B0B49130000060B01110112060000073400021703253A0B3B0B49130000080B015517000009340003253A0B3B0B491300000A2E011101120640187A1903253A0B3B0B49133F1900000B48007F137D0100000C0F004913000000
+  - Name:            .debug_info
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         AC0000000500010800000000010004000108000000000000000220054000000000002F0000000C00000002033C000000010309032420400000000000030405040420054000000000001E0000000157050601040501550801043C0000000625054000000000001800000007000000000901063C000000080C000000090A0107AA0000000000000A40054000000000000F000000015707010E3C0000000B400000004B05400000000000000C3C00000000
+  - Name:            .debug_rnglists
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         18000000050008000000000005200540000000000004051204171D00
+  - Name:            .debug_macinfo
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         '00'
+  - Name:            .debug_line
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         7F000000050008004C000000010101FB0E0D00010101010000000100000101011F010000000003011F020F051E0223000000003D8C80E874CE6D5F1FC4A6544BE9D5B323000000003D8C80E874CE6D5F1FC4A6544BE9D5B300090220054000000000001605080A5B0515C60503063C0508063005016805004105030A21A00204000101
+  - Name:            .debug_line_str
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         2F686F6D652F756D622F74657374735F323031382F3130365F726E676C697374733200746573742E63707000
+Symbols:         

Added: lldb/trunk/lit/Breakpoint/Inputs/debug_rnglist_rlestartend.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/Inputs/debug_rnglist_rlestartend.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/Inputs/debug_rnglist_rlestartend.yaml (added)
+++ lldb/trunk/lit/Breakpoint/Inputs/debug_rnglist_rlestartend.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,49 @@
+--- !ELF
+FileHeader:      
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x0000000000201000
+Sections:
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x0000000000201000
+    AddressAlign:    0x0000000000000010
+    Content:         31ED4989D15E4889E24883E4F0505449C7C08011200048C7C11011200048C7C7F0102000E897010000F4CCCCCCCCCCCC55B810202000483D102020004889E57417B8000000004885C0740D5DBF10202000FFE00F1F4400005DC3660F1F440000BE10202000554881EE102020004889E548C1FE034889F048C1E83F4801C648D1FE7415B8000000004885C0740B5DBF10202000FFE00F1F005DC3660F1F440000803D592F0000007517554889E5E87EFFFFFFC605472F0000015DC30F1F440000F3C30F1F4000662E0F1F840000000000554889E55DEB89CCCCCCCCCCCCCCCCCC554889E5B8010000005DC3CCCCCCCCCC554889E54883EC10C745FC00000000E8DCFFFFFF4883C4105DC3CCCCCCCCCCCC415741564189FF415541544C8D25E61E000055488D2DE61E0000534989F64989D54C29E54883EC0848C1FD03E8430000004885ED742031DB0F1F8400000000004C89EA4C89F64489FF41FF14DC4883C3014839EB75EA4883C4085B5D415C415D415E415FC390662E0F1F840000000000F3C3
+  - Name:            .debug_str_offsets
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         2000000005000000040000002B0000003900000062000000270000000000000034000000
+  - Name:            .debug_str
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         696E7400636C616E672076657273696F6E20382E302E3020287472756E6B2033343430333529007A656400746573742E637070006D61696E002F686F6D652F756D622F74657374735F323031382F3130375F726E676C6973747374617274656E64005F5A337A65647600
+  - Name:            .debug_abbrev
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         011101252513050325721710171B251101551774170000022E001101120640186E2503253A0B3B0B49133F190000032E0011011206401803253A0B3B0B49133F19000004240003253E0B0B0B000000
+  - Name:            .debug_info
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         580000000500010800000000010004000108000000000000000200000000000000000C0000000C00000002E0102000000000000B0000000156030401015700000003F0102000000000001A0000000156060105570000000405050400
+  - Name:            .debug_rnglists
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         2B000000050008000000000006E010200000000000EB1020000000000006F0102000000000000A1120000000000000
+  - Name:            .debug_macinfo
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         '00'
+  - Name:            .debug_line
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         82000000050008004C000000010101FB0E0D00010101010000000100000101011F010900000003011F020F051E020000000000C404455D157064301CF8C713A4AC4CEE0000000000C404455D157064301CF8C713A4AC4CEE000902E0102000000000000105030A4B0207000101000902F01020000000000016050A0AE5050306580206000101
+  - Name:            .debug_line_str
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         746573742E637070002F686F6D652F756D622F74657374735F323031382F3130375F726E676C6973747374617274656E6400
+Symbols:

Added: lldb/trunk/lit/Breakpoint/Inputs/debug_rnglistx_rlex.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/Inputs/debug_rnglistx_rlex.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/Inputs/debug_rnglistx_rlex.yaml (added)
+++ lldb/trunk/lit/Breakpoint/Inputs/debug_rnglistx_rlex.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,57 @@
+--- !ELF
+FileHeader:      
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x0000000000201000
+Sections:        
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x0000000000201000
+    AddressAlign:    0x0000000000000010
+    Content:         31ED4989D15E4889E24883E4F0505449C7C08011200048C7C11011200048C7C700112000E897010000F4CCCCCCCCCCCC55B810202000483D102020004889E57417B8000000004885C0740D5DBF10202000FFE00F1F4400005DC3660F1F440000BE10202000554881EE102020004889E548C1FE034889F048C1E83F4801C648D1FE7415B8000000004885C0740B5DBF10202000FFE00F1F005DC3660F1F440000803D592F0000007517554889E5E87EFFFFFFC605472F0000015DC30F1F440000F3C30F1F4000662E0F1F840000000000554889E55DEB89CCCCCCCCCCCCCCCCCCC3CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC3CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC31C0C3CCCCCCCCCCCCCCCCCCCCCCCCCC415741564189FF415541544C8D25E61E000055488D2DE61E0000534989F64989D54C29E54883EC0848C1FD03E8430000004885ED742031DB0F1F8400000000004C89EA4C89F64489FF41FF14DC4883C3014839EB75EA4883C4085B5D415C415D415E415FC390662E0F1F840000000000F3C3
+  - Name:            .debug_str_offsets
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         28000000050000003000000067000000000000002800000076000000240000006F0000007400000022000000
+  - Name:            .debug_str
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         2F686F6D652F756D622F74657374735F323031382F3131345F726E676C69737473007900696E74005F5A336261726900636C616E672076657273696F6E20382E302E3020287472756E6B203334353639392920286C6C766D2F7472756E6B203334353530362900746573742E6363006D61696E00780062617200
+  - Name:            .debug_loclists
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         '15000000050008000000000003000301005503020101005000'
+  - Name:            .debug_abbrev
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         011101252513050325721710171B2573171101552374178C01170000022E01111B120640187A196E2503253A0B3B0B49133F190000030500021703253A0B3B0B49130000042E01111B120640187A1903253A0B3B0B49133F1900000534001C0D03253A0B3B0B4913000006240003253E0B0B0B000000
+  - Name:            .debug_info
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         6600000005000108000000000100040001080000000000000002080000000000000000000000000C0000000C00000002000400000001570304010365000000030C0000000701036500000000040106000000015706010765000000050108010865000000000605050400
+  - Name:            .debug_rnglists
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         '1300000005000800010000000400000003000403010600'
+  - Name:            .debug_macinfo
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         '00'
+  - Name:            .debug_addr
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         1C00000005000800E010200000000000F010200000000000E310200000000000
+  - Name:            .debug_line
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         82000000050008004C000000010101FB0E0D00010101010000000100000101011F010000000003011F020F051E022200000000FC42F1EAF1396417A8FBE442FBADC7032200000000FC42F1EAF1396417A8FBE442FBADC703000902E01020000000000014050B0A130504063C0201000101000902F0102000000000001805030A140206000101
+  - Name:            .debug_line_str
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         2F686F6D652F756D622F74657374735F323031382F3131345F726E676C6973747300746573742E636300
+Symbols:

Added: lldb/trunk/lit/Breakpoint/Inputs/implicit_const_form_support.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/Inputs/implicit_const_form_support.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/Inputs/implicit_const_form_support.yaml (added)
+++ lldb/trunk/lit/Breakpoint/Inputs/implicit_const_form_support.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,41 @@
+--- !ELF
+FileHeader:
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x00000000004004A0
+Sections:
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x00000000004004A0
+    AddressAlign:    0x0000000000000010
+    Content:         31ED4989D15E4889E24883E4F0505449C7C01006400048C7C1A005400048C7C77E054000E8B7FFFFFFF4660F1F440000B820204000483D202040007413B8000000004885C07409BF20204000FFE06690C30F1F440000662E0F1F840000000000BE202040004881EE2020400048C1FE034889F048C1E83F4801C648D1FE7411B8000000004885C07407BF20204000FFE0C30F1F440000662E0F1F840000000000803DD91A0000007517554889E5E87EFFFFFFC605C71A0000015DC30F1F440000C30F1F440000662E0F1F840000000000EB8EB800000000C3B800000000C3554889E5534883EC08E8E6FFFFFF89C3E8E5FFFFFF01D84883C4085B5DC30F1F4000415741564189FF415541544C8D251618000055488D2D16180000534989F64989D54C29E54883EC0848C1FD03E877FEFFFF4885ED742031DB0F1F8400000000004C89EA4C89F64489FF41FF14DC4883C3014839EB75EA4883C4085B5D415C415D415E415FC390662E0F1F840000000000F3C3
+  - Name:            .debug_frame
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000008
+    Content:         14000000FFFFFFFF03000178100C0708900100000000000014000000000000007205400000000000060000000000000014000000000000007805400000000000060000000000000034000000000000007E054000000000001E0000000000000004010000000E10860204030000000D060405000000830304140000000C070800
+  - Name:            .debug_info
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         900000000500010800000000023A00000021310000000000000072054000000000002A0000000000000000000000039A0000000109054C0000007E054000000000001E00000000000000019C040405696E7400012C000000059F0000004C00000078054000000000000600000000000000019C018C00000001910000004C00000072054000000000000600000000000000019C00
+  - Name:            .debug_abbrev
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         012E003F19030E3A21013B0B3921056E0E49131101120740187A190000021101250E130B030E1B0E1101120710170000032E003F19030E3A0B3B0B390B49131101120740187C1900000424000B0B3E0B0308000000
+  - Name:            .debug_aranges
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         2C00000002000000000008000000000072054000000000002A0000000000000000000000000000000000000000000000
+  - Name:            .debug_line
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         5600000002001F0000000101FB0E0D00010101010000000100000100746573742E6370700000000000050C000902720540000000000001050913050159050C22050913050159050C22050D9105167405175805012F0207000101
+  - Name:            .debug_str
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         2F686F6D652F756D622F74657374735F323031382F3130315F696D706C696369745F636F6E73742F6E657700666F6F3200746573742E63707000474E5520432B2B313420382E302E3120323031383033313920286578706572696D656E74616C29202D6D74756E653D67656E65726963202D6D617263683D7838362D3634202D67202D6764776172662D3500666F6F31005F5A34666F6F3176006D61696E005F5A34666F6F327600
+Symbols:
+...

Added: lldb/trunk/lit/Breakpoint/Inputs/jitbp.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/Inputs/jitbp.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/Inputs/jitbp.cpp (added)
+++ lldb/trunk/lit/Breakpoint/Inputs/jitbp.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,2 @@
+int jitbp() { return 0; }
+int main() { return jitbp(); }

Added: lldb/trunk/lit/Breakpoint/Inputs/ppc64-localentry.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/Inputs/ppc64-localentry.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/Inputs/ppc64-localentry.s (added)
+++ lldb/trunk/lit/Breakpoint/Inputs/ppc64-localentry.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,55 @@
+	.text
+	.abiversion 2
+
+	.globl	lfunc
+	.p2align	4
+	.type	lfunc, at function
+lfunc:                                  # @lfunc
+.Lfunc_begin0:
+.Lfunc_gep0:
+	addis 2, 12, .TOC.-.Lfunc_gep0 at ha
+	addi 2, 2, .TOC.-.Lfunc_gep0 at l
+.Lfunc_lep0:
+	.localentry	lfunc, .Lfunc_lep0-.Lfunc_gep0
+# BB#0:
+	mr 4, 3
+	addis 3, 2, .LC0 at toc@ha
+	ld 3, .LC0 at toc@l(3)
+	stw 4, -12(1)
+	lwz 4, 0(3)
+	lwz 5, -12(1)
+	mullw 4, 4, 5
+	extsw 3, 4
+	blr
+	.long	0
+	.quad	0
+.Lfunc_end0:
+	.size	lfunc, .Lfunc_end0-.Lfunc_begin0
+
+	.globl	simple
+	.p2align	4
+	.type	simple, at function
+simple:                                 # @simple
+.Lfunc_begin1:
+# %bb.0:                                # %entry
+	mr 4, 3
+	stw 4, -12(1)
+	lwz 4, -12(1)
+	mulli 4, 4, 10
+	extsw 3, 4
+	blr
+	.long	0
+	.quad	0
+.Lfunc_end1:
+	.size	simple, .Lfunc_end1-.Lfunc_begin1
+
+	.section	.toc,"aw", at progbits
+.LC0:
+	.tc g_foo[TC],g_foo
+	.type	g_foo, at object           # @g_foo
+	.data
+	.globl	g_foo
+	.p2align	2
+g_foo:
+	.long	2                       # 0x2
+	.size	g_foo, 4

Added: lldb/trunk/lit/Breakpoint/Inputs/single-file-split-dwarf.o.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/Inputs/single-file-split-dwarf.o.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/Inputs/single-file-split-dwarf.o.yaml (added)
+++ lldb/trunk/lit/Breakpoint/Inputs/single-file-split-dwarf.o.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,84 @@
+--- !ELF
+FileHeader:      
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_REL
+  Machine:         EM_X86_64
+Sections:        
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    AddressAlign:    0x0000000000000010
+    Content:         554889E531C0C745FC000000005DC390554889E55DC3
+  - Name:            .debug_str_offsets
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         0C000000050000000000000000000000
+  - Name:            .debug_str
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         746573742E6F002F686F6D652F756D622F74657374735F323031382F39355F6C6C64622F726570726F2F6477617266355F73706C69745F73696E676C655F66696C652F707265706172655F73616D706C65006D61696E00666F6F005F5A33666F6F7600696E7400
+  - Name:            .debug_loc.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE ]
+    AddressAlign:    0x0000000000000001
+    Content:         ''
+  - Name:            .debug_abbrev
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         01110010177217B042251B25B44219B3421711011206000000
+  - Name:            .debug_info
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         2B00000005000408000000003F4B7684A29835B9010000000000000000000100000000000000000000000016000000
+  - Name:            .debug_macinfo
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         '00'
+  - Name:            .debug_str_offsets.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE ]
+    AddressAlign:    0x0000000000000001
+    Content:         200000000500000000000000070000002A00000033000000380000003C00000044000000
+  - Name:            .debug_str.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE, SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         746573742E6F00636C616E672076657273696F6E20382E302E3020287472756E6B203334323731382900746573742E637070006D61696E00696E74005F5A33666F6F7600666F6F00
+  - Name:            .debug_info.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE ]
+    AddressAlign:    0x0000000000000001
+    Content:         3600000005000508000000003F4B7684A29835B901000104000202000F0000000156030101350000000301060000000156050601050404050400
+  - Name:            .debug_abbrev.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE ]
+    AddressAlign:    0x0000000000000001
+    Content:         011101B042252525130503250000022E0011813E1206401803253A0B3B0B49133F190000032E0011813E120640186E2503253A0B3B0B3F19000004240003253E0B0B0B000000
+  - Name:            .debug_addr
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         '140000000500080000000000000000000000000000000000'
+  - Name:            .debug_names
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000004
+    Content:         A00000000500000001000000000000000000000004000000040000000D000000080000004C4C564D3037303000000000010000000200000003000000040000003080880B8973880B6A7F9A7C0B3D06B5000000000000000000000000000000000000000009000000120000001B0000002E2E03130000242403130000002435000000000000002E29000000000000002E1A000000000000002E2900000000000000000000
+  - Name:            .debug_gnu_pubnames
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         210000000200000000002F0000002900000030666F6F001A000000306D61696E0000000000
+  - Name:            .debug_gnu_pubtypes
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         170000000200000000002F0000003500000090696E740000000000
+  - Name:            .debug_line
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         70000000050008004C000000010101FB0E0D00010101010000000100000101011F010000000003011F020F051E020000000000FD7C0F2E46BA561F7BDA351B04E677090000000000FD7C0F2E46BA561F7BDA351B04E6770900090200000000000000000105030AC905003F05010A4B0202000101
+  - Name:            .debug_line_str
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         2F686F6D652F756D622F74657374735F323031382F39355F6C6C64622F726570726F2F6477617266355F73706C69745F73696E676C655F66696C652F707265706172655F73616D706C6500746573742E63707000
+...

Added: lldb/trunk/lit/Breakpoint/Inputs/single-file-split-dwarf.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/Inputs/single-file-split-dwarf.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/Inputs/single-file-split-dwarf.yaml (added)
+++ lldb/trunk/lit/Breakpoint/Inputs/single-file-split-dwarf.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,61 @@
+--- !ELF
+FileHeader:      
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x0000000000400440
+Sections:        
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x0000000000400440
+    AddressAlign:    0x0000000000000010
+    Content:         31ED4989D15E4889E24883E4F0505449C7C0B005400048C7C14005400048C7C720054000E8B7FFFFFFF4660F1F44000055B820204000483D202040004889E57417B8000000004885C0740D5DBF20204000FFE00F1F4400005DC3660F1F440000BE20204000554881EE202040004889E548C1FE034889F048C1E83F4801C648D1FE7415B8000000004885C0740B5DBF20204000FFE00F1F005DC3660F1F440000803D391B0000007517554889E5E87EFFFFFFC605271B0000015DC30F1F440000F3C30F1F4000662E0F1F840000000000554889E55DEB89660F1F840000000000554889E531C0C745FC000000005DC390554889E55DC3662E0F1F840000000000415741564189FF415541544C8D25B618000055488D2DB6180000534989F64989D54C29E54883EC0848C1FD03E87FFEFFFF4885ED742031DB0F1F8400000000004C89EA4C89F64489FF41FF14DC4883C3014839EB75EA4883C4085B5D415C415D415E415FC390662E0F1F840000000000F3C3
+  - Name:            .debug_str_offsets
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         0C000000050000000000000007000000
+  - Name:            .debug_str
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         746573742E6F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006D61696E00666F6F005F5A33666F6F7600696E7400
+  - Name:            .debug_abbrev
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         01110010177217B042251B25B44219B3421711011206000000
+  - Name:            .debug_info
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         2B00000005000408000000003F4B7684A29835B9010000000008000000000108000000200540000000000016000000
+  - Name:            .debug_macinfo
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         '00'
+  - Name:            .debug_addr
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         '140000000500080020054000000000003005400000000000'
+  - Name:            .debug_names
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000004
+    Content:         A00000000500000001000000000000000000000004000000040000000D000000080000004C4C564D3037303000000000010000000200000003000000040000003080880B8973880B6A7F9A7C0B3D06B56300000057000000520000005B0000000000000009000000120000001B0000002E2E03130000242403130000002435000000000000002E29000000000000002E1A000000000000002E2900000000000000000000
+  - Name:            .debug_gnu_pubnames
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         210000000200000000002F0000002900000030666F6F001A000000306D61696E0000000000
+  - Name:            .debug_gnu_pubtypes
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         170000000200000000002F0000003500000090696E740000000000
+  - Name:            .debug_line
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         70000000050008004C000000010101FB0E0D00010101010000000100000101011F010000000003011F020F051E024B00000000FD7C0F2E46BA561F7BDA351B04E677094B00000000FD7C0F2E46BA561F7BDA351B04E6770900090220054000000000000105030AC905003F05010A4B0202000101
+  - Name:            .debug_line_str
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000746573742E63707000
+...

Added: lldb/trunk/lit/Breakpoint/Inputs/split-dwarf-5-addrbase.dwo.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/Inputs/split-dwarf-5-addrbase.dwo.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/Inputs/split-dwarf-5-addrbase.dwo.yaml (added)
+++ lldb/trunk/lit/Breakpoint/Inputs/split-dwarf-5-addrbase.dwo.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,33 @@
+--- !ELF
+FileHeader:      
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_REL
+  Machine:         EM_X86_64
+Sections:        
+  - Name:            .debug_loc.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE ]
+    AddressAlign:    0x0000000000000001
+    Content:         ''
+  - Name:            .debug_str_offsets.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE ]
+    AddressAlign:    0x0000000000000001
+    Content:         200000000500000000000000090000002C000000340000003C0000004000000045000000
+  - Name:            .debug_str.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE, SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         746573742E64776F00636C616E672076657273696F6E20382E302E3020287472756E6B203334373239392900746573742E6363005F5A3362617A760062617A006D61696E00696E7400
+  - Name:            .debug_info.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE ]
+    AddressAlign:    0x0000000000000001
+    Content:         360000000500050800000000E93484C441B7E84A01000104000202000600000001560304010103011C0000000156050104350000000406050400
+  - Name:            .debug_abbrev.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE ]
+    AddressAlign:    0x0000000000000001
+    Content:         011101B042252525130503250000022E00111B120640186E2503253A0B3B0B3F190000032E00111B1206401803253A0B3B0B49133F19000004240003253E0B0B0B000000
+...

Added: lldb/trunk/lit/Breakpoint/Inputs/split-dwarf-5-addrbase.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/Inputs/split-dwarf-5-addrbase.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/Inputs/split-dwarf-5-addrbase.yaml (added)
+++ lldb/trunk/lit/Breakpoint/Inputs/split-dwarf-5-addrbase.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,61 @@
+--- !ELF
+FileHeader:      
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x0000000000400440
+Sections:
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x0000000000400440
+    AddressAlign:    0x0000000000000010
+    Content:         31ED4989D15E4889E24883E4F0505449C7C0C005400048C7C15005400048C7C730054000E8B7FFFFFFF4660F1F44000055B820204000483D202040004889E57417B8000000004885C0740D5DBF20204000FFE00F1F4400005DC3660F1F440000BE20204000554881EE202040004889E548C1FE034889F048C1E83F4801C648D1FE7415B8000000004885C0740B5DBF20204000FFE00F1F005DC3660F1F440000803D391B0000007517554889E5E87EFFFFFFC605271B0000015DC30F1F440000F3C30F1F4000662E0F1F840000000000554889E55DEB89660F1F840000000000554889E55DC3662E0F1F840000000000554889E54883EC10C745FC00000000E8DCFFFFFF31C04883C4105DC30F1F4000415741564189FF415541544C8D25A618000055488D2DA6180000534989F64989D54C29E54883EC0848C1FD03E86FFEFFFF4885ED742031DB0F1F8400000000004C89EA4C89F64489FF41FF14DC4883C3014839EB75EA4883C4085B5D415C415D415E415FC390662E0F1F840000000000F3C3
+  - Name:            .debug_str_offsets
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         0C000000050000000000000009000000
+  - Name:            .debug_str
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         746573742E64776F002F686F6D652F756D622F74657374735F323031382F3132322F69737375652F6477617266355F73706C69740062617A005F5A3362617A76006D61696E00696E7400
+  - Name:            .debug_abbrev
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         01110010177217B042251B25B442197317111B1206000000
+  - Name:            .debug_info
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         240000000500040800000000E93484C441B7E84A010000000008000000000108000000002C000000
+  - Name:            .debug_macinfo
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         '00'
+  - Name:            .debug_addr
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         '140000000500080020054000000000003005400000000000'
+  - Name:            .debug_names
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000004
+    Content:         A00000000500000001000000000000000000000004000000040000000D000000080000004C4C564D3037303000000000010000000000000003000000000000003080880B64D103B5C260880B6A7F9A7C460000003900000035000000410000000000000009000000120000001B0000002E2E03130000242403130000002435000000000000002E1A000000000000002E1A000000000000002E2600000000000000000000
+  - Name:            .debug_gnu_pubnames
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         210000000200000000002800000026000000306D61696E001A0000003062617A0000000000
+  - Name:            .debug_gnu_pubtypes
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         '17000000020000000000280000003500000090696E740000000000'
+  - Name:            .debug_line
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         71000000050008004C000000010101FB0E0D00010101010000000100000101011F010000000003011F020F051E022C000000004B61BD987753AF9C38389263DC08E24F2C000000004B61BD987753AF9C38389263DC08E24F00090220054000000000000105010A4B0500BC05030AE5750206000101
+  - Name:            .debug_line_str
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         2F686F6D652F756D622F74657374735F323031382F3132322F69737375652F6477617266355F73706C697400746573742E636300
+

Added: lldb/trunk/lit/Breakpoint/Inputs/split-dwarf5-debug-stroffsets-file1.dwo.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/Inputs/split-dwarf5-debug-stroffsets-file1.dwo.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/Inputs/split-dwarf5-debug-stroffsets-file1.dwo.yaml (added)
+++ lldb/trunk/lit/Breakpoint/Inputs/split-dwarf5-debug-stroffsets-file1.dwo.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,38 @@
+--- !ELF
+FileHeader:      
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_REL
+  Machine:         EM_X86_64
+Sections:        
+  - Name:            .debug_loc.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE ]
+    AddressAlign:    0x0000000000000001
+    Content:         ''
+  - Name:            .debug_str_offsets.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE ]
+    AddressAlign:    0x0000000000000001
+    Content:         5C00000005000000000000000A0000002D000000370000004000000050000000520000005A000000600000006200000066000000760000007F000000840000008A0000008F0000009400000096000000990000009C000000A5000000B5000000
+  - Name:            .debug_str.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE, SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         66696C65312E64776F00636C616E672076657273696F6E20382E302E3020287472756E6B20333437323939290066696C65312E637070007E73747275637431005F5A4E37737472756374313166457600660073747275637431005F5A316776006700696E74005F5A4E377374727563743144324576005F5A347465737476007465737400666C6F6174006D61696E00746869730078007331007332007E73747275637432005F5A4E377374727563743231664576007374727563743200
+  - Name:            .debug_info.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE ]
+    AddressAlign:    0x0000000000000001
+    Content:         D900000005000508000000008D03E0CB5B41F18901000104000202000B000000015607080103B400000003040601020104030202054000000000060405020300072A00000008013200000001565800000001070A30000000090291780FBC0000000A000B029174100108B400000000000C02060000000156010B3A00000002030900000001560B0C010DB80000000D046E00000001560E0111B40000000B0291781101152A0000000B029170120116C1000000000E0905040E0D0404072A0000000304150102060413020705D70000000006140502080007C100000000
+  - Name:            .debug_abbrev.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE ]
+    AddressAlign:    0x0000000000000001
+    Content:         011101B042252525130503250000022E00111B120640186E2503253A0B3B0B49133F190000031301360B03250B0B3A0B3B0B0000042E0103253A0B3B0B3C193F190000050500491334190000062E006E2503253A0B3B0B3C193F190000070F0049130000082E01111B1206401864133A0B3B0B6E2547130000090500021803254913341900000A0B01552300000B3400021803253A0B3B0B491300000C2E00111B120640183A0B3B0B471300000D2E01111B1206401803253A0B3B0B49133F1900000E240003253E0B0B0B000000
+  - Name:            .debug_rnglists.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE ]
+    AddressAlign:    0x0000000000000001
+    Content:         150000000500080001000000040000000101040C1F04253200
+...

Added: lldb/trunk/lit/Breakpoint/Inputs/split-dwarf5-debug-stroffsets-file2.dwo.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/Inputs/split-dwarf5-debug-stroffsets-file2.dwo.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/Inputs/split-dwarf5-debug-stroffsets-file2.dwo.yaml (added)
+++ lldb/trunk/lit/Breakpoint/Inputs/split-dwarf5-debug-stroffsets-file2.dwo.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,38 @@
+--- !ELF
+FileHeader:      
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_REL
+  Machine:         EM_X86_64
+Sections:        
+  - Name:            .debug_loc.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE ]
+    AddressAlign:    0x0000000000000001
+    Content:         ''
+  - Name:            .debug_str_offsets.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE ]
+    AddressAlign:    0x0000000000000001
+    Content:         3000000005000000000000000A0000002D000000370000004000000050000000520000005A0000006A0000006F00000071000000
+  - Name:            .debug_str.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE, SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         66696C65322E64776F00636C616E672076657273696F6E20382E302E3020287472756E6B20333437323939290066696C65322E637070007E73747275637432005F5A4E37737472756374323166457600660073747275637432005F5A4E3773747275637432443245760074686973007800696E7400
+  - Name:            .debug_info.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE ]
+    AddressAlign:    0x0000000000000001
+    Content:         740000000500050800000000B90811685AA26A1801000104000202040601020603030207043000000000050405020800061A0000000700320000000156480000000103072000000008029178086E00000009000A0291740901047300000000000B0106000000015601072A000000061A0000000C0A050400
+  - Name:            .debug_abbrev.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE ]
+    AddressAlign:    0x0000000000000001
+    Content:         011101B042252525130503250000021301360B03250B0B3A0B3B0B0000032E0103253A0B3B0B3C193F190000040500491334190000052E006E2503253A0B3B0B3C193F190000060F0049130000072E01111B1206401864133A0B3B0B6E254713000008050002180325491334190000090B01552300000A3400021803253A0B3B0B491300000B2E00111B120640183A0B3B0B471300000C240003253E0B0B0B000000
+  - Name:            .debug_rnglists.dwo
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXCLUDE ]
+    AddressAlign:    0x0000000000000001
+    Content:         150000000500080001000000040000000100040C1F04253200
+...

Added: lldb/trunk/lit/Breakpoint/Inputs/split-dwarf5-debug-stroffsets-main.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/Inputs/split-dwarf5-debug-stroffsets-main.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/Inputs/split-dwarf5-debug-stroffsets-main.yaml (added)
+++ lldb/trunk/lit/Breakpoint/Inputs/split-dwarf5-debug-stroffsets-main.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,70 @@
+--- !ELF
+FileHeader:      
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x0000000000400630
+Sections:
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x0000000000400630
+    AddressAlign:    0x0000000000000010
+    Content:         31ED4989D15E4889E24883E4F0505449C7C0C008400048C7C15008400048C7C790074000E877FFFFFFF4660F1F44000055B840204000483D402040004889E57417B8000000004885C0740D5DBF40204000FFE00F1F4400005DC3660F1F440000BE40204000554881EE402040004889E548C1FE034889F048C1E83F4801C648D1FE7415B8000000004885C0740B5DBF40204000FFE00F1F005DC3660F1F440000803D69190000007517554889E5E87EFFFFFFC60557190000015DC30F1F440000F3C30F1F4000662E0F1F840000000000554889E55DEB89900F1F840000000000554889E5B8010000005DC30F1F440000554889E54883EC2048897DF8E8DFFFFFFF8945F0E9000000008B45F08945F44883C4205DC389D14889C7894DECE80E00000066666666662E0F1F84000000000050E88AFEFFFF48890424E891FEFFFF90554889E55DC3662E0F1F840000000000554889E50F57C05DC30F1F8000000000554889E54883EC20C745FC00000000E8CCFFFFFFE897000000E8D2FFFFFFF30F1145E0E900000000C745FC00000000488D7DF0E838000000488D7DF8E84FFFFFFF8B45FC4883C4205DC389D1488945E8894DE4488D7DF0E814000000488D7DF8E82BFFFFFF488B7DE8E812FEFFFF6690554889E54883EC2048897DF8E8FFFEFFFF8945F0E9000000008B45F08945F44883C4205DC389D14889C7894DECE82EFFFFFF66666666662E0F1F840000000000554889E55DC3662E0F1F840000000000415741564189FF415541544C8D257615000055488D2D76150000534989F64989D54C29E54883EC0848C1FD03E81FFDFFFF4885ED742031DB0F1F8400000000004C89EA4C89F64489FF41FF14DC4883C3014839EB75EA4883C4085B5D415C415D415E415FC390662E0F1F840000000000F3C3
+  - Name:            .eh_frame_hdr
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x0000000000400B1C
+    AddressAlign:    0x0000000000000004
+    Content:         011B033BE8FDFFFF0C000000A4FAFFFF04FFFFFF14FBFFFF44FFFFFFF4FBFFFF04FEFFFF04FCFFFF7CFFFFFF44FCFFFF24FEFFFF54FCFFFF3CFEFFFF64FCFFFF5CFEFFFF74FCFFFFA4FFFFFFE4FCFFFFD4FFFFFF24FDFFFF7CFEFFFF34FDFFFFA4FEFFFFA4FDFFFFECFEFFFF
+  - Name:            .debug_str_offsets
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         0C00000005000000000000000A0000000C000000050000008F0000000A000000
+  - Name:            .debug_str
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         66696C65312E64776F000000000000000000000000000000000000000000000000000000000000000000000000000067005F5A3167760073747275637431007E73747275637431005F5A4E3773747275637431443245760066005F5A4E3773747275637431316645760074657374005F5A347465737476006D61696E00696E7400666C6F617400737472756374320066696C65322E64776F007E73747275637432005F5A4E377374727563743244324576005F5A4E37737472756374323166457600
+  - Name:            .debug_abbrev
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         01110010177217B042251B25B44219731711015523741700000001110010177217B042251B25B442197317110155237417000000
+  - Name:            .debug_info
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         2C00000005000408000000008D03E0CB5B41F1890100000000080000000001080000000000000000000000000C0000002C000000050004081A000000B90811685AA26A1801F4000000180000000001380000000000000000000000002C000000
+  - Name:            .debug_rnglists
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         1C00000005000800010000000400000003000B03013203020603030903046E001300000005000800010000000400000003003203010600
+  - Name:            .debug_macinfo
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         '0000'
+  - Name:            .debug_addr
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         2C0000000500080010074000000000002007400000000000700740000000000080074000000000009007400000000000140000000500080000084000000000004008400000000000
+  - Name:            .debug_names
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000004
+    Content:         84010000050000000100000000000000000000000D0000000D00000013000000080000004C4C564D3037303000000000000000000000000001000000050000000600000007000000000000000800000000000000000000000B0000000C0000000D0000006CDCF90ECAA55B7A6A7F9A7C1B1710AF1C1710AF0BB602000CB602003080880B88F31A59AB8B407A65689E7C798A6A6F9BE1710F3100000048000000780000003700000087000000580000002F0000007D0000006F0000005A0000006A0000003F000000810000000000000009000000120000001B000000240000002D000000360000003F00000048000000510000005A000000630000006C0000002E2E03130000242403130000131303130000002E1A000000000000002E45000000000000002E8E00000000000000132A0000000000000013C1000000000000002E70000000000000002E1A0000000000000024B4000000000000002E7E000000000000002E70000000000000002E7E000000000000002E450000000000000024B800000000000000D800000005000000010000000000000000000000060000000600000013000000080000004C4C564D30373030300000000100000002000000030000000500000006000000000000007A8A6A6F4BBE6D7A3080880B1C1710AF0BB602002CA4527A99000000A20000007D0000008700000058000000B20000000000000009000000120000001B000000240000002D0000002E2E03130000242403130000131303130000002E35000000000000002E3500000000000000247300000000000000131A000000000000002E60000000000000002E6000000000000000000000
+  - Name:            .debug_gnu_pubnames
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         50000000020000000000300000007000000030737472756374313A3A66007E0000003074657374008E000000306D61696E001A0000003067004500000030737472756374313A3A7E73747275637431000000000035000000020030000000300000003500000030737472756374323A3A7E73747275637432006000000030737472756374323A3A660000000000
+  - Name:            .debug_gnu_pubtypes
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         3C000000020000000000300000002A000000107374727563743100B800000090666C6F617400C1000000107374727563743200B400000090696E74000000000024000000020030000000300000001A0000001073747275637432007300000090696E740000000000
+  - Name:            .debug_line
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         F00000000500080065000000010101FB0E0D00010101010000000100000101011F02000000002500000003011F020F051E0327000000004195A4D2AC12B4F174DBFAD42A0CB9B227000000004195A4D2AC12B4F174DBFAD42A0CB9B2310000000193DBF7D5AE9184526D2D968251B49D0200090210074000000000001405030A4B0207000101000902200740000000000018050B0ABB060378C80507440501063D050B65020D0001010009027007400000000000030A0105140A4A02020001010009028007400000000000030C0105020A4B0205000101000902900740000000000003100105030AE5595DE6050175023F000101A30000000500080065000000010101FB0E0D00010101010000000100000101011F02000000002500000003011F020F051E03390000000040CCBAC21BCB1E430C6A1484F8570F05390000000040CCBAC21BCB1E430C6A1484F8570F05310000000193DBF7D5AE9184526D2D968251B49D02000902000840000000000014050B0ABB06C40507400501063D050B65020D00010100090240084000000000001805140A4A0202000101
+  - Name:            .debug_line_str
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Content:         000000000000000000000000000000000000000000000000000000000000000000000000002E0066696C65312E637070006465636C732E680066696C65322E63707000

Added: lldb/trunk/lit/Breakpoint/case-insensitive.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/case-insensitive.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/case-insensitive.test (added)
+++ lldb/trunk/lit/Breakpoint/case-insensitive.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,44 @@
+# REQUIRES: system-windows
+
+# RUN: %build %p/Inputs/case-sensitive.c --nodefaultlib -o %t
+# RUN: lldb-test breakpoints %t %s | FileCheck %s
+
+breakpoint set -f case-sensitive.c -l 3
+# CHECK-LABEL: breakpoint set -f case-sensitive.c -l 3
+# CHECK: At least one location.
+
+breakpoint set -f %p/Inputs/case-sensitive.c -l 3
+# CHECK-LABEL: breakpoint set -f {{.*}}/Inputs/case-sensitive.c -l 3
+# CHECK: At least one location.
+
+breakpoint set -f %p/INPUTS/case-sensitive.c -l 3
+# CHECK-LABEL: breakpoint set -f {{.*}}/INPUTS/case-sensitive.c -l 3
+# CHECK: At least one location.
+
+breakpoint set -f Case-Sensitive.c -l 3
+# CHECK-LABEL: breakpoint set -f Case-Sensitive.c -l 3
+# CHECK: At least one location.
+
+breakpoint set -f %p/INPUTS/Case-Sensitive.c -l 3
+# CHECK-LABEL: breakpoint set -f {{.*}}/INPUTS/Case-Sensitive.c -l 3
+# CHECK: At least one location.
+
+breakpoint set -f case-sensitive.c -p REGEX-THIS
+# CHECK-LABEL: breakpoint set -f case-sensitive.c -p REGEX-THIS
+# CHECK: At least one location.
+
+breakpoint set -f %p/Inputs/case-sensitive.c -p REGEX-THIS
+# CHECK-LABEL: breakpoint set -f {{.*}}/Inputs/case-sensitive.c -p REGEX-THIS
+# CHECK: At least one location.
+
+breakpoint set -f %p/INPUTS/case-sensitive.c -p REGEX-THIS
+# CHECK-LABEL: breakpoint set -f {{.*}}/INPUTS/case-sensitive.c -p REGEX-THIS
+# CHECK: At least one location.
+
+breakpoint set -f Case-Sensitive.c -p REGEX-THIS
+# CHECK-LABEL: breakpoint set -f Case-Sensitive.c -p REGEX-THIS
+# CHECK: At least one location.
+
+breakpoint set -f %p/INPUTS/Case-Sensitive.c -p REGEX-THIS
+# CHECK-LABEL: breakpoint set -f {{.*}}/INPUTS/Case-Sensitive.c -p REGEX-THIS
+# CHECK: At least one location.

Added: lldb/trunk/lit/Breakpoint/case-sensitive.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/case-sensitive.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/case-sensitive.test (added)
+++ lldb/trunk/lit/Breakpoint/case-sensitive.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,46 @@
+# UNSUPPORTED: system-windows
+#
+# RUN: %build %p/Inputs/case-sensitive.c --nodefaultlib -o %t
+# RUN: lldb-test breakpoints %t %s | FileCheck %s
+
+breakpoint set -f case-sensitive.c -l 3
+# CHECK-LABEL: breakpoint set -f case-sensitive.c -l 3
+# CHECK: At least one location.
+
+breakpoint set -f %p/Inputs/case-sensitive.c -l 3
+# CHECK-LABEL: breakpoint set -f {{.*}}/Inputs/case-sensitive.c -l 3
+# CHECK: At least one location.
+
+breakpoint set -f %p/INPUTS/case-sensitive.c -l 3
+# CHECK-LABEL: breakpoint set -f {{.*}}/INPUTS/case-sensitive.c -l 3
+# CHECK: 0 locations.
+
+breakpoint set -f Case-Sensitive.c -l 3
+# CHECK-LABEL: breakpoint set -f Case-Sensitive.c -l 3
+# CHECK: 0 locations.
+
+breakpoint set -f %p/INPUTS/Case-Sensitive.c -l 3
+# CHECK-LABEL: breakpoint set -f {{.*}}/INPUTS/Case-Sensitive.c -l 3
+# CHECK: 0 locations.
+
+breakpoint set -f case-sensitive.c -p REGEX-THIS
+# CHECK-LABEL: breakpoint set -f case-sensitive.c -p REGEX-THIS
+# CHECK: At least one location.
+
+breakpoint set -f %p/Inputs/case-sensitive.c -p REGEX-THIS
+# CHECK-LABEL: breakpoint set -f {{.*}}/Inputs/case-sensitive.c -p REGEX-THIS
+# CHECK: At least one location.
+
+breakpoint set -f %p/INPUTS/case-sensitive.c -p REGEX-THIS
+# CHECK-LABEL: breakpoint set -f {{.*}}/INPUTS/case-sensitive.c -p REGEX-THIS
+# CHECK: 0 locations.
+
+breakpoint set -f Case-Sensitive.c -p REGEX-THIS
+# CHECK-LABEL: breakpoint set -f Case-Sensitive.c -p REGEX-THIS
+# CHECK: 0 locations.
+
+breakpoint set -f %p/INPUTS/Case-Sensitive.c -p REGEX-THIS
+# CHECK-LABEL: breakpoint set -f {{.*}}/INPUTS/Case-Sensitive.c -p REGEX-THIS
+# CHECK: 0 locations.
+
+

Added: lldb/trunk/lit/Breakpoint/debug_addrx.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/debug_addrx.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/debug_addrx.test (added)
+++ lldb/trunk/lit/Breakpoint/debug_addrx.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,30 @@
+# RUN: yaml2obj %p/Inputs/debug_addrx.yaml > %ttest
+# RUN: lldb-test breakpoints %ttest %s | FileCheck %s
+
+# The following code and invocation were used.
+# clang -gdwarf-5 test.cc -o test_v5 -fuse-ld=lld -fno-rtti -O2 -ffunction-sections
+# Then output was converted to yaml and reduced.
+#
+# struct A {
+#   void foo() {};
+# };
+# 
+# void bar(struct A a) {
+#    a.foo();
+# }
+#
+# int main() {
+#  A objA;
+#  bar(objA);
+#
+#  return 0;
+# }
+#
+# clang and LLD versions were 8.0.0 (trunk 344834)
+#
+# Output file contains DW_FORM_addrx forms.
+
+b bar
+
+# CHECK-LABEL: b bar
+# CHECK: Address: {{.*}}`bar(A) at test.cc:15:1

Added: lldb/trunk/lit/Breakpoint/debug_rnglist_basic.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/debug_rnglist_basic.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/debug_rnglist_basic.test (added)
+++ lldb/trunk/lit/Breakpoint/debug_rnglist_basic.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,30 @@
+# RUN: yaml2obj %p/Inputs/debug_rnglist_basic.yaml > %ttest
+# RUN: lldb-test breakpoints %ttest %s | FileCheck %s
+
+# The following code and invocation were used to produce yaml file,
+# which was manually reduced after that.
+# clang -O0 -gdwarf-5 test.cpp -o test -fuse-ld=lld -ffunction-sections
+#
+# //test.cpp:
+# int zed() { 
+#  return 1;
+# }
+#
+# int main() {
+#  return zed();
+# }
+#
+# clang and LLD versions were 8.0.0 (trunk 343487)
+#
+# Output file contains .debug_rnglists section with basic entries:
+# DW_RLE_start_length and DW_RLE_end_of_list.
+# If LLDB would not be able to parse the section and entries correctly,
+# then reported location would be incorrect.
+
+b main
+# CHECK-LABEL: b main
+# CHECK: Address: {{.*}}`main + 15 at test.cpp:6:9
+
+b zed
+# CHECK-LABEL: b zed
+# CHECK: Address: {{.*}}`zed() + 4 at test.cpp:2:2

Added: lldb/trunk/lit/Breakpoint/debug_rnglist_offset_pair.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/debug_rnglist_offset_pair.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/debug_rnglist_offset_pair.test (added)
+++ lldb/trunk/lit/Breakpoint/debug_rnglist_offset_pair.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,33 @@
+# RUN: yaml2obj %p/Inputs/debug_rnglist_offset_pair.yaml > %ttest
+# RUN: lldb-test breakpoints %ttest %s | FileCheck %s
+
+# The following code and invocation were used to produce asm file,
+# which was manually edited to add DW_RLE_base_address entry.
+# clang -S -g -gdwarf-5 -O1 test.cpp -o test.s
+# Then it was compiled and converted to yaml.
+#
+# int C = 0;
+# void foo(int P)
+# {
+#   for (int I = 0; I < 2; ++I) {
+#     int *W = &C; 
+#     *W &= P; 
+#   }
+# }
+# 
+# int main ()
+# {
+#   foo (1);
+#   return 0;
+# }
+#
+# clang and LLD versions were 8.0.0 (trunk 344035)
+#
+# Output file contains .debug_rnglists section with entries:
+# DW_RLE_offset_pair and DW_RLE_base_address.
+
+b foo
+# CHECK-LABEL: b foo
+# CHECK: Address: {{.*}}`foo(int) + 5 at test.cpp:8:8
+
+

Added: lldb/trunk/lit/Breakpoint/debug_rnglist_rlestartend.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/debug_rnglist_rlestartend.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/debug_rnglist_rlestartend.test (added)
+++ lldb/trunk/lit/Breakpoint/debug_rnglist_rlestartend.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,28 @@
+# RUN: yaml2obj %p/Inputs/debug_rnglist_rlestartend.yaml > %ttest
+# RUN: lldb-test breakpoints %ttest %s | FileCheck %s
+
+# Test shows that LDLB is able to handle DW_RLE_start_end entries properly.
+
+# The following code and invocation were used to produce asm file.
+# clang -O0 -gdwarf-5 test.cpp -S -o test.s -fuse-ld=lld -ffunction-sections
+# It was edited to use DW_RLE_start_end, compiled and converted to yaml.
+# The yaml was manually reduced.
+#
+# //test.cpp:
+# int zed() { 
+#  return 1;
+# }
+#
+# int main() {
+#  return zed();
+# }
+#
+# clang and LLD versions were 8.0.0 (trunk 344035)
+
+b main
+# CHECK-LABEL: b main
+# CHECK: Address: {{.*}}`main + 15 at test.cpp:6:10
+
+b zed
+# CHECK-LABEL: b zed
+# CHECK: Address: {{.*}}`zed() + 4 at test.cpp:2:3

Added: lldb/trunk/lit/Breakpoint/debug_rnglistx_rlex.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/debug_rnglistx_rlex.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/debug_rnglistx_rlex.test (added)
+++ lldb/trunk/lit/Breakpoint/debug_rnglistx_rlex.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,28 @@
+# RUN: yaml2obj %p/Inputs/debug_rnglistx_rlex.yaml > %ttest
+# RUN: lldb-test breakpoints %ttest %s | FileCheck %s
+
+# The following code and invocation were used.
+# clang -gdwarf-5 test.cc -o test_v5 -fuse-ld=lld -fno-rtti -O2 -ffunction-sections
+# Then output was converted to yaml and reduced.
+#
+# int bar(int x) {
+#    return ++x;
+# }
+# 
+# int main() {
+#   int y = 1;
+#   return bar(y);
+# }
+#
+# clang and LLD versions were 8.0.0 (trunk 345699)
+#
+# Output file contains DW_FORM_rnglistx and DW_RLE_startx_length.
+
+b bar
+b main
+
+# CHECK-LABEL: b bar
+# CHECK: Address: {{.*}}`bar(int) at test.cc:4:11
+
+# CHECK-LABEL: b main
+# CHECK: Address: {{.*}}`main at test.cc:9:3

Added: lldb/trunk/lit/Breakpoint/implicit_const_form_support.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/implicit_const_form_support.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/implicit_const_form_support.test (added)
+++ lldb/trunk/lit/Breakpoint/implicit_const_form_support.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,33 @@
+# RUN: yaml2obj %p/Inputs/implicit_const_form_support.yaml > %ttest
+# RUN: lldb-test breakpoints %ttest %s | FileCheck %s
+
+## The intention of the test is to check that DW_FORM_implicit_const
+## is supported and handled properly.
+
+## About implicit_const_form_support.yaml:
+## The following invocation and code were used to produce the binary
+## which was converted to yaml and reduced:
+## gcc version 8.0.1 20180319 (experimental) (GCC)
+##
+## g++ test.cpp -g -gdwarf-5 -o test
+##
+## // test.cpp
+## int foo1() {
+##  return 0;
+## }
+## 
+## int foo2() {
+##  return 0;
+## }
+## 
+## int main() {
+##  return foo1() + foo2();
+## }
+
+b foo1
+# CHECK-LABEL: b foo1
+# CHECK: Address: {{.*}}foo1() at test.cpp:2:9
+
+b foo2
+# CHECK-LABEL: b foo2
+# CHECK: Address: {{.*}}foo2() at test.cpp:6:9

Added: lldb/trunk/lit/Breakpoint/jitbp_elf.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/jitbp_elf.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/jitbp_elf.test (added)
+++ lldb/trunk/lit/Breakpoint/jitbp_elf.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,11 @@
+# REQUIRES: target-x86_64
+# XFAIL: system-windows
+
+# RUN: %clang -g -S -emit-llvm --target=x86_64-unknown-unknown-elf -o %t.ll %p/Inputs/jitbp.cpp
+# RUN: %lldb -b -o 'settings set plugin.jit-loader.gdb.enable on' -o 'b jitbp' -o 'run -jit-kind=mcjit %t.ll' lli | FileCheck %s
+
+# CHECK: Breakpoint 1: no locations (pending).
+# CHECK: (lldb) run -jit-kind=mcjit {{.*}}/jitbp_elf.test.tmp.ll
+# CHECK: Process {{.*}} stopped
+# CHECK: JIT(0x{{.*}})`jitbp:
+# CHECK: Process {{.*}} launched: {{.*}}

Added: lldb/trunk/lit/Breakpoint/ppc64-localentry.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/ppc64-localentry.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/ppc64-localentry.test (added)
+++ lldb/trunk/lit/Breakpoint/ppc64-localentry.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,12 @@
+# REQUIRES: powerpc
+#
+# RUN: llvm-mc -triple=powerpc64le -filetype=obj %p/Inputs/ppc64-localentry.s -o %t
+# RUN: lldb-test breakpoints %t %s | FileCheck %s
+
+breakpoint set -n lfunc
+# CHECK-LABEL: breakpoint set -n lfunc
+# CHECK: Address: {{.*}}`lfunc + 8
+
+breakpoint set -n simple
+# CHECK-LABEL: breakpoint set -n simple
+# CHECK: Address: {{.*}}`simple

Added: lldb/trunk/lit/Breakpoint/single-file-split-dwarf.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/single-file-split-dwarf.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/single-file-split-dwarf.test (added)
+++ lldb/trunk/lit/Breakpoint/single-file-split-dwarf.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,44 @@
+# RUN: rm -rf %t.dir
+# RUN: mkdir %t.dir
+# RUN: cd %t.dir
+# RUN: yaml2obj %p/Inputs/single-file-split-dwarf.yaml > %t.dir/test
+# RUN: yaml2obj %p/Inputs/single-file-split-dwarf.o.yaml > %t.dir/test.o
+# RUN: lldb-test breakpoints %t.dir/test %s | FileCheck %s
+
+# This test checks that source code location is shown correctly
+# when single split file debug information is used (when .dwo sections are in .o files).
+#
+# single-file-split-dwarf.yaml and single-file-split-dwarf.o.yaml are
+# reduced yaml files produces from the object file and the corresponding executable.
+#
+# The following code was used initially:
+# int main() {
+#   return 0;
+# }
+# 
+# void foo() {
+# }
+#
+# Invocation used to produce .o file was:
+# clang test.cpp -gdwarf-5 -gsplit-dwarf=single -c -o test.o -v
+#
+# The full invocation used to produce the executable was:
+# "/usr/local/bin/ld" -z relro --hash-style=gnu --eh-frame-hdr -m elf_x86_64 -dynamic-linker
+#  /lib64/ld-linux-x86-64.so.2 -o test /usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../x86_64-linux-gnu/crt1.o
+#  /usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/7.3.0/crtbegin.o
+#  -L/usr/lib/gcc/x86_64-linux-gnu/7.3.0 -L/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../x86_64-linux-gnu
+#  -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../..
+#  -L/home/umb/LLVM/build/bin/../lib -L/lib -L/usr/lib test.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc
+#  --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/7.3.0/crtend.o
+#  /usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../x86_64-linux-gnu/crtn.o
+#
+# Also, the DW_AT_comp_dir string value set to empty in yaml produced. 
+# Build bots had different path there and failed to find object.
+
+b main
+# CHECK-LABEL: b main
+# CHECK: Address: {{.*}}main + 13 at test.cpp:2:3
+
+b foo
+# CHECK-LABEL: b foo
+# CHECK: Address: {{.*}}foo() + 4 at test.cpp:6:1

Added: lldb/trunk/lit/Breakpoint/split-dwarf-5-addrbase.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/split-dwarf-5-addrbase.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/split-dwarf-5-addrbase.test (added)
+++ lldb/trunk/lit/Breakpoint/split-dwarf-5-addrbase.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,30 @@
+# RUN: rm -rf %t.dir
+# RUN: mkdir %t.dir
+# RUN: cd %t.dir
+# RUN: yaml2obj %p/Inputs/split-dwarf-5-addrbase.dwo.yaml > %t.dir/test.dwo
+# RUN: yaml2obj %p/Inputs/split-dwarf-5-addrbase.yaml > %t.dir/test
+# RUN: lldb-test breakpoints %t.dir/test %s | FileCheck %s
+
+# This test checks that source code location is shown correctly
+# when -gsplit-dwarf and DWARF 5 are used.
+#
+# split-dwarf-5-addrbase.dwo.yaml and split-dwarf-5-addrbase.yamlare
+# reduced yaml files produces from the dwo file and the corresponding executable.
+#
+# The following code was used initially:
+# void baz() {
+# }
+# 
+# int main() {
+#   baz();
+#   return 0;
+# }
+#
+# Invocation used to produce outputs was:
+# clang test.cc -g -fno-rtti -c -gdwarf-5 -gsplit-dwarf
+# clang test.o -g -fno-rtti -gdwarf-5 -o test -gsplit-dwarf
+# clang version 8.0.0 (trunk 347299)
+
+b baz
+# CHECK-LABEL: b baz
+# CHECK: Address: {{.*}}baz() + 4 at test.cc:2:1

Added: lldb/trunk/lit/Breakpoint/split-dwarf5-debug-stroffsets.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Breakpoint/split-dwarf5-debug-stroffsets.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Breakpoint/split-dwarf5-debug-stroffsets.test (added)
+++ lldb/trunk/lit/Breakpoint/split-dwarf5-debug-stroffsets.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,84 @@
+# RUN: rm -rf %t.dir
+# RUN: mkdir %t.dir
+# RUN: cd %t.dir
+# RUN: yaml2obj %p/Inputs/split-dwarf5-debug-stroffsets-file1.dwo.yaml > %t.dir/file1.dwo
+# RUN: yaml2obj %p/Inputs/split-dwarf5-debug-stroffsets-file2.dwo.yaml > %t.dir/file2.dwo
+# RUN: yaml2obj %p/Inputs/split-dwarf5-debug-stroffsets-main.yaml      > %t.dir/test
+# RUN: lldb-test breakpoints %t.dir/test %s | FileCheck %s
+
+# This test checks that source code location is shown correctly
+# when split DWARF 5 is used and both DWO/executable file contains
+# .debug_str_offsets/.debug_str_offsets.dwo sections.
+# Used clang version 8.0.0 (trunk 347299)
+#
+# split-dwarf5-debug-stroffsets-file1.dwo.yaml, split-dwarf5-debug-stroffsets-file2.dwo.yaml
+# and split-dwarf5-debug-stroffsets-main.yaml are reduced yaml files produces
+# from the DWO files and the corresponding executable.
+#
+# Code:
+# // decl.h
+# struct struct1 {
+#   ~struct1();
+#   static void f();
+# };
+# 
+# struct struct2 {
+#   ~struct2();
+#   static void f();
+# };
+# 
+# int g();
+#
+# // file1.cpp
+# #include "decls.h"
+# 
+# int g() {
+#   return 1;
+# }
+# 
+# struct1::~struct1() {
+#   int x = g();
+# }
+# 
+# void struct1::f() {}
+# 
+# float test() {
+#  return 0.0f;
+# }
+# 
+# int main() {
+#   struct1::f();
+#   struct2::f();
+# 
+#   struct1 s1;
+#   struct2 s2;
+# 
+#   test();
+# 
+#   return 0;
+# }
+#
+# // file2.cpp
+#
+#
+# #include "decls.h"
+# 
+# struct2::~struct2() {
+#   int x = g();
+# }
+# 
+# void struct2::f() {}
+#
+#
+# Invocation used was:
+# clang++ file1.cpp -o file1.o -g -fno-rtti -c -gdwarf-5 -gsplit-dwarf -ffunction-sections
+# clang++ file2.cpp -o file2.o -g -fno-rtti -c -gdwarf-5 -gsplit-dwarf -ffunction-sections
+# clang++ file1.o file2.o -g -fno-rtti -gdwarf-5 -o test -gsplit-dwarf -ffunction-sections
+
+b struct1::f
+# CHECK-LABEL: b struct1::f
+# CHECK: Address: {{.*}}struct1::f() + 4 at file1.cpp:11:20
+
+b struct2::f
+# CHECK-LABEL: b struct2::f
+# CHECK: Address: {{.*}}struct2::f() + 4 at file2.cpp:7:20

Added: lldb/trunk/lit/BuildScript/compiler-full-path.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/BuildScript/compiler-full-path.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/BuildScript/compiler-full-path.test (added)
+++ lldb/trunk/lit/BuildScript/compiler-full-path.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,11 @@
+RUN: %build -n --mode=compile --verbose --arch=64 --compiler=/path/to/my/clang \
+RUN:    -o foo foobar.c | FileCheck %s --check-prefix=CHECK-CLANG
+RUN: %build -n --mode=compile --verbose --arch=64 \
+RUN:    --compiler=/path/to/my/x64/cl.exe -o foo foobar.c | \
+RUN:    FileCheck %s --check-prefix=CHECK-MSVC
+
+CHECK-CLANG: Command Line: /path/to/my/clang
+CHECK-SAME: -o
+
+CHECK-MSVC: Command Line: /path/to/my/x64/cl.exe
+CHECK-SAME: /Fo

Added: lldb/trunk/lit/BuildScript/modes.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/BuildScript/modes.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/BuildScript/modes.test (added)
+++ lldb/trunk/lit/BuildScript/modes.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,35 @@
+RUN: %build -n --verbose --arch=32 --mode=compile --compiler=any -o %t/foo.out foobar.c \
+RUN:    | FileCheck --check-prefix=COMPILE %s
+
+RUN: %build -n --verbose --arch=32 --mode=compile --compiler=any --outdir %t foo.c bar.c \
+RUN:    | FileCheck --check-prefix=COMPILE-MULTI %s
+
+RUN: %build -n --verbose --arch=32 --mode=link --compiler=any -o %t/foo.exe foobar.obj \
+RUN:    | FileCheck --check-prefix=LINK %s
+
+RUN: %build -n --verbose --arch=32 --mode=link --compiler=any -o %t/foobar.exe foo.obj bar.obj \
+RUN:    | FileCheck --check-prefix=LINK-MULTI %s
+
+RUN: %build -n --verbose --arch=32 --mode=compile-and-link --compiler=any -o %t/foobar.exe foobar.c \
+RUN:    | FileCheck --check-prefix=BOTH %s
+
+RUN: %build -n --verbose --arch=32 --mode=compile-and-link --compiler=any -o %t/foobar.exe foo.c bar.c \
+RUN:    | FileCheck --check-prefix=BOTH-MULTI %s
+
+
+COMPILE: compiling foobar.c -> foo.out
+
+COMPILE-MULTI: compiling foo.c -> foo.o{{(bj)?}}
+COMPILE-MULTI: compiling bar.c -> bar.o{{(bj)?}}
+
+
+LINK: linking foobar.obj -> foo.exe
+
+LINK-MULTI: linking foo.obj+bar.obj -> foobar.exe
+
+BOTH: compiling foobar.c -> [[OBJFOO:foobar.exe-foobar.o(bj)?]]
+BOTH: linking [[OBJFOO]] -> foobar.exe
+
+BOTH-MULTI: compiling foo.c -> [[OBJFOO:foobar.exe-foo.o(bj)?]]
+BOTH-MULTI: compiling bar.c -> [[OBJBAR:foobar.exe-bar.o(bj)?]]
+BOTH-MULTI: linking [[OBJFOO]]+[[OBJBAR]] -> foobar.exe

Added: lldb/trunk/lit/BuildScript/script-args.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/BuildScript/script-args.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/BuildScript/script-args.test (added)
+++ lldb/trunk/lit/BuildScript/script-args.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,32 @@
+RUN: %build -n --verbose --arch=32 --mode=compile --compiler=any -o %t/foo.out foobar.c \
+RUN:    | FileCheck %s
+RUN: %build -n --verbose --arch=32 --mode=compile --compiler=any --outdir %t foo.c bar.c \
+RUN:    | FileCheck --check-prefix=MULTI-INPUT %s
+
+
+CHECK:      Script Arguments:
+CHECK-NEXT:   Arch: 32
+CHECK:        Compiler: any
+CHECK:        Outdir: {{.*}}script-args.test.tmp
+CHECK:        Output: {{.*}}script-args.test.tmp{{.}}foo.out
+CHECK:        Nodefaultlib: False
+CHECK:        Opt: none
+CHECK:        Mode: compile
+CHECK:        Clean: True
+CHECK:        Verbose: True
+CHECK:        Dryrun: True
+CHECK:        Inputs: foobar.c
+
+MULTI-INPUT:      Script Arguments:
+MULTI-INPUT-NEXT:   Arch: 32
+MULTI-INPUT-NEXT:   Compiler: any
+MULTI-INPUT-NEXT:   Outdir: {{.*}}script-args.test.tmp
+MULTI-INPUT-NEXT:   Output: 
+MULTI-INPUT-NEXT:   Nodefaultlib: False
+MULTI-INPUT-NEXT:   Opt: none
+MULTI-INPUT-NEXT:   Mode: compile
+MULTI-INPUT-NEXT:   Clean: True
+MULTI-INPUT-NEXT:   Verbose: True
+MULTI-INPUT-NEXT:   Dryrun: True
+MULTI-INPUT-NEXT:   Inputs: foo.c
+MULTI-INPUT-NEXT:           bar.c

Added: lldb/trunk/lit/BuildScript/toolchain-clang-cl.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/BuildScript/toolchain-clang-cl.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/BuildScript/toolchain-clang-cl.test (added)
+++ lldb/trunk/lit/BuildScript/toolchain-clang-cl.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,49 @@
+REQUIRES: lld, system-windows
+
+RUN: %build -n --verbose --arch=32 --compiler=clang-cl --mode=compile-and-link -o %t/foo.exe foobar.c \
+RUN:    | FileCheck --check-prefix=CHECK-32 %s
+
+RUN: %build -n --verbose --arch=64 --compiler=clang-cl --mode=compile-and-link -o %t/foo.exe foobar.c \
+RUN:    | FileCheck --check-prefix=CHECK-64 %s
+
+CHECK-32: Script Arguments:
+CHECK-32:   Arch: 32
+CHECK-32:   Compiler: clang-cl
+CHECK-32:   Outdir: {{.*}}
+CHECK-32:   Output: {{.*}}toolchain-clang-cl.test.tmp\foo.exe
+CHECK-32:   Nodefaultlib: False
+CHECK-32:   Opt: none
+CHECK-32:   Mode: compile
+CHECK-32:   Clean: True
+CHECK-32:   Verbose: True
+CHECK-32:   Dryrun: True
+CHECK-32:   Inputs: foobar.c
+CHECK-32: Cleaning {{.*}}toolchain-clang-cl.test.tmp{{.}}foobar.ilk
+CHECK-32: Cleaning {{.*}}toolchain-clang-cl.test.tmp{{.}}foo.exe-foobar.obj
+CHECK-32: Cleaning {{.*}}toolchain-clang-cl.test.tmp{{.}}foo.pdb
+CHECK-32: Cleaning {{.*}}toolchain-clang-cl.test.tmp{{.}}foo.exe
+CHECK-32: compiling foobar.c -> foo.exe-foobar.obj
+CHECK-32: {{.*}}clang-cl{{(.exe)?}} -m32
+CHECK-32: linking foo.exe-foobar.obj -> foo.exe
+CHECK-32: {{.*}}lld-link
+
+CHECK-64: Script Arguments:
+CHECK-64:   Arch: 64
+CHECK-64:   Compiler: clang-cl
+CHECK-64:   Outdir: {{.*}}
+CHECK-64:   Output: {{.*}}toolchain-clang-cl.test.tmp\foo.exe
+CHECK-64:   Nodefaultlib: False
+CHECK-64:   Opt: none
+CHECK-64:   Mode: compile
+CHECK-64:   Clean: True
+CHECK-64:   Verbose: True
+CHECK-64:   Dryrun: True
+CHECK-64:   Inputs: foobar.c
+CHECK-64: Cleaning {{.*}}toolchain-clang-cl.test.tmp{{.}}foobar.ilk
+CHECK-64: Cleaning {{.*}}toolchain-clang-cl.test.tmp{{.}}foo.exe-foobar.obj
+CHECK-64: Cleaning {{.*}}toolchain-clang-cl.test.tmp{{.}}foo.pdb
+CHECK-64: Cleaning {{.*}}toolchain-clang-cl.test.tmp{{.}}foo.exe
+CHECK-64: compiling foobar.c -> foo.exe-foobar.obj
+CHECK-64: {{.*}}clang-cl{{(.exe)?}} -m64
+CHECK-64: linking foo.exe-foobar.obj -> foo.exe
+CHECK-64: {{.*}}lld-link{{(.exe)?}}

Added: lldb/trunk/lit/BuildScript/toolchain-clang.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/BuildScript/toolchain-clang.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/BuildScript/toolchain-clang.test (added)
+++ lldb/trunk/lit/BuildScript/toolchain-clang.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,14 @@
+RUN: %build -n --verbose --arch=32 --compiler=clang --mode=compile-and-link -o %t/foo.exe foobar.c \
+RUN:    | FileCheck --check-prefix=CHECK --check-prefix=CHECK-32 %s
+
+RUN: %build -n --verbose --arch=64 --compiler=clang --mode=compile-and-link -o %t/foo.exe foobar.c \
+RUN:    | FileCheck --check-prefix=CHECK --check-prefix=CHECK-64 %s
+
+CHECK: Cleaning {{.*}}toolchain-clang.test.tmp{{.}}foo.exe-foobar.o
+CHECK: Cleaning {{.*}}toolchain-clang.test.tmp{{.}}foo.exe
+CHECK: compiling foobar.c -> foo.exe-foobar.o
+CHECK-32: {{.*}}clang++{{(.exe)?}} -m32 -g -O0 -c -o {{.*}}foo.exe-foobar.o {{.*}}foobar.c
+CHECK-64: {{.*}}clang++{{(.exe)?}} -m64 -g -O0 -c -o {{.*}}foo.exe-foobar.o {{.*}}foobar.c
+CHECK: linking foo.exe-foobar.o -> foo.exe
+CHECK-32: {{.*}}clang++{{(.exe)?}} -m32 {{(-L.* )?(-Wl,-rpath,.* )?}}-o {{.*}}foo.exe {{.*}}foo.exe-foobar.o
+CHECK-64: {{.*}}clang++{{(.exe)?}} -m64 {{(-L.* )?(-Wl,-rpath,.* )?}}-o {{.*}}foo.exe {{.*}}foo.exe-foobar.o

Added: lldb/trunk/lit/BuildScript/toolchain-msvc.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/BuildScript/toolchain-msvc.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/BuildScript/toolchain-msvc.test (added)
+++ lldb/trunk/lit/BuildScript/toolchain-msvc.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,62 @@
+REQUIRES: system-windows, msvc
+
+RUN: %build -n --verbose --arch=32 --compiler=msvc --mode=compile-and-link -o %t/foo.exe foobar.c \
+RUN:    | FileCheck --check-prefix=X86 %s
+
+RUN: %build -n --verbose --arch=64 --compiler=msvc --mode=compile-and-link -o %t/foo.exe foobar.c \
+RUN:    | FileCheck --check-prefix=X64 %s
+
+X86: Script Arguments:
+X86:   Arch: 32
+X86:   Compiler: msvc
+X86:   Outdir: {{.*}}
+X86:   Output: {{.*}}toolchain-msvc.test.tmp\foo.exe
+X86:   Nodefaultlib: False
+X86:   Opt: none
+X86:   Mode: compile
+X86:   Clean: True
+X86:   Verbose: True
+X86:   Dryrun: True
+X86:   Inputs: foobar.c
+X86: Cleaning {{.*}}toolchain-msvc.test.tmp\foobar.ilk
+X86: Cleaning {{.*}}toolchain-msvc.test.tmp\foo.exe-foobar.obj
+X86: Cleaning {{.*}}toolchain-msvc.test.tmp\foo.pdb
+X86: Cleaning {{.*}}toolchain-msvc.test.tmp\foo.exe
+X86: compiling foobar.c -> foo.exe-foobar.obj
+X86:   Command Line: {{.*}}\{{[Hh]ost[Xx]64}}\x86\cl.exe
+X86: linking foo.exe-foobar.obj -> foo.exe
+X86:   Command Line: {{.*}}\{{[Hh]ost[Xx]64}}\x86\link.exe
+X86:   Env
+X86:     LIB = {{.*}}\ATLMFC\lib\x86
+X86:           {{.*}}\lib\x86
+X86:           {{.*}}\ucrt\x86
+X86:           {{.*}}\um\x86
+X86:     PATH = {{.*}}\bin\{{[Hh]ost[Xx]64}}\x64
+
+
+X64: Script Arguments:
+X64:   Arch: 64
+X64:   Compiler: msvc
+X64:   Outdir: {{.*}}
+X64:   Output: {{.*}}toolchain-msvc.test.tmp\foo.exe
+X64:   Nodefaultlib: False
+X64:   Opt: none
+X64:   Mode: compile
+X64:   Clean: True
+X64:   Verbose: True
+X64:   Dryrun: True
+X64:   Inputs: foobar.c
+X64: Cleaning {{.*}}toolchain-msvc.test.tmp\foobar.ilk
+X64: Cleaning {{.*}}toolchain-msvc.test.tmp\foo.exe-foobar.obj
+X64: Cleaning {{.*}}toolchain-msvc.test.tmp\foo.pdb
+X64: Cleaning {{.*}}toolchain-msvc.test.tmp\foo.exe
+X64: compiling foobar.c -> foo.exe-foobar.obj
+X64:   Command Line: {{.*}}\{{[Hh]ost[Xx]64}}\x64\cl.exe
+X64: linking foo.exe-foobar.obj -> foo.exe
+X64:   Command Line: {{.*}}\{{[Hh]ost[Xx]64}}\x64\link.exe
+X64:   Env
+X64:     LIB = {{.*}}\ATLMFC\lib\x64
+X64:           {{.*}}\lib\x64
+X64:           {{.*}}\ucrt\x64
+X64:           {{.*}}\um\x64
+X64:     PATH = {{.*}}\bin\{{[Hh]ost[Xx]64}}\x64

Added: lldb/trunk/lit/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/CMakeLists.txt?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/CMakeLists.txt (added)
+++ lldb/trunk/lit/CMakeLists.txt Wed Oct  9 10:35:43 2019
@@ -0,0 +1,115 @@
+# Test runner infrastructure for LLDB. This configures the LLDB test trees
+# for use by Lit, and delegates to LLVM's lit test handlers.
+
+# LLVM_BUILD_MODE is used in lit.site.cfg
+if (CMAKE_CFG_INTDIR STREQUAL ".")
+  set(LLVM_BUILD_MODE ".")
+else ()
+  set(LLVM_BUILD_MODE "%(build_mode)s")
+endif ()
+
+if (CMAKE_SIZEOF_VOID_P EQUAL 8)
+  set(LLDB_IS_64_BITS 1)
+endif()
+
+get_property(LLDB_DOTEST_ARGS GLOBAL PROPERTY LLDB_DOTEST_ARGS_PROPERTY)
+set(dotest_args_replacement ${LLVM_BUILD_MODE})
+
+set(LLDB_TEST_MODULE_CACHE_LLDB "${LLDB_TEST_BUILD_DIRECTORY}/module-cache-lldb" CACHE PATH "The Clang module cache used by the Clang embedded in LLDB while running tests.")
+set(LLDB_TEST_MODULE_CACHE_CLANG "${LLDB_TEST_BUILD_DIRECTORY}/module-cache-clang" CACHE PATH "The Clang module cache used by the Clang while building tests.")
+
+if(LLDB_BUILT_STANDALONE)
+  # In paths to our build-tree, replace CMAKE_CFG_INTDIR with our configuration name placeholder.
+  string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} config_runtime_output_dir ${LLVM_RUNTIME_OUTPUT_INTDIR})
+  string(REPLACE ${LLVM_RUNTIME_OUTPUT_INTDIR} ${config_runtime_output_dir} LLDB_DOTEST_ARGS "${LLDB_DOTEST_ARGS}")
+
+  # Remaining ones must be paths to the provided LLVM build-tree.
+  if(LLVM_CONFIGURATION_TYPES)
+    # LLDB uses single-config; LLVM multi-config; pick one and prefer Release types.
+    # Otherwise, if both use multi-config the default is fine.
+    if(NOT CMAKE_CONFIGURATION_TYPES)
+      if(RelWithDebInfo IN_LIST LLVM_CONFIGURATION_TYPES)
+        set(dotest_args_replacement RelWithDebInfo)
+      elseif(Release IN_LIST LLVM_CONFIGURATION_TYPES)
+        set(dotest_args_replacement Release)
+      else()
+        list(GET LLVM_CONFIGURATION_TYPES 0 dotest_args_replacement)
+      endif()
+    endif()
+  else()
+    # Common case: LLVM used a single-configuration generator like Ninja.
+    set(dotest_args_replacement ".")
+  endif()
+endif()
+
+string(REPLACE ${CMAKE_CFG_INTDIR} ${dotest_args_replacement} LLDB_DOTEST_ARGS "${LLDB_DOTEST_ARGS}")
+string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} LLDB_LIBS_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR})
+string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} LLDB_TOOLS_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
+
+add_lldb_test_dependency(
+  lit-cpuid
+  llc
+  lli
+  llvm-config
+  llvm-dwarfdump
+  llvm-nm
+  llvm-mc
+  llvm-objcopy
+  llvm-readobj
+  llvm-strip
+  )
+
+if(TARGET lld)
+  add_lldb_test_dependency(lld)
+endif()
+
+# the value is not canonicalized within LLVM
+llvm_canonicalize_cmake_booleans(
+  LLDB_DISABLE_PYTHON
+  LLVM_ENABLE_ZLIB
+  LLVM_ENABLE_SHARED_LIBS
+  LLDB_IS_64_BITS)
+
+configure_lit_site_cfg(
+  ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in
+  ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py
+  MAIN_CONFIG
+  ${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py)
+configure_lit_site_cfg(
+  ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.py.in
+  ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg.py
+  MAIN_CONFIG
+  ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.cfg.py)
+configure_lit_site_cfg(
+  ${CMAKE_CURRENT_SOURCE_DIR}/Suite/lit.site.cfg.in
+  ${CMAKE_CURRENT_BINARY_DIR}/Suite/lit.site.cfg)
+
+configure_file(
+  ${CMAKE_CURRENT_SOURCE_DIR}/lit-lldb-init.in
+  ${CMAKE_CURRENT_BINARY_DIR}/lit-lldb-init)
+
+if(NOT LLDB_BUILT_STANDALONE)
+  add_lldb_test_dependency(
+    FileCheck
+    count
+    not
+  )
+endif()
+
+add_lit_testsuite(check-lldb-lit "Running lldb lit test suite"
+  ${CMAKE_CURRENT_BINARY_DIR}
+  DEPENDS lldb-test-deps
+  )
+
+set_target_properties(check-lldb-lit PROPERTIES FOLDER "lldb tests")
+
+# If we're building with an in-tree clang, then list clang as a dependency
+# to run tests.
+if (TARGET clang)
+  add_dependencies(check-lldb-lit clang)
+endif()
+
+add_lit_testsuites(LLDB
+  ${CMAKE_CURRENT_SOURCE_DIR}
+  DEPENDS lldb-test-deps
+  )

Added: lldb/trunk/lit/Commands/CommandScriptImmediateOutput/CommandScriptImmediateOutputConsole.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Commands/CommandScriptImmediateOutput/CommandScriptImmediateOutputConsole.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Commands/CommandScriptImmediateOutput/CommandScriptImmediateOutputConsole.test (added)
+++ lldb/trunk/lit/Commands/CommandScriptImmediateOutput/CommandScriptImmediateOutputConsole.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,11 @@
+# Test that LLDB correctly allows scripted commands to set immediate output to
+# the console.
+
+# RUN: %lldb -s %s \
+# RUN:  -o 'command script import %S/Inputs/custom_command.py' \
+# RUN:  -o 'command script add -f custom_command.command_function mycommand' \
+# RUN:  -o 'mycommand' \
+# RUN:  -o 'command script delete mycommand' \
+# RUN:  2>&1 | FileCheck %s
+
+# CHECK: this is a test string, just a test string

Added: lldb/trunk/lit/Commands/CommandScriptImmediateOutput/CommandScriptImmediateOutputFile.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Commands/CommandScriptImmediateOutput/CommandScriptImmediateOutputFile.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Commands/CommandScriptImmediateOutput/CommandScriptImmediateOutputFile.test (added)
+++ lldb/trunk/lit/Commands/CommandScriptImmediateOutput/CommandScriptImmediateOutputFile.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,51 @@
+# Test that LLDB correctly allows scripted commands to set immediate output to
+# a file.
+
+# RUN: echo "READ" > %t.read.txt
+# RUN: echo "WRITE" > %t.write.txt
+# RUN: echo "APPEND" > %t.append.txt
+# RUN: echo "READ PLUS" > %t.read_plus.txt
+# RUN: echo "WRITE PLUS" > %t.write_plus.txt
+# RUN: echo "APPEND PLUS" > %t.append_plus.txt
+
+# RUN: %lldb -s %s \
+# RUN:   -o 'command script import %S/Inputs/custom_command.py' \
+# RUN:   -o 'command script add -f custom_command.write_file mywrite' \
+# RUN:   -o 'mywrite %t.read.txt r' \
+# RUN:   -o 'mywrite %t.write.txt w' \
+# RUN:   -o 'mywrite %t.append.txt a' \
+# RUN:   -o 'mywrite %t.write_plus.txt w+' \
+# RUN:   -o 'mywrite %t.read_plus.txt r+' \
+# RUN:   -o 'mywrite %t.append_plus.txt a+' \
+# RUN:   -o 'command script delete mywrite'
+
+# RUN: cat %t.read.txt | FileCheck %s --check-prefix READ
+# READ: READ
+# READ-NOT: writing to file with mode
+
+# RUN: cat %t.write.txt | FileCheck %s --check-prefix WRITE
+# WRITE-NOT: WRITE
+# WRITE: writing to file with mode: w
+
+# RUN: cat %t.append.txt | FileCheck %s --check-prefix APPEND
+# APPEND: APPEND
+# APPEND-NEXT: writing to file with mode: a
+
+# RUN: cat %t.write_plus.txt | FileCheck %s --check-prefix WRITEPLUS
+# WRITEPLUS-NOT: WRITE PLUS
+# WRITEPLUS: writing to file with mode: w+
+
+# RUN: cat %t.read_plus.txt | FileCheck %s --check-prefix READPLUS
+# READPLUS-NOT: READ PLUS
+# READPLUS: writing to file with mode: r+
+
+# RUN: cat %t.append_plus.txt | FileCheck %s --check-prefix APPENDPLUS
+# APPENDPLUS: APPEND PLUS
+# APPENDPLUS-NEXT: writing to file with mode: a+
+
+# RUN: rm %t.read.txt
+# RUN: rm %t.write.txt
+# RUN: rm %t.append.txt
+# RUN: rm %t.write_plus.txt
+# RUN: rm %t.read_plus.txt
+# RUN: rm %t.append_plus.txt

Added: lldb/trunk/lit/Commands/CommandScriptImmediateOutput/Inputs/custom_command.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Commands/CommandScriptImmediateOutput/Inputs/custom_command.py?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Commands/CommandScriptImmediateOutput/Inputs/custom_command.py (added)
+++ lldb/trunk/lit/Commands/CommandScriptImmediateOutput/Inputs/custom_command.py Wed Oct  9 10:35:43 2019
@@ -0,0 +1,22 @@
+from __future__ import print_function
+
+import sys
+
+
+def split(command):
+    command = command.strip()
+    return command.rsplit(' ', 1)
+
+def command_function(debugger, command, exe_ctx, result, internal_dict):
+    result.SetImmediateOutputFile(sys.__stdout__)
+    print('this is a test string, just a test string', file=result)
+
+
+def write_file(debugger, command, exe_ctx, result, internal_dict):
+    args = split(command)
+    path = args[0]
+    mode = args[1]
+    with open(path, mode) as f:
+        result.SetImmediateOutputFile(f)
+        if not mode in ['r']:
+            print('writing to file with mode: ' + mode, file=result)

Added: lldb/trunk/lit/Commands/CommandScriptImmediateOutput/lit.local.cfg
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Commands/CommandScriptImmediateOutput/lit.local.cfg?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Commands/CommandScriptImmediateOutput/lit.local.cfg (added)
+++ lldb/trunk/lit/Commands/CommandScriptImmediateOutput/lit.local.cfg Wed Oct  9 10:35:43 2019
@@ -0,0 +1,2 @@
+if not "python" in config.available_features:
+    config.unsupported = True

Added: lldb/trunk/lit/Commands/Inputs/frame.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Commands/Inputs/frame.py?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Commands/Inputs/frame.py (added)
+++ lldb/trunk/lit/Commands/Inputs/frame.py Wed Oct  9 10:35:43 2019
@@ -0,0 +1,2 @@
+import lldb
+print("frame.py: {}".format(lldb.frame))

Added: lldb/trunk/lit/Commands/Inputs/main.c
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Commands/Inputs/main.c?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Commands/Inputs/main.c (added)
+++ lldb/trunk/lit/Commands/Inputs/main.c Wed Oct  9 10:35:43 2019
@@ -0,0 +1,2 @@
+int foo() { return 0; }
+int main() { return foo(); }

Added: lldb/trunk/lit/Commands/command-backtrace.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Commands/command-backtrace.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Commands/command-backtrace.test (added)
+++ lldb/trunk/lit/Commands/command-backtrace.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,12 @@
+# Check basic functionality of command bt.
+# RUN: %lldb -s %s 2>&1 | FileCheck %s
+
+# Make sure this is not rejected by the parser as invalid syntax.
+# Blank characters after the '1' are important, as we're testing the parser.
+bt 1      
+# CHECK: error: invalid target
+
+# Make sure this is not rejected by the parser as invalid syntax.
+# Blank characters after the 'all' are important, as we're testing the parser.
+bt all       
+# CHECK: error: invalid target

Added: lldb/trunk/lit/Commands/command-regex-delete.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Commands/command-regex-delete.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Commands/command-regex-delete.test (added)
+++ lldb/trunk/lit/Commands/command-regex-delete.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,14 @@
+# Check basic functionality of command regex.
+# RUN: %lldb -s %s 2>&1 | FileCheck %s
+
+command regex 'Help__'
+# CHECK: Enter one or more sed substitution commands in the form
+# We need to leave a new line after to end the regex.
+s/^$/help/
+
+Help__
+# CHECK: Debugger commands:
+
+command delete Help__
+Help__
+# CHECK: error: 'Help__' is not a valid command

Added: lldb/trunk/lit/Commands/command-regex-unalias.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Commands/command-regex-unalias.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Commands/command-regex-unalias.test (added)
+++ lldb/trunk/lit/Commands/command-regex-unalias.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,11 @@
+# Check that commands created with command regex cannot be unaliased
+# RUN: %lldb -s %s 2>&1 | FileCheck %s
+
+command regex 'Help__'
+# CHECK: Enter one or more sed substitution commands in the form
+# We need to leave a new line after to end the regex.
+s/^$/help/
+
+command unalias Help__
+Help__
+# CHECK: error: 'Help__' is not an alias

Added: lldb/trunk/lit/Commands/command-script-import.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Commands/command-script-import.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Commands/command-script-import.test (added)
+++ lldb/trunk/lit/Commands/command-script-import.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,13 @@
+# REQUIRES: python
+# RUN: echo 'b main' > %t.in
+# RUN: echo 'run' >> %t.in
+# RUN: echo 'command script import %S/Inputs/frame.py' >> %t.in
+
+# RUN: %clang -g -O0 %S/Inputs/main.c -o %t.out
+# RUN: %lldb -b -s %t.in -o 'script print("script: {}".format(lldb.frame))' %t.out | FileCheck %s
+
+# Make sure that we don't have access to lldb.frame from the Python script.
+# CHECK: frame.py: None
+
+# Make sure that we do have access to lldb.frame from the script command.
+# CHECK: script: frame #0

Added: lldb/trunk/lit/Commands/command-source.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Commands/command-source.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Commands/command-source.test (added)
+++ lldb/trunk/lit/Commands/command-source.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,12 @@
+# Check that stop command source on error.
+
+# RUN: %lldb -x -b -o "command source -e 1 %s" 2>&1 | FileCheck %s --check-prefix STOP
+# RUN: %lldb -x -b -o "command source -e 0 %s" 2>&1 | FileCheck %s --check-prefix CONTINUE
+# RUN: %lldb -x -b -o 'settings set interpreter.stop-command-source-on-error true' -o "command source %s" 2>&1 | FileCheck %s --check-prefix STOP
+# RUN: %lldb -x -b -o 'settings set interpreter.stop-command-source-on-error false' -o "command source %s" 2>&1 | FileCheck %s --check-prefix CONTINUE
+
+bogus
+p 10+1
+
+# CONTINUE: $0 = 11
+# STOP-NOT: $0 = 11

Added: lldb/trunk/lit/Driver/Inputs/.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/Inputs/.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/Inputs/.lldbinit (added)
+++ lldb/trunk/lit/Driver/Inputs/.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,2 @@
+settings set -f frame-format "bogus"
+command script import syntax_error.py

Added: lldb/trunk/lit/Driver/Inputs/Print0.in
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/Inputs/Print0.in?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/Inputs/Print0.in (added)
+++ lldb/trunk/lit/Driver/Inputs/Print0.in Wed Oct  9 10:35:43 2019
@@ -0,0 +1 @@
+expr 0

Added: lldb/trunk/lit/Driver/Inputs/Print2.in
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/Inputs/Print2.in?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/Inputs/Print2.in (added)
+++ lldb/trunk/lit/Driver/Inputs/Print2.in Wed Oct  9 10:35:43 2019
@@ -0,0 +1 @@
+expr 2

Added: lldb/trunk/lit/Driver/Inputs/Print4.in
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/Inputs/Print4.in?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/Inputs/Print4.in (added)
+++ lldb/trunk/lit/Driver/Inputs/Print4.in Wed Oct  9 10:35:43 2019
@@ -0,0 +1 @@
+expr 4

Added: lldb/trunk/lit/Driver/Inputs/Print6.in
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/Inputs/Print6.in?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/Inputs/Print6.in (added)
+++ lldb/trunk/lit/Driver/Inputs/Print6.in Wed Oct  9 10:35:43 2019
@@ -0,0 +1 @@
+expr 6

Added: lldb/trunk/lit/Driver/Inputs/convenience.in
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/Inputs/convenience.in?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/Inputs/convenience.in (added)
+++ lldb/trunk/lit/Driver/Inputs/convenience.in Wed Oct  9 10:35:43 2019
@@ -0,0 +1,9 @@
+breakpoint set -f hello.cpp -p Hello
+run
+script print(lldb.debugger)
+script print(lldb.target)
+script print(lldb.process)
+script print(lldb.thread.GetStopDescription(100))
+script lldb.frame.GetLineEntry().GetLine()
+script lldb.frame.GetLineEntry().GetFileSpec().GetFilename()
+script lldb.frame.GetFunctionName()

Added: lldb/trunk/lit/Driver/Inputs/hello.c
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/Inputs/hello.c?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/Inputs/hello.c (added)
+++ lldb/trunk/lit/Driver/Inputs/hello.c Wed Oct  9 10:35:43 2019
@@ -0,0 +1,3 @@
+int main(void) {
+  return 0;
+}

Added: lldb/trunk/lit/Driver/Inputs/hello.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/Inputs/hello.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/Inputs/hello.cpp (added)
+++ lldb/trunk/lit/Driver/Inputs/hello.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,11 @@
+// The build.py script always runs the compiler in C++ mode, regardless of the
+// file extension. This results in mangled names presented to the linker which
+// in turn cannot find the printf symbol.
+extern "C" {
+int printf(const char *format, ...);
+
+int main(int argc, char **argv) {
+  printf("Hello World\n");
+  return 0;
+}
+}

Added: lldb/trunk/lit/Driver/Inputs/process_attach_pid.in
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/Inputs/process_attach_pid.in?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/Inputs/process_attach_pid.in (added)
+++ lldb/trunk/lit/Driver/Inputs/process_attach_pid.in Wed Oct  9 10:35:43 2019
@@ -0,0 +1,2 @@
+process attach --pid
+

Added: lldb/trunk/lit/Driver/Inputs/syntax_error.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/Inputs/syntax_error.py?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/Inputs/syntax_error.py (added)
+++ lldb/trunk/lit/Driver/Inputs/syntax_error.py Wed Oct  9 10:35:43 2019
@@ -0,0 +1 @@
+prlnt("foo")

Added: lldb/trunk/lit/Driver/LocalLLDBInit.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/LocalLLDBInit.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/LocalLLDBInit.test (added)
+++ lldb/trunk/lit/Driver/LocalLLDBInit.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,15 @@
+# REQUIRES: python
+# RUN: mkdir -p %t.root
+# RUN: mkdir -p %t.home
+# RUN: cp %S/Inputs/.lldbinit %t.root
+# RUN: cp %S/Inputs/syntax_error.py %t.root
+# RUN: cd %t.root
+# RUN: env HOME=%t.home %lldb-init -o 'settings show frame-format' 2>&1 | FileCheck %s --check-prefix=WARNINIT --check-prefix=CHECK
+# RUN: env HOME=%t.home %lldb-init -local-lldbinit -o 'settings show frame-format' 2>&1 | FileCheck %s --check-prefix=ALLOWINIT --check-prefix=NOINIT
+# RUN: %lldb -o 'settings show frame-format' 2>&1 | FileCheck %s --check-prefix=NOINIT --check-prefix=CHECK
+
+# WARNINIT: There is a .lldbinit file in the current directory which is not being read.
+# NOINIT-NOT: There is a .lldbinit file in the current directory which is not being read.
+# CHECK-NOT: bogus
+# ALLOWINIT: name 'prlnt' is not defined
+# ALLOWINIT: bogus

Added: lldb/trunk/lit/Driver/TestCommands.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/TestCommands.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/TestCommands.test (added)
+++ lldb/trunk/lit/Driver/TestCommands.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,41 @@
+# RUN: %lldb -x -b \
+# RUN:  -S %S/Inputs/Print0.in \
+# RUN:  -O 'expr 1' \
+# RUN:  -S %S/Inputs/Print2.in \
+# RUN:  -O 'expr 3' \
+# RUN:  -s %S/Inputs/Print4.in \
+# RUN:  -o 'expr 5' \
+# RUN:  -s %S/Inputs/Print6.in \
+# RUN:  -o 'expr 7' \
+# RUN: | FileCheck %s
+#
+# RUN: %lldb -x -b \
+# RUN:  -s %S/Inputs/Print4.in \
+# RUN:  -o 'expr 5' \
+# RUN:  -s %S/Inputs/Print6.in \
+# RUN:  -o 'expr 7' \
+# RUN:  -S %S/Inputs/Print0.in \
+# RUN:  -O 'expr 1' \
+# RUN:  -S %S/Inputs/Print2.in \
+# RUN:  -O 'expr 3' \
+# RUN: | FileCheck %s
+#
+# RUN: %lldb -x -b \
+# RUN:  -s %S/Inputs/Print4.in \
+# RUN:  -S %S/Inputs/Print0.in \
+# RUN:  -o 'expr 5' \
+# RUN:  -O 'expr 1' \
+# RUN:  -s %S/Inputs/Print6.in \
+# RUN:  -S %S/Inputs/Print2.in \
+# RUN:  -o 'expr 7' \
+# RUN:  -O 'expr 3' \
+# RUN: | FileCheck %s
+
+# CHECK: (int) $0 = 0
+# CHECK: (int) $1 = 1
+# CHECK: (int) $2 = 2
+# CHECK: (int) $3 = 3
+# CHECK: (int) $4 = 4
+# CHECK: (int) $5 = 5
+# CHECK: (int) $6 = 6
+# CHECK: (int) $7 = 7

Added: lldb/trunk/lit/Driver/TestConvenienceVariables.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/TestConvenienceVariables.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/TestConvenienceVariables.test (added)
+++ lldb/trunk/lit/Driver/TestConvenienceVariables.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,23 @@
+REQUIRES: python
+RUN: %build %p/Inputs/hello.cpp -o %t
+RUN: %lldb %t -s %p/Inputs/convenience.in -o quit | FileCheck %s
+
+script print(lldb.debugger)
+
+CHECK: stop reason = breakpoint 1.1
+CHECK: Debugger (instance: {{.*}}, id: {{[0-9]+}})
+CHECK: script print(lldb.target)
+CHECK: TestConvenienceVariables.test
+CHECK: script print(lldb.process)
+CHECK: SBProcess: pid = {{[0-9]+}},
+CHECK-SAME:       state = stopped,
+CHECK-SAME:       threads = {{[0-9]+}},
+CHECK-SAME:       executable = TestConvenienceVariables.test
+CHECK: script print(lldb.thread.GetStopDescription(100))
+CHECK: breakpoint 1.1
+CHECK: script lldb.frame.GetLineEntry().GetLine()
+CHECK: 8
+CHECK: script lldb.frame.GetLineEntry().GetFileSpec().GetFilename()
+CHECK: hello.c
+CHECK: script lldb.frame.GetFunctionName()
+CHECK: main

Added: lldb/trunk/lit/Driver/TestCore.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/TestCore.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/TestCore.test (added)
+++ lldb/trunk/lit/Driver/TestCore.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,2 @@
+# RUN: not %lldb -c /bogus/path 2>&1 | FileCheck %s
+# CHECK: error: file specified in --core (-c) option doesn't exist

Added: lldb/trunk/lit/Driver/TestFile.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/TestFile.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/TestFile.test (added)
+++ lldb/trunk/lit/Driver/TestFile.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,2 @@
+# RUN: not %lldb -f /bogus/path 2>&1 | FileCheck %s
+# CHECK: error: file specified in --file (-f) option doesn't exist

Added: lldb/trunk/lit/Driver/TestNoUseColor.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/TestNoUseColor.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/TestNoUseColor.test (added)
+++ lldb/trunk/lit/Driver/TestNoUseColor.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,4 @@
+# RUN: %lldb --no-use-color -s %s | FileCheck %s
+settings show use-color
+# CHECK: use-color (boolean) = false
+q

Added: lldb/trunk/lit/Driver/TestProcessAttach.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/TestProcessAttach.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/TestProcessAttach.test (added)
+++ lldb/trunk/lit/Driver/TestProcessAttach.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,2 @@
+# RUN: %lldb -x -b -S %S/Inputs/process_attach_pid.in 2>&1 | FileCheck %s
+# CHECK: last option requires an argument

Added: lldb/trunk/lit/Driver/TestRepl.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/TestRepl.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/TestRepl.test (added)
+++ lldb/trunk/lit/Driver/TestRepl.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,7 @@
+# RUN: echo ':quit' | %lldb -x --repl -O 'expr 42' -S %S/Inputs/Print2.in -o 'expr 999999' -s %s 2>&1 | FileCheck %s
+# CHECK: {{w}}arning: commands specified to run after file load (via -o or -s) are ignored in REPL mode
+# CHECK: (int) $0 = 42
+# CHECK: (int) $1 = 2
+# CHECK-NOT: 999999
+
+expr 999999

Added: lldb/trunk/lit/Driver/TestSingleQuote.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/TestSingleQuote.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/TestSingleQuote.test (added)
+++ lldb/trunk/lit/Driver/TestSingleQuote.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,6 @@
+# Make sure lldb can handle filenames with single quotes in them.
+# RUN: %clang %p/Inputs/hello.c -g -o "%t-'pat"
+# RUN: %lldb -s %s "%t-'pat" | FileCheck %s
+
+br set -p return
+# CHECK: Breakpoint 1: where = TestSingleQuote.test.tmp-'pat`main

Added: lldb/trunk/lit/Driver/TestTarget.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/TestTarget.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/TestTarget.test (added)
+++ lldb/trunk/lit/Driver/TestTarget.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,7 @@
+# Make sure lldb resolves the target path.
+# RUN: mkdir -p %t/foo
+# RUN: cd %t/foo
+# RUN: %clang %p/Inputs/hello.c -g -o a.out
+# RUN: %lldb -b a.out | FileCheck %s
+
+# CHECK: Current executable set to '{{.*}}foo{{[/\\\\]+}}a.out'

Added: lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-1.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-1.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-1.lldbinit (added)
+++ lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-1.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1 @@
+target stop-hook add -n b -o "expr ptr"

Added: lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-2.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-2.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-2.lldbinit (added)
+++ lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-2.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1 @@
+target stop-hook add -f stop-hook.c -l 29 -e 34 -o "expr ptr"

Added: lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-3.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-3.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-3.lldbinit (added)
+++ lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-3.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,3 @@
+target stop-hook add -f stop-hook.c -l 29 -e 34
+expr ptr
+DONE

Added: lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-threads-1.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-threads-1.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-threads-1.lldbinit (added)
+++ lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-threads-1.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,7 @@
+break set -f stop-hook-threads.cpp -p "Break here to set up the stop hook"
+break set -f stop-hook-threads.cpp -p "Break here to test that the stop-hook"
+run
+target stop-hook add -G true
+expr lldb_val += 1
+thread list
+DONE

Added: lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-threads-2.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-threads-2.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-threads-2.lldbinit (added)
+++ lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-threads-2.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,5 @@
+break set -f stop-hook-threads.cpp -p "Break here to set up the stop hook"
+break set -f stop-hook-threads.cpp -p "Break here to test that the stop-hook"
+run
+target stop-hook add -x 2 -o "expr lldb_val += 1" -o "thread list"
+target stop-hook add -G true -o "script print('Hit stop hook') 

Added: lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-threads.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-threads.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-threads.cpp (added)
+++ lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook-threads.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,79 @@
+//===-- stop-hook-threads.cpp -----------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include <chrono>
+#include <cstdio>
+#include <mutex>
+#include <random>
+#include <thread>
+
+std::default_random_engine g_random_engine{std::random_device{}()};
+std::uniform_int_distribution<> g_distribution{0, 3000};
+
+uint32_t g_val = 0;
+uint32_t lldb_val = 0;
+
+uint32_t
+access_pool (bool flag = false)
+{
+    static std::mutex g_access_mutex;
+    if (!flag)
+        g_access_mutex.lock();
+
+    uint32_t old_val = g_val;
+    if (flag)
+        g_val = old_val + 1;
+
+    if (!flag)
+        g_access_mutex.unlock();
+    return g_val;
+}
+
+void
+thread_func (uint32_t thread_index)
+{
+    // Break here to test that the stop-hook mechanism works for multiple threads.
+    printf ("%s (thread index = %u) startng...\n", __FUNCTION__, thread_index);
+
+    uint32_t count = 0;
+    uint32_t val;
+    while (count++ < 4)
+    {
+        // random micro second sleep from zero to .3 seconds
+        int usec = g_distribution(g_random_engine);
+        printf ("%s (thread = %u) doing a usleep (%d)...\n", __FUNCTION__, thread_index, usec);
+        std::this_thread::sleep_for(std::chrono::microseconds{usec}); // Set break point at this line
+
+        if (count < 2)
+            val = access_pool ();
+        else
+            val = access_pool (true);
+
+        printf ("%s (thread = %u) after usleep access_pool returns %d (count=%d)...\n", __FUNCTION__, thread_index, val, count);
+    }
+    printf ("%s (thread index = %u) exiting...\n", __FUNCTION__, thread_index);
+}
+
+
+int main (int argc, char const *argv[])
+{
+    std::thread threads[3];
+    // Break here to set up the stop hook
+    printf("Stop hooks engaged.\n");
+    // Create 3 threads
+    for (auto &thread : threads)
+        thread = std::thread{thread_func, std::distance(threads, &thread)};
+
+    // Join all of our threads
+    for (auto &thread : threads)
+        thread.join();
+
+    // print lldb_val so we can check it here.
+    printf ("lldb_val was set to: %d.\n", lldb_val);
+    return 0;
+}

Added: lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook.c
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook.c?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook.c (added)
+++ lldb/trunk/lit/ExecControl/StopHook/Inputs/stop-hook.c Wed Oct  9 10:35:43 2019
@@ -0,0 +1,53 @@
+//===-- main.c --------------------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+#include <stdio.h>
+#include <stdlib.h>
+
+int a(int);
+int b(int);
+int c(int);
+
+int a(int val)
+{
+    if (val <= 1)
+        return b(val);
+    else if (val >= 3)
+        return c(val);
+
+    return val;
+}
+
+int b(int val)
+{
+    int rc = c(val);
+    void *ptr = malloc(1024);
+    if (!ptr)  // Set breakpoint here to test target stop-hook.
+        return -1;
+    else
+        printf("ptr=%p\n", ptr); // We should stop here after stepping.
+    return rc; // End of the line range for which stop-hook is to be run.
+}
+
+int c(int val)
+{
+    return val + 3;
+}
+
+int main (int argc, char const *argv[])
+{
+    int A1 = a(1);
+    printf("a(1) returns %d\n", A1);
+    
+    int C2 = c(2); // Another breakpoint which is outside of the stop-hook range.
+    printf("c(2) returns %d\n", C2);
+    
+    int A3 = a(3);
+    printf("a(3) returns %d\n", A3);
+    
+    return 0;
+}

Added: lldb/trunk/lit/ExecControl/StopHook/stop-hook-threads.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ExecControl/StopHook/stop-hook-threads.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ExecControl/StopHook/stop-hook-threads.test (added)
+++ lldb/trunk/lit/ExecControl/StopHook/stop-hook-threads.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,35 @@
+# RUN: %clangxx -std=c++11 %p/Inputs/stop-hook-threads.cpp -g -o %t
+# RUN: %lldb -b -s %p/Inputs/stop-hook-threads-1.lldbinit -s %s -f %t \
+# RUN:     | FileCheck --check-prefix=CHECK --check-prefix=CHECK-NO-FILTER %s
+# RUN: %lldb -b -s %p/Inputs/stop-hook-threads-2.lldbinit -s %s -f %t \
+# RUN:     | FileCheck --check-prefix=CHECK --check-prefix=CHECK-FILTER %s
+# XFAIL: system-netbsd
+# UNSUPPORTED: system-windows
+# This test is flakey and hangs on windows periodically: llvm.org/pr38373
+# UNSUPPORTED: system-linux, system-darwin
+
+thread list
+break set -f stop-hook-threads.cpp -p "Set break point at this line"
+target stop-hook list
+
+# CHECK: Hook: 1
+# CHECK-NEXT:  State: enabled
+# CHECK-NO-FILTER-NEXT: AutoContinue on
+# CHECK-FILTER-NEXT:  Thread
+# CHECK-FILTER-NEXT:  index: 2
+# CHECK-NEXT:  Commands: 
+# CHECK-NEXT:    expr lldb_val += 1
+# CHECK-NEXT:    thread list
+
+# CHECK-FILTER: Hook: 2
+# CHECK-FILTER-NEXT:  State: enabled
+# CHECK-FILTER-NEXT:  AutoContinue on
+# CHECK-FILTER-NEXT:  Commands: 
+# CHECK-FILTER-NEXT:    script print('Hit stop hook')
+
+# Get the threads going
+continue
+
+# Now make sure we hit the command the right number of times:
+# CHECK-NO-FILTER: lldb_val was set to: 15.
+# CHECK-FILTER: lldb_val was set to: 5.

Added: lldb/trunk/lit/ExecControl/StopHook/stop-hook.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ExecControl/StopHook/stop-hook.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ExecControl/StopHook/stop-hook.test (added)
+++ lldb/trunk/lit/ExecControl/StopHook/stop-hook.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,76 @@
+# RUN: %clang %p/Inputs/stop-hook.c -g -o %t
+# Test setting stop-hook per-function
+# RUN: %lldb -b -s %p/Inputs/stop-hook-1.lldbinit -s %s -f %t \
+# RUN:      | FileCheck --check-prefix=CHECK --check-prefix=CHECK-FUNC %s
+# Test setting stop-hook per-line range
+# RUN: %lldb -b -s %p/Inputs/stop-hook-2.lldbinit -s %s -f %t | FileCheck %s
+# Test setting stop-hook with multi-line expression
+# RUN: %lldb -b -s %p/Inputs/stop-hook-3.lldbinit -s %s -f %t | FileCheck %s
+# This test is not "unsupported" on Windows, but it fails because "expr ptr"
+# does not evaluate correctly. However, the error message contains the expected
+# string, so the test "passes" despite the fact that the commands failed
+# llvm.org/pr40119
+# UNSUPPORTED: system-windows
+
+break set -f stop-hook.c -p "// Set breakpoint here to test target stop-hook"
+break set -f stop-hook.c -p "// Another breakpoint which is outside of the stop-hook range"
+target stop-hook list
+
+# CHECK: Hook: 1
+# CHECK-NEXT:  State: enabled
+# CHECK-NEXT:  Specifier:
+# CHECK-FUNC-NEXT:    Function: b.
+# CHECK-NEXT:  Commands: 
+# CHECK-NEXT:    expr ptr
+
+target stop-hook disable
+
+target stop-hook list
+# CHECK: Hook: 1
+# CHECK-NEXT:  State: disabled
+# CHECK-NEXT:  Specifier:
+# CHECK-FUNC-NEXT:    Function: b.
+# CHECK-NEXT:  Commands: 
+# CHECK-NEXT:    expr ptr
+
+target stop-hook enable
+
+target stop-hook list
+# CHECK: Hook: 1
+# CHECK-NEXT:  State: enabled
+# CHECK-NEXT:  Specifier:
+# CHECK-FUNC-NEXT:    Function: b.
+# CHECK-NEXT:  Commands: 
+# CHECK-NEXT:    expr ptr
+
+run
+# Stopping inside of the stop hook range
+# CHECK: (lldb) run
+# CHECK-NEXT: (void *) $0 = 0x
+
+thread step-over
+# Stepping inside of the stop hook range
+# CHECK: (lldb) thread step-over
+# CHECK-NEXT: (void *) $1 = 0x
+# CHECK: ->{{.*}} // We should stop here after stepping.
+
+process continue
+# Stopping outside of the stop hook range
+# CHECK: (lldb) process continue
+# CHECK-NOT: (void *)
+# CHECK: ->{{.*}} // Another breakpoint which is outside of the stop-hook range.
+
+thread step-over
+# Stepping inside of the stop hook range
+# CHECK: (lldb) thread step-over
+# CHECK-NOT: (void *)
+
+settings set auto-confirm true
+target stop-hook delete
+
+target stop-hook list
+# CHECK: (lldb) target stop-hook list
+# CHECK-NOT: Hook: 1
+# CHECK: No stop hooks
+# CHECK-NOT: Hook: 1
+

Added: lldb/trunk/lit/Expr/Inputs/call-function.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Expr/Inputs/call-function.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Expr/Inputs/call-function.cpp (added)
+++ lldb/trunk/lit/Expr/Inputs/call-function.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,53 @@
+#include <iostream>
+#include <string>
+#include <cstring>
+
+struct Five
+{
+    int number;
+    const char *name;
+};
+
+Five
+returnsFive()
+{
+    Five my_five = {5, "five"};
+    return my_five;
+}
+
+unsigned int
+fib(unsigned int n)
+{
+    if (n < 2)
+        return n;
+    else
+        return fib(n - 1) + fib(n - 2);
+}
+
+int
+add(int a, int b)
+{
+    return a + b;
+}
+
+bool
+stringCompare(const char *str)
+{
+    if (strcmp( str, "Hello world" ) == 0)
+        return true;
+    else
+        return false;
+}
+
+int main (int argc, char const *argv[])
+{
+    std::string str = "Hello world";
+    std::cout << str << std::endl;
+    std::cout << str.c_str() << std::endl;
+    Five main_five = returnsFive();
+#if 0
+    print str
+    print str.c_str()
+#endif
+    return 0; // Please test these expressions while stopped at this line:
+}

Added: lldb/trunk/lit/Expr/Inputs/ir-memory-map-basic
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Expr/Inputs/ir-memory-map-basic?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Expr/Inputs/ir-memory-map-basic (added)
+++ lldb/trunk/lit/Expr/Inputs/ir-memory-map-basic Wed Oct  9 10:35:43 2019
@@ -0,0 +1,25 @@
+L1 = malloc 0 1
+L2 = malloc 1 1
+
+L3 = malloc 2 1
+L4 = malloc 2 2
+L5 = malloc 2 4
+
+L6 = malloc 3 1
+L7 = malloc 3 2
+L8 = malloc 3 4
+
+L9 = malloc 128 1
+L10 = malloc 128 2
+L11 = malloc 128 4
+L12 = malloc 128 128
+
+L13 = malloc 2048 1
+L14 = malloc 2048 2
+L15 = malloc 2048 4
+
+L16 = malloc 3968 1
+L17 = malloc 3968 2
+L18 = malloc 3968 4
+
+L19 = malloc 0 1

Added: lldb/trunk/lit/Expr/Inputs/ir-memory-map-mix-malloc-free
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Expr/Inputs/ir-memory-map-mix-malloc-free?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Expr/Inputs/ir-memory-map-mix-malloc-free (added)
+++ lldb/trunk/lit/Expr/Inputs/ir-memory-map-mix-malloc-free Wed Oct  9 10:35:43 2019
@@ -0,0 +1,272 @@
+L1 = malloc 32 2
+free L1
+L2 = malloc 3 4
+L3 = malloc 3 128
+free L3
+free L2
+L4 = malloc 2 16
+free L4
+L5 = malloc 4097 4
+free L5
+L6 = malloc 2 2
+L7 = malloc 3 2
+L8 = malloc 32 16
+free L6
+free L8
+free L7
+L9 = malloc 8192 2
+L10 = malloc 33 4
+free L9
+L11 = malloc 2047 2
+L12 = malloc 5 16
+L13 = malloc 4 16
+L14 = malloc 2048 2
+free L10
+L15 = malloc 4 128
+free L13
+L16 = malloc 1 2
+L17 = malloc 4095 128
+free L12
+free L15
+L18 = malloc 0 128
+L19 = malloc 2 128
+L20 = malloc 4096 2
+L21 = malloc 2 2
+L22 = malloc 8192 128
+L23 = malloc 4 2
+L24 = malloc 4097 4
+free L19
+free L20
+L25 = malloc 3 128
+free L23
+free L21
+free L22
+free L25
+free L16
+L26 = malloc 1 128
+L27 = malloc 4096 4
+free L14
+L28 = malloc 31 2
+free L24
+L29 = malloc 2048 128
+free L28
+free L11
+L30 = malloc 4 2
+L31 = malloc 32 16
+L32 = malloc 1 4
+free L30
+L33 = malloc 3 2
+L34 = malloc 4096 4
+free L17
+free L18
+free L32
+L35 = malloc 4097 4
+L36 = malloc 8193 2
+L37 = malloc 3 2
+free L34
+L38 = malloc 8193 16
+L39 = malloc 4096 4
+L40 = malloc 8192 16
+L41 = malloc 32 4
+free L26
+free L38
+free L37
+L42 = malloc 0 2
+free L31
+free L40
+free L36
+free L35
+L43 = malloc 2047 2
+free L41
+L44 = malloc 4 4
+free L43
+free L33
+free L42
+L45 = malloc 4097 16
+free L27
+L46 = malloc 32 128
+L47 = malloc 8191 16
+L48 = malloc 1 16
+L49 = malloc 32 128
+L50 = malloc 3 2
+L51 = malloc 4096 128
+free L51
+L52 = malloc 2048 4
+free L29
+L53 = malloc 4097 128
+free L44
+L54 = malloc 1 16
+L55 = malloc 4095 16
+L56 = malloc 2047 2
+L57 = malloc 0 2
+L58 = malloc 2048 2
+free L48
+L59 = malloc 1 4
+L60 = malloc 32 16
+free L50
+L61 = malloc 1 4
+L62 = malloc 4096 2
+free L60
+L63 = malloc 1 16
+L64 = malloc 32 128
+free L55
+L65 = malloc 8192 16
+free L57
+L66 = malloc 1 128
+free L65
+free L61
+free L45
+free L64
+free L39
+L67 = malloc 2048 2
+free L47
+L68 = malloc 2049 4
+free L63
+free L68
+free L54
+free L59
+free L52
+L69 = malloc 2 2
+L70 = malloc 8192 16
+L71 = malloc 2049 16
+L72 = malloc 3 16
+L73 = malloc 4097 16
+L74 = malloc 4096 2
+L75 = malloc 4097 4
+free L67
+free L71
+free L72
+free L75
+free L74
+L76 = malloc 3 4
+free L70
+free L69
+L77 = malloc 4 4
+free L49
+L78 = malloc 4096 16
+L79 = malloc 33 2
+free L76
+L80 = malloc 2 16
+free L58
+free L80
+free L56
+L81 = malloc 1 128
+free L73
+L82 = malloc 1 16
+free L53
+free L81
+free L77
+L83 = malloc 2 2
+L84 = malloc 3 16
+free L62
+L85 = malloc 2049 2
+free L83
+L86 = malloc 3 4
+L87 = malloc 4096 128
+free L86
+L88 = malloc 3 2
+free L82
+free L66
+free L84
+L89 = malloc 8192 4
+free L88
+L90 = malloc 3 4
+L91 = malloc 1 4
+L92 = malloc 4097 4
+L93 = malloc 5 16
+L94 = malloc 2 128
+L95 = malloc 4096 2
+L96 = malloc 32 16
+L97 = malloc 8192 16
+L98 = malloc 32 128
+free L90
+free L79
+L99 = malloc 8193 4
+free L46
+L100 = malloc 31 4
+L101 = malloc 8192 128
+free L99
+L102 = malloc 2049 16
+L103 = malloc 4 2
+L104 = malloc 32 2
+free L101
+free L98
+L105 = malloc 1 16
+free L92
+L106 = malloc 2 2
+L107 = malloc 31 16
+L108 = malloc 2 4
+free L94
+L109 = malloc 4097 4
+L110 = malloc 31 4
+free L103
+L111 = malloc 31 4
+free L111
+L112 = malloc 2049 2
+L113 = malloc 32 128
+free L106
+L114 = malloc 8191 2
+free L105
+free L97
+free L109
+L115 = malloc 2 16
+free L78
+free L93
+free L114
+free L115
+free L96
+free L85
+L116 = malloc 2 16
+free L89
+free L87
+L117 = malloc 33 2
+L118 = malloc 1 4
+L119 = malloc 4096 128
+free L107
+L120 = malloc 8192 4
+L121 = malloc 1 128
+L122 = malloc 3 4
+L123 = malloc 2047 4
+L124 = malloc 2 2
+free L121
+free L102
+L125 = malloc 2 4
+L126 = malloc 1 16
+L127 = malloc 2048 2
+L128 = malloc 2048 16
+L129 = malloc 32 128
+free L124
+L130 = malloc 2048 16
+L131 = malloc 32 16
+L132 = malloc 32 128
+free L100
+free L117
+free L126
+L133 = malloc 8192 4
+L134 = malloc 8192 2
+L135 = malloc 2 16
+free L119
+L136 = malloc 31 16
+free L118
+free L125
+free L132
+free L122
+free L134
+free L136
+free L130
+free L110
+free L123
+free L104
+free L116
+free L133
+free L91
+free L113
+free L128
+free L129
+free L95
+free L131
+free L127
+free L112
+free L108
+free L135
+free L120
\ No newline at end of file

Added: lldb/trunk/lit/Expr/Inputs/ir-memory-map-overlap1
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Expr/Inputs/ir-memory-map-overlap1?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Expr/Inputs/ir-memory-map-overlap1 (added)
+++ lldb/trunk/lit/Expr/Inputs/ir-memory-map-overlap1 Wed Oct  9 10:35:43 2019
@@ -0,0 +1,10 @@
+L1 = malloc 8 16
+L2 = malloc 16 8
+L3 = malloc 64 32
+L4 = malloc 1 8
+L5 = malloc 64 32
+L6 = malloc 64 8
+L7 = malloc 1024 32
+L8 = malloc 1 16
+L9 = malloc 8 16
+L10 = malloc 1024 16

Added: lldb/trunk/lit/Expr/TestIRMemoryMap.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Expr/TestIRMemoryMap.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Expr/TestIRMemoryMap.test (added)
+++ lldb/trunk/lit/Expr/TestIRMemoryMap.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,12 @@
+# UNSUPPORTED: system-windows
+
+# RUN: %clangxx %p/Inputs/call-function.cpp -g -o %t
+
+# RUN: lldb-test ir-memory-map %t %S/Inputs/ir-memory-map-basic
+# RUN: lldb-test ir-memory-map -host-only %t %S/Inputs/ir-memory-map-basic
+
+# RUN: lldb-test ir-memory-map %t %S/Inputs/ir-memory-map-overlap1
+# RUN: lldb-test ir-memory-map -host-only %t %S/Inputs/ir-memory-map-overlap1
+
+# RUN: lldb-test ir-memory-map %t %S/Inputs/ir-memory-map-mix-malloc-free
+# RUN: lldb-test ir-memory-map -host-only %t %S/Inputs/ir-memory-map-mix-malloc-free

Added: lldb/trunk/lit/Expr/TestIRMemoryMapWindows.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Expr/TestIRMemoryMapWindows.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Expr/TestIRMemoryMapWindows.test (added)
+++ lldb/trunk/lit/Expr/TestIRMemoryMapWindows.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,13 @@
+# REQUIRES: system-windows
+
+# RUN: %clang_cl /Zi /GS- %p/Inputs/call-function.cpp /c /o %t.obj
+# RUN: %msvc_link /debug:full %t.obj /out:%t
+
+# RUN: lldb-test ir-memory-map %t %S/Inputs/ir-memory-map-basic
+# RUN: lldb-test ir-memory-map -host-only %t %S/Inputs/ir-memory-map-basic
+
+# RUN: lldb-test ir-memory-map %t %S/Inputs/ir-memory-map-overlap1
+# RUN: lldb-test ir-memory-map -host-only %t %S/Inputs/ir-memory-map-overlap1
+
+# RUN: lldb-test ir-memory-map %t %S/Inputs/ir-memory-map-mix-malloc-free
+# RUN: lldb-test ir-memory-map -host-only %t %S/Inputs/ir-memory-map-mix-malloc-free

Added: lldb/trunk/lit/Expr/TestMultilineExpr.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Expr/TestMultilineExpr.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Expr/TestMultilineExpr.test (added)
+++ lldb/trunk/lit/Expr/TestMultilineExpr.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,9 @@
+# RUN: %lldb -b -s %s | FileCheck %s
+
+# In terminal sessions LLDB hides input from subsequent lines so it's not visible in the output we check below.
+expression
+2+
+3
+
+# CHECK: (lldb) expression
+# CHECK: (int) {{.*}} = 5

Added: lldb/trunk/lit/Expr/TestTypeOfDeclTypeExpr.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Expr/TestTypeOfDeclTypeExpr.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Expr/TestTypeOfDeclTypeExpr.test (added)
+++ lldb/trunk/lit/Expr/TestTypeOfDeclTypeExpr.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,13 @@
+# RUN: %lldb -b -s %s | FileCheck %s
+
+expression int i; __typeof__(i) j = 1; j
+# CHECK: (lldb) expression int i; __typeof__(i) j = 1; j
+# CHECK-NEXT: (typeof (i)) {{.*}} = 1
+
+expression int i; typeof(i) j = 1; j
+# CHECK: (lldb) expression int i; typeof(i) j = 1; j
+# CHECK-NEXT: (typeof (i)) {{.*}} = 1
+
+expression int i; decltype(i) j = 1; j
+# CHECK: (lldb) expression int i; decltype(i) j = 1; j
+# CHECK-NEXT: (decltype(i)) {{.*}} = 1

Added: lldb/trunk/lit/Heap/Inputs/cstr.c
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Heap/Inputs/cstr.c?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Heap/Inputs/cstr.c (added)
+++ lldb/trunk/lit/Heap/Inputs/cstr.c Wed Oct  9 10:35:43 2019
@@ -0,0 +1,17 @@
+#include <stdlib.h>
+
+int main(void) {
+  char *str;
+  int size = 9; //strlen("patatino") + 1
+  str = (char *)malloc(sizeof(char)*size);
+  *(str+0) = 'p';
+  *(str+1) = 'a';
+  *(str+2) = 't';
+  *(str+3) = 'a';
+  *(str+4) = 't';
+  *(str+5) = 'i';
+  *(str+6) = 'n';
+  *(str+7) = 'o';
+  *(str+8) = '\0';
+  return 0;
+}

Added: lldb/trunk/lit/Heap/heap-cstr.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Heap/heap-cstr.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Heap/heap-cstr.test (added)
+++ lldb/trunk/lit/Heap/heap-cstr.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,10 @@
+# REQUIRES: system-darwin
+# RUN: %clang %p/Inputs/cstr.c -g -o %t
+# RUN: %lldb -b -s %s -f %t | FileCheck %s
+
+br set -p return
+command script import lldb.macosx.heap
+run
+cstr "patatino"
+
+# CHECK: {{.*}}: malloc(    16) -> {{.*}}

Added: lldb/trunk/lit/Host/Inputs/simple.c
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Host/Inputs/simple.c?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Host/Inputs/simple.c (added)
+++ lldb/trunk/lit/Host/Inputs/simple.c Wed Oct  9 10:35:43 2019
@@ -0,0 +1 @@
+int main(int argc, char const *argv[]) { return 0; }

Added: lldb/trunk/lit/Host/TestCustomShell.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Host/TestCustomShell.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Host/TestCustomShell.test (added)
+++ lldb/trunk/lit/Host/TestCustomShell.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,12 @@
+# This test applies to POSIX.
+# UNSUPPORTED: system-windows
+
+# FIXME: ShellExpandArguments is unimplemented on Linux.
+# UNSUPPORTED: system-linux
+
+# RUN: %clang %S/Inputs/simple.c -g -o %t.out
+# RUN: SHELL=bogus %lldb %t.out -b -o 'run' 2>&1 | FileCheck %s --check-prefix ERROR
+# RUN: env -i %lldb %t.out -b -o 'run' 2>&1 | FileCheck %s
+
+# ERROR: error: shell expansion failed
+# CHECK-NOT: error: shell expansion failed

Added: lldb/trunk/lit/Minidump/Inputs/linux-x86_64.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Minidump/Inputs/linux-x86_64.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Minidump/Inputs/linux-x86_64.syms (added)
+++ lldb/trunk/lit/Minidump/Inputs/linux-x86_64.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,4 @@
+MODULE Linux x86_64 3B285CE327C387C262DB788BF5A4078B0 linux-x86_64
+INFO CODE_ID E35C283BC327C28762DB788BF5A4078BE2351448
+FUNC 3d0 18 0 crash()
+FUNC 3f0 10 0 _start

Added: lldb/trunk/lit/Minidump/Inputs/linux-x86_64.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Minidump/Inputs/linux-x86_64.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Minidump/Inputs/linux-x86_64.yaml (added)
+++ lldb/trunk/lit/Minidump/Inputs/linux-x86_64.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,29 @@
+--- !minidump
+Streams:         
+  - Type:            ModuleList
+    Modules:         
+      - Base of Image:   0x0000000000400000
+        Size of Image:   0x00001000
+        Module Name:     '/tmp/test/linux-x86_64'
+        CodeView Record: 4C457042E35C283BC327C28762DB788BF5A4078BE2351448
+  - Type:            SystemInfo
+    Processor Arch:  AMD64
+    Processor Level: 6
+    Processor Revision: 15876
+    Number of Processors: 40
+    Platform ID:     Linux
+    CSD Version:     'Linux 3.13.0-91-generic #138-Ubuntu SMP Fri Jun 24 17:00:34 UTC 2016 x86_64'
+    CPU:             
+      Vendor ID:       GenuineIntel
+      Version Info:    0x00000000
+      Feature Info:    0x00000000
+  - Type:            LinuxProcStatus
+    Text:             |
+      Name:	linux-x86_64
+      State:	t (tracing stop)
+      Tgid:	29917
+      Ngid:	0
+      Pid:	29917
+      PPid:	29370
+
+...

Added: lldb/trunk/lit/Minidump/Windows/Inputs/find-module.dmp.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Minidump/Windows/Inputs/find-module.dmp.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Minidump/Windows/Inputs/find-module.dmp.yaml (added)
+++ lldb/trunk/lit/Minidump/Windows/Inputs/find-module.dmp.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,26 @@
+--- !minidump
+Streams:
+  - Type:            ModuleList
+    Modules:
+      - Base of Image:   0x00000000000B0000
+        Size of Image:   0x00005000
+        Module Name:     'find-module.exe'
+        CodeView Record: 525344533ED87D89C8A8184197F3A925EE4BF74101000000433A5C70726F6A656374735C746573745F6170705C436F6E736F6C654170706C69636174696F6E315C44656275675C436F6E736F6C654170706C69636174696F6E312E70646200
+  - Type:            SystemInfo
+    Processor Arch:  X86
+    Processor Level: 23
+    Processor Revision: 2050
+    Number of Processors: 32
+    Product type:    1
+    Major Version:   10
+    Build Number:    17134
+    Platform ID:     Win32NT
+    Suite Mask:      0x0300
+    CPU:
+      Vendor ID:       AuthenticAMD
+      Version Info:    0x00800F82
+      Feature Info:    0x178BFBFF
+      AMD Extended Features: 0x2FD3FBFF
+  - Type:            MiscInfo
+    Content:         54050000F703000008290000C883495D0000000000000000AC0D000098080000AC0D00000200000002000000002000000D0000000000000002000000C4FFFFFF430065006E007400720061006C0020004500750072006F007000650020005300740061006E0064006100720064002000540069006D006500000000000000000000000A0000000500030000000000000000000000430065006E007400720061006C0020004500750072006F00700065002000530075006D006D00650072002000540069006D00650000000000000000000000000000000300000005000200000000000000C4FFFFFF310037003100330034002E0031002E007800380036006600720065002E007200730034005F00720065006C0065006100730065002E003100380030003400310030002D00310038003000340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064006200670063006F00720065002E0069003300380036002C00310030002E0030002E00310037003100330034002E0031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006C816B92
+...

Added: lldb/trunk/lit/Minidump/Windows/Inputs/find-module.exe.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Minidump/Windows/Inputs/find-module.exe.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Minidump/Windows/Inputs/find-module.exe.yaml (added)
+++ lldb/trunk/lit/Minidump/Windows/Inputs/find-module.exe.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,32 @@
+--- !COFF
+OptionalHeader:
+  AddressOfEntryPoint: 4224
+  ImageBase:       4194304
+  SectionAlignment: 4096
+  FileAlignment:   512
+  MajorOperatingSystemVersion: 6
+  MinorOperatingSystemVersion: 0
+  MajorImageVersion: 0
+  MinorImageVersion: 0
+  MajorSubsystemVersion: 6
+  MinorSubsystemVersion: 0
+  Subsystem:       IMAGE_SUBSYSTEM_WINDOWS_CUI
+  DLLCharacteristics: [ IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE, IMAGE_DLL_CHARACTERISTICS_NX_COMPAT, IMAGE_DLL_CHARACTERISTICS_NO_SEH, IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE ]
+  SizeOfStackReserve: 1048576
+  SizeOfStackCommit: 4096
+  SizeOfHeapReserve: 1048576
+  SizeOfHeapCommit: 4096
+header:
+  Machine:         IMAGE_FILE_MACHINE_I386
+  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_32BIT_MACHINE ]
+sections:
+  - Name:            .rdata
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
+    VirtualAddress:  8192
+    VirtualSize:     304
+  - Name:            .reloc
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
+    VirtualAddress:  16384
+    VirtualSize:     48
+symbols:         []
+...

Added: lldb/trunk/lit/Minidump/Windows/Sigsegv/Inputs/sigsegv.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Minidump/Windows/Sigsegv/Inputs/sigsegv.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Minidump/Windows/Sigsegv/Inputs/sigsegv.cpp (added)
+++ lldb/trunk/lit/Minidump/Windows/Sigsegv/Inputs/sigsegv.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,40 @@
+
+// nodefaultlib build: cl -Zi sigsegv.cpp /link /nodefaultlib
+
+#ifdef USE_CRT
+#include <stdio.h>
+#else
+int main();
+extern "C"
+{
+    int _fltused;
+    void mainCRTStartup() { main(); }
+    void printf(const char*, ...) {}
+}
+#endif
+
+void crash(bool crash_self)
+{
+    printf("Before...\n");
+    if(crash_self)
+    {
+        printf("Crashing in 3, 2, 1 ...\n");
+        *(volatile int*)nullptr = 0;
+    }
+    printf("After...\n");
+}
+
+int foo(int x, float y, const char* msg)
+{
+    bool flag = x > y;
+    if(flag)
+        printf("x = %d, y = %f, msg = %s\n", x, y, msg);
+    crash(flag);
+    return x << 1;
+}
+
+int main()
+{
+    foo(10, 3.14, "testing");
+}
+

Added: lldb/trunk/lit/Minidump/Windows/Sigsegv/Inputs/sigsegv.dmp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Minidump/Windows/Sigsegv/Inputs/sigsegv.dmp?rev=374187&view=auto
==============================================================================
Binary file - no diff available.

Propchange: lldb/trunk/lit/Minidump/Windows/Sigsegv/Inputs/sigsegv.dmp
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: lldb/trunk/lit/Minidump/Windows/Sigsegv/Inputs/sigsegv.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Minidump/Windows/Sigsegv/Inputs/sigsegv.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Minidump/Windows/Sigsegv/Inputs/sigsegv.lldbinit (added)
+++ lldb/trunk/lit/Minidump/Windows/Sigsegv/Inputs/sigsegv.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,2 @@
+bt all
+dis

Added: lldb/trunk/lit/Minidump/Windows/Sigsegv/Inputs/sigsegv.pdb
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Minidump/Windows/Sigsegv/Inputs/sigsegv.pdb?rev=374187&view=auto
==============================================================================
Binary file - no diff available.

Propchange: lldb/trunk/lit/Minidump/Windows/Sigsegv/Inputs/sigsegv.pdb
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: lldb/trunk/lit/Minidump/Windows/Sigsegv/sigsegv.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Minidump/Windows/Sigsegv/sigsegv.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Minidump/Windows/Sigsegv/sigsegv.test (added)
+++ lldb/trunk/lit/Minidump/Windows/Sigsegv/sigsegv.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,13 @@
+// RUN: cd %p/Inputs
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 \
+// RUN:   %lldb -c sigsegv.dmp -s sigsegv.lldbinit | FileCheck %s
+
+CHECK: * thread #1, stop reason = Exception 0xc0000005 encountered at address 0x7ff7a13110d9
+CHECK:   * frame #0: 0x00007ff7a13110d9 sigsegv.exe
+
+CHECK: ->  0x7ff7a13110d9: movl   $0x0, 0x0
+CHECK:     0x7ff7a13110e4: leaq   0x1f45(%rip), %rcx
+CHECK:     0x7ff7a13110eb: callq  0x7ff7a1311019
+CHECK:     0x7ff7a13110f0: addq   $0x28, %rsp
+CHECK:     0x7ff7a13110f4: retq
+CHECK:     0x7ff7a13110f5: int3

Added: lldb/trunk/lit/Minidump/Windows/find-module.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Minidump/Windows/find-module.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Minidump/Windows/find-module.test (added)
+++ lldb/trunk/lit/Minidump/Windows/find-module.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,10 @@
+Test that we correctly find a PE/COFF file in our executable search path, and
+use it when opening minidumps.
+
+RUN: yaml2obj %S/Inputs/find-module.exe.yaml > %T/find-module.exe
+RUN: yaml2obj %S/Inputs/find-module.dmp.yaml > %T/find-module.dmp
+RUN: %lldb -O "settings set target.exec-search-paths %T" \
+RUN:   -c %T/find-module.dmp -o "image dump objfile" -o exit | FileCheck %s
+
+CHECK-LABEL: image dump objfile
+CHECK: ObjectFilePECOFF, file = '{{.*}}find-module.exe', arch = i386

Added: lldb/trunk/lit/Minidump/breakpad-symbols.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Minidump/breakpad-symbols.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Minidump/breakpad-symbols.test (added)
+++ lldb/trunk/lit/Minidump/breakpad-symbols.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,27 @@
+# Test that we can attach breakpad symbols to the "placeholder" modules created
+# for minidump files.
+#
+# The minidump input for this test taken from packages/Python/lldbsuite/test/functionalities/postmortem/minidump-new
+
+# RUN: yaml2obj %S/Inputs/linux-x86_64.yaml > %t
+# RUN: %lldb -c %t \
+# RUN:   -o "target symbols add -s /tmp/test/linux-x86_64 %S/Inputs/linux-x86_64.syms" \
+# RUN:   -s %s -o exit | FileCheck %s
+
+image list
+# CHECK-LABEL: image list
+# CHECK: E35C283B-C327-C287-62DB-788BF5A4078B-E2351448 0x0000000000400000 /tmp/test/linux-x86_64
+
+image dump symtab /tmp/test/linux-x86_64
+# CHECK-LABEL: image dump symtab /tmp/test/linux-x86_64
+# CHECK: Symtab, file = /tmp/test/linux-x86_64, num_symbols = 2:
+# CHECK: [    0]      0   X Code            0x00000000004003d0 0x00000000004003d0 0x0000000000000018 0x00000000 crash()
+# CHECK: [    1]      0   X Code            0x00000000004003f0 0x00000000004003f0 0x0000000000000010 0x00000000 _start
+
+image lookup -a 0x4003f3
+# CHECK-LABEL: image lookup -a 0x4003f3
+# CHECK: Summary: linux-x86_64`_start + 3
+
+image dump objfile /tmp/test/linux-x86_64
+# CHECK-LABEL: image dump objfile /tmp/test/linux-x86_64
+# CHECK: Placeholder object file for /tmp/test/linux-x86_64 loaded at [0x400000-0x401000)

Added: lldb/trunk/lit/Minidump/disassemble-no-module.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Minidump/disassemble-no-module.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Minidump/disassemble-no-module.yaml (added)
+++ lldb/trunk/lit/Minidump/disassemble-no-module.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,48 @@
+# RUN: yaml2obj %s > %t
+# RUN: %lldb -c %t -o bt -o disassemble 2>&1 | FileCheck %s
+
+# CHECK-LABEL: (lldb) bt
+# CHECK: frame #0: 0x0000000000400430
+# CHECK-LABEL: (lldb) disassemble
+# CHECK-NEXT: error: error reading data from section .module_image
+# CHECK-NEXT: error: Failed to disassemble memory at 0x00400430.
+
+--- !minidump
+Streams:         
+  - Type:            ThreadList
+    Threads:         
+      - Thread Id:       0x000074F3
+        Context:         0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B001000000000006CAE000000006B7FC05A0000C81D415A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A2BF9E5A6B7F0000000000000000000000000000000000008850C14BFD7F00009850C14BFD7F00000100000000000000B04AC14BFD7F0000000000000000000060812D01000000000800000000000000B065E05A6B7F00008004400000000000E050C14BFD7F00000000000000000000000000000000000030044000000000007F03FFFF0000FFFFFFFFFFFF000000000000000000000000801F00006B7F00000400000000000000B84CC14BFD7F0000304D405A6B7F0000C84DC14BFD7F0000C0AA405A6B7F00004F033D0000000000B84DC14BFD7F0000E84DC14BFD7F0000000000000000000000000000000000000070E05A6B7F000078629E5A6B7F0000C81D415A6B7F0000804F9E5A6B7F00000000000001000000E603000001000000E093115A6B7F0000804EC14BFD7F0000584EC14BFD7F000099ADC05A6B7F00000100000000000000AAAAD77D0000000002000000000000000800000000000000B065E05A6B7F0000E6B7C05A6B7F0000010000006B7F0000884DC14BFD7F0000106F7C5A6B7F0000984EC14BFD7F0000488B7C5A6B7F0000C4A71CB90000000001000000000000000800000000000000B065E05A6B7F000048B6C05A6B7F0000702AE25A6B7F0000D84DC14BFD7F000030489E5A6B7F0000E84EC14BFD7F0000E05E9E5A6B7F00000991F0460000000001000000000000000800000000000000B065E05A6B7F000048B6C05A6B7F00000100000000000000284EC14BFD7F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+        Stack:           
+          Start of Memory Range: 0x00007FFD4BC15080
+          Content:         30044000000000000000000000000000
+  - Type:            ModuleList
+    Modules:         
+      - Base of Image:   0x0000000000400000
+        Size of Image:   0x00001000
+        Module Name:     'nonexisting-module'
+        CodeView Record: 4C4570426CCF3F60FFA7CC4B86AE8FF44DB2576A68983611
+  - Type:            MemoryList
+    Memory Ranges:   
+      - Start of Memory Range: 0x00007FFD4BC15080
+        Content:         30044000000000000000000000000000
+  - Type:            SystemInfo
+    Processor Arch:  AMD64
+    Platform ID:     Linux
+    CPU:             
+      Vendor ID:       GenuineIntel
+      Version Info:    0x00000000
+      Feature Info:    0x00000000
+  - Type:            LinuxProcStatus
+    Text:             |
+      Name:	nonexisting-module
+      State:	t (tracing stop)
+      Tgid:	29939
+      Ngid:	0
+      Pid:	29939
+      PPid:	29370
+      TracerPid:	29940
+      Uid:	1001	1001	1001	1001
+      Gid:	1001	1001	1001	1001
+
+...

Added: lldb/trunk/lit/Minidump/dump-all.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Minidump/dump-all.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Minidump/dump-all.test (added)
+++ lldb/trunk/lit/Minidump/dump-all.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,126 @@
+# RUN: yaml2obj %s > %t
+# RUN: %lldb -c %t -o 'process plugin dump --all' | \
+# RUN: FileCheck --check-prefix=CHECKDIR --check-prefix=CHECKCPU \
+# RUN: --check-prefix=CHECKSTATUS --check-prefix=CHECKLSB \
+# RUN: --check-prefix=CHECKCMD --check-prefix=CHECKENV \
+# RUN: --check-prefix=CHECKAUX --check-prefix=CHECKMAP \
+# RUN: --check-prefix=CHECKSTAT --check-prefix=CHECKUP --check-prefix=CHECKFD %s
+# RUN: %lldb -c %t -o 'process plugin dump -a' | \
+# RUN: FileCheck --check-prefix=CHECKDIR --check-prefix=CHECKCPU \
+# RUN: --check-prefix=CHECKSTATUS --check-prefix=CHECKLSB \
+# RUN: --check-prefix=CHECKCMD --check-prefix=CHECKENV \
+# RUN: --check-prefix=CHECKAUX --check-prefix=CHECKMAP \
+# RUN: --check-prefix=CHECKSTAT --check-prefix=CHECKUP --check-prefix=CHECKFD %s
+# RUN: %lldb -c %t -o 'process plugin dump --directory' | FileCheck --check-prefix=CHECKDIR %s
+# RUN: %lldb -c %t -o 'process plugin dump -d' | FileCheck --check-prefix=CHECKDIR %s
+# RUN: %lldb -c %t -o 'process plugin dump --linux' | \
+# RUN: FileCheck --check-prefix=CHECKCPU --check-prefix=CHECKSTATUS \
+# RUN: --check-prefix=CHECKLSB --check-prefix=CHECKCMD --check-prefix=CHECKENV \
+# RUN: --check-prefix=CHECKAUX --check-prefix=CHECKMAP --check-prefix=CHECKSTAT \
+# RUN: --check-prefix=CHECKUP --check-prefix=CHECKFD %s
+# RUN: %lldb -c %t -o 'process plugin dump --cpuinfo'     | FileCheck --check-prefix=CHECKCPU %s
+# RUN: %lldb -c %t -o 'process plugin dump -C'            | FileCheck --check-prefix=CHECKCPU %s
+# RUN: %lldb -c %t -o 'process plugin dump --status'      | FileCheck --check-prefix=CHECKSTATUS %s
+# RUN: %lldb -c %t -o 'process plugin dump -s'            | FileCheck --check-prefix=CHECKSTATUS %s
+# RUN: %lldb -c %t -o 'process plugin dump --lsb-release' | FileCheck --check-prefix=CHECKLSB %s
+# RUN: %lldb -c %t -o 'process plugin dump -r'            | FileCheck --check-prefix=CHECKLSB %s
+# RUN: %lldb -c %t -o 'process plugin dump --cmdline'     | FileCheck --check-prefix=CHECKCMD %s
+# RUN: %lldb -c %t -o 'process plugin dump -c'            | FileCheck --check-prefix=CHECKCMD %s
+# RUN: %lldb -c %t -o 'process plugin dump --environ'     | FileCheck --check-prefix=CHECKENV %s
+# RUN: %lldb -c %t -o 'process plugin dump -e'            | FileCheck --check-prefix=CHECKENV %s
+# RUN: %lldb -c %t -o 'process plugin dump --auxv'        | FileCheck --check-prefix=CHECKAUX %s
+# RUN: %lldb -c %t -o 'process plugin dump -x'            | FileCheck --check-prefix=CHECKAUX %s
+# RUN: %lldb -c %t -o 'process plugin dump --maps'        | FileCheck --check-prefix=CHECKMAP %s
+# RUN: %lldb -c %t -o 'process plugin dump -m'            | FileCheck --check-prefix=CHECKMAP %s
+# RUN: %lldb -c %t -o 'process plugin dump --stat'        | FileCheck --check-prefix=CHECKSTAT %s
+# RUN: %lldb -c %t -o 'process plugin dump -S'            | FileCheck --check-prefix=CHECKSTAT %s
+# RUN: %lldb -c %t -o 'process plugin dump --uptime'      | FileCheck --check-prefix=CHECKUP %s
+# RUN: %lldb -c %t -o 'process plugin dump -u'            | FileCheck --check-prefix=CHECKUP %s
+# RUN: %lldb -c %t -o 'process plugin dump --fd'          | FileCheck --check-prefix=CHECKFD %s
+# RUN: %lldb -c %t -o 'process plugin dump -f'            | FileCheck --check-prefix=CHECKFD %s
+
+# CHECKDIR:      RVA        SIZE       TYPE       StreamType
+# CHECKDIR-NEXT: ---------- ---------- ---------- --------------------------
+# CHECKDIR-NEXT: 0x{{[0-9a-f]{8} }}0x00000038 0x00000007 SystemInfo
+# CHECKDIR-NEXT: 0x{{[0-9a-f]{8} }}0x00000018 0x0000000f MiscInfo
+# CHECKDIR-NEXT: 0x{{[0-9a-f]{8} }}0x00000010 0x47670003 LinuxCPUInfo
+# CHECKDIR-NEXT: 0x{{[0-9a-f]{8} }}0x0000001a 0x47670004 LinuxProcStatus
+# CHECKDIR-NEXT: 0x{{[0-9a-f]{8} }}0x00000018 0x47670005 LinuxLSBRelease
+# CHECKDIR-NEXT: 0x{{[0-9a-f]{8} }}0x0000001b 0x47670006 LinuxCMDLine
+# CHECKDIR-NEXT: 0x{{[0-9a-f]{8} }}0x0000001b 0x47670007 LinuxEnviron
+# CHECKDIR-NEXT: 0x{{[0-9a-f]{8} }}0x00000018 0x47670008 LinuxAuxv
+# CHECKDIR-NEXT: 0x{{[0-9a-f]{8} }}0x000000bb 0x47670009 LinuxMaps
+# CHECKDIR-NEXT: 0x{{[0-9a-f]{8} }}0x00000018 0x4767000b LinuxProcStat
+# CHECKDIR-NEXT: 0x{{[0-9a-f]{8} }}0x0000000e 0x4767000c LinuxProcUptime
+# CHECKDIR-NEXT: 0x{{[0-9a-f]{8} }}0x00000016 0x4767000d LinuxProcFD
+
+--- !minidump
+Streams:         
+  - Type:            SystemInfo
+    Processor Arch:  ARM64
+    Platform ID:     Linux
+    CSD Version:     '15E216'
+    CPU:             
+      CPUID:           0x00000000
+  - Type:            MiscInfo
+    Content:         00000000010000007B000000000000000000000000000000
+  - Type:            LinuxCPUInfo
+    Text:             |
+      cpu info output
+
+# CHECKCPU:      /proc/cpuinfo:
+# CHECKCPU-NEXT: cpu info output
+  - Type:            LinuxProcStatus
+    Text:             |
+      /proc/<pid>/status output
+
+# CHECKSTATUS:      /proc/PID/status:
+# CHECKSTATUS-NEXT: /proc/<pid>/status output
+  - Type:            LinuxLSBRelease
+    Text:             |
+      /etc/lsb-release output
+
+# CHECKLSB:      /etc/lsb-release:
+# CHECKLSB-NEXT: /etc/lsb-release output
+  - Type:            LinuxCMDLine
+    Text:             |
+      /proc/<pid>/cmdline output
+
+# CHECKCMD:      /proc/PID/cmdline:
+# CHECKCMD-NEXT: /proc/<pid>/cmdline output
+  - Type:            LinuxEnviron
+    Content:         2F70726F632F3C7069643E2F656E7669726F6E206F757470757400
+# CHECKENV:      /proc/PID/environ:
+# CHECKENV-NEXT: /proc/<pid>/environ output
+  - Type:            LinuxAuxv
+    Content:         2F70726F632F3C7069643E2F61757876206F757470757400
+# CHECKAUX:      /proc/PID/auxv:
+# CHECKAUX-NEXT: 0x00000000: 2f 70 72 6f 63 2f 3c 70 69 64 3e 2f 61 75 78 76  /proc/<pid>/auxv
+# CHECKAUX-NEXT: 0x00000010: 20 6f 75 74 70 75 74 00                           output.
+  - Type:            LinuxMaps
+    Text:             |
+      400d9000-400db000 r-xp 00000000 b3:04 227        /system/bin/app_process
+      400db000-400dc000 r--p 00001000 b3:04 227        /system/bin/app_process
+      400dc000-400dd000 rw-p 00000000 00:00 0 
+
+# CHECKMAP:      /proc/PID/maps:
+# CHECKMAP-NEXT: 400d9000-400db000 r-xp 00000000 b3:04 227        /system/bin/app_process
+# CHECKMAP-NEXT: 400db000-400dc000 r--p 00001000 b3:04 227        /system/bin/app_process
+# CHECKMAP-NEXT: 400dc000-400dd000 rw-p 00000000 00:00 0 
+  - Type:            LinuxProcStat
+    Text:             |
+      /proc/<pid>/stat output
+
+# CHECKSTAT:      /proc/PID/stat:
+# CHECKSTAT-NEXT: /proc/<pid>/stat output
+  - Type:            LinuxProcUptime
+    Text:             |
+      uptime output
+
+# CHECKUP:      uptime:
+# CHECKUP-NEXT: uptime output
+  - Type:            LinuxProcFD
+    Content:         2F70726F632F3C7069643E2F6664206F757470757400
+# CHECKFD:      /proc/PID/fd:
+# CHECKFD-NEXT: /proc/<pid>/fd output
+...

Added: lldb/trunk/lit/Minidump/fb-dump.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Minidump/fb-dump.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Minidump/fb-dump.test (added)
+++ lldb/trunk/lit/Minidump/fb-dump.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,126 @@
+# RUN: yaml2obj %s > %t
+# RUN: %lldb -c %t -o 'process plugin dump --all' | \
+# RUN:   FileCheck --check-prefix=CHECK-DIR --check-prefix=CHECK-APPDATA \
+# RUN:   --check-prefix=CHECK-BUILD --check-prefix=CHECK-VERSION \
+# RUN:   --check-prefix=CHECK-JAVA --check-prefix=CHECK-DALVIK \
+# RUN:   --check-prefix=CHECK-UNWIND --check-prefix=CHECK-ERROR \
+# RUN:   --check-prefix=CHECK-APPSTATE --check-prefix=CHECK-ABORT \
+# RUN:   --check-prefix=CHECK-THREAD --check-prefix=CHECK-LOGCAT %s
+# RUN: %lldb -c %t -o 'process plugin dump -a' | \
+# RUN:   FileCheck --check-prefix=CHECK-DIR --check-prefix=CHECK-APPDATA \
+# RUN:   --check-prefix=CHECK-BUILD --check-prefix=CHECK-VERSION \
+# RUN:   --check-prefix=CHECK-JAVA --check-prefix=CHECK-DALVIK \
+# RUN:   --check-prefix=CHECK-UNWIND --check-prefix=CHECK-ERROR \
+# RUN:   --check-prefix=CHECK-APPSTATE --check-prefix=CHECK-ABORT \
+# RUN:   --check-prefix=CHECK-THREAD --check-prefix=CHECK-LOGCAT %s
+# RUN: %lldb -c %t -o 'process plugin dump --facebook' | \
+# RUN:   FileCheck --check-prefix=CHECK-APPDATA \
+# RUN:   --check-prefix=CHECK-BUILD --check-prefix=CHECK-VERSION \
+# RUN:   --check-prefix=CHECK-JAVA --check-prefix=CHECK-DALVIK \
+# RUN:   --check-prefix=CHECK-UNWIND --check-prefix=CHECK-ERROR \
+# RUN:   --check-prefix=CHECK-APPSTATE --check-prefix=CHECK-ABORT \
+# RUN:   --check-prefix=CHECK-THREAD --check-prefix=CHECK-LOGCAT %s
+# RUN: %lldb -c %t -o 'process plugin dump --fb-app-data' | \
+# RUN:   FileCheck --check-prefix=CHECK-APPDATA %s
+# RUN: %lldb -c %t -o 'process plugin dump --fb-build-id' | \
+# RUN:   FileCheck --check-prefix=CHECK-BUILD %s
+# RUN: %lldb -c %t -o 'process plugin dump --fb-version' | \
+# RUN:   FileCheck --check-prefix=CHECK-VERSION %s
+# RUN: %lldb -c %t -o 'process plugin dump --fb-java-stack' | \
+# RUN:   FileCheck --check-prefix=CHECK-JAVA %s
+# RUN: %lldb -c %t -o 'process plugin dump --fb-dalvik-info' | \
+# RUN:   FileCheck --check-prefix=CHECK-DALVIK %s
+# RUN: %lldb -c %t -o 'process plugin dump --fb-unwind-symbols' | \
+# RUN:   FileCheck --check-prefix=CHECK-UNWIND %s
+# RUN: %lldb -c %t -o 'process plugin dump --fb-error-log' | \
+# RUN:   FileCheck --check-prefix=CHECK-ERROR %s
+# RUN: %lldb -c %t -o 'process plugin dump --fb-app-state-log' | \
+# RUN:   FileCheck --check-prefix=CHECK-APPSTATE %s
+# RUN: %lldb -c %t -o 'process plugin dump --fb-abort-reason' | \
+# RUN:   FileCheck --check-prefix=CHECK-ABORT %s
+# RUN: %lldb -c %t -o 'process plugin dump --fb-thread-name' | \
+# RUN:   FileCheck --check-prefix=CHECK-THREAD %s
+# RUN: %lldb -c %t -o 'process plugin dump --fb-logcat' | \
+# RUN:   FileCheck --check-prefix=CHECK-LOGCAT %s
+# CHECK-DIR:      RVA        SIZE       TYPE       StreamType
+# CHECK-DIR-NEXT: ---------- ---------- ---------- --------------------------
+# CHECK-DIR-NEXT: 0x{{[0-9a-f]{8} }}0x00000038 0x00000007 SystemInfo
+# CHECK-DIR-NEXT: 0x{{[0-9a-f]{8} }}0x00000018 0x0000000f MiscInfo
+# CHECK-DIR-NEXT: 0x{{[0-9a-f]{8} }}0x00000013 0xfacecb00 FacebookDumpErrorLog
+# CHECK-DIR-NEXT: 0x{{[0-9a-f]{8} }}0x00000015 0xfacee000 FacebookThreadName
+# CHECK-DIR-NEXT: 0x{{[0-9a-f]{8} }}0x00000010 0xface1ca7 FacebookLogcat
+# CHECK-DIR-NEXT: 0x{{[0-9a-f]{8} }}0x00000017 0xfacecccc FacebookAppStateLog
+# CHECK-DIR-NEXT: 0x{{[0-9a-f]{8} }}0x00000016 0xfacedead FacebookAbortReason
+# CHECK-DIR-NEXT: 0x{{[0-9a-f]{8} }}0x00000039 0xfacecafa FacebookAppCustomData
+# CHECK-DIR-NEXT: 0x{{[0-9a-f]{8} }}0x00000005 0xfacecafb FacebookBuildID
+# CHECK-DIR-NEXT: 0x{{[0-9a-f]{8} }}0x0000000d 0xfacecafc FacebookAppVersionName
+# CHECK-DIR-NEXT: 0x{{[0-9a-f]{8} }}0x00000019 0xfacecafd FacebookJavaStack
+# CHECK-DIR-NEXT: 0x{{[0-9a-f]{8} }}0x00000015 0xfacecafe FacebookDalvikInfo
+# CHECK-DIR-NEXT: 0x{{[0-9a-f]{8} }}0x00000005 0xfacecaff FacebookUnwindSymbols
+
+--- !minidump
+Streams:         
+  - Type:            SystemInfo
+    Processor Arch:  ARM64
+    Platform ID:     Linux
+    CSD Version:     '15E216'
+    CPU:             
+      CPUID:           0x00000000
+  - Type:            MiscInfo
+    Content:         00000000010000007B000000000000000000000000000000
+  - Type:            FacebookDumpErrorLog
+    Content:         46616365626F6F6B206572726F72206C6F6700
+  - Type:            FacebookThreadName
+    Content:         46616365626F6F6B20746872656164206E616D6500
+  - Type:            FacebookLogcat
+    Content:         46616365626F6F6B206C6F6763617400
+  - Type:            FacebookAppStateLog
+    Content:         46616365626F6F6B20617070207374617465206C6F6700
+  - Type:            FacebookAbortReason
+    Content:         46616365626F6F6B2061626F727420726561736F6E00
+  - Type:            FacebookAppCustomData
+    Content:         7B22676C6F62616C223A207B2246696E6765727072696E74223A22696E76616C6964206465766963652066696E6765727072696E74227D7D00
+  - Type:            FacebookBuildID
+    Content:         '0403020100'
+  - Type:            FacebookAppVersionName
+    Content:         3230372E302E302E302E383600
+  - Type:            FacebookJavaStack
+    Content:         46616365626F6F6B206A61766120737461636B20696E666F00
+  - Type:            FacebookDalvikInfo
+    Content:         46616365626F6F6B2064616C76696B20696E666F00
+  - Type:            FacebookUnwindSymbols
+    Content:         '1122334400'
+...
+
+# CHECK-APPDATA:      Facebook App Data:
+# CHECK-APPDATA-NEXT: {"global": {"Fingerprint":"invalid device fingerprint"}}
+
+# CHECK-BUILD:      Facebook Build ID:
+# CHECK-BUILD-NEXT: 16909060
+
+# CHECK-VERSION:      Facebook Version String:
+# CHECK-VERSION-NEXT: 207.0.0.0.86
+
+# CHECK-JAVA:      Facebook Java Stack:
+# CHECK-JAVA-NEXT: Facebook java stack info
+
+# CHECK-DALVIK:      Facebook Dalvik Info:
+# CHECK-DALVIK-NEXT: Facebook dalvik info
+
+# CHECK-UNWIND:      Facebook Unwind Symbols Bytes:
+# CHECK-UNWIND-NEXT: 0x00000000: 11 22 33 44 00
+
+# CHECK-ERROR:      Facebook Error Log:
+# CHECK-ERROR-NEXT: Facebook error log
+
+# CHECK-APPSTATE:      Faceook Application State Log:
+# CHECK-APPSTATE-NEXT: Facebook app state log
+
+# CHECK-ABORT:      Facebook Abort Reason:
+# CHECK-ABORT-NEXT: Facebook abort reason
+
+# CHECK-THREAD:      Facebook Thread Name:
+# CHECK-THREAD-NEXT: Facebook thread name
+
+# CHECK-LOGCAT:      Facebook Logcat:
+# CHECK-LOGCAT-NEXT: Facebook logcat

Added: lldb/trunk/lit/Minidump/lit.local.cfg
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Minidump/lit.local.cfg?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Minidump/lit.local.cfg (added)
+++ lldb/trunk/lit/Minidump/lit.local.cfg Wed Oct  9 10:35:43 2019
@@ -0,0 +1 @@
+config.suffixes = ['.test', '.yaml']

Added: lldb/trunk/lit/ObjectFile/Breakpad/Inputs/bad-module-id-1.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/Breakpad/Inputs/bad-module-id-1.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/Breakpad/Inputs/bad-module-id-1.syms (added)
+++ lldb/trunk/lit/ObjectFile/Breakpad/Inputs/bad-module-id-1.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,2 @@
+MODULE Linux x86_64 E5894855+C35D+CCCCCCCCCCCCCCCCCCCC0 linux.out
+PUBLIC 1000 0 _start

Added: lldb/trunk/lit/ObjectFile/Breakpad/Inputs/bad-module-id-2.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/Breakpad/Inputs/bad-module-id-2.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/Breakpad/Inputs/bad-module-id-2.syms (added)
+++ lldb/trunk/lit/ObjectFile/Breakpad/Inputs/bad-module-id-2.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,2 @@
+MODULE Linux x86_64 E5894855C35DCCCCCCCCCCCCCCCCC linux.out
+PUBLIC 1000 0 _start

Added: lldb/trunk/lit/ObjectFile/Breakpad/Inputs/bad-module-id-3.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/Breakpad/Inputs/bad-module-id-3.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/Breakpad/Inputs/bad-module-id-3.syms (added)
+++ lldb/trunk/lit/ObjectFile/Breakpad/Inputs/bad-module-id-3.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,2 @@
+MODULE Linux x86_64 E58X4855C35DCCCCCCCCXCCCCCCCCCCC0 linux.out
+PUBLIC 1000 0 _start

Added: lldb/trunk/lit/ObjectFile/Breakpad/Inputs/discontiguous-sections.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/Breakpad/Inputs/discontiguous-sections.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/Breakpad/Inputs/discontiguous-sections.syms (added)
+++ lldb/trunk/lit/ObjectFile/Breakpad/Inputs/discontiguous-sections.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,7 @@
+MODULE Linux x86_64 0000000024B5D199F0F766FFFFFF5DC30 linux.out
+INFO CODE_ID 00000000B52499D1F0F766FFFFFF5DC3
+FILE 0 /tmp/a.c
+PUBLIC 1010 0 _start
+FILE 1 /tmp/b.c
+STACK bogus
+FILE 2 /tmp/c.c

Added: lldb/trunk/lit/ObjectFile/Breakpad/Inputs/identification-linux.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/Breakpad/Inputs/identification-linux.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/Breakpad/Inputs/identification-linux.syms (added)
+++ lldb/trunk/lit/ObjectFile/Breakpad/Inputs/identification-linux.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,6 @@
+MODULE Linux x86_64 E5894855C35DCCCCCCCCCCCCCCCCCCCC0 linux.out
+INFO CODE_ID 554889E55DC3CCCCCCCCCCCCCCCCCCCC
+PUBLIC 1000 0 _start
+STACK CFI INIT 1000 6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1001 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 1004 .cfa: $rbp 16 +

Added: lldb/trunk/lit/ObjectFile/Breakpad/Inputs/identification-macosx-arm64e.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/Breakpad/Inputs/identification-macosx-arm64e.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/Breakpad/Inputs/identification-macosx-arm64e.syms (added)
+++ lldb/trunk/lit/ObjectFile/Breakpad/Inputs/identification-macosx-arm64e.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,3 @@
+MODULE mac arm64e 4E11896957B3334EB03456BFCEB573760 mac.out
+PUBLIC 0 0 _mh_execute_header
+PUBLIC f30 0 start

Added: lldb/trunk/lit/ObjectFile/Breakpad/Inputs/identification-macosx.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/Breakpad/Inputs/identification-macosx.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/Breakpad/Inputs/identification-macosx.syms (added)
+++ lldb/trunk/lit/ObjectFile/Breakpad/Inputs/identification-macosx.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,6 @@
+MODULE mac x86_64 D98C0E682089AA1BEACD6A8C1F16707B0 mac.out
+PUBLIC 0 0 _mh_execute_header
+PUBLIC f30 0 start
+STACK CFI INIT f30 6 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI f31 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI f34 .cfa: $rbp 16 +

Added: lldb/trunk/lit/ObjectFile/Breakpad/Inputs/identification-windows.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/Breakpad/Inputs/identification-windows.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/Breakpad/Inputs/identification-windows.syms (added)
+++ lldb/trunk/lit/ObjectFile/Breakpad/Inputs/identification-windows.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,4 @@
+MODULE windows x86 A0C9165780B5490981A1925EA62165C01 a.pdb
+INFO CODE_ID 5C01672A4000 a.exe
+FILE 1 c:\tmp\a.cpp
+PUBLIC 1000 0 main

Added: lldb/trunk/lit/ObjectFile/Breakpad/Inputs/sections-trailing-func.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/Breakpad/Inputs/sections-trailing-func.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/Breakpad/Inputs/sections-trailing-func.syms (added)
+++ lldb/trunk/lit/ObjectFile/Breakpad/Inputs/sections-trailing-func.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,8 @@
+MODULE Linux x86_64 0000000024B5D199F0F766FFFFFF5DC30 linux.out
+INFO CODE_ID 00000000B52499D1F0F766FFFFFF5DC3
+FILE 0 /tmp/a.c
+FUNC 1010 10 0 _start
+1010 4 4 0
+1014 5 5 0
+1019 5 6 0
+101e 2 7 0

Added: lldb/trunk/lit/ObjectFile/Breakpad/Inputs/sections.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/Breakpad/Inputs/sections.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/Breakpad/Inputs/sections.syms (added)
+++ lldb/trunk/lit/ObjectFile/Breakpad/Inputs/sections.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,12 @@
+MODULE Linux x86_64 0000000024B5D199F0F766FFFFFF5DC30 linux.out
+INFO CODE_ID 00000000B52499D1F0F766FFFFFF5DC3
+FILE 0 /tmp/a.c
+FUNC 1010 10 0 _start
+1010 4 4 0
+1014 5 5 0
+1019 5 6 0
+101e 2 7 0
+PUBLIC 1010 0 _start
+STACK CFI INIT 1010 10 .cfa: $rsp 8 + .ra: .cfa -8 + ^
+STACK CFI 1011 $rbp: .cfa -16 + ^ .cfa: $rsp 16 +
+STACK CFI 1014 .cfa: $rbp 16 +

Added: lldb/trunk/lit/ObjectFile/Breakpad/Inputs/uuid-matching-mac.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/Breakpad/Inputs/uuid-matching-mac.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/Breakpad/Inputs/uuid-matching-mac.syms (added)
+++ lldb/trunk/lit/ObjectFile/Breakpad/Inputs/uuid-matching-mac.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,2 @@
+MODULE mac x86_64 A0AB76409C3B3A279E521045D84FA2DC0 a.out
+FUNC f90 1b 0 main

Added: lldb/trunk/lit/ObjectFile/Breakpad/Inputs/uuid-matching-mac.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/Breakpad/Inputs/uuid-matching-mac.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/Breakpad/Inputs/uuid-matching-mac.yaml (added)
+++ lldb/trunk/lit/ObjectFile/Breakpad/Inputs/uuid-matching-mac.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,59 @@
+--- !mach-o
+FileHeader:      
+  magic:           0xFEEDFACF
+  cputype:         0x01000007
+  cpusubtype:      0x80000003
+  filetype:        0x00000002
+  ncmds:           14
+  sizeofcmds:      744
+  flags:           0x00200085
+  reserved:        0x00000000
+LoadCommands:    
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         72
+    segname:         __PAGEZERO
+    vmaddr:          0
+    vmsize:          4294967296
+    fileoff:         0
+    filesize:        0
+    maxprot:         0
+    initprot:        0
+    nsects:          0
+    flags:           0
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         232
+    segname:         __TEXT
+    vmaddr:          4294967296
+    vmsize:          4096
+    fileoff:         0
+    filesize:        4096
+    maxprot:         7
+    initprot:        5
+    nsects:          2
+    flags:           0
+    Sections:        
+      - sectname:        __text
+        segname:         __TEXT
+        addr:            0x0000000100000F90
+        size:            27
+        offset:          0x00000F90
+        align:           4
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x80000400
+        reserved1:       0x00000000
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+  - cmd:             LC_UUID
+    cmdsize:         24
+    uuid:            A0AB7640-9C3B-3A27-9E52-1045D84FA2DC
+  - cmd:             LC_BUILD_VERSION
+    cmdsize:         32
+    platform:        1
+    minos:           658944
+    sdk:             658944
+    ntools:          1
+    Tools:           
+      - tool:            3
+        version:         29491968
+...

Added: lldb/trunk/lit/ObjectFile/Breakpad/breakpad-identification.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/Breakpad/breakpad-identification.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/Breakpad/breakpad-identification.test (added)
+++ lldb/trunk/lit/ObjectFile/Breakpad/breakpad-identification.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,35 @@
+RUN: lldb-test object-file %p/Inputs/identification-linux.syms | FileCheck %s --check-prefix=LINUX
+RUN: lldb-test object-file %p/Inputs/identification-macosx.syms | FileCheck %s --check-prefix=MAC
+RUN: lldb-test object-file %p/Inputs/identification-macosx-arm64e.syms | FileCheck %s --check-prefix=ARM64E
+RUN: lldb-test object-file %p/Inputs/identification-windows.syms | FileCheck %s --check-prefix=WINDOWS
+RUN: not lldb-test object-file %p/Inputs/bad-module-id-1.syms 2>&1 | FileCheck %s --check-prefix=ERROR
+RUN: not lldb-test object-file %p/Inputs/bad-module-id-2.syms 2>&1 | FileCheck %s --check-prefix=ERROR
+RUN: not lldb-test object-file %p/Inputs/bad-module-id-3.syms 2>&1 | FileCheck %s --check-prefix=ERROR
+
+LINUX: Plugin name: breakpad
+LINUX: Architecture: x86_64--linux
+LINUX: UUID: 554889E5-5DC3-CCCC-CCCC-CCCCCCCCCCCC
+LINUX: Executable: false
+LINUX: Stripped: false
+LINUX: Type: debug info
+LINUX: Strata: user
+
+MAC: Plugin name: breakpad
+MAC: Architecture: x86_64--macosx
+MAC: UUID: D98C0E68-2089-AA1B-EACD-6A8C1F16707B
+MAC: Executable: false
+MAC: Stripped: false
+MAC: Type: debug info
+MAC: Strata: user
+
+ARM64E: Architecture: aarch64--macosx
+
+WINDOWS: Plugin name: breakpad
+WINDOWS: Architecture: i386--windows
+WINDOWS: UUID: A0C91657-80B5-4909-81A1-925EA62165C0-00000001
+WINDOWS: Executable: false
+WINDOWS: Stripped: false
+WINDOWS: Type: debug info
+WINDOWS: Strata: user
+
+ERROR: not recognised as an object file

Added: lldb/trunk/lit/ObjectFile/Breakpad/discontiguous-sections.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/Breakpad/discontiguous-sections.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/Breakpad/discontiguous-sections.test (added)
+++ lldb/trunk/lit/ObjectFile/Breakpad/discontiguous-sections.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,34 @@
+# Test handling discontiguous sections.
+RUN: lldb-test object-file %p/Inputs/discontiguous-sections.syms -contents | FileCheck %s
+
+CHECK: Showing 6 sections
+
+CHECK:        ID: 0x1
+CHECK-NEXT:   Name: MODULE
+
+CHECK:        ID: 0x2
+CHECK-NEXT:   Name: INFO
+
+CHECK:        ID: 0x3
+CHECK-NEXT:   Name: FILE
+CHECK:        File size: 16
+CHECK-NEXT:   Data:  (
+CHECK-NEXT:       0000: 46494C45 2030202F 746D702F 612E630A                                      |FILE 0 /tmp/a.c.|
+CHECK-NEXT:   )
+
+CHECK:        ID: 0x4
+CHECK-NEXT:   Name: PUBLIC
+
+CHECK:        ID: 0x5
+CHECK-NEXT:   Name: FILE
+CHECK:        File size: 16
+CHECK-NEXT:   Data:  (
+CHECK-NEXT:       0000: 46494C45 2031202F 746D702F 622E630A                                      |FILE 1 /tmp/b.c.|
+CHECK-NEXT:   )
+
+CHECK:        ID: 0x6
+CHECK-NEXT:   Name: FILE
+CHECK:        File size: 16
+CHECK-NEXT:   Data:  (
+CHECK-NEXT:       0000: 46494C45 2032202F 746D702F 632E630A                                      |FILE 2 /tmp/c.c.|
+CHECK-NEXT:   )

Added: lldb/trunk/lit/ObjectFile/Breakpad/lit.local.cfg
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/Breakpad/lit.local.cfg?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/Breakpad/lit.local.cfg (added)
+++ lldb/trunk/lit/ObjectFile/Breakpad/lit.local.cfg Wed Oct  9 10:35:43 2019
@@ -0,0 +1 @@
+config.suffixes = ['.test']

Added: lldb/trunk/lit/ObjectFile/Breakpad/sections-trailing-func.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/Breakpad/sections-trailing-func.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/Breakpad/sections-trailing-func.test (added)
+++ lldb/trunk/lit/ObjectFile/Breakpad/sections-trailing-func.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,15 @@
+# Test handling of a (valid) breakpad file, which ends with a line without a
+# recognised keyword.
+
+RUN: lldb-test object-file %p/Inputs/sections-trailing-func.syms -contents | FileCheck %s
+
+CHECK: Showing 4 sections
+
+CHECK:       ID: 0x4
+CHECK-NEXT:  Name: FUNC
+CHECK:       File size: 66
+CHECK-NEXT:  Data:  (
+CHECK-NEXT:      0000: 46554E43 20313031 30203130 2030205F 73746172 740A3130 31302034 20342030  |FUNC 1010 10 0 _start.1010 4 4 0|
+CHECK-NEXT:      0020: 0A313031 34203520 3520300A 31303139 20352036 20300A31 30316520 32203720  |.1014 5 5 0.1019 5 6 0.101e 2 7 |
+CHECK-NEXT:      0040: 300A                                                                     |0.|
+CHECK-NEXT:  )

Added: lldb/trunk/lit/ObjectFile/Breakpad/sections.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/Breakpad/sections.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/Breakpad/sections.test (added)
+++ lldb/trunk/lit/ObjectFile/Breakpad/sections.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,89 @@
+RUN: lldb-test object-file %p/Inputs/sections.syms -contents | FileCheck %s
+
+CHECK: Showing 6 sections
+
+CHECK:        Index: 0
+CHECK-NEXT:   ID: 0x1
+CHECK-NEXT:   Name: MODULE
+CHECK-NEXT:   Type: regular
+CHECK-NEXT:   Permissions: ---
+CHECK-NEXT:   Thread specific: no
+CHECK-NEXT:   VM address: 0
+CHECK-NEXT:   VM size: 0
+CHECK-NEXT:   File size: 64
+CHECK-NEXT:   Data:  (
+CHECK-NEXT:       0000: 4D4F4455 4C45204C 696E7578 20783836 5F363420 30303030 30303030 32344235  |MODULE Linux x86_64 0000000024B5|
+CHECK-NEXT:       0020: 44313939 46304637 36364646 46464646 35444333 30206C69 6E75782E 6F75740A  |D199F0F766FFFFFF5DC30 linux.out.|
+CHECK-NEXT:   )
+
+CHECK:        Index: 1
+CHECK-NEXT:   ID: 0x2
+CHECK-NEXT:   Name: INFO
+CHECK-NEXT:   Type: regular
+CHECK-NEXT:   Permissions: ---
+CHECK-NEXT:   Thread specific: no
+CHECK-NEXT:   VM address: 0
+CHECK-NEXT:   VM size: 0
+CHECK-NEXT:   File size: 46
+CHECK-NEXT:   Data:  (
+CHECK-NEXT:       0000: 494E464F 20434F44 455F4944 20303030 30303030 30423532 34393944 31463046  |INFO CODE_ID 00000000B52499D1F0F|
+CHECK-NEXT:       0020: 37363646 46464646 46354443 330A                                          |766FFFFFF5DC3.|
+CHECK-NEXT:   )
+
+CHECK:        Index: 2
+CHECK-NEXT:   ID: 0x3
+CHECK-NEXT:   Name: FILE
+CHECK-NEXT:   Type: regular
+CHECK-NEXT:   Permissions: ---
+CHECK-NEXT:   Thread specific: no
+CHECK-NEXT:   VM address: 0
+CHECK-NEXT:   VM size: 0
+CHECK-NEXT:   File size: 16
+CHECK-NEXT:   Data:  (
+CHECK-NEXT:       0000: 46494C45 2030202F 746D702F 612E630A                                      |FILE 0 /tmp/a.c.|
+CHECK-NEXT:   )
+
+CHECK:        Index: 3
+CHECK-NEXT:   ID: 0x4
+CHECK-NEXT:   Name: FUNC
+CHECK-NEXT:   Type: regular
+CHECK-NEXT:   Permissions: ---
+CHECK-NEXT:   Thread specific: no
+CHECK-NEXT:   VM address: 0
+CHECK-NEXT:   VM size: 0
+CHECK-NEXT:   File size: 66
+CHECK-NEXT:   Data:  (
+CHECK-NEXT:       0000: 46554E43 20313031 30203130 2030205F 73746172 740A3130 31302034 20342030  |FUNC 1010 10 0 _start.1010 4 4 0|
+CHECK-NEXT:       0020: 0A313031 34203520 3520300A 31303139 20352036 20300A31 30316520 32203720  |.1014 5 5 0.1019 5 6 0.101e 2 7 |
+CHECK-NEXT:       0040: 300A                                                                     |0.|
+CHECK-NEXT:   )
+
+CHECK:        Index: 4
+CHECK-NEXT:   ID: 0x5
+CHECK-NEXT:   Name: PUBLIC
+CHECK-NEXT:   Type: regular
+CHECK-NEXT:   Permissions: ---
+CHECK-NEXT:   Thread specific: no
+CHECK-NEXT:   VM address: 0
+CHECK-NEXT:   VM size: 0
+CHECK-NEXT:   File size: 21
+CHECK-NEXT:   Data:  (
+CHECK-NEXT:       0000: 5055424C 49432031 30313020 30205F73 74617274 0A                          |PUBLIC 1010 0 _start.|
+CHECK-NEXT:   )
+
+CHECK:        Index: 5
+CHECK-NEXT:   ID: 0x6
+CHECK-NEXT:   Name: STACK CFI
+CHECK-NEXT:   Type: regular
+CHECK-NEXT:   Permissions: ---
+CHECK-NEXT:   Thread specific: no
+CHECK-NEXT:   VM address: 0
+CHECK-NEXT:   VM size: 0
+CHECK-NEXT:   File size: 136
+CHECK-NEXT:   Data:  (
+CHECK-NEXT:       0000: 53544143 4B204346 4920494E 49542031 30313020 3130202E 6366613A 20247273  |STACK CFI INIT 1010 10 .cfa: $rs|
+CHECK-NEXT:       0020: 70203820 2B202E72 613A202E 63666120 2D38202B 205E0A53 5441434B 20434649  |p 8 + .ra: .cfa -8 + ^.STACK CFI|
+CHECK-NEXT:       0040: 20313031 31202472 62703A20 2E636661 202D3136 202B205E 202E6366 613A2024  | 1011 $rbp: .cfa -16 + ^ .cfa: $|
+CHECK-NEXT:       0060: 72737020 3136202B 0A535441 434B2043 46492031 30313420 2E636661 3A202472  |rsp 16 +.STACK CFI 1014 .cfa: $r|
+CHECK-NEXT:       0080: 62702031 36202B0A                                                        |bp 16 +.|
+CHECK-NEXT:   )

Added: lldb/trunk/lit/ObjectFile/Breakpad/uuid-matching-mac.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/Breakpad/uuid-matching-mac.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/Breakpad/uuid-matching-mac.test (added)
+++ lldb/trunk/lit/ObjectFile/Breakpad/uuid-matching-mac.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,13 @@
+# RUN: yaml2obj %S/Inputs/uuid-matching-mac.yaml -o %T/uuid-matching-mac.out
+# RUN: cd %S
+# RUN: %lldb %T/uuid-matching-mac.out -s %s -o exit | FileCheck %s
+
+target symbols add Inputs/uuid-matching-mac.syms
+# CHECK-LABEL: target symbols add
+# CHECK: symbol file '{{.*}}uuid-matching-mac.syms' has been added to '{{.*}}uuid-matching-mac.out'
+
+image lookup -n main
+# CHECK-LABEL: image lookup
+# CHECK: Address: uuid-matching-mac.out[0x0000000100000f90]
+
+

Added: lldb/trunk/lit/ObjectFile/ELF/Inputs/PT_LOAD-overlap-section.elf
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/Inputs/PT_LOAD-overlap-section.elf?rev=374187&view=auto
==============================================================================
Binary file - no diff available.

Propchange: lldb/trunk/lit/ObjectFile/ELF/Inputs/PT_LOAD-overlap-section.elf
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: lldb/trunk/lit/ObjectFile/ELF/Inputs/minidebuginfo-main.c
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/Inputs/minidebuginfo-main.c?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/Inputs/minidebuginfo-main.c (added)
+++ lldb/trunk/lit/ObjectFile/ELF/Inputs/minidebuginfo-main.c Wed Oct  9 10:35:43 2019
@@ -0,0 +1,12 @@
+// This function will be embedded within the .symtab section of the
+// .gnu_debugdata section.
+int multiplyByFour(int num) { return num * 4; }
+
+// This function will be embedded within the .dynsym section of the main binary.
+int multiplyByThree(int num) { return num * 3; }
+
+int main(int argc, char *argv[]) {
+  int x = multiplyByThree(argc);
+  int y = multiplyByFour(x);
+  return y;
+}

Added: lldb/trunk/lit/ObjectFile/ELF/Inputs/netbsd-amd64.core
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/Inputs/netbsd-amd64.core?rev=374187&view=auto
==============================================================================
Binary file - no diff available.

Propchange: lldb/trunk/lit/ObjectFile/ELF/Inputs/netbsd-amd64.core
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-empty.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-empty.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-empty.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-empty.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,26 @@
+# Test behavior on unusual (and probably corrupt) files. Test that we drop an
+# empty PT_LOAD segment.
+
+# RUN: yaml2obj %s > %t
+# RUN: lldb-test object-file %t | FileCheck %s
+#
+# CHECK-NOT: container
+
+!ELF
+FileHeader:
+  Class:           ELFCLASS32
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_ARM
+Sections:
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x1000
+    AddressAlign:    0x4
+    Content:         DEADBEEFBAADF00D
+ProgramHeaders:
+  - Type: PT_LOAD
+    Flags: [ PF_X, PF_R ]
+    VAddr: 0x1000
+    Align: 0x4

Added: lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-overlap-PT_INTERP.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-overlap-PT_INTERP.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-overlap-PT_INTERP.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-overlap-PT_INTERP.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,50 @@
+# Test that an overlapping PT_INTERP segment does not cause us to drop the
+# subsequent PT_LOAD segment.
+
+# RUN: yaml2obj %s > %t
+# RUN: lldb-test object-file %t | FileCheck %s
+
+# CHECK:        Index: 0
+# CHECK-NEXT:   ID: 0xfffffffffffffffe
+# CHECK-NEXT:   Name: PT_LOAD[0]
+# CHECK-NEXT:   Type: container
+# CHECK-NEXT:   Permissions: rwx
+# CHECK-NEXT:   Thread specific: no
+# CHECK-NEXT:   VM address: 0x1000
+# CHECK-NEXT:   VM size: 12
+# CHECK-NEXT:   File size: 12
+# CHECK-NEXT:   Showing 2 subsections
+
+!ELF
+FileHeader:
+  Class:           ELFCLASS32
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_ARM
+Sections:
+  - Name:            .interp
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x1000
+    AddressAlign:    0x4
+    Content:         3232
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x1004
+    AddressAlign:    0x4
+    Content:         DEADBEEFBAADF00D
+ProgramHeaders:
+  - Type: PT_INTERP
+    Flags: [ PF_R ]
+    VAddr: 0x1000
+    Align: 0x4
+    Sections:
+      - Section: .interp
+  - Type: PT_LOAD
+    Flags: [ PF_X, PF_W, PF_R ]
+    VAddr: 0x1000
+    Align: 0x4
+    Sections:
+      - Section: .interp
+      - Section: .text

Added: lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-overlap-PT_TLS.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-overlap-PT_TLS.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-overlap-PT_TLS.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-overlap-PT_TLS.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,63 @@
+# Overlapping PT_LOAD and PT_TLS segments should be able to exist side by side.
+
+# RUN: yaml2obj %s > %t
+# RUN: lldb-test object-file %t | FileCheck %s
+# RUN: lldb %t -o "image lookup -a 0x1000" -b | FileCheck --check-prefix=LOOKUP %s
+
+# CHECK:        Index: 0
+# CHECK-NEXT:   ID: 0xffffffffffffffff
+# CHECK-NEXT:   Name: PT_TLS[0]
+# CHECK-NEXT:   Type: container
+# CHECK-NEXT:   Permissions: rw-
+# CHECK-NEXT:   Thread specific: yes
+# CHECK-NEXT:   VM address: 0x1000
+# CHECK-NEXT:   VM size: 16
+# CHECK-NEXT:   File size: 0
+# CHECK-NEXT:   Showing 1 subsections
+
+# CHECK:        Index: 1
+# CHECK-NEXT:   ID: 0xfffffffffffffffe
+# CHECK-NEXT:   Name: PT_LOAD[0]
+# CHECK-NEXT:   Type: container
+# CHECK-NEXT:   Permissions: rw-
+# CHECK-NEXT:   Thread specific: no
+# CHECK-NEXT:   VM address: 0x1000
+# CHECK-NEXT:   VM size: 16
+# CHECK-NEXT:   File size: 16
+# CHECK-NEXT:   Showing 1 subsections
+
+# LOOKUP-LABEL: image lookup -a 0x1000
+# LOOKUP:       Address: {{.*}}.PT_LOAD[0]..data + 0)
+
+!ELF
+FileHeader:
+  Class:           ELFCLASS32
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_ARM
+Sections:
+  - Name:            .tbss
+    Type:            SHT_NOBITS
+    Flags:           [ SHF_ALLOC, SHF_WRITE, SHF_TLS ]
+    Address:         0x1000
+    AddressAlign:    0x4
+    Size:            0x10
+  - Name:            .data
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_WRITE ]
+    Address:         0x1000
+    AddressAlign:    0x4
+    Size:            0x10
+ProgramHeaders:
+  - Type: PT_TLS
+    Flags: [ PF_R, PF_W ]
+    VAddr: 0x1000
+    Align: 0x4
+    Sections:
+      - Section: .tbss
+  - Type: PT_LOAD
+    Flags: [ PF_W, PF_R ]
+    VAddr: 0x1000
+    Align: 0x4
+    Sections:
+      - Section: .data

Added: lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-overlap-section.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-overlap-section.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-overlap-section.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-overlap-section.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,66 @@
+# Test behavior on strange (invalid?) elf files where the sections cross segment
+# boundary. The test input was generated from this yaml file, but the program
+# header was modified by hand, so this input is here for reference only.
+#
+# Right now lldb shortens sections to make sure every section is fully contained
+# within a segment, but other behaviors are possible too (including outright
+# rejecting such files).
+
+# RUN: lldb-test object-file %S/Inputs/PT_LOAD-overlap-section.elf | FileCheck %s
+
+# CHECK:      Index: 0
+# CHECK-NEXT: ID: 0xffffffffffffffff
+# CHECK-NEXT: Name: PT_LOAD[0]
+# CHECK-NEXT: Type: container
+# CHECK-NEXT: Permissions: rwx
+# CHECK-NEXT: Thread specific: no
+# CHECK-NEXT: VM address: 0x1006
+# CHECK-NEXT: VM size: 8
+# CHECK-NEXT: File size: 8
+# CHECK-NEXT: Showing 1 subsections
+# CHECK-NEXT:   Index: 0
+# CHECK-NEXT:   ID: 0x2
+# CHECK-NEXT:   Name: .text
+# CHECK-NEXT:   Type: code
+# CHECK-NEXT:   Permissions: r-x
+# CHECK-NEXT:   Thread specific: no
+# CHECK-NEXT:   VM address: 0x1008
+# CHECK-NEXT:   VM size: 6
+# CHECK-NEXT:   File size: 8
+
+# CHECK:      Index: 1
+# CHECK-NEXT: ID: 0x1
+# CHECK-NEXT: Name: .interp
+# CHECK-NEXT: Type: regular
+# CHECK-NEXT: Permissions: r--
+# CHECK-NEXT: Thread specific: no
+# CHECK-NEXT: VM address: 0x1000
+# CHECK-NEXT: VM size: 6
+# CHECK-NEXT: File size: 8
+
+!ELF
+FileHeader:
+  Class:           ELFCLASS32
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_ARM
+Sections:
+  - Name:            .interp
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x1000
+    AddressAlign:    0x4
+    Content:         DEADBEEFBAADF00D
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x1008
+    AddressAlign:    0x4
+    Content:         DEADBEEFBAADF00D
+ProgramHeaders:
+  - Type: PT_LOAD
+    Flags: [ PF_X, PF_W, PF_R ]
+    VAddr: 0x1008 # Modified by hand to start at 0x1006
+    Align: 0x4
+    Sections:
+      - Section: .text

Added: lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-overlap.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-overlap.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-overlap.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/PT_LOAD-overlap.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,42 @@
+# Test behavior on unusual (and probably corrupt) object files. Check that we
+# drop the second PT_LOAD segment which overlaps with the first one.
+
+# RUN: yaml2obj %s > %t
+# RUN: lldb-test object-file %t | FileCheck %s
+
+# CHECK: Type: container
+# CHECK-NOT: Type: container
+
+!ELF
+FileHeader:
+  Class:           ELFCLASS32
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_ARM
+Sections:
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x1000
+    AddressAlign:    0x4
+    Content:         DEADBEEFBAADF00D
+  - Name:            .data
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x1008
+    AddressAlign:    0x4
+    Content:         3232
+ProgramHeaders:
+  - Type: PT_LOAD
+    Flags: [ PF_X, PF_W, PF_R ]
+    VAddr: 0x1000
+    Align: 0x4
+    Sections:
+      - Section: .text
+      - Section: .data
+  - Type: PT_LOAD
+    Flags: [ PF_R, PF_W ]
+    VAddr: 0x1008
+    Align: 0x4
+    Sections:
+      - Section: .data

Added: lldb/trunk/lit/ObjectFile/ELF/PT_LOAD.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/PT_LOAD.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/PT_LOAD.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/PT_LOAD.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,79 @@
+# Test that sections are made child-sections of the PT_LOAD segments/sections.
+
+# RUN: yaml2obj %s > %t
+# RUN: lldb-test object-file %t | FileCheck %s
+
+# CHECK:      Index: 0
+# CHECK-NEXT: ID: 0xffffffffffffffff
+# CHECK-NEXT: Name: PT_LOAD[0]
+# CHECK-NEXT: Type: container
+# CHECK-NEXT: Permissions: rwx
+# CHECK-NEXT: Thread specific: no
+# CHECK-NEXT: VM address: 0x1000
+# CHECK-NEXT: VM size: 10
+# CHECK-NEXT: File size: 10
+# CHECK-NEXT: Showing 2 subsections
+# CHECK-NEXT:   Index: 0
+# CHECK-NEXT:   ID: 0x1
+# CHECK-NEXT:   Name: .text
+# CHECK-NEXT:   Type: code
+# CHECK-NEXT:   Permissions: r-x
+# CHECK-NEXT:   Thread specific: no
+# CHECK-NEXT:   VM address: 0x1000
+# CHECK-NEXT:   VM size: 8
+# CHECK-NEXT:   File size: 8
+# CHECK-EMPTY:
+# CHECK-NEXT:   Index: 1
+# CHECK-NEXT:   ID: 0x2
+# CHECK-NEXT:   Name: .data
+# CHECK-NEXT:   Type: data
+# CHECK-NEXT:   Permissions: r--
+# CHECK-NEXT:   Thread specific: no
+# CHECK-NEXT:   VM address: 0x1008
+# CHECK-NEXT:   VM size: 2
+# CHECK-NEXT:   File size: 2
+# CHECK-EMPTY:
+# CHECK-EMPTY:
+# CHECK-NEXT: Index: 1
+# CHECK-NEXT: ID: 0x3
+# CHECK-NEXT: Name: .data_outside
+# CHECK-NEXT: Type: regular
+# CHECK-NEXT: Permissions: r--
+# CHECK-NEXT: Thread specific: no
+# CHECK-NEXT: VM address: 0x2000
+# CHECK-NEXT: VM size: 2
+# CHECK-NEXT: File size: 2
+
+!ELF
+FileHeader:
+  Class:           ELFCLASS32
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_ARM
+Sections:
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x1000
+    AddressAlign:    0x4
+    Content:         DEADBEEFBAADF00D
+  - Name:            .data
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x1008
+    AddressAlign:    0x4
+    Content:         3232
+  - Name:            .data_outside
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x2000
+    AddressAlign:    0x4
+    Content:         3232
+ProgramHeaders:
+  - Type: PT_LOAD
+    Flags: [ PF_X, PF_W, PF_R ]
+    VAddr: 0x1000
+    Align: 0x4
+    Sections:
+      - Section: .text
+      - Section: .data

Added: lldb/trunk/lit/ObjectFile/ELF/PT_TLS-overlap-PT_LOAD.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/PT_TLS-overlap-PT_LOAD.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/PT_TLS-overlap-PT_LOAD.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/PT_TLS-overlap-PT_LOAD.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,63 @@
+# Overlapping PT_LOAD and PT_TLS segments should be able to exist side by side.
+
+# RUN: yaml2obj %s > %t
+# RUN: lldb-test object-file %t | FileCheck %s
+# RUN: lldb %t -o "image lookup -a 0x1000" -b | FileCheck --check-prefix=LOOKUP %s
+
+# CHECK:        Index: 0
+# CHECK-NEXT:   ID: 0xffffffffffffffff
+# CHECK-NEXT:   Name: PT_LOAD[0]
+# CHECK-NEXT:   Type: container
+# CHECK-NEXT:   Permissions: rw-
+# CHECK-NEXT:   Thread specific: no
+# CHECK-NEXT:   VM address: 0x1000
+# CHECK-NEXT:   VM size: 16
+# CHECK-NEXT:   File size: 16
+# CHECK-NEXT:   Showing 1 subsections
+
+# CHECK:        Index: 1
+# CHECK-NEXT:   ID: 0xfffffffffffffffe
+# CHECK-NEXT:   Name: PT_TLS[0]
+# CHECK-NEXT:   Type: container
+# CHECK-NEXT:   Permissions: rw-
+# CHECK-NEXT:   Thread specific: yes
+# CHECK-NEXT:   VM address: 0x1000
+# CHECK-NEXT:   VM size: 16
+# CHECK-NEXT:   File size: 0
+# CHECK-NEXT:   Showing 1 subsections
+
+# LOOKUP-LABEL: image lookup -a 0x1000
+# LOOKUP:       Address: {{.*}}.PT_LOAD[0]..data + 0)
+
+!ELF
+FileHeader:
+  Class:           ELFCLASS32
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_ARM
+Sections:
+  - Name:            .data
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_WRITE ]
+    Address:         0x1000
+    AddressAlign:    0x4
+    Size:            0x10
+  - Name:            .tbss
+    Type:            SHT_NOBITS
+    Flags:           [ SHF_ALLOC, SHF_WRITE, SHF_TLS ]
+    Address:         0x1000
+    AddressAlign:    0x4
+    Size:            0x10
+ProgramHeaders:
+  - Type: PT_LOAD
+    Flags: [ PF_W, PF_R ]
+    VAddr: 0x1000
+    Align: 0x4
+    Sections:
+      - Section: .data
+  - Type: PT_TLS
+    Flags: [ PF_R, PF_W ]
+    VAddr: 0x1000
+    Align: 0x4
+    Sections:
+      - Section: .tbss

Added: lldb/trunk/lit/ObjectFile/ELF/aarch64-relocations.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/aarch64-relocations.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/aarch64-relocations.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/aarch64-relocations.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,93 @@
+# RUN: yaml2obj %s > %t
+# RUN: lldb-test object-file -contents %t | FileCheck %s
+
+# CHECK:      Name: .debug_info
+# CHECK:      Data:  (
+# CHECK-NEXT:     0000: 47000000 04000000 00000801 00000000 0C002D00 00000000 00003700 00000000
+# CHECK-NEXT:     0020: 00000000 00000800 00000200 00000000 00000008 00000001 6F490000 00010243
+# CHECK-NEXT:     0040: 00000003 4B000000 050400
+# CHECK-NEXT: )
+
+--- !ELF
+FileHeader:      
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_REL
+  Machine:         EM_AARCH64
+Sections:        
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    AddressAlign:    0x0000000000000004
+    Content:         E0031B32C0035FD6
+  - Name:            .debug_str
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_MERGE, SHF_STRINGS ]
+    AddressAlign:    0x0000000000000001
+    Size:            0x50
+  - Name:            .debug_abbrev
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Size:            0x10
+  - Name:            .debug_info
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         470000000400000000000801000000000C0000000000000000000000000000000000000000000800000002000000000000000008000000016F000000000102430000000300000000050400
+  - Name:            .rela.debug_info
+    Type:            SHT_RELA
+    Link:            .symtab
+    AddressAlign:    0x0000000000000008
+    Info:            .debug_info
+    Relocations:     
+      - Offset:          0x0000000000000006
+        Symbol:          .debug_abbrev
+        Type:            R_AARCH64_ABS32
+      - Offset:          0x000000000000000C
+        Symbol:          .debug_str
+        Type:            R_AARCH64_ABS32
+      - Offset:          0x0000000000000012
+        Symbol:          .debug_str
+        Type:            R_AARCH64_ABS32
+        Addend:          45
+      - Offset:          0x0000000000000016
+        Symbol:          .debug_line
+        Type:            R_AARCH64_ABS32
+      - Offset:          0x000000000000001A
+        Symbol:          .debug_str
+        Type:            R_AARCH64_ABS32
+        Addend:          55
+      - Offset:          0x000000000000001E
+        Symbol:          .text
+        Type:            R_AARCH64_ABS64
+      - Offset:          0x000000000000002B
+        Symbol:          .text
+        Type:            R_AARCH64_ABS64
+      - Offset:          0x0000000000000039
+        Symbol:          .debug_str
+        Type:            R_AARCH64_ABS32
+        Addend:          73
+      - Offset:          0x0000000000000044
+        Symbol:          .debug_str
+        Type:            R_AARCH64_ABS32
+        Addend:          75
+  - Name:            .debug_line
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Size:            0x20
+Symbols:         
+  - Name:            .text
+    Type:            STT_SECTION
+    Section:         .text
+  - Name:            .debug_str
+    Type:            STT_SECTION
+    Section:         .debug_str
+  - Name:            .debug_abbrev
+    Type:            STT_SECTION
+    Section:         .debug_abbrev
+  - Name:            .debug_info
+    Type:            STT_SECTION
+    Section:         .debug_info
+  - Name:            .debug_line
+    Type:            STT_SECTION
+    Section:         .debug_line
+...

Added: lldb/trunk/lit/ObjectFile/ELF/base-address.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/base-address.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/base-address.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/base-address.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,34 @@
+# RUN: yaml2obj %s > %t
+# RUN: lldb-test object-file %t | FileCheck %s
+
+# CHECK: Base VM address: 0x400000
+
+--- !ELF
+FileHeader:      
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x0000000000400078
+Sections:        
+  - Name:            .pad
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x0000000000400000
+    AddressAlign:    0x0000000000001000
+    Size:            0x78
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x0000000000400078
+    AddressAlign:    0x0000000000000001
+    Content:         48C7C0E700000048C7C72F0000000F05CC
+ProgramHeaders:
+  - Type: PT_LOAD
+    Flags: [ PF_X, PF_R ]
+    VAddr: 0x400000
+    Align: 0x200000
+    Sections:
+      - Section: .pad
+      - Section: .text
+...

Added: lldb/trunk/lit/ObjectFile/ELF/basic-info.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/basic-info.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/basic-info.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/basic-info.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,27 @@
+# REQUIRES: lld
+
+# RUN: yaml2obj %s > %t.o
+# RUN: ld.lld %t.o -o %t -image-base 0x47000
+# RUN: lldb-test object-file %t | FileCheck %s
+
+# CHECK: Plugin name: elf
+# CHECK: Architecture: x86_64--
+# CHECK: Executable: true
+# CHECK: Stripped: false
+# CHECK: Type: executable
+# CHECK: Strata: user
+# CHECK: Base VM address: 0x47000
+
+--- !ELF
+FileHeader:      
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_REL
+  Machine:         EM_X86_64
+Sections:        
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    AddressAlign:    0x0000000000000010
+    Content:         554889E55DC3
+...

Added: lldb/trunk/lit/ObjectFile/ELF/build-id-case.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/build-id-case.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/build-id-case.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/build-id-case.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,40 @@
+# RUN: mkdir -p %t/.build-id/1b
+# RUN: yaml2obj %s > %t/.build-id/1b/8a73ac238390e32a7ff4ac8ebe4d6a41ecf5c9.debug
+# RUN: cd %t
+# RUN: llvm-objcopy --strip-all %t/.build-id/1b/8a73ac238390e32a7ff4ac8ebe4d6a41ecf5c9.debug %t/stripped.out
+# RUN: lldb-test object-file %t/stripped.out | FileCheck %s
+
+# CHECK: Name: .debug_frame
+# CHECK-NEXT: Type: dwarf-frame
+
+--- !ELF
+FileHeader:
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x00000000004003D0
+Sections:
+  - Name:            .note.gnu.build-id
+    Type:            SHT_NOTE
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x0000000000400274
+    AddressAlign:    0x0000000000000004
+    Content:         040000001400000003000000474E55001B8A73AC238390E32A7FF4AC8EBE4D6A41ECF5C9
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x00000000004003D0
+    AddressAlign:    0x0000000000000010
+    Content:         DEADBEEFBAADF00D
+  - Name:            .debug_frame
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000008
+    Content:         DEADBEEFBAADF00D
+Symbols:
+  - Name:            main
+    Type:            STT_FUNC
+    Section:         .text
+    Value:           0x00000000004003D0
+    Size:            0x0000000000000008
+...

Added: lldb/trunk/lit/ObjectFile/ELF/compressed-sections.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/compressed-sections.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/compressed-sections.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/compressed-sections.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,44 @@
+# REQUIRES: zlib
+# RUN: yaml2obj %s > %t
+# RUN: lldb-test object-file --contents %t | FileCheck %s
+--- !ELF
+FileHeader:
+  Class:           ELFCLASS32
+  Data:            ELFDATA2LSB
+  Type:            ET_REL
+  Machine:         EM_386
+Sections:
+  - Name:            .hello_elf
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_COMPRESSED ]
+    Content:         010000000800000001000000789c5330700848286898000009c802c1
+  - Name:            .bogus
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_COMPRESSED ]
+    Content:         deadbeefbaadf00d
+  - Name:            .zdebug_info
+    Type:            SHT_PROGBITS
+    Content:         5A4C49420000000000000008789c5330700848286898000009c802c1
+
+# CHECK: Name: .hello_elf
+# CHECK-NEXT: Type: regular
+# CHECK: VM address: 0
+# CHECK-NEXT: VM size: 0
+# CHECK-NEXT: File size: 28
+# CHECK-NEXT: Data: (
+# CHECK-NEXT: 20304050 60708090
+# CHECK-NEXT: )
+
+# CHECK: Name: .bogus
+# CHECK-NEXT: Type: regular
+# CHECK: VM address: 0
+# CHECK-NEXT: VM size: 0
+# CHECK-NEXT: File size: 8
+# CHECK-NEXT: Data: ()
+
+# CHECK: Name: .zdebug_info
+# CHECK: dwarf-info
+# CHECK: File size: 28
+# CHECK: Data: (
+# CHECK-NEXT: 20304050 60708090
+# CHECK-NEXT: )

Added: lldb/trunk/lit/ObjectFile/ELF/duplicate-section.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/duplicate-section.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/duplicate-section.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/duplicate-section.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,41 @@
+# RUN: mkdir -p %t/.build-id/1b
+# RUN: yaml2obj %s > %t/.build-id/1b/8a73ac238390e32a7ff4ac8ebe4d6a41ecf5c9.debug
+# RUN: cd %t
+# RUN: llvm-objcopy --strip-all --add-gnu-debuglink=.build-id/1b/8a73ac238390e32a7ff4ac8ebe4d6a41ecf5c9.debug %t/.build-id/1b/8a73ac238390e32a7ff4ac8ebe4d6a41ecf5c9.debug %t/stripped.out
+# RUN: lldb-test object-file %t/stripped.out | FileCheck %s
+
+# Make sure that the debug_frame section is present only once.
+# CHECK: Name: .debug_frame
+# CHECK-NOT: .debug_frame
+
+--- !ELF
+FileHeader:
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x00000000004003D0
+Sections:
+  - Name:            .note.gnu.build-id
+    Type:            SHT_NOTE
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x0000000000400274
+    AddressAlign:    0x0000000000000004
+    Content:         040000001400000003000000474E55001B8A73AC238390E32A7FF4AC8EBE4D6A41ECF5C9
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x00000000004003D0
+    AddressAlign:    0x0000000000000010
+    Content:         DEADBEEFBAADF00D
+  - Name:            .debug_frame
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000008
+    Content:         DEADBEEFBAADF00D
+Symbols:
+  - Name:            main
+    Type:            STT_FUNC
+    Section:         .text
+    Value:           0x00000000004003D0
+    Size:            0x0000000000000008
+...

Added: lldb/trunk/lit/ObjectFile/ELF/gnu-debuglink.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/gnu-debuglink.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/gnu-debuglink.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/gnu-debuglink.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,32 @@
+# RUN: yaml2obj %s > %t
+# RUN: llvm-objcopy --strip-all --add-gnu-debuglink=%t %t %t.stripped
+# RUN: lldb-test object-file %t.stripped | FileCheck %s
+
+# CHECK: Name: .debug_frame
+# CHECK-NEXT: Type: dwarf-frame
+
+--- !ELF
+FileHeader:
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x00000000004003D0
+Sections:
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x00000000004003D0
+    AddressAlign:    0x0000000000000010
+    Content:         DEADBEEFBAADF00D
+  - Name:            .debug_frame
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000008
+    Content:         DEADBEEFBAADF00D
+Symbols:
+  - Name:            main
+    Type:            STT_FUNC
+    Section:         .text
+    Value:           0x00000000004003D0
+    Size:            0x0000000000000008
+...

Added: lldb/trunk/lit/ObjectFile/ELF/many-sections.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/many-sections.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/many-sections.s (added)
+++ lldb/trunk/lit/ObjectFile/ELF/many-sections.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,72 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux %s -o %t
+# RUN: lldb-test object-file %t | FileCheck %s
+
+## Check that we are able to parse ELF files with more than SHN_LORESERVE
+## sections. This generates a file that contains 64k sections from
+## aaaaaaaa..dddddddd, plus a couple of standard ones (.strtab, etc.)
+## Check the number is correct plus the names of a couple of chosen sections.
+
+# CHECK: Showing 65540 sections
+# CHECK: Name: aaaaaaaa
+# CHECK: Name: bbbbbbbb
+# CHECK: Name: cccccccc
+# CHECK: Name: abcdabcd
+# CHECK: Name: dddddddd
+
+.macro gen_sections4 x
+  .section a\x
+  .section b\x
+  .section c\x
+  .section d\x
+.endm
+
+.macro gen_sections16 x
+  gen_sections4 a\x
+  gen_sections4 b\x
+  gen_sections4 c\x
+  gen_sections4 d\x
+.endm
+
+.macro gen_sections64 x
+  gen_sections16 a\x
+  gen_sections16 b\x
+  gen_sections16 c\x
+  gen_sections16 d\x
+.endm
+
+.macro gen_sections256 x
+  gen_sections64 a\x
+  gen_sections64 b\x
+  gen_sections64 c\x
+  gen_sections64 d\x
+.endm
+
+.macro gen_sections1024 x
+  gen_sections256 a\x
+  gen_sections256 b\x
+  gen_sections256 c\x
+  gen_sections256 d\x
+.endm
+
+.macro gen_sections4096 x
+  gen_sections1024 a\x
+  gen_sections1024 b\x
+  gen_sections1024 c\x
+  gen_sections1024 d\x
+.endm
+
+.macro gen_sections16384 x
+  gen_sections4096 a\x
+  gen_sections4096 b\x
+  gen_sections4096 c\x
+  gen_sections4096 d\x
+.endm
+
+gen_sections16384 a
+gen_sections16384 b
+gen_sections16384 c
+gen_sections16384 d
+
+.global _start
+_start:

Added: lldb/trunk/lit/ObjectFile/ELF/minidebuginfo-corrupt-xz.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/minidebuginfo-corrupt-xz.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/minidebuginfo-corrupt-xz.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/minidebuginfo-corrupt-xz.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,29 @@
+# REQUIRES: lzma
+
+# This test checks that an error occurs when a corrupted
+# .gnu_debugdata section is trying to be xz uncompressed.
+
+# RUN: yaml2obj %s > %t.obj
+
+# TODO(kwk): once yaml2obj doesn't auto-generate a .symtab section
+# when there's none in YAML, remove the following line:
+
+# RUN: llvm-objcopy --remove-section=.symtab %t.obj
+
+# RUN: %lldb -b -o 'image dump symtab' %t.obj 2>&1 | FileCheck %s
+
+# CHECK: warning: (x86_64) {{.*}}.obj An error occurred while decompression the section .gnu_debugdata: lzma_stream_buffer_decode()=lzma error: LZMA_DATA_ERROR
+
+--- !ELF
+FileHeader:
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x00000000004004C0
+Sections:
+  - Name:            .gnu_debugdata
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         FD377A585A000004E6D6B4460200210116000000742FE5A3E0180F05BA5D003F914584683D89A6DA8ACC93E24ED90802EC1FE2A7102958F4A42B6A7134F23922F6F35F529E133A8B5588025CFAC876C68510A157DBBCF8CA75E9854DED10FDD5CE0CDC136F6459B13B9847AEF79E9B1C7CD70EF4F3AF709F5DA0C1F40780154D72120A6A62A3F1A216E20DC597CE55BB23B48785957321A15FEE48808C1428B925DBC8022541CC594BD0AF2B51C6BE2854C81611017704DF6E509D21013B80BEC27D8919ACD3157E89353A08F4C86781ED708E89AB322D010F0F1605DAD9B9CE2B13C387769C83F5F85C647FD9C551E0E9C7D4A5CBE297970E486CB94AC283F98A7C6412A57F9C37952327549EEC4634D2CFA55B0F99923A14992D4293E0D87CEEF7FB6160C45928DE25074EEBF5329B5579AF01DB23DF22CBD48C8037B68FFFBE5CEA6CD26A936DD07D9B2E6006B7C6E5CC751072185EFE995D3F3C8DACF9039D4BEFB1F376B491568F6F00DB50FF477F36B90413E4FA30AE7C561A1249FD45FDFF884F70247FC21E57195A764151D8E341267E724D856C512BD243CDB33AB313758443877B2CB58F7F8F0461DE9766647F333A3531BDC4A26E9537EB314708D31212FCF4C21E9CB139F4DBFD21BB16A126C35E2BB3F7E30BF5A54961CECD4DD4D91A3757356F618754B21533C34F2BD97D70A02B1F338588BDBA9CDF5FC9FBE973E550194F07EC7A1E8E3C005FD60F8853223427628987E82E701CA7E2FDFA1B0ED564C37D115A72C3EC01E29C85C3630D8A385C4AE12F4F75F9F0BC12F2698345DD62A1F546A5953AF5CF3C0F22C7DA510F6739EB8CDB0E8A5A3BC13CFC31C1875C313908EFF23678869B76A6E1C10FE699E43BFFDE8F0752ED994A4A84BC0AD9D7381131D457C4917C4F6656F5C95D3221A79166C802D5F5A7C68554E54C42CA535465D224C7B641CF3417C3EAFD03CE5709BEA33DC7C9155CAC9D3C8033AF7CDA622020606A7C139D77FF85BC19323BF956C9C4662F60079BC7FE5F67B46211716A1A6CE4AB8AAB307D6444310CBC101071703EECC0B4622D91D705F5DA2932DA8BCEDA8E1CB0CDB20AAD652B8F86A521D3421287F1C175AE3BE6458AE6F8F3FB6FB7ED97B616B580D791E5FE0B74973F8604F419039B5B9D9A14397EE509F2B33AE404FF96DD0551472C5302E67910F0794B15CFE837351C6AF89B2FE88488B557BE8ACFFA331FB7AD553D35CAEB7D8BCEFB6CFF4A58E91355FE931408CF4CAFA9B97518B9E5C02078F64CE81279801B090348213DCAA7D12DC098BFF58C5A3202EFC38F64AD894379747B54AB5A9843F82E5FF1F394C8B78344A8F1655DDEF8D5FE09EBB3E703853ABD716743507000696FB6B35216B088E499F53880375521442ED45DCDD1B31AAEBDAD3C7DA958593425206C4B2A0BC6CADE3B0B1598499E08016E84F33E3EB9D7B03B9C9DFA91B8CE5C74DEF2BC97FEE9982B0AEC16C75EEB7AE9A858A9C37F6C12B040C68A49111DCF0F3A4780F3879E93D904676BE908FDC66373D34AA715A39EFBC2795C6C8F058CA24392FB2591AD06ACD6AED8746F926886180C2B007ED58C9884A8BEF6CCA1F549F5C4FB411A3FF78770D1147363AC80B98B5A8FDB3DEC4E61709F66A622BDA835B1FD67B7C7CB166ABB163FB7C5204AE200C71C6A18B532C407647323B8F2FAC7ECB68C250877FC8DD5FE05B2B39E66F687EBB6EEFB7D5209E22F451B76F57D90BB6641DFFDE1A1821C4D783E4756F3CEE7F63B9BA284F8E114B0D9A086D83233BED4A8F5B60933DC16AF4DDE19C9FC59BCC1646343ECE7007B1C4DC65C4A939CDD47F6ED8855913183149BECE66D8FE7793AE607EB8E28513749B9548252764110D3B58D1D8B348DB18F7F24F8CA0C7D9CB515D90F7F1848FF58472B2EF52EBAB123AFC7F87890CE9FC55B31160014294A9B7F81638A27335E29E15A10B1068D5E049B1C239814DBBCC1BB30E11EEBAD5ACF8FB1B986C4F48D73FEA6129D9708A0B5AC435402BEC8C79C71DB94394811B9A604141A125A4669F9A139A0264E93E822117BE8E0D93A1487C51214E9FBF5763A3FBE9DA700B9C9B435472AF9F0B4446B000000003239307DD8B645100001D60B90300000CA1EC9E9B1C467FB020000000004595A
+...

Added: lldb/trunk/lit/ObjectFile/ELF/minidebuginfo-find-symbols.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/minidebuginfo-find-symbols.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/minidebuginfo-find-symbols.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/minidebuginfo-find-symbols.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,26 @@
+# REQUIRES: lzma
+
+# RUN: yaml2obj %s > %t.obj
+
+# TODO(kwk): once yaml2obj doesn't auto-generate a .symtab section
+# when there's none in YAML, remove the following line:
+
+# RUN: llvm-objcopy --remove-section=.symtab %t.obj
+
+# RUN: %lldb -b -o 'image dump symtab' %t.obj | FileCheck %s
+
+# CHECK: [ 0] 1 X Code 0x00000000004005b0 0x000000000000000f 0x00000012 multiplyByFour
+
+--- !ELF
+FileHeader:
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x00000000004004C0
+Sections:
+  - Name:            .gnu_debugdata
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         FD377A585A000004E6D6B4460200210116000000742FE5A3E0180F05BA5D003F914584683D89A6DA8ACC93E24ED90802EC1FE2A7102958F4A42B6A7134F23922F6F35F529E133A8B5588025CFAC876C68510A157DBBCF8CA75E9854DED10FDD5CE0CDC136F6459B13B9847AEF79E9B1C7CD70EF4F3AF709F5DA0C1F40780154D72120A6A62A3F1A216E20DC597CE55BB23B48785957321A15FEE48808C1428B925DBC8022541CC594BD0AF2B51C6BE2854C81611017704DF6E509D21013B80BEC27D8919ACD3157E89353A08F4C86781ED708E89AB322D010F0F1605DAD9B9CE2B13C387769C83F5F85C647FD9C551E0E9C7D4A5CBE297970E486CB94AC283F98A7C6412A57F9C37952327549EEC4634D2CFA55B0F99923A14992D4293E0D87CEEF7FB6160C45928DE25074EEBF5329B5579AF01DB23DF22CBD48C8037B68FFFBE5CEA6CD26A936DD07D9B2E6006B7C6E5CC751072185EFE995D3F3C8DACF9039D4BEFB1F376B491568F6F00DB50FF477F36B90413E4FA30AE7C561A1249FD45FDFF884F70247FC21E57195A764151D8E341267E724D856C512BD243CDB33AB313758443877B2CB58F7F8F0461DE9766647F333A3531BDC4A26E9537EB314708D31212FCF4C21E9CB139F4DBFD21BB16A126C35E2BB3F7E30BF5A54961CECD4DD4D91A3757356F618754B21533C34F2BD97D70A02B1F338588BDBA9CDF5FC9FBE973E550194F07EC7A1E8E3C005FD60F8853223427628987E82E701CA7E2FDFA1B0ED564C37D115A72C3EC01E29C85C3630D8A385C4AE12F4F75F9F0BC12F2698345DD62A1F546A5953AF5CF3C0F22C7DA510F6739EB8CDB0E8A5A3BC13CFC31C1875C313908EFF23678869B76A6E1C10FE699E43BFFDE8F0752ED994A4A84BC0AD9D7381131D457C4917C4F6656F5C95D3221A79166C802D5F5A7C68554E54C42CA535465D224C7B641CF3417C3EAFD03CE5709BEA33DC7C9155CAC9D3C8033AF7CDA622020606A7C139D77FF85BC19323BF956C9C4662F60079BC7FE5F67B46211716A1A6CE4AB8AAB307D6444310CBC101071703EECC0B4622D91D705F5DA2932DA8BCEDA8E1CB0CDB20AAD652B8F86A521D3421287F1C175AE3BE6458AE6F8F3FB6FB7ED97B616B580D791E5FE0B74973F8604F419039B5B9D9A14397EE509F2B33AE404FF96DD0551472C5302E67910F0794B15CFE837351C6AF89B2FE88488B557BE8ACFFA331FB7AD553D35CAEB7D8BCEFB6CFF4A58E91355FE931408CF4CAFA9B97518B9E5C02078F64CE81279801B090348213DCAA7D12DC098BFF58C5A3202EFC38F64AD894379747B54AB5A9843F82E5FF1F394C8B783C3A8F1655DDEF8D5FE09EBB3E703853ABD716743507000696FB6B35216B088E499F53880375521442ED45DCDD1B31AAEBDAD3C7DA958593425206C4B2A0BC6CADE3B0B1598499E08016E84F33E3EB9D7B03B9C9DFA91B8CE5C74DEF2BC97FEE9982B0AEC16C75EEB7AE9A858A9C37F6C12B040C68A49111DCF0F3A4780F3879E93D904676BE908FDC66373D34AA715A39EFBC2795C6C8F058CA24392FB2591AD06ACD6AED8746F926886180C2B007ED58C9884A8BEF6CCA1F549F5C4FB411A3FF78770D1147363AC80B98B5A8FDB3DEC4E61709F66A622BDA835B1FD67B7C7CB166ABB163FB7C5204AE200C71C6A18B532C407647323B8F2FAC7ECB68C250877FC8DD5FE05B2B39E66F687EBB6EEFB7D5209E22F451B76F57D90BB6641DFFDE1A1821C4D783E4756F3CEE7F63B9BA284F8E114B0D9A086D83233BED4A8F5B60933DC16AF4DDE19C9FC59BCC1646343ECE7007B1C4DC65C4A939CDD47F6ED8855913183149BECE66D8FE7793AE607EB8E28513749B9548252764110D3B58D1D8B348DB18F7F24F8CA0C7D9CB515D90F7F1848FF58472B2EF52EBAB123AFC7F87890CE9FC55B31160014294A9B7F81638A27335E29E15A10B1068D5E049B1C239814DBBCC1BB30E11EEBAD5ACF8FB1B986C4F48D73FEA6129D9708A0B5AC435402BEC8C79C71DB94394811B9A604141A125A4669F9A139A0264E93E822117BE8E0D93A1487C51214E9FBF5763A3FBE9DA700B9C9B435472AF9F0B4446B000000003239307DD8B645100001D60B90300000CA1EC9E9B1C467FB020000000004595A
+...

Added: lldb/trunk/lit/ObjectFile/ELF/minidebuginfo-no-lzma.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/minidebuginfo-no-lzma.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/minidebuginfo-no-lzma.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/minidebuginfo-no-lzma.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,29 @@
+# REQUIRES: !lzma
+
+# This test checks that a warning is printed when we're trying
+# to decompress a .gnu_debugdata section when no LZMA support was compiled in.
+
+# RUN: yaml2obj %s > %t.obj
+
+# TODO(kwk): once yaml2obj doesn't auto-generate a .symtab section
+# when there's none in YAML, remove the following line:
+
+# RUN: llvm-objcopy --remove-section=.symtab %t.obj
+
+# RUN: %lldb -b -o 'image dump symtab' %t.obj 2>&1 | FileCheck %s
+
+# CHECK: warning: (x86_64) {{.*}}.obj No LZMA support found for reading .gnu_debugdata section
+
+--- !ELF
+FileHeader:
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x00000000004004C0
+Sections:
+  - Name:            .gnu_debugdata
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         FD377A585A000004E6D6B4460200210116000000742FE5A3E0180F05BA5D003F914584683D89A6DA8ACC93E24ED90802EC1FE2A7102958F4A42B6A7134F23922F6F35F529E133A8B5588025CFAC876C68510A157DBBCF8CA75E9854DED10FDD5CE0CDC136F6459B13B9847AEF79E9B1C7CD70EF4F3AF709F5DA0C1F40780154D72120A6A62A3F1A216E20DC597CE55BB23B48785957321A15FEE48808C1428B925DBC8022541CC594BD0AF2B51C6BE2854C81611017704DF6E509D21013B80BEC27D8919ACD3157E89353A08F4C86781ED708E89AB322D010F0F1605DAD9B9CE2B13C387769C83F5F85C647FD9C551E0E9C7D4A5CBE297970E486CB94AC283F98A7C6412A57F9C37952327549EEC4634D2CFA55B0F99923A14992D4293E0D87CEEF7FB6160C45928DE25074EEBF5329B5579AF01DB23DF22CBD48C8037B68FFFBE5CEA6CD26A936DD07D9B2E6006B7C6E5CC751072185EFE995D3F3C8DACF9039D4BEFB1F376B491568F6F00DB50FF477F36B90413E4FA30AE7C561A1249FD45FDFF884F70247FC21E57195A764151D8E341267E724D856C512BD243CDB33AB313758443877B2CB58F7F8F0461DE9766647F333A3531BDC4A26E9537EB314708D31212FCF4C21E9CB139F4DBFD21BB16A126C35E2BB3F7E30BF5A54961CECD4DD4D91A3757356F618754B21533C34F2BD97D70A02B1F338588BDBA9CDF5FC9FBE973E550194F07EC7A1E8E3C005FD60F8853223427628987E82E701CA7E2FDFA1B0ED564C37D115A72C3EC01E29C85C3630D8A385C4AE12F4F75F9F0BC12F2698345DD62A1F546A5953AF5CF3C0F22C7DA510F6739EB8CDB0E8A5A3BC13CFC31C1875C313908EFF23678869B76A6E1C10FE699E43BFFDE8F0752ED994A4A84BC0AD9D7381131D457C4917C4F6656F5C95D3221A79166C802D5F5A7C68554E54C42CA535465D224C7B641CF3417C3EAFD03CE5709BEA33DC7C9155CAC9D3C8033AF7CDA622020606A7C139D77FF85BC19323BF956C9C4662F60079BC7FE5F67B46211716A1A6CE4AB8AAB307D6444310CBC101071703EECC0B4622D91D705F5DA2932DA8BCEDA8E1CB0CDB20AAD652B8F86A521D3421287F1C175AE3BE6458AE6F8F3FB6FB7ED97B616B580D791E5FE0B74973F8604F419039B5B9D9A14397EE509F2B33AE404FF96DD0551472C5302E67910F0794B15CFE837351C6AF89B2FE88488B557BE8ACFFA331FB7AD553D35CAEB7D8BCEFB6CFF4A58E91355FE931408CF4CAFA9B97518B9E5C02078F64CE81279801B090348213DCAA7D12DC098BFF58C5A3202EFC38F64AD894379747B54AB5A9843F82E5FF1F394C8B783C3A8F1655DDEF8D5FE09EBB3E703853ABD716743507000696FB6B35216B088E499F53880375521442ED45DCDD1B31AAEBDAD3C7DA958593425206C4B2A0BC6CADE3B0B1598499E08016E84F33E3EB9D7B03B9C9DFA91B8CE5C74DEF2BC97FEE9982B0AEC16C75EEB7AE9A858A9C37F6C12B040C68A49111DCF0F3A4780F3879E93D904676BE908FDC66373D34AA715A39EFBC2795C6C8F058CA24392FB2591AD06ACD6AED8746F926886180C2B007ED58C9884A8BEF6CCA1F549F5C4FB411A3FF78770D1147363AC80B98B5A8FDB3DEC4E61709F66A622BDA835B1FD67B7C7CB166ABB163FB7C5204AE200C71C6A18B532C407647323B8F2FAC7ECB68C250877FC8DD5FE05B2B39E66F687EBB6EEFB7D5209E22F451B76F57D90BB6641DFFDE1A1821C4D783E4756F3CEE7F63B9BA284F8E114B0D9A086D83233BED4A8F5B60933DC16AF4DDE19C9FC59BCC1646343ECE7007B1C4DC65C4A939CDD47F6ED8855913183149BECE66D8FE7793AE607EB8E28513749B9548252764110D3B58D1D8B348DB18F7F24F8CA0C7D9CB515D90F7F1848FF58472B2EF52EBAB123AFC7F87890CE9FC55B31160014294A9B7F81638A27335E29E15A10B1068D5E049B1C239814DBBCC1BB30E11EEBAD5ACF8FB1B986C4F48D73FEA6129D9708A0B5AC435402BEC8C79C71DB94394811B9A604141A125A4669F9A139A0264E93E822117BE8E0D93A1487C51214E9FBF5763A3FBE9DA700B9C9B435472AF9F0B4446B000000003239307DD8B645100001D60B90300000CA1EC9E9B1C467FB020000000004595A
+...

Added: lldb/trunk/lit/ObjectFile/ELF/minidebuginfo-set-and-hit-breakpoint.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/minidebuginfo-set-and-hit-breakpoint.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/minidebuginfo-set-and-hit-breakpoint.test (added)
+++ lldb/trunk/lit/ObjectFile/ELF/minidebuginfo-set-and-hit-breakpoint.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,89 @@
+# REQUIRES: system-linux, lzma, xz
+
+# We want to keep the symbol "multiplyByThree" in the .dynamic section and not
+# have it put the default .symtab section.
+# RUN: echo "{multiplyByThree;};" > %T/dynmic-symbols.txt
+# RUN: %clang -Wl,--dynamic-list=%T/dynmic-symbols.txt -g -o %t.binary %p/Inputs/minidebuginfo-main.c
+
+# The following section is adapted from GDB's official documentation:
+# http://sourceware.org/gdb/current/onlinedocs/gdb/MiniDebugInfo.html#MiniDebugInfo
+
+# Extract the dynamic symbols from the main binary, there is no need
+# to also have these in the normal symbol table.
+
+# IGNORE: llvm-nm -D %t.binary --format=posix --defined-only | awk '{ print $1 }' | sort > %t.dynsyms
+
+# Extract all the text (i.e. function) symbols from the debuginfo.
+# (Note that we actually also accept "D" symbols, for the benefit
+# of platforms like PowerPC64 that use function descriptors.)
+
+# IGNORE: llvm-nm %t.binary --format=posix --defined-only | awk '{ if ($2 == "T" || $2 == "t" || $2 == "D") print $1 }' | sort > %t.funcsyms
+
+# Keep all the function symbols not already in the dynamic symbol
+# table.
+
+# IGNORE: comm -13 %t.dynsyms %t.funcsyms > %t.keep_symbols
+# The result of the preceeding command can be hardcoded
+# because we know what symbol to keep.
+# RUN: echo "multiplyByFour" > %t.keep_symbols
+
+# Separate full debug info into debug binary.
+
+# RUN: llvm-objcopy --only-keep-debug %t.binary %t.debug
+
+# Copy the full debuginfo, keeping only a minimal set of symbols and
+# removing some unnecessary sections.
+
+# RUN: llvm-objcopy -S --remove-section .gdb_index --remove-section .comment --keep-symbols=%t.keep_symbols %t.debug %t.mini_debuginfo
+
+# This command is not from the GDB manual but it slims down embedded minidebug
+# info. On top if that, it ensures that we only have the multiplyByThree symbol
+# in the .dynsym section of the main binary. The bits removing .rela.plt,
+# .rela.dyn and .dynsym sections can be removed once llvm-objcopy
+# --only-keep-debug starts to work.
+# RUN: llvm-objcopy --remove-section=.rela.plt --remove-section=.rela.dyn \
+# RUN:   --remove-section=.gnu.version --remove-section=.gnu.hash --remove-section=.dynsym %t.mini_debuginfo
+
+# Drop the full debug info from the original binary.
+
+# RUN: llvm-strip --strip-all -R .comment %t.binary
+
+# Inject the compressed data into the .gnu_debugdata section of the
+# original binary.
+
+# RUN: xz --force --keep %t.mini_debuginfo
+
+# RUN: llvm-objcopy --add-section .gnu_debugdata=%t.mini_debuginfo.xz %t.binary
+
+# Now run the binary and see that we can set and hit a breakpoint
+# from within the .dynsym section (multiplyByThree) and one from
+# the .symtab section embedded in the .gnu_debugdata section (multiplyByFour).
+
+# RUN: %lldb -b -o 'b multiplyByThree' -o 'b multiplyByFour' -o 'run' -o 'continue' -o 'breakpoint list -v' %t.binary | FileCheck %s
+
+# CHECK: (lldb) b multiplyByThree
+# CHECK-NEXT: Breakpoint 1: where = minidebuginfo-set-and-hit-breakpoint.test.tmp.binary`multiplyByThree, address = 0x{{.*}}
+
+# CHECK: (lldb) b multiplyByFour
+# CHECK-NEXT: Breakpoint 2: where = minidebuginfo-set-and-hit-breakpoint.test.tmp.binary`multiplyByFour, address = 0x{{.*}}
+
+# CHECK: * thread #1, name = 'minidebuginfo-s', stop reason = breakpoint 1.1
+# CHECK: * thread #1, name = 'minidebuginfo-s', stop reason = breakpoint 2.1
+
+# CHECK: (lldb) breakpoint list -v
+# CHECK-NEXT: Current breakpoints:
+# CHECK-NEXT: 1: name = 'multiplyByThree'
+# CHECK-NEXT:  1.1: 
+# CHECK-NEXT:  module = {{.*}}/minidebuginfo-set-and-hit-breakpoint.test.tmp.binary
+# CHECK-NEXT:  symbol = multiplyByThree
+# CHECK-NEXT:  address = 0x{{.*}}
+# CHECK-NEXT:  resolved = true
+# CHECK-NEXT:  hit count = 1 
+
+# CHECK: 2: name = 'multiplyByFour'
+# CHECK-NEXT:  2.1: 
+# CHECK-NEXT:  module = {{.*}}/minidebuginfo-set-and-hit-breakpoint.test.tmp.binary
+# CHECK-NEXT:  symbol = multiplyByFour
+# CHECK-NEXT:  address = 0x{{.*}}
+# CHECK-NEXT:  resolved = true
+# CHECK-NEXT:  hit count = 1 

Added: lldb/trunk/lit/ObjectFile/ELF/netbsd-core-amd64.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/netbsd-core-amd64.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/netbsd-core-amd64.test (added)
+++ lldb/trunk/lit/ObjectFile/ELF/netbsd-core-amd64.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,12 @@
+# Test whether NetBSD core dumps are recognized correctly.
+
+# Core dump generated by the following program:
+# int main() {
+#   void* v = 0;
+#   *v = 1;
+#   return 0;
+# }
+
+# RUN: lldb-test object-file %S/Inputs/netbsd-amd64.core | FileCheck %s
+# CHECK: Architecture: x86_64-unknown-netbsd
+# CHECK: Type: core file

Added: lldb/trunk/lit/ObjectFile/ELF/netbsd-exec-8.99.30-amd64.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/netbsd-exec-8.99.30-amd64.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/netbsd-exec-8.99.30-amd64.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/netbsd-exec-8.99.30-amd64.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,22 @@
+# Test whether NetBSD executables are recognized correctly.
+
+# RUN: yaml2obj %s > %t
+# RUN: lldb-test object-file %t | FileCheck %s
+# CHECK: Architecture: x86_64--netbsd8.99.30
+# CHECK: Type: executable
+
+--- !ELF
+FileHeader:      
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x00000000002006F0
+Sections:        
+  - Name:            .note.netbsd.ident
+    Type:            SHT_NOTE
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x00000000002005A8
+    AddressAlign:    0x0000000000000004
+    Content:         0700000004000000010000004E6574425344000078B29535
+...

Added: lldb/trunk/lit/ObjectFile/ELF/section-addresses.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/section-addresses.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/section-addresses.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/section-addresses.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,58 @@
+# RUN: yaml2obj %s > %t
+# RUN: lldb-test object-file %t | FileCheck %s
+
+# CHECK-LABEL: Name: .one
+# CHECK: VM address: 0x0
+
+# CHECK-LABEL: Name: .nonalloc
+# CHECK: VM address: 0x0
+
+# CHECK-LABEL: Name: .two
+# CHECK: VM address: 0x8
+
+# CHECK-LABEL: Name: .three
+# CHECK: VM address: 0xc
+
+# CHECK-LABEL: Name: .four
+# CHECK: VM address: 0xc
+
+# CHECK-LABEL: Name: .five
+# CHECK: VM address: 0x1000
+
+--- !ELF
+FileHeader:
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_REL
+  Machine:         EM_X86_64
+  Entry:           0x00000000000007A0
+Sections:
+  - Name:            .one
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC ]
+    AddressAlign:    0x0000000000000004
+    Content:         DEADBEEFBAADF00D
+  - Name:            .nonalloc
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000004
+    Content:         DEADBEEFBAADF00D
+  - Name:            .two
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC ]
+    AddressAlign:    0x0000000000000004
+    Content:         DE
+  - Name:            .three
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC ]
+    AddressAlign:    0x0000000000000004
+  - Name:            .four
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC ]
+    AddressAlign:    0x0000000000000004
+    Content:         DEADBEEFBAADF00D
+  - Name:            .five
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC ]
+    AddressAlign:    0x0000000000001000
+    Content:         DEADBEEFBAADF00D
+...

Added: lldb/trunk/lit/ObjectFile/ELF/section-overlap.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/section-overlap.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/section-overlap.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/section-overlap.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,51 @@
+# Test handling of (corrupt?) object files, which have sections with overlapping
+# virtual addresses.
+#
+# Right now the overlapping sections get dropped, but other behaviors
+# (including outright rejecting such files) are possible too.
+
+# RUN: yaml2obj %s > %t
+# RUN: lldb-test object-file %t | FileCheck %s
+
+# CHECK-NOT: .overlap1
+# CHECK-NOT: .overlap2
+
+!ELF
+FileHeader:
+  Class:           ELFCLASS32
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_ARM
+Sections:
+  - Name:            .sect1
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x1000
+    AddressAlign:    0x4
+    Content:         DEADBEEFBAADF00D
+  - Name:            .overlap1
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x1004
+    AddressAlign:    0x4
+    Content:         DEADBEEFBAADF00D
+  - Name:            .sect2
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x2000
+    AddressAlign:    0x4
+    Content:         DEADBEEFBAADF00D
+  - Name:            .overlap2
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x2004
+    AddressAlign:    0x4
+    Content:         DEADBEEFBAADF00D
+ProgramHeaders:
+  - Type: PT_LOAD
+    Flags: [ PF_X, PF_W, PF_R ]
+    VAddr: 0x1000
+    Align: 0x4
+    Sections:
+      - Section: .sect1
+      - Section: .overlap1

Added: lldb/trunk/lit/ObjectFile/ELF/section-permissions.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/section-permissions.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/section-permissions.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/section-permissions.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,34 @@
+# RUN: yaml2obj %s > %t
+# RUN: lldb-test object-file %t | FileCheck %s
+
+# CHECK-LABEL: Name: .r-x
+# CHECK: Permissions: r-x
+#
+# CHECK-LABEL: Name: .rw-
+# CHECK: Permissions: rw-
+
+# CHECK-LABEL: Name: .---
+# CHECK: Permissions: ---
+
+--- !ELF
+FileHeader:
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_REL
+  Machine:         EM_X86_64
+  Entry:           0x00000000000007A0
+Sections:
+  - Name:            .r-x
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Content:         DEADBEEFBAADF00D
+  - Name:            .rw-
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_WRITE, SHF_ALLOC ]
+    AddressAlign:    0x0000000000000004
+    Content:         DEADBEEFBAADF00D
+  - Name:            .---
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         DEADBEEFBAADF00D
+...

Added: lldb/trunk/lit/ObjectFile/ELF/section-types-edgecases.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/section-types-edgecases.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/section-types-edgecases.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/section-types-edgecases.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,35 @@
+# This test doesn't attempt to mandate a specific section classification. It is
+# here to document the existing behavior and to make sure we don't do something
+# completely crazy (like crashing).
+
+# RUN: yaml2obj %s > %t
+# RUN: lldb-test object-file %t | FileCheck %s
+
+# The section is called .data, but it has the SHF_EXECINSTR flag set. Have
+# the flag take precedence over the name.
+# CHECK-LABEL: Name: .data
+# CHECK-NEXT: Type: code
+
+# Section type (SHT_SYMTAB) takes precedence over name-based deduction.
+# CHECK-LABEL: Name: .text
+# CHECK-NEXT: Type: elf-symbol-table
+
+--- !ELF
+FileHeader:
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_DYN
+  Machine:         EM_X86_64
+  Entry:           0x00000000000007A0
+Sections:
+  - Name:            .data
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_EXECINSTR, SHF_ALLOC ]
+    AddressAlign:    0x0000000000000004
+    Content:         DEADBEEFBAADF00D
+  - Name:            .text
+    Type:            SHT_SYMTAB
+    Flags:           [ ]
+    AddressAlign:    0x0000000000000004
+    Content:         DEADBEEFBAADF00D
+...

Added: lldb/trunk/lit/ObjectFile/ELF/section-types.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/section-types.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/section-types.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/section-types.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,88 @@
+# RUN: yaml2obj %s > %t
+# RUN: lldb-test object-file %t | FileCheck %s
+
+# CHECK-LABEL: Name: .text
+# CHECK-NEXT: Type: code
+
+# CHECK-LABEL: Name: .debug_info
+# CHECK-NEXT: Type: dwarf-info
+
+# CHECK-LABEL: Name: .debug_types
+# CHECK-NEXT: Type: dwarf-types
+
+# CHECK-LABEL: Name: .debug_types.dwo
+# CHECK-NEXT: Type: dwarf-types-dwo
+
+# CHECK-LABEL: Name: .debug_names
+# CHECK-NEXT: Type: dwarf-names
+
+# CHECK-LABEL: Name: .gnu_debugaltlink
+# CHECK-NEXT: Type: dwarf-gnu-debugaltlink
+
+# CHECK-LABEL: Name: __codesection
+# CHECK-NEXT: Type: code
+
+# CHECK-LABEL: Name: .data
+# CHECK-NEXT: Type: data
+# CHECK: Thread specific: no
+
+# CHECK-LABEL: Name: .tdata
+# CHECK-NEXT: Type: data
+# CHECK: Thread specific: yes
+
+# CHECK-LABEL: Name: .tbss
+# CHECK-NEXT: Type: zero-fill
+# CHECK: Thread specific: yes
+
+--- !ELF
+FileHeader:
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_REL
+  Machine:         EM_X86_64
+  Entry:           0x00000000000007A0
+Sections:
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Content:         DEADBEEFBAADF00D
+  - Name:            .debug_info
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         DEADBEEFBAADF00D
+  - Name:            .debug_types
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         DEADBEEFBAADF00D
+  - Name:            .debug_types.dwo
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         DEADBEEFBAADF00D
+  - Name:            .debug_names
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         DEADBEEFBAADF00D
+  - Name:            .gnu_debugaltlink
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000001
+    Content:         DEADBEEFBAADF00D
+  - Name:            __codesection
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Content:         DEADBEEFBAADF00D
+  - Name:            .data
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_WRITE, SHF_ALLOC ]
+    AddressAlign:    0x0000000000000004
+    Content:         2F000000
+  - Name:            .tdata
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_WRITE, SHF_ALLOC, SHF_TLS ]
+    AddressAlign:    0x0000000000000004
+    Content:         2F000000
+  - Name:            .tbss
+    Type:            SHT_NOBITS
+    Flags:           [ SHF_WRITE, SHF_ALLOC, SHF_TLS ]
+    AddressAlign:    0x0000000000000004
+    Size:            0x0000000000000004
+...

Added: lldb/trunk/lit/ObjectFile/ELF/short-build-id.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/ELF/short-build-id.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/ELF/short-build-id.yaml (added)
+++ lldb/trunk/lit/ObjectFile/ELF/short-build-id.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,26 @@
+# RUN: yaml2obj %s >%t
+# RUN: lldb-test object-file %t | FileCheck %s
+
+# CHECK: UUID: 333059A4-3CC3-D5F9
+
+--- !ELF
+FileHeader:      
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x0000000000201000
+Sections:        
+  - Name:            .note.gnu.build-id
+    Type:            SHT_NOTE
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x0000000000200190
+    AddressAlign:    0x0000000000000004
+    Content:         040000000800000003000000474E5500333059A43CC3D5F9
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x0000000000201000
+    AddressAlign:    0x0000000000000004
+    Content:         ''
+...

Added: lldb/trunk/lit/ObjectFile/MachO/lc_build_version.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/MachO/lc_build_version.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/MachO/lc_build_version.yaml (added)
+++ lldb/trunk/lit/ObjectFile/MachO/lc_build_version.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,219 @@
+# RUN: yaml2obj %s > %t.out
+# RUN: lldb-test symbols %t.out | FileCheck %s
+# Test that the deployment target is parsed from the load commands.
+# CHECK: x86_64-apple-macosx10.14.0
+# CHECK: x86_64-apple-ios12.0.0-macabi
+--- !mach-o
+FileHeader:      
+  magic:           0xFEEDFACF
+  cputype:         0x01000007
+  cpusubtype:      0x80000003
+  filetype:        0x00000002
+  ncmds:           15
+  sizeofcmds:      776
+  flags:           0x00200085
+  reserved:        0x00000000
+LoadCommands:    
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         72
+    segname:         __PAGEZERO
+    vmaddr:          0
+    vmsize:          4294967296
+    fileoff:         0
+    filesize:        0
+    maxprot:         0
+    initprot:        0
+    nsects:          0
+    flags:           0
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         232
+    segname:         __TEXT
+    vmaddr:          4294967296
+    vmsize:          4096
+    fileoff:         0
+    filesize:        4096
+    maxprot:         7
+    initprot:        5
+    nsects:          2
+    flags:           0
+    Sections:        
+      - sectname:        __text
+        segname:         __TEXT
+        addr:            0x0000000100000FB0
+        size:            8
+        offset:          0x00000FB0
+        align:           4
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x80000400
+        reserved1:       0x00000000
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+      - sectname:        __unwind_info
+        segname:         __TEXT
+        addr:            0x0000000100000FB8
+        size:            72
+        offset:          0x00000FB8
+        align:           2
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x00000000
+        reserved1:       0x00000000
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         72
+    segname:         __LINKEDIT
+    vmaddr:          4294971392
+    vmsize:          4096
+    fileoff:         4096
+    filesize:        152
+    maxprot:         7
+    initprot:        1
+    nsects:          0
+    flags:           0
+  - cmd:             LC_DYLD_INFO_ONLY
+    cmdsize:         48
+    rebase_off:      0
+    rebase_size:     0
+    bind_off:        0
+    bind_size:       0
+    weak_bind_off:   0
+    weak_bind_size:  0
+    lazy_bind_off:   0
+    lazy_bind_size:  0
+    export_off:      4096
+    export_size:     48
+  - cmd:             LC_SYMTAB
+    cmdsize:         24
+    symoff:          4152
+    nsyms:           3
+    stroff:          4200
+    strsize:         48
+  - cmd:             LC_DYSYMTAB
+    cmdsize:         80
+    ilocalsym:       0
+    nlocalsym:       0
+    iextdefsym:      0
+    nextdefsym:      2
+    iundefsym:       2
+    nundefsym:       1
+    tocoff:          0
+    ntoc:            0
+    modtaboff:       0
+    nmodtab:         0
+    extrefsymoff:    0
+    nextrefsyms:     0
+    indirectsymoff:  0
+    nindirectsyms:   0
+    extreloff:       0
+    nextrel:         0
+    locreloff:       0
+    nlocrel:         0
+  - cmd:             LC_LOAD_DYLINKER
+    cmdsize:         32
+    name:            12
+    PayloadString:   /usr/lib/dyld
+    ZeroPadBytes:    7
+  - cmd:             LC_UUID
+    cmdsize:         24
+    uuid:            8F41E140-23B9-3720-AC28-4E7AF9D159BA
+  - cmd:             LC_BUILD_VERSION
+    cmdsize:         32
+    platform:        1
+    minos:           658944
+    sdk:             658944
+    ntools:          1
+    Tools:           
+      - tool:            3
+        version:         26738944
+  - cmd:             LC_SOURCE_VERSION
+    cmdsize:         16
+    version:         0
+  - cmd:             LC_MAIN
+    cmdsize:         24
+    entryoff:        4016
+    stacksize:       0
+  - cmd:             LC_LOAD_DYLIB
+    cmdsize:         56
+    dylib:           
+      name:            24
+      timestamp:       2
+      current_version: 82102276
+      compatibility_version: 65536
+    PayloadString:   /usr/lib/libSystem.B.dylib
+    ZeroPadBytes:    6
+  - cmd:             LC_FUNCTION_STARTS
+    cmdsize:         16
+    dataoff:         4144
+    datasize:        8
+  - cmd:             LC_DATA_IN_CODE
+    cmdsize:         16
+    dataoff:         4152
+    datasize:        0
+  - cmd:             LC_BUILD_VERSION
+    cmdsize:         32
+    platform:        6
+    minos:           786432
+    sdk:             786432
+    ntools:          1
+    Tools:
+      - tool:            3
+        version:         26738944
+LinkEditData:    
+  ExportTrie:      
+    TerminalSize:    0
+    NodeOffset:      0
+    Name:            ''
+    Flags:           0x0000000000000000
+    Address:         0x0000000000000000
+    Other:           0x0000000000000000
+    ImportName:      ''
+    Children:        
+      - TerminalSize:    0
+        NodeOffset:      5
+        Name:            _
+        Flags:           0x0000000000000000
+        Address:         0x0000000000000000
+        Other:           0x0000000000000000
+        ImportName:      ''
+        Children:        
+          - TerminalSize:    2
+            NodeOffset:      33
+            Name:            _mh_execute_header
+            Flags:           0x0000000000000000
+            Address:         0x0000000000000000
+            Other:           0x0000000000000000
+            ImportName:      ''
+          - TerminalSize:    3
+            NodeOffset:      37
+            Name:            main
+            Flags:           0x0000000000000000
+            Address:         0x0000000000000FB0
+            Other:           0x0000000000000000
+            ImportName:      ''
+  NameList:        
+    - n_strx:          2
+      n_type:          0x0F
+      n_sect:          1
+      n_desc:          16
+      n_value:         4294967296
+    - n_strx:          22
+      n_type:          0x0F
+      n_sect:          1
+      n_desc:          0
+      n_value:         4294971312
+    - n_strx:          28
+      n_type:          0x01
+      n_sect:          0
+      n_desc:          256
+      n_value:         0
+  StringTable:     
+    - ' '
+    - __mh_execute_header
+    - _main
+    - dyld_stub_binder
+    - ''
+    - ''
+    - ''
+...

Added: lldb/trunk/lit/ObjectFile/MachO/lc_build_version_notools.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/MachO/lc_build_version_notools.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/MachO/lc_build_version_notools.yaml (added)
+++ lldb/trunk/lit/ObjectFile/MachO/lc_build_version_notools.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,206 @@
+# RUN: yaml2obj %s > %t.out
+# RUN: lldb-test symbols %t.out | FileCheck %s
+# Test that the deployment target is parsed from the load commands.
+# CHECK: x86_64-apple-macosx10.14.0
+--- !mach-o
+FileHeader:      
+  magic:           0xFEEDFACF
+  cputype:         0x01000007
+  cpusubtype:      0x80000003
+  filetype:        0x00000002
+  ncmds:           14
+  sizeofcmds:      738
+  flags:           0x00200085
+  reserved:        0x00000000
+LoadCommands:    
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         72
+    segname:         __PAGEZERO
+    vmaddr:          0
+    vmsize:          4294967296
+    fileoff:         0
+    filesize:        0
+    maxprot:         0
+    initprot:        0
+    nsects:          0
+    flags:           0
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         232
+    segname:         __TEXT
+    vmaddr:          4294967296
+    vmsize:          4096
+    fileoff:         0
+    filesize:        4096
+    maxprot:         7
+    initprot:        5
+    nsects:          2
+    flags:           0
+    Sections:        
+      - sectname:        __text
+        segname:         __TEXT
+        addr:            0x0000000100000FB0
+        size:            8
+        offset:          0x00000FB0
+        align:           4
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x80000400
+        reserved1:       0x00000000
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+      - sectname:        __unwind_info
+        segname:         __TEXT
+        addr:            0x0000000100000FB8
+        size:            72
+        offset:          0x00000FB8
+        align:           2
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x00000000
+        reserved1:       0x00000000
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         72
+    segname:         __LINKEDIT
+    vmaddr:          4294971392
+    vmsize:          4096
+    fileoff:         4096
+    filesize:        152
+    maxprot:         7
+    initprot:        1
+    nsects:          0
+    flags:           0
+  - cmd:             LC_DYLD_INFO_ONLY
+    cmdsize:         48
+    rebase_off:      0
+    rebase_size:     0
+    bind_off:        0
+    bind_size:       0
+    weak_bind_off:   0
+    weak_bind_size:  0
+    lazy_bind_off:   0
+    lazy_bind_size:  0
+    export_off:      4096
+    export_size:     48
+  - cmd:             LC_SYMTAB
+    cmdsize:         24
+    symoff:          4152
+    nsyms:           3
+    stroff:          4200
+    strsize:         48
+  - cmd:             LC_DYSYMTAB
+    cmdsize:         80
+    ilocalsym:       0
+    nlocalsym:       0
+    iextdefsym:      0
+    nextdefsym:      2
+    iundefsym:       2
+    nundefsym:       1
+    tocoff:          0
+    ntoc:            0
+    modtaboff:       0
+    nmodtab:         0
+    extrefsymoff:    0
+    nextrefsyms:     0
+    indirectsymoff:  0
+    nindirectsyms:   0
+    extreloff:       0
+    nextrel:         0
+    locreloff:       0
+    nlocrel:         0
+  - cmd:             LC_LOAD_DYLINKER
+    cmdsize:         32
+    name:            12
+    PayloadString:   /usr/lib/dyld
+    ZeroPadBytes:    7
+  - cmd:             LC_UUID
+    cmdsize:         24
+    uuid:            8F41E140-23B9-3720-AC28-4E7AF9D159BA
+  - cmd:             LC_BUILD_VERSION
+    cmdsize:         24
+    platform:        1
+    minos:           658944
+    sdk:             658944
+    ntools:          0
+  - cmd:             LC_SOURCE_VERSION
+    cmdsize:         16
+    version:         0
+  - cmd:             LC_MAIN
+    cmdsize:         24
+    entryoff:        4016
+    stacksize:       0
+  - cmd:             LC_LOAD_DYLIB
+    cmdsize:         56
+    dylib:           
+      name:            24
+      timestamp:       2
+      current_version: 82102276
+      compatibility_version: 65536
+    PayloadString:   /usr/lib/libSystem.B.dylib
+    ZeroPadBytes:    6
+  - cmd:             LC_FUNCTION_STARTS
+    cmdsize:         16
+    dataoff:         4144
+    datasize:        8
+  - cmd:             LC_DATA_IN_CODE
+    cmdsize:         16
+    dataoff:         4152
+    datasize:        0
+LinkEditData:    
+  ExportTrie:      
+    TerminalSize:    0
+    NodeOffset:      0
+    Name:            ''
+    Flags:           0x0000000000000000
+    Address:         0x0000000000000000
+    Other:           0x0000000000000000
+    ImportName:      ''
+    Children:        
+      - TerminalSize:    0
+        NodeOffset:      5
+        Name:            _
+        Flags:           0x0000000000000000
+        Address:         0x0000000000000000
+        Other:           0x0000000000000000
+        ImportName:      ''
+        Children:        
+          - TerminalSize:    2
+            NodeOffset:      33
+            Name:            _mh_execute_header
+            Flags:           0x0000000000000000
+            Address:         0x0000000000000000
+            Other:           0x0000000000000000
+            ImportName:      ''
+          - TerminalSize:    3
+            NodeOffset:      37
+            Name:            main
+            Flags:           0x0000000000000000
+            Address:         0x0000000000000FB0
+            Other:           0x0000000000000000
+            ImportName:      ''
+  NameList:        
+    - n_strx:          2
+      n_type:          0x0F
+      n_sect:          1
+      n_desc:          16
+      n_value:         4294967296
+    - n_strx:          22
+      n_type:          0x0F
+      n_sect:          1
+      n_desc:          0
+      n_value:         4294971312
+    - n_strx:          28
+      n_type:          0x01
+      n_sect:          0
+      n_desc:          256
+      n_value:         0
+  StringTable:     
+    - ' '
+    - __mh_execute_header
+    - _main
+    - dyld_stub_binder
+    - ''
+    - ''
+    - ''
+...

Added: lldb/trunk/lit/ObjectFile/MachO/lc_version_min.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/MachO/lc_version_min.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/MachO/lc_version_min.yaml (added)
+++ lldb/trunk/lit/ObjectFile/MachO/lc_version_min.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,205 @@
+# RUN: yaml2obj %s > %t.out
+# RUN: lldb-test object-file %t.out | FileCheck %s
+
+# Test that the deployment target is parsed from the load commands.
+# CHECK: Architecture: x86_64-apple-macosx10.9.0
+--- !mach-o
+FileHeader:      
+  magic:           0xFEEDFACF
+  cputype:         0x01000007
+  cpusubtype:      0x80000003
+  filetype:        0x00000002
+  ncmds:           14
+  sizeofcmds:      728
+  flags:           0x00200085
+  reserved:        0x00000000
+LoadCommands:    
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         72
+    segname:         __PAGEZERO
+    vmaddr:          0
+    vmsize:          4294967296
+    fileoff:         0
+    filesize:        0
+    maxprot:         0
+    initprot:        0
+    nsects:          0
+    flags:           0
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         232
+    segname:         __TEXT
+    vmaddr:          4294967296
+    vmsize:          4096
+    fileoff:         0
+    filesize:        4096
+    maxprot:         7
+    initprot:        5
+    nsects:          2
+    flags:           0
+    Sections:        
+      - sectname:        __text
+        segname:         __TEXT
+        addr:            0x0000000100000FB0
+        size:            8
+        offset:          0x00000FB0
+        align:           0
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x80000400
+        reserved1:       0x00000000
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+      - sectname:        __unwind_info
+        segname:         __TEXT
+        addr:            0x0000000100000FB8
+        size:            72
+        offset:          0x00000FB8
+        align:           2
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x00000000
+        reserved1:       0x00000000
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         72
+    segname:         __LINKEDIT
+    vmaddr:          4294971392
+    vmsize:          4096
+    fileoff:         4096
+    filesize:        152
+    maxprot:         7
+    initprot:        1
+    nsects:          0
+    flags:           0
+  - cmd:             LC_DYLD_INFO_ONLY
+    cmdsize:         48
+    rebase_off:      0
+    rebase_size:     0
+    bind_off:        0
+    bind_size:       0
+    weak_bind_off:   0
+    weak_bind_size:  0
+    lazy_bind_off:   0
+    lazy_bind_size:  0
+    export_off:      4096
+    export_size:     48
+  - cmd:             LC_SYMTAB
+    cmdsize:         24
+    symoff:          4152
+    nsyms:           3
+    stroff:          4200
+    strsize:         48
+  - cmd:             LC_DYSYMTAB
+    cmdsize:         80
+    ilocalsym:       0
+    nlocalsym:       0
+    iextdefsym:      0
+    nextdefsym:      2
+    iundefsym:       2
+    nundefsym:       1
+    tocoff:          0
+    ntoc:            0
+    modtaboff:       0
+    nmodtab:         0
+    extrefsymoff:    0
+    nextrefsyms:     0
+    indirectsymoff:  0
+    nindirectsyms:   0
+    extreloff:       0
+    nextrel:         0
+    locreloff:       0
+    nlocrel:         0
+  - cmd:             LC_LOAD_DYLINKER
+    cmdsize:         32
+    name:            12
+    PayloadString:   /usr/lib/dyld
+    ZeroPadBytes:    7
+  - cmd:             LC_UUID
+    cmdsize:         24
+    uuid:            E75E737C-4FB3-312D-9B17-10987F48F957
+  - cmd:             LC_VERSION_MIN_MACOSX
+    cmdsize:         16
+    version:         657664
+    sdk:             658944
+  - cmd:             LC_SOURCE_VERSION
+    cmdsize:         16
+    version:         0
+  - cmd:             LC_MAIN
+    cmdsize:         24
+    entryoff:        4016
+    stacksize:       0
+  - cmd:             LC_LOAD_DYLIB
+    cmdsize:         56
+    dylib:           
+      name:            24
+      timestamp:       2
+      current_version: 82102276
+      compatibility_version: 65536
+    PayloadString:   /usr/lib/libSystem.B.dylib
+    ZeroPadBytes:    6
+  - cmd:             LC_FUNCTION_STARTS
+    cmdsize:         16
+    dataoff:         4144
+    datasize:        8
+  - cmd:             LC_DATA_IN_CODE
+    cmdsize:         16
+    dataoff:         4152
+    datasize:        0
+LinkEditData:    
+  ExportTrie:      
+    TerminalSize:    0
+    NodeOffset:      0
+    Name:            ''
+    Flags:           0x0000000000000000
+    Address:         0x0000000000000000
+    Other:           0x0000000000000000
+    ImportName:      ''
+    Children:        
+      - TerminalSize:    0
+        NodeOffset:      5
+        Name:            _
+        Flags:           0x0000000000000000
+        Address:         0x0000000000000000
+        Other:           0x0000000000000000
+        ImportName:      ''
+        Children:        
+          - TerminalSize:    2
+            NodeOffset:      33
+            Name:            _mh_execute_header
+            Flags:           0x0000000000000000
+            Address:         0x0000000000000000
+            Other:           0x0000000000000000
+            ImportName:      ''
+          - TerminalSize:    3
+            NodeOffset:      37
+            Name:            main
+            Flags:           0x0000000000000000
+            Address:         0x0000000000000FB0
+            Other:           0x0000000000000000
+            ImportName:      ''
+  NameList:        
+    - n_strx:          2
+      n_type:          0x0F
+      n_sect:          1
+      n_desc:          16
+      n_value:         4294967296
+    - n_strx:          22
+      n_type:          0x0F
+      n_sect:          1
+      n_desc:          0
+      n_value:         4294971312
+    - n_strx:          28
+      n_type:          0x01
+      n_sect:          0
+      n_desc:          256
+      n_value:         0
+  StringTable:     
+    - ' '
+    - __mh_execute_header
+    - _main
+    - dyld_stub_binder
+    - ''
+    - ''
+    - ''
+...

Added: lldb/trunk/lit/ObjectFile/MachO/subsections.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/MachO/subsections.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/MachO/subsections.yaml (added)
+++ lldb/trunk/lit/ObjectFile/MachO/subsections.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,126 @@
+# RUN: yaml2obj %s > %t
+# RUN: lldb-test object-file %t | FileCheck %s
+
+#CHECK:     Showing 2 sections
+#CHECK-NEXT:  Index: 0
+#CHECK-NEXT:  ID: 0x100
+#CHECK-NEXT:  Name: __PAGEZERO
+#CHECK-NEXT:  Type: container
+#CHECK-NEXT:  Permissions: ---
+#CHECK-NEXT:  Thread specific: no
+#CHECK-NEXT:  VM address: 0x0
+#CHECK-NEXT:  VM size: 4294967296
+#CHECK-NEXT:  File size: 0
+#CHECK-NEXT:  There are no subsections
+#CHECK-EMPTY:
+#CHECK-NEXT:  Index: 1
+#CHECK-NEXT:  ID: 0x200
+#CHECK-NEXT:  Name: __TEXT
+#CHECK-NEXT:  Type: container
+#CHECK-NEXT:  Permissions: r-x
+#CHECK-NEXT:  Thread specific: no
+#CHECK-NEXT:  VM address: 0x100000000
+#CHECK-NEXT:  VM size: 4096
+#CHECK-NEXT:  File size: 4096
+#CHECK-NEXT:  Showing 3 subsections
+#CHECK-NEXT:    Index: 0
+#CHECK-NEXT:    ID: 0x1
+#CHECK-NEXT:    Name: __text
+#CHECK-NEXT:    Type: code
+#CHECK-NEXT:    Permissions: r-x
+#CHECK-NEXT:    Thread specific: no
+#CHECK-NEXT:    VM address: 0x100000f30
+#CHECK-NEXT:    VM size: 22
+#CHECK-NEXT:    File size: 22
+#CHECK-EMPTY:
+#CHECK-NEXT:    Index: 1
+#CHECK-NEXT:    ID: 0x2
+#CHECK-NEXT:    Name: __unwind_info
+#CHECK-NEXT:    Type: compact-unwind
+#CHECK-NEXT:    Permissions: r-x
+#CHECK-NEXT:    Thread specific: no
+#CHECK-NEXT:    VM address: 0x100000f48
+#CHECK-NEXT:    VM size: 76
+#CHECK-NEXT:    File size: 76
+#CHECK-EMPTY:
+#CHECK-NEXT:    Index: 2
+#CHECK-NEXT:    ID: 0x3
+#CHECK-NEXT:    Name: __eh_frame
+#CHECK-NEXT:    Type: eh-frame
+#CHECK-NEXT:    Permissions: r-x
+#CHECK-NEXT:    Thread specific: no
+#CHECK-NEXT:    VM address: 0x100000f98
+#CHECK-NEXT:    VM size: 104
+#CHECK-NEXT:    File size: 104
+
+--- !mach-o
+FileHeader:      
+  magic:           0xFEEDFACF
+  cputype:         0x01000007
+  cpusubtype:      0x00000003
+  filetype:        0x00000002
+  ncmds:           12
+  sizeofcmds:      728
+  flags:           0x00000085
+  reserved:        0x00000000
+LoadCommands:    
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         72
+    segname:         __PAGEZERO
+    vmaddr:          0
+    vmsize:          4294967296
+    fileoff:         0
+    filesize:        0
+    maxprot:         0
+    initprot:        0
+    nsects:          0
+    flags:           0
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         312
+    segname:         __TEXT
+    vmaddr:          4294967296
+    vmsize:          4096
+    fileoff:         0
+    filesize:        4096
+    maxprot:         7
+    initprot:        5
+    nsects:          3
+    flags:           0
+    Sections:        
+      - sectname:        __text
+        segname:         __TEXT
+        addr:            0x0000000100000F30
+        size:            22
+        offset:          0x00000F30
+        align:           4
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x80000400
+        reserved1:       0x00000000
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+      - sectname:        __unwind_info
+        segname:         __TEXT
+        addr:            0x0000000100000F48
+        size:            76
+        offset:          0x00000F48
+        align:           2
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x00000000
+        reserved1:       0x00000000
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+      - sectname:        __eh_frame
+        segname:         __TEXT
+        addr:            0x0000000100000F98
+        size:            104
+        offset:          0x00000F98
+        align:           3
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x0000000B
+        reserved1:       0x00000000
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+...

Added: lldb/trunk/lit/ObjectFile/MachO/symtab.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/MachO/symtab.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/MachO/symtab.yaml (added)
+++ lldb/trunk/lit/ObjectFile/MachO/symtab.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,699 @@
+# Tests that the symbol table properly merges the two entries for
+# global_constant, even when the debug symbol comes last.
+# RUN: mkdir -p %t
+# RUN: yaml2obj %s -o %t/a.out
+# RUN: %lldb %t/a.out -o "target modules dump symtab a.out" | FileCheck %s
+# CHECK: global_constant
+# CHECK-NOT: global_constant
+--- !mach-o
+FileHeader:
+  magic:           0xFEEDFACF
+  cputype:         0x01000007
+  cpusubtype:      0x80000003
+  filetype:        0x00000002
+  ncmds:           20
+  sizeofcmds:      1992
+  flags:           0x00200085
+  reserved:        0x00000000
+LoadCommands:
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         72
+    segname:         __PAGEZERO
+    vmaddr:          0
+    vmsize:          4294967296
+    fileoff:         0
+    filesize:        0
+    maxprot:         0
+    initprot:        0
+    nsects:          0
+    flags:           0
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         552
+    segname:         __TEXT
+    vmaddr:          4294967296
+    vmsize:          4096
+    fileoff:         0
+    filesize:        4096
+    maxprot:         5
+    initprot:        5
+    nsects:          6
+    flags:           0
+    Sections:
+      - sectname:        __text
+        segname:         __TEXT
+        addr:            0x0000000100000DE0
+        size:            383
+        offset:          0x00000DE0
+        align:           4
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x80000400
+        reserved1:       0x00000000
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+        content:         554889E54883EC30488D054112000031C948C7052C1200005704000048C70529120000AE080000488B151A120000897DE44889C7488D45E8488975D84889C6B821000000488955D04889C2E830010000488B7DD0488D35F5110000E840000000488D7DE8E81D01000031C04883C4305DC3662E0F1F8400000000000F1F440000554889E548C745F000000000488975F848897DF05DC3662E0F1F840000000000554889E54883EC3048C745F80000000048C745F00000000048C745E80000000048897DF8488975F0488B06488945E848897DD8488945E0488D3D62110000E81D000000488D7DD84889C6E891FFFFFF4883C4305DC3662E0F1F840000000000904883EC284889F8488B0F4883F9000F9CC2F6C2014889CE48897C2420488944241848894C24104889742408750A488B4424084883C428C3488B44241048C1F82048F7D8488B4C241089CA4863F2488B7C24204801F731D289D6488934244889C6488B1424488B0C24E81F0000004889C1488B54241848890248894C2408EBAE
+      - sectname:        __stubs
+        segname:         __TEXT
+        addr:            0x0000000100000F60
+        size:            18
+        offset:          0x00000F60
+        align:           1
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x80000408
+        reserved1:       0x00000000
+        reserved2:       0x00000006
+        reserved3:       0x00000000
+        content:         FF259A100000FF259C100000FF259E100000
+      - sectname:        __stub_helper
+        segname:         __TEXT
+        addr:            0x0000000100000F74
+        size:            46
+        offset:          0x00000F74
+        align:           2
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x80000400
+        reserved1:       0x00000000
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+        content:         4C8D1D9D1000004153FF257D000000906800000000E9E6FFFFFF6819000000E9DCFFFFFF6830000000E9D2FFFFFF
+      - sectname:        __swift5_typeref
+        segname:         __TEXT
+        addr:            0x0000000100000FA2
+        size:            7
+        offset:          0x00000FA2
+        align:           1
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x00000000
+        reserved1:       0x00000000
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+        content:         53695F53697400
+      - sectname:        __const
+        segname:         __TEXT
+        addr:            0x0000000100000FAA
+        size:            2
+        offset:          0x00000FAA
+        align:           1
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x00000000
+        reserved1:       0x00000000
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+        content:         '0300'
+      - sectname:        __unwind_info
+        segname:         __TEXT
+        addr:            0x0000000100000FAC
+        size:            80
+        offset:          0x00000FAC
+        align:           2
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x00000000
+        reserved1:       0x00000000
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+        content:         010000001C000000000000001C000000000000001C00000002000000E00D00003400000034000000600F00000000000034000000030000000C0002001400020000000001000100000000060200000001
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         232
+    segname:         __DATA_CONST
+    vmaddr:          4294971392
+    vmsize:          4096
+    fileoff:         4096
+    filesize:        4096
+    maxprot:         3
+    initprot:        3
+    nsects:          2
+    flags:           16
+    Sections:
+      - sectname:        __got
+        segname:         __DATA_CONST
+        addr:            0x0000000100001000
+        size:            8
+        offset:          0x00001000
+        align:           3
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x00000006
+        reserved1:       0x00000003
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+        content:         '0000000000000000'
+      - sectname:        __objc_imageinfo
+        segname:         __DATA_CONST
+        addr:            0x0000000100001008
+        size:            8
+        offset:          0x00001008
+        align:           2
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x00000000
+        reserved1:       0x00000000
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+        content:         '0000000040070105'
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         312
+    segname:         __DATA
+    vmaddr:          4294975488
+    vmsize:          4096
+    fileoff:         8192
+    filesize:        4096
+    maxprot:         3
+    initprot:        3
+    nsects:          3
+    flags:           0
+    Sections:
+      - sectname:        __la_symbol_ptr
+        segname:         __DATA
+        addr:            0x0000000100002000
+        size:            24
+        offset:          0x00002000
+        align:           3
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x00000007
+        reserved1:       0x00000004
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+        content:         840F0000010000008E0F000001000000980F000001000000
+      - sectname:        __data
+        segname:         __DATA
+        addr:            0x0000000100002018
+        size:            16
+        offset:          0x00002018
+        align:           3
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x00000000
+        reserved1:       0x00000000
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+        content:         000000000000000082EFFFFFFAFFFFFF
+      - sectname:        __common
+        segname:         __DATA
+        addr:            0x0000000100002028
+        size:            16
+        offset:          0x00000000
+        align:           3
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x00000001
+        reserved1:       0x00000000
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         72
+    segname:         __LINKEDIT
+    vmaddr:          4294979584
+    vmsize:          4096
+    fileoff:         12288
+    filesize:        1924
+    maxprot:         1
+    initprot:        1
+    nsects:          0
+    flags:           0
+  - cmd:             LC_DYLD_INFO_ONLY
+    cmdsize:         48
+    rebase_off:      12288
+    rebase_size:     8
+    bind_off:        12296
+    bind_size:       24
+    weak_bind_off:   0
+    weak_bind_size:  0
+    lazy_bind_off:   12320
+    lazy_bind_size:  96
+    export_off:      12416
+    export_size:     48
+  - cmd:             LC_SYMTAB
+    cmdsize:         24
+    symoff:          12472
+    nsyms:           41
+    stroff:          13156
+    strsize:         1056
+  - cmd:             LC_DYSYMTAB
+    cmdsize:         80
+    ilocalsym:       0
+    nlocalsym:       35
+    iextdefsym:      35
+    nextdefsym:      2
+    iundefsym:       37
+    nundefsym:       4
+    tocoff:          0
+    ntoc:            0
+    modtaboff:       0
+    nmodtab:         0
+    extrefsymoff:    0
+    nextrefsyms:     0
+    indirectsymoff:  13128
+    nindirectsyms:   7
+    extreloff:       0
+    nextrel:         0
+    locreloff:       0
+    nlocrel:         0
+  - cmd:             LC_LOAD_DYLINKER
+    cmdsize:         32
+    name:            12
+    PayloadString:   '/usr/lib/dyld'
+    ZeroPadBytes:    7
+  - cmd:             LC_UUID
+    cmdsize:         24
+    uuid:            A89F9D23-8190-3946-A70B-B8E833E68640
+  - cmd:             LC_BUILD_VERSION
+    cmdsize:         32
+    platform:        1
+    minos:           659200
+    sdk:             659200
+    ntools:          1
+    Tools:
+      - tool:            3
+        version:         36176384
+  - cmd:             LC_SOURCE_VERSION
+    cmdsize:         16
+    version:         0
+  - cmd:             LC_MAIN
+    cmdsize:         24
+    entryoff:        3552
+    stacksize:       0
+  - cmd:             LC_LOAD_DYLIB
+    cmdsize:         56
+    dylib:
+      name:            24
+      timestamp:       2
+      current_version: 14942208
+      compatibility_version: 65536
+    PayloadString:   '/usr/lib/libobjc.A.dylib'
+    ZeroPadBytes:    8
+  - cmd:             LC_LOAD_DYLIB
+    cmdsize:         56
+    dylib:
+      name:            24
+      timestamp:       2
+      current_version: 83951616
+      compatibility_version: 65536
+    PayloadString:   '/usr/lib/libSystem.B.dylib'
+    ZeroPadBytes:    6
+  - cmd:             LC_LOAD_DYLIB
+    cmdsize:         64
+    dylib:
+      name:            24
+      timestamp:       2
+      current_version: 0
+      compatibility_version: 65536
+    PayloadString:   '/usr/lib/swift/libswiftCore.dylib'
+    ZeroPadBytes:    7
+  - cmd:             LC_RPATH
+    cmdsize:         136
+    path:            12
+    PayloadString:   '/Volumes/Jonas/internal-stable/build/Ninja-RelWithDebInfoAssert+stdlib-RelWithDebInfo/swift-macosx-x86_64/lib/swift/macosx'
+    ZeroPadBytes:    2
+  - cmd:             LC_RPATH
+    cmdsize:         128
+    path:            12
+    PayloadString:   '/Applications/XcodeY.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/lib/swift'
+    ZeroPadBytes:    2
+  - cmd:             LC_FUNCTION_STARTS
+    cmdsize:         16
+    dataoff:         12464
+    datasize:        8
+  - cmd:             LC_DATA_IN_CODE
+    cmdsize:         16
+    dataoff:         12472
+    datasize:        0
+LinkEditData:
+  RebaseOpcodes:
+    - Opcode:          REBASE_OPCODE_SET_TYPE_IMM
+      Imm:             1
+    - Opcode:          REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+      Imm:             3
+      ExtraData:
+        - 0x0000000000000000
+    - Opcode:          REBASE_OPCODE_DO_REBASE_IMM_TIMES
+      Imm:             3
+    - Opcode:          REBASE_OPCODE_DONE
+      Imm:             0
+  BindOpcodes:
+    - Opcode:          BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+      Imm:             2
+      Symbol:          ''
+    - Opcode:          BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+      Imm:             0
+      Symbol:          dyld_stub_binder
+    - Opcode:          BIND_OPCODE_SET_TYPE_IMM
+      Imm:             1
+      Symbol:          ''
+    - Opcode:          BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+      Imm:             2
+      ULEBExtraData:
+        - 0x0000000000000000
+      Symbol:          ''
+    - Opcode:          BIND_OPCODE_DO_BIND
+      Imm:             0
+      Symbol:          ''
+    - Opcode:          BIND_OPCODE_DONE
+      Imm:             0
+      Symbol:          ''
+  LazyBindOpcodes:
+    - Opcode:          BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+      Imm:             3
+      ULEBExtraData:
+        - 0x0000000000000000
+      Symbol:          ''
+    - Opcode:          BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+      Imm:             3
+      Symbol:          ''
+    - Opcode:          BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+      Imm:             0
+      Symbol:          _swift_beginAccess
+    - Opcode:          BIND_OPCODE_DO_BIND
+      Imm:             0
+      Symbol:          ''
+    - Opcode:          BIND_OPCODE_DONE
+      Imm:             0
+      Symbol:          ''
+    - Opcode:          BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+      Imm:             3
+      ULEBExtraData:
+        - 0x0000000000000008
+      Symbol:          ''
+    - Opcode:          BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+      Imm:             3
+      Symbol:          ''
+    - Opcode:          BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+      Imm:             0
+      Symbol:          _swift_endAccess
+    - Opcode:          BIND_OPCODE_DO_BIND
+      Imm:             0
+      Symbol:          ''
+    - Opcode:          BIND_OPCODE_DONE
+      Imm:             0
+      Symbol:          ''
+    - Opcode:          BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB
+      Imm:             3
+      ULEBExtraData:
+        - 0x0000000000000010
+      Symbol:          ''
+    - Opcode:          BIND_OPCODE_SET_DYLIB_ORDINAL_IMM
+      Imm:             3
+      Symbol:          ''
+    - Opcode:          BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM
+      Imm:             0
+      Symbol:          _swift_getTypeByMangledNameInContext
+    - Opcode:          BIND_OPCODE_DO_BIND
+      Imm:             0
+      Symbol:          ''
+    - Opcode:          BIND_OPCODE_DONE
+      Imm:             0
+      Symbol:          ''
+    - Opcode:          BIND_OPCODE_DONE
+      Imm:             0
+      Symbol:          ''
+    - Opcode:          BIND_OPCODE_DONE
+      Imm:             0
+      Symbol:          ''
+    - Opcode:          BIND_OPCODE_DONE
+      Imm:             0
+      Symbol:          ''
+    - Opcode:          BIND_OPCODE_DONE
+      Imm:             0
+      Symbol:          ''
+    - Opcode:          BIND_OPCODE_DONE
+      Imm:             0
+      Symbol:          ''
+  ExportTrie:
+    TerminalSize:    0
+    NodeOffset:      0
+    Name:            ''
+    Flags:           0x0000000000000000
+    Address:         0x0000000000000000
+    Other:           0x0000000000000000
+    ImportName:      ''
+    Children:
+      - TerminalSize:    0
+        NodeOffset:      5
+        Name:            _
+        Flags:           0x0000000000000000
+        Address:         0x0000000000000000
+        Other:           0x0000000000000000
+        ImportName:      ''
+        Children:
+          - TerminalSize:    2
+            NodeOffset:      33
+            Name:            _mh_execute_header
+            Flags:           0x0000000000000000
+            Address:         0x0000000000000000
+            Other:           0x0000000000000000
+            ImportName:      ''
+          - TerminalSize:    3
+            NodeOffset:      37
+            Name:            main
+            Flags:           0x0000000000000000
+            Address:         0x0000000000000DE0
+            Other:           0x0000000000000000
+            ImportName:      ''
+  NameList:
+    - n_strx:          118
+      n_type:          0x1E
+      n_sect:          1
+      n_desc:          0
+      n_value:         4294970976
+    - n_strx:          133
+      n_type:          0x1E
+      n_sect:          1
+      n_desc:          0
+      n_value:         4294971008
+    - n_strx:          151
+      n_type:          0x1E
+      n_sect:          1
+      n_desc:          128
+      n_value:         4294971104
+    - n_strx:          199
+      n_type:          0x1E
+      n_sect:          4
+      n_desc:          128
+      n_value:         4294971298
+    - n_strx:          216
+      n_type:          0x1E
+      n_sect:          5
+      n_desc:          128
+      n_value:         4294971306
+    - n_strx:          244
+      n_type:          0x0E
+      n_sect:          10
+      n_desc:          0
+      n_value:         4294975512
+    - n_strx:          259
+      n_type:          0x1E
+      n_sect:          10
+      n_desc:          128
+      n_value:         4294975520
+    - n_strx:          271
+      n_type:          0x1E
+      n_sect:          11
+      n_desc:          0
+      n_value:         4294975528
+    - n_strx:          298
+      n_type:          0x1E
+      n_sect:          11
+      n_desc:          0
+      n_value:         4294975536
+    - n_strx:          325
+      n_type:          0x32
+      n_sect:          0
+      n_desc:          0
+      n_value:         1570141141
+    - n_strx:          540
+      n_type:          0x64
+      n_sect:          0
+      n_desc:          0
+      n_value:         0
+    - n_strx:          633
+      n_type:          0x64
+      n_sect:          0
+      n_desc:          0
+      n_value:         0
+    - n_strx:          644
+      n_type:          0x66
+      n_sect:          3
+      n_desc:          1
+      n_value:         1570141203
+    - n_strx:          1
+      n_type:          0x2E
+      n_sect:          1
+      n_desc:          0
+      n_value:         4294970848
+    - n_strx:          852
+      n_type:          0x24
+      n_sect:          1
+      n_desc:          0
+      n_value:         4294970848
+    - n_strx:          1
+      n_type:          0x24
+      n_sect:          0
+      n_desc:          0
+      n_value:         128
+    - n_strx:          1
+      n_type:          0x4E
+      n_sect:          1
+      n_desc:          0
+      n_value:         128
+    - n_strx:          1
+      n_type:          0x2E
+      n_sect:          1
+      n_desc:          0
+      n_value:         4294970976
+    - n_strx:          858
+      n_type:          0x24
+      n_sect:          1
+      n_desc:          0
+      n_value:         4294970976
+    - n_strx:          1
+      n_type:          0x24
+      n_sect:          0
+      n_desc:          0
+      n_value:         32
+    - n_strx:          1
+      n_type:          0x4E
+      n_sect:          1
+      n_desc:          0
+      n_value:         32
+    - n_strx:          1
+      n_type:          0x2E
+      n_sect:          1
+      n_desc:          0
+      n_value:         4294971008
+    - n_strx:          873
+      n_type:          0x24
+      n_sect:          1
+      n_desc:          0
+      n_value:         4294971008
+    - n_strx:          1
+      n_type:          0x24
+      n_sect:          0
+      n_desc:          0
+      n_value:         96
+    - n_strx:          1
+      n_type:          0x4E
+      n_sect:          1
+      n_desc:          0
+      n_value:         96
+    - n_strx:          1
+      n_type:          0x2E
+      n_sect:          1
+      n_desc:          0
+      n_value:         4294971104
+    - n_strx:          891
+      n_type:          0x24
+      n_sect:          1
+      n_desc:          0
+      n_value:         4294971104
+    - n_strx:          1
+      n_type:          0x24
+      n_sect:          0
+      n_desc:          0
+      n_value:         127
+    - n_strx:          1
+      n_type:          0x4E
+      n_sect:          1
+      n_desc:          0
+      n_value:         127
+    - n_strx:          939
+      n_type:          0x20
+      n_sect:          0
+      n_desc:          0
+      n_value:         0
+    - n_strx:          956
+      n_type:          0x20
+      n_sect:          0
+      n_desc:          0
+      n_value:         0
+    - n_strx:          984
+      n_type:          0x20
+      n_sect:          0
+      n_desc:          0
+      n_value:         0
+    - n_strx:          996
+      n_type:          0x20
+      n_sect:          0
+      n_desc:          0
+      n_value:         0
+    - n_strx:          1023
+      n_type:          0x20
+      n_sect:          0
+      n_desc:          0
+      n_value:         0
+    - n_strx:          1
+      n_type:          0x64
+      n_sect:          1
+      n_desc:          0
+      n_value:         0
+    - n_strx:          2
+      n_type:          0x0F
+      n_sect:          1
+      n_desc:          16
+      n_value:         4294967296
+    - n_strx:          22
+      n_type:          0x0F
+      n_sect:          1
+      n_desc:          0
+      n_value:         4294970848
+    - n_strx:          28
+      n_type:          0x01
+      n_sect:          0
+      n_desc:          768
+      n_value:         0
+    - n_strx:          47
+      n_type:          0x01
+      n_sect:          0
+      n_desc:          768
+      n_value:         0
+    - n_strx:          64
+      n_type:          0x01
+      n_sect:          0
+      n_desc:          768
+      n_value:         0
+    - n_strx:          101
+      n_type:          0x01
+      n_sect:          0
+      n_desc:          512
+      n_value:         0
+  StringTable:
+    - ' '
+    - __mh_execute_header
+    - _main
+    - _swift_beginAccess
+    - _swift_endAccess
+    - _swift_getTypeByMangledNameInContext
+    - dyld_stub_binder
+    - '_$s1a3useyyxlF'
+    - '_$s1a1fyySi_SiztF'
+    - ___swift_instantiateConcreteTypeFromMangledName
+    - _symbolic Si_Sit
+    - ___swift_reflection_version
+    - __dyld_private
+    - '_$sSi_SitMD'
+    - '_$s1a15global_constantSivp'
+    - '_$s1a15global_variableSivp'
+    - '/Volumes/Jonas/internal-stable/build/Ninja-RelWithDebInfoAssert+stdlib-RelWithDebInfo/lldb-macosx-x86_64/lldb-test-build.noindex/lang/swift/variables/let/TestSwiftLetConstants.test_let_constants_dwarf/a.swiftmodule'
+    - '/Volumes/Jonas/internal-stable/lldb/packages/Python/lldbsuite/test/lang/swift/variables/let/'
+    - main.swift
+    - '/Volumes/Jonas/internal-stable/build/Ninja-RelWithDebInfoAssert+stdlib-RelWithDebInfo/lldb-macosx-x86_64/lldb-test-build.noindex/lang/swift/variables/let/TestSwiftLetConstants.test_let_constants_dwarf/main.o'
+    - _main
+    - '_$s1a3useyyxlF'
+    - '_$s1a1fyySi_SiztF'
+    - ___swift_instantiateConcreteTypeFromMangledName
+    - _symbolic Si_Sit
+    - ___swift_reflection_version
+    - '_$sSi_SitMD'
+    - '_$s1a15global_constantSivp'
+    - '_$s1a15global_variableSivp'
+    - ''
+    - ''
+    - ''
+    - ''
+    - ''
+    - ''
+...

Added: lldb/trunk/lit/ObjectFile/PECOFF/basic-info-arm.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/PECOFF/basic-info-arm.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/PECOFF/basic-info-arm.yaml (added)
+++ lldb/trunk/lit/ObjectFile/PECOFF/basic-info-arm.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,86 @@
+# RUN: yaml2obj %s > %t
+# RUN: lldb-test object-file %t | FileCheck %s
+
+# CHECK: Plugin name: pe-coff
+# CHECK: Architecture: armv7-pc-windows-msvc
+# CHECK: UUID: 
+# CHECK: Executable: true
+# CHECK: Stripped: false
+# CHECK: Type: executable
+# CHECK: Strata: user
+# CHECK: Base VM address: 0x40000
+
+--- !COFF
+OptionalHeader:
+  AddressOfEntryPoint: 4097
+  ImageBase:       4194304
+  SectionAlignment: 4096
+  FileAlignment:   512
+  MajorOperatingSystemVersion: 6
+  MinorOperatingSystemVersion: 0
+  MajorImageVersion: 0
+  MinorImageVersion: 0
+  MajorSubsystemVersion: 6
+  MinorSubsystemVersion: 0
+  Subsystem:       IMAGE_SUBSYSTEM_WINDOWS_CUI
+  DLLCharacteristics: [ IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE, IMAGE_DLL_CHARACTERISTICS_NX_COMPAT, IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE ]
+  SizeOfStackReserve: 1048576
+  SizeOfStackCommit: 4096
+  SizeOfHeapReserve: 1048576
+  SizeOfHeapCommit: 4096
+  ExportTable:
+    RelativeVirtualAddress: 0
+    Size:            0
+  ImportTable:
+    RelativeVirtualAddress: 0
+    Size:            0
+  ResourceTable:
+    RelativeVirtualAddress: 0
+    Size:            0
+  ExceptionTable:
+    RelativeVirtualAddress: 0
+    Size:            0
+  CertificateTable:
+    RelativeVirtualAddress: 0
+    Size:            0
+  BaseRelocationTable:
+    RelativeVirtualAddress: 0
+    Size:            0
+  Debug:
+    RelativeVirtualAddress: 0
+    Size:            0
+  Architecture:
+    RelativeVirtualAddress: 0
+    Size:            0
+  GlobalPtr:
+    RelativeVirtualAddress: 0
+    Size:            0
+  TlsTable:
+    RelativeVirtualAddress: 0
+    Size:            0
+  LoadConfigTable:
+    RelativeVirtualAddress: 0
+    Size:            0
+  BoundImport:
+    RelativeVirtualAddress: 0
+    Size:            0
+  IAT:
+    RelativeVirtualAddress: 0
+    Size:            0
+  DelayImportDescriptor:
+    RelativeVirtualAddress: 0
+    Size:            0
+  ClrRuntimeHeader:
+    RelativeVirtualAddress: 0
+    Size:            0
+header:
+  Machine:         IMAGE_FILE_MACHINE_ARMNT
+  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_32BIT_MACHINE ]
+sections:
+  - Name:            .text
+    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
+    VirtualAddress:  4096
+    VirtualSize:     2
+    SectionData:     '7047'
+symbols:         []
+...

Added: lldb/trunk/lit/ObjectFile/PECOFF/basic-info-arm64.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/PECOFF/basic-info-arm64.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/PECOFF/basic-info-arm64.yaml (added)
+++ lldb/trunk/lit/ObjectFile/PECOFF/basic-info-arm64.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,86 @@
+# RUN: yaml2obj %s > %t
+# RUN: lldb-test object-file %t | FileCheck %s
+
+# CHECK: Plugin name: pe-coff
+# CHECK: Architecture: aarch64-unknown-windows-msvc
+# CHECK: UUID: 
+# CHECK: Executable: true
+# CHECK: Stripped: false
+# CHECK: Type: executable
+# CHECK: Strata: user
+# CHECK: Base VM address: 0x40000000
+
+--- !COFF
+OptionalHeader:
+  AddressOfEntryPoint: 4096
+  ImageBase:       1073741824
+  SectionAlignment: 4096
+  FileAlignment:   512
+  MajorOperatingSystemVersion: 6
+  MinorOperatingSystemVersion: 0
+  MajorImageVersion: 0
+  MinorImageVersion: 0
+  MajorSubsystemVersion: 6
+  MinorSubsystemVersion: 0
+  Subsystem:       IMAGE_SUBSYSTEM_WINDOWS_CUI
+  DLLCharacteristics: [ IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA, IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE, IMAGE_DLL_CHARACTERISTICS_NX_COMPAT, IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE ]
+  SizeOfStackReserve: 1048576
+  SizeOfStackCommit: 4096
+  SizeOfHeapReserve: 1048576
+  SizeOfHeapCommit: 4096
+  ExportTable:
+    RelativeVirtualAddress: 0
+    Size:            0
+  ImportTable:
+    RelativeVirtualAddress: 0
+    Size:            0
+  ResourceTable:
+    RelativeVirtualAddress: 0
+    Size:            0
+  ExceptionTable:
+    RelativeVirtualAddress: 0
+    Size:            0
+  CertificateTable:
+    RelativeVirtualAddress: 0
+    Size:            0
+  BaseRelocationTable:
+    RelativeVirtualAddress: 0
+    Size:            0
+  Debug:
+    RelativeVirtualAddress: 0
+    Size:            0
+  Architecture:
+    RelativeVirtualAddress: 0
+    Size:            0
+  GlobalPtr:
+    RelativeVirtualAddress: 0
+    Size:            0
+  TlsTable:
+    RelativeVirtualAddress: 0
+    Size:            0
+  LoadConfigTable:
+    RelativeVirtualAddress: 0
+    Size:            0
+  BoundImport:
+    RelativeVirtualAddress: 0
+    Size:            0
+  IAT:
+    RelativeVirtualAddress: 0
+    Size:            0
+  DelayImportDescriptor:
+    RelativeVirtualAddress: 0
+    Size:            0
+  ClrRuntimeHeader:
+    RelativeVirtualAddress: 0
+    Size:            0
+header:
+  Machine:         IMAGE_FILE_MACHINE_ARM64
+  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE ]
+sections:
+  - Name:            .text
+    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
+    VirtualAddress:  4096
+    VirtualSize:     4
+    SectionData:     C0035FD6
+symbols:         []
+...

Added: lldb/trunk/lit/ObjectFile/PECOFF/basic-info.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/PECOFF/basic-info.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/PECOFF/basic-info.yaml (added)
+++ lldb/trunk/lit/ObjectFile/PECOFF/basic-info.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,86 @@
+# RUN: yaml2obj %s > %t
+# RUN: lldb-test object-file %t | FileCheck %s
+
+# CHECK: Plugin name: pe-coff
+# CHECK: Architecture: x86_64-pc-windows-msvc
+# CHECK: UUID: 
+# CHECK: Executable: true
+# CHECK: Stripped: false
+# CHECK: Type: executable
+# CHECK: Strata: user
+# CHECK: Base VM address: 0x47000
+
+--- !COFF
+OptionalHeader:  
+  AddressOfEntryPoint: 4096
+  ImageBase:       290816
+  SectionAlignment: 4096
+  FileAlignment:   512
+  MajorOperatingSystemVersion: 6
+  MinorOperatingSystemVersion: 0
+  MajorImageVersion: 0
+  MinorImageVersion: 0
+  MajorSubsystemVersion: 6
+  MinorSubsystemVersion: 0
+  Subsystem:       IMAGE_SUBSYSTEM_WINDOWS_CUI
+  DLLCharacteristics: [ IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA, IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE, IMAGE_DLL_CHARACTERISTICS_NX_COMPAT, IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE ]
+  SizeOfStackReserve: 1048576
+  SizeOfStackCommit: 4096
+  SizeOfHeapReserve: 1048576
+  SizeOfHeapCommit: 4096
+  ExportTable:     
+    RelativeVirtualAddress: 0
+    Size:            0
+  ImportTable:     
+    RelativeVirtualAddress: 0
+    Size:            0
+  ResourceTable:   
+    RelativeVirtualAddress: 0
+    Size:            0
+  ExceptionTable:  
+    RelativeVirtualAddress: 0
+    Size:            0
+  CertificateTable: 
+    RelativeVirtualAddress: 0
+    Size:            0
+  BaseRelocationTable: 
+    RelativeVirtualAddress: 0
+    Size:            0
+  Debug:           
+    RelativeVirtualAddress: 0
+    Size:            0
+  Architecture:    
+    RelativeVirtualAddress: 0
+    Size:            0
+  GlobalPtr:       
+    RelativeVirtualAddress: 0
+    Size:            0
+  TlsTable:        
+    RelativeVirtualAddress: 0
+    Size:            0
+  LoadConfigTable: 
+    RelativeVirtualAddress: 0
+    Size:            0
+  BoundImport:     
+    RelativeVirtualAddress: 0
+    Size:            0
+  IAT:             
+    RelativeVirtualAddress: 0
+    Size:            0
+  DelayImportDescriptor: 
+    RelativeVirtualAddress: 0
+    Size:            0
+  ClrRuntimeHeader: 
+    RelativeVirtualAddress: 0
+    Size:            0
+header:          
+  Machine:         IMAGE_FILE_MACHINE_AMD64
+  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE ]
+sections:        
+  - Name:            .text
+    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
+    VirtualAddress:  4096
+    VirtualSize:     1
+    SectionData:     C3
+symbols:         []
+...

Added: lldb/trunk/lit/ObjectFile/PECOFF/dep-modules.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/PECOFF/dep-modules.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/PECOFF/dep-modules.yaml (added)
+++ lldb/trunk/lit/ObjectFile/PECOFF/dep-modules.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,170 @@
+# REQUIRES: lld
+# RUN: yaml2obj < %p/export-dllfunc.yaml > %t.export-dllfunc.obj
+# RUN: yaml2obj < %s > %t.obj
+#
+# RUN: lld-link /machine:x64 /out:%t.export-dllfunc.dll /noentry /nodefaultlib /dll %t.export-dllfunc.obj /export:DllFunc
+# RUN: lld-link /out:%t.exe %t.obj %t.export-dllfunc.lib /nodefaultlib /entry:main /include:DllFunc
+#
+# RUN: lldb-test object-file -dep-modules %t.exe | FileCheck -check-prefix=DEPS %s
+
+
+# DEPS: Showing 1 dependent module(s)
+
+# Ignore checking the directory and any tentative string in the path.
+# DEPS:   Name: {{.*}}dep-modules.yaml.{{.*}}export-dllfunc.dll
+
+
+--- !COFF
+header:          
+  Machine:         IMAGE_FILE_MACHINE_AMD64
+  Characteristics: [  ]
+sections:        
+  - Name:            .text
+    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
+    Alignment:       16
+    SectionData:     4883EC48C7442444000000004889542438894C2434B904000000E80000000089442430B908000000E8000000008944242C8B4424300344242C4883C448C3
+    Relocations:     
+      - VirtualAddress:  27
+        SymbolName:      'DllFunc'
+        Type:            IMAGE_REL_AMD64_REL32
+      - VirtualAddress:  41
+        SymbolName:      'DllFunc'
+        Type:            IMAGE_REL_AMD64_REL32
+  - Name:            .data
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
+    Alignment:       4
+    SectionData:     ''
+  - Name:            .bss
+    Characteristics: [ IMAGE_SCN_CNT_UNINITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
+    Alignment:       4
+    SectionData:     ''
+  - Name:            .xdata
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
+    Alignment:       4
+    SectionData:     '0104010004820000'
+  - Name:            .drectve
+    Characteristics: [ IMAGE_SCN_LNK_INFO, IMAGE_SCN_LNK_REMOVE ]
+    Alignment:       1
+    SectionData:     202F44454641554C544C49423A6C6962636D742E6C6962202F44454641554C544C49423A6F6C646E616D65732E6C6962
+  - Name:            .pdata
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
+    Alignment:       4
+    SectionData:     '000000003E00000000000000'
+    Relocations:     
+      - VirtualAddress:  0
+        SymbolName:      main
+        Type:            IMAGE_REL_AMD64_ADDR32NB
+      - VirtualAddress:  4
+        SymbolName:      main
+        Type:            IMAGE_REL_AMD64_ADDR32NB
+      - VirtualAddress:  8
+        SymbolName:      .xdata
+        Type:            IMAGE_REL_AMD64_ADDR32NB
+  - Name:            .llvm_addrsig
+    Characteristics: [ IMAGE_SCN_LNK_REMOVE ]
+    Alignment:       1
+    SectionData:     '10'
+symbols:         
+  - Name:            .text
+    Value:           0
+    SectionNumber:   1
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition: 
+      Length:          62
+      NumberOfRelocations: 2
+      NumberOfLinenumbers: 0
+      CheckSum:        373303044
+      Number:          1
+  - Name:            .data
+    Value:           0
+    SectionNumber:   2
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition: 
+      Length:          0
+      NumberOfRelocations: 0
+      NumberOfLinenumbers: 0
+      CheckSum:        0
+      Number:          2
+  - Name:            .bss
+    Value:           0
+    SectionNumber:   3
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition: 
+      Length:          0
+      NumberOfRelocations: 0
+      NumberOfLinenumbers: 0
+      CheckSum:        0
+      Number:          3
+  - Name:            .xdata
+    Value:           0
+    SectionNumber:   4
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition: 
+      Length:          8
+      NumberOfRelocations: 0
+      NumberOfLinenumbers: 0
+      CheckSum:        2657791889
+      Number:          4
+  - Name:            .drectve
+    Value:           0
+    SectionNumber:   5
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition: 
+      Length:          48
+      NumberOfRelocations: 0
+      NumberOfLinenumbers: 0
+      CheckSum:        149686238
+      Number:          5
+  - Name:            .pdata
+    Value:           0
+    SectionNumber:   6
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition: 
+      Length:          12
+      NumberOfRelocations: 3
+      NumberOfLinenumbers: 0
+      CheckSum:        2420588879
+      Number:          6
+  - Name:            .llvm_addrsig
+    Value:           0
+    SectionNumber:   7
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition: 
+      Length:          1
+      NumberOfRelocations: 0
+      NumberOfLinenumbers: 0
+      CheckSum:        498536548
+      Number:          7
+  - Name:            '@feat.00'
+    Value:           0
+    SectionNumber:   -1
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+  - Name:            main
+    Value:           0
+    SectionNumber:   1
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
+    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
+  - Name:            'DllFunc'
+    Value:           0
+    SectionNumber:   0
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
+...

Added: lldb/trunk/lit/ObjectFile/PECOFF/export-dllfunc.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/PECOFF/export-dllfunc.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/PECOFF/export-dllfunc.yaml (added)
+++ lldb/trunk/lit/ObjectFile/PECOFF/export-dllfunc.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,176 @@
+# REQUIRES: lld
+# RUN: yaml2obj < %s > %t.obj
+#
+# RUN: lld-link /machine:x64 /out:%t.dll /noentry /nodefaultlib /debug /dll %t.obj /export:DllFunc
+#
+# RUN: lldb-test object-file %t.dll | FileCheck -check-prefix=BASIC-CHECK %s
+# RUN: lldb-test object-file -dep-modules %t.dll | FileCheck -check-prefix=DEPS %s
+
+# BASIC-CHECK: Plugin name: pe-coff
+
+# UUID should not be empty if the module is built with debug info.
+# BASIC-CHECK-DAG: UUID: {{[0-9A-F]{7,}[0-9A-F]}}-{{.*}}
+
+# BASIC-CHECK: Showing 3 subsections
+# BASIC-CHECK:  Index: 0
+# BASIC-CHECK:  Name: .text
+# BASIC-CHECK:  Type: code
+# BASIC-CHECK:  VM size: 22
+# BASIC-CHECK:  File size: 512
+#
+# BASIC-CHECK:  Index: 1
+# BASIC-CHECK:  Name: .rdata
+# BASIC-CHECK:  Type: data
+# BASIC-CHECK:  VM size: {{.}}
+# BASIC-CHECK:  File size: 512
+#
+# BASIC-CHECK:  Index: 2
+# BASIC-CHECK:  Name: .pdata
+# BASIC-CHECK:  Type: data
+# BASIC-CHECK:  VM size: 12
+# BASIC-CHECK:  File size: 512
+#
+# DEPS: Showing 0 dependent module(s)
+
+
+--- !COFF
+header:          
+  Machine:         IMAGE_FILE_MACHINE_AMD64
+  Characteristics: [  ]
+sections:        
+  - Name:            .text
+    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
+    Alignment:       16
+    SectionData:     50894C24048B4C24040FAF4C2404890C248B042459C3
+  - Name:            .data
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
+    Alignment:       4
+    SectionData:     ''
+  - Name:            .bss
+    Characteristics: [ IMAGE_SCN_CNT_UNINITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
+    Alignment:       4
+    SectionData:     ''
+  - Name:            .xdata
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
+    Alignment:       4
+    SectionData:     '0101010001020000'
+  - Name:            .drectve
+    Characteristics: [ IMAGE_SCN_LNK_INFO, IMAGE_SCN_LNK_REMOVE ]
+    Alignment:       1
+    SectionData:     202F44454641554C544C49423A6C6962636D742E6C6962202F44454641554C544C49423A6F6C646E616D65732E6C6962
+  - Name:            .pdata
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
+    Alignment:       4
+    SectionData:     '000000001600000000000000'
+    Relocations:     
+      - VirtualAddress:  0
+        SymbolName:      'DllFunc'
+        Type:            IMAGE_REL_AMD64_ADDR32NB
+      - VirtualAddress:  4
+        SymbolName:      'DllFunc'
+        Type:            IMAGE_REL_AMD64_ADDR32NB
+      - VirtualAddress:  8
+        SymbolName:      .xdata
+        Type:            IMAGE_REL_AMD64_ADDR32NB
+  - Name:            .llvm_addrsig
+    Characteristics: [ IMAGE_SCN_LNK_REMOVE ]
+    Alignment:       1
+    SectionData:     ''
+symbols:         
+  - Name:            .text
+    Value:           0
+    SectionNumber:   1
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition: 
+      Length:          22
+      NumberOfRelocations: 0
+      NumberOfLinenumbers: 0
+      CheckSum:        3054557294
+      Number:          1
+  - Name:            .data
+    Value:           0
+    SectionNumber:   2
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition: 
+      Length:          0
+      NumberOfRelocations: 0
+      NumberOfLinenumbers: 0
+      CheckSum:        0
+      Number:          2
+  - Name:            .bss
+    Value:           0
+    SectionNumber:   3
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition: 
+      Length:          0
+      NumberOfRelocations: 0
+      NumberOfLinenumbers: 0
+      CheckSum:        0
+      Number:          3
+  - Name:            .xdata
+    Value:           0
+    SectionNumber:   4
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition: 
+      Length:          8
+      NumberOfRelocations: 0
+      NumberOfLinenumbers: 0
+      CheckSum:        448359300
+      Number:          4
+  - Name:            .drectve
+    Value:           0
+    SectionNumber:   5
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition: 
+      Length:          48
+      NumberOfRelocations: 0
+      NumberOfLinenumbers: 0
+      CheckSum:        149686238
+      Number:          5
+  - Name:            .pdata
+    Value:           0
+    SectionNumber:   6
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition: 
+      Length:          12
+      NumberOfRelocations: 3
+      NumberOfLinenumbers: 0
+      CheckSum:        3134470316
+      Number:          6
+  - Name:            .llvm_addrsig
+    Value:           0
+    SectionNumber:   7
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition: 
+      Length:          0
+      NumberOfRelocations: 0
+      NumberOfLinenumbers: 0
+      CheckSum:        0
+      Number:          7
+  - Name:            '@feat.00'
+    Value:           0
+    SectionNumber:   -1
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+  - Name:            'DllFunc'
+    Value:           0
+    SectionNumber:   1
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
+    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
+...

Added: lldb/trunk/lit/ObjectFile/PECOFF/lit.local.cfg
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/PECOFF/lit.local.cfg?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/PECOFF/lit.local.cfg (added)
+++ lldb/trunk/lit/ObjectFile/PECOFF/lit.local.cfg Wed Oct  9 10:35:43 2019
@@ -0,0 +1 @@
+config.suffixes = ['.yaml', '.test']

Added: lldb/trunk/lit/ObjectFile/PECOFF/sections-names.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/PECOFF/sections-names.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/PECOFF/sections-names.yaml (added)
+++ lldb/trunk/lit/ObjectFile/PECOFF/sections-names.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,52 @@
+# RUN: yaml2obj %s > %t
+# RUN: lldb-test object-file %t | FileCheck %s
+
+# CHECK: Name: .text{{$}}
+# CHECK: Name: 1234567{{$}}
+# CHECK: Name: 12345678{{$}}
+# CHECK: Name: 123456789{{$}}
+
+--- !COFF
+OptionalHeader:
+  AddressOfEntryPoint: 4616
+  ImageBase:       1073741824
+  SectionAlignment: 4096
+  FileAlignment:   512
+  MajorOperatingSystemVersion: 6
+  MinorOperatingSystemVersion: 0
+  MajorImageVersion: 0
+  MinorImageVersion: 0
+  MajorSubsystemVersion: 6
+  MinorSubsystemVersion: 0
+  Subsystem:       IMAGE_SUBSYSTEM_WINDOWS_CUI
+  DLLCharacteristics: [ IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA, IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE, IMAGE_DLL_CHARACTERISTICS_NX_COMPAT, IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE ]
+  SizeOfStackReserve: 1048576
+  SizeOfStackCommit: 4096
+  SizeOfHeapReserve: 1048576
+  SizeOfHeapCommit: 4096
+header:
+  Machine:         IMAGE_FILE_MACHINE_AMD64
+  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE ]
+sections:
+  - Name:            .text
+    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
+    VirtualAddress:  4096
+    VirtualSize:     64 # '@', if it makes its way into the name field
+    SectionData:     DEADBEEFBAADF00D
+  - Name:            1234567
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
+    VirtualAddress:  442368
+    VirtualSize:     64
+    SectionData:     DEADBEEFBAADF00D
+  - Name:            12345678
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
+    VirtualAddress:  446464
+    VirtualSize:     64
+    SectionData:     DEADBEEFBAADF00D
+  - Name:            123456789
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
+    VirtualAddress:  450560
+    VirtualSize:     64
+    SectionData:     DEADBEEFBAADF00D
+symbols:         []
+...

Added: lldb/trunk/lit/ObjectFile/PECOFF/subsections.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/PECOFF/subsections.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/PECOFF/subsections.yaml (added)
+++ lldb/trunk/lit/ObjectFile/PECOFF/subsections.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,70 @@
+# RUN: yaml2obj %s > %t
+# RUN: lldb-test object-file %t | FileCheck %s
+
+
+# CHECK:      Showing 1 sections
+# CHECK-NEXT:   Index: 0
+# CHECK-NEXT:   ID: 0xffffffffffffffff
+# CHECK-NEXT:   Name:
+# CHECK-NEXT:   Type: container
+# CHECK-NEXT:   Permissions: ---
+# CHECK-NEXT:   Thread specific: no
+# CHECK-NEXT:   VM address: 0x40000000
+# CHECK-NEXT:   VM size: 12288
+# CHECK-NEXT:   File size: 0
+# CHECK-NEXT:   Showing 2 subsections
+# CHECK-NEXT:     Index: 0
+# CHECK-NEXT:     ID: 0x1
+# CHECK-NEXT:     Name: .text
+# CHECK-NEXT:     Type: code
+# CHECK-NEXT:     Permissions: ---
+# CHECK-NEXT:     Thread specific: no
+# CHECK-NEXT:     VM address: 0x40001000
+# CHECK-NEXT:     VM size: 64
+# CHECK-NEXT:     File size: 512
+# CHECK-EMPTY: 
+# CHECK-NEXT:     Index: 1
+# CHECK-NEXT:     ID: 0x2
+# CHECK-NEXT:     Name: .data
+# CHECK-NEXT:     Type: data
+# CHECK-NEXT:     Permissions: ---
+# CHECK-NEXT:     Thread specific: no
+# CHECK-NEXT:     VM address: 0x40002000
+# CHECK-NEXT:     VM size: 64
+# CHECK-NEXT:     File size: 512
+
+
+--- !COFF
+OptionalHeader:
+  AddressOfEntryPoint: 4616
+  ImageBase:       1073741824
+  SectionAlignment: 4096
+  FileAlignment:   512
+  MajorOperatingSystemVersion: 6
+  MinorOperatingSystemVersion: 0
+  MajorImageVersion: 0
+  MinorImageVersion: 0
+  MajorSubsystemVersion: 6
+  MinorSubsystemVersion: 0
+  Subsystem:       IMAGE_SUBSYSTEM_WINDOWS_CUI
+  DLLCharacteristics: [ IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA, IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE, IMAGE_DLL_CHARACTERISTICS_NX_COMPAT, IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE ]
+  SizeOfStackReserve: 1048576
+  SizeOfStackCommit: 4096
+  SizeOfHeapReserve: 1048576
+  SizeOfHeapCommit: 4096
+header:
+  Machine:         IMAGE_FILE_MACHINE_AMD64
+  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE ]
+sections:
+  - Name:            .text
+    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
+    VirtualAddress:  4096
+    VirtualSize:     64
+    SectionData:     DEADBEEFBAADF00D
+  - Name:            .data
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
+    VirtualAddress:  8192
+    VirtualSize:     64
+    SectionData:     DEADBEEFBAADF00D
+symbols:         []
+...

Added: lldb/trunk/lit/ObjectFile/PECOFF/uuid.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/PECOFF/uuid.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/PECOFF/uuid.yaml (added)
+++ lldb/trunk/lit/ObjectFile/PECOFF/uuid.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,90 @@
+# REQUIRES: lld
+# RUN: yaml2obj %s > %t.obj
+# RUN: lldb-test object-file %t.obj | FileCheck %s
+
+# CHECK-DAG: UUID: 14B292E0-D81A-B4F1-4C4C-44205044422E-00000001
+
+--- !COFF
+OptionalHeader:  
+  AddressOfEntryPoint: 0
+  ImageBase:       2147483648
+  SectionAlignment: 4096
+  FileAlignment:   512
+  MajorOperatingSystemVersion: 6
+  MinorOperatingSystemVersion: 0
+  MajorImageVersion: 0
+  MinorImageVersion: 0
+  MajorSubsystemVersion: 6
+  MinorSubsystemVersion: 0
+  Subsystem:       IMAGE_SUBSYSTEM_WINDOWS_GUI
+  DLLCharacteristics: [ IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA, IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE, IMAGE_DLL_CHARACTERISTICS_NX_COMPAT ]
+  SizeOfStackReserve: 1048576
+  SizeOfStackCommit: 4096
+  SizeOfHeapReserve: 1048576
+  SizeOfHeapCommit: 4096
+  ExportTable:     
+    RelativeVirtualAddress: 8327
+    Size:            90
+  ImportTable:     
+    RelativeVirtualAddress: 0
+    Size:            0
+  ResourceTable:   
+    RelativeVirtualAddress: 0
+    Size:            0
+  ExceptionTable:  
+    RelativeVirtualAddress: 12288
+    Size:            12
+  CertificateTable: 
+    RelativeVirtualAddress: 0
+    Size:            0
+  BaseRelocationTable: 
+    RelativeVirtualAddress: 0
+    Size:            0
+  Debug:           
+    RelativeVirtualAddress: 8192
+    Size:            28
+  Architecture:    
+    RelativeVirtualAddress: 0
+    Size:            0
+  GlobalPtr:       
+    RelativeVirtualAddress: 0
+    Size:            0
+  TlsTable:        
+    RelativeVirtualAddress: 0
+    Size:            0
+  LoadConfigTable: 
+    RelativeVirtualAddress: 0
+    Size:            0
+  BoundImport:     
+    RelativeVirtualAddress: 0
+    Size:            0
+  IAT:             
+    RelativeVirtualAddress: 0
+    Size:            0
+  DelayImportDescriptor: 
+    RelativeVirtualAddress: 0
+    Size:            0
+  ClrRuntimeHeader: 
+    RelativeVirtualAddress: 0
+    Size:            0
+header:          
+  Machine:         IMAGE_FILE_MACHINE_AMD64
+  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
+sections:        
+  - Name:            .text
+    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
+    VirtualAddress:  4096
+    VirtualSize:     22
+    SectionData:     50894C24048B4C24040FAF4C2404890C248B042459C3
+  - Name:            .rdata
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
+    VirtualAddress:  8192
+    VirtualSize:     236
+    SectionData:     00000000A565B65C00000000020000006B0000001C2000001C06000052534453E092B2141AD8F1B44C4C44205044422E01000000443A5C757073747265616D5C6275696C645C746F6F6C735C6C6C64625C6C69745C4D6F64756C65735C5045434F46465C4F75747075745C6578706F72742D646C6C66756E632E79616D6C2E746D702E70646200000000000000000000000000AF200000000000000200000001000000CB200000D3200000D72000006578706F72742D646C6C66756E632E79616D6C2E746D702E646C6C000000000000100000D92000000100446C6C46756E63000000000101010001020000
+  - Name:            .pdata
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
+    VirtualAddress:  12288
+    VirtualSize:     12
+    SectionData:     '0010000016100000E4200000'
+symbols:         []
+...

Added: lldb/trunk/lit/ObjectFile/lit.local.cfg
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/ObjectFile/lit.local.cfg?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/ObjectFile/lit.local.cfg (added)
+++ lldb/trunk/lit/ObjectFile/lit.local.cfg Wed Oct  9 10:35:43 2019
@@ -0,0 +1 @@
+config.suffixes = ['.s', '.test', '.yaml']

Added: lldb/trunk/lit/Process/Inputs/env.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Process/Inputs/env.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Process/Inputs/env.cpp (added)
+++ lldb/trunk/lit/Process/Inputs/env.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,7 @@
+#include <cstdlib>
+#include <iostream>
+
+int main() {
+  if (const char *env_p = std::getenv("FOO"))
+    std::cout << "FOO=" << env_p << '\n';
+}

Added: lldb/trunk/lit/Process/TestEnvironment.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Process/TestEnvironment.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Process/TestEnvironment.test (added)
+++ lldb/trunk/lit/Process/TestEnvironment.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,9 @@
+UNSUPPORTED: system-windows
+
+The double quotes around "BAR" ensure we don't match the command.
+
+RUN: %clangxx -std=c++11 %p/Inputs/env.cpp -o %t
+RUN: %lldb %t -o 'process launch --environment FOO="BAR"' | FileCheck %s
+RUN: %lldb %t -o 'env FOO="BAR"' -o 'process launch' | FileCheck %s
+
+CHECK: FOO=BAR

Added: lldb/trunk/lit/Process/Windows/exception_access_violation.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Process/Windows/exception_access_violation.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Process/Windows/exception_access_violation.cpp (added)
+++ lldb/trunk/lit/Process/Windows/exception_access_violation.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,37 @@
+// clang-format off
+
+// REQUIRES: system-windows
+// RUN: %build --compiler=clang-cl -o %t.exe -- %s
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -o "run" -- write | FileCheck --check-prefix=WRITE %s
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -o "run" -- read | FileCheck --check-prefix=READ %s
+
+#include <string.h>
+
+int access_violation_write(void* addr) {
+    *(int*)addr = 42;
+    return 0;
+}
+
+
+int access_violation_read(void* addr) {
+    volatile int ret = *(int*)addr;
+    return ret;
+}
+
+int main(int argc, char *argv[]) {
+    if (argc < 2) {
+        return 1;
+    }
+    if (strcmp(argv[1], "write") == 0) {
+        return access_violation_write((void*)42);
+    }
+    if (strcmp(argv[1], "read") == 0) {
+        return access_violation_read((void*)42);
+    }
+    return 1;
+}
+
+
+// WRITE:     * thread #1, stop reason = Exception 0xc0000005 encountered at address {{.*}}: Access violation writing location 0x0000002a
+
+// READ:      * thread #1, stop reason = Exception 0xc0000005 encountered at address {{.*}}: Access violation reading location 0x0000002a

Added: lldb/trunk/lit/Python/crashlog.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Python/crashlog.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Python/crashlog.test (added)
+++ lldb/trunk/lit/Python/crashlog.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,99 @@
+#                                                                 -*- python -*-
+# REQUIRES: system-darwin
+# RUN: cd %S/../../examples/python && cat %s | %lldb | FileCheck %s
+# CHECK-LABEL: {{S}}KIP BEYOND CHECKS
+script
+import crashlog
+cl = crashlog.CrashLog
+images = [
+"0x10b60b000 - 0x10f707fff com.apple.LLDB.framework (1.1000.11.38.2 - 1000.11.38.2) <96E36F5C-1A83-39A1-8713-5FDD9701C3F1> /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/LLDB",
+# CHECK: 0x10b60b000
+# CHECK: 0x10f707fff
+# CHECK: com.apple.LLDB.framework
+# CHECK: 96E36F5C-1A83-39A1-8713-5FDD9701C3F1
+# CHECK: /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/LLDB
+
+"0x104591000 - 0x1055cfff7 +llvm-dwarfdump (0) <B104CFA1-046A-36A6-8EB4-07DDD7CC2DF3> /Users/USER 1/Documents/*/llvm-dwarfdump",
+# CHECK: 0x104591000
+# CHECK: 0x1055cfff7
+# CHECK: llvm-dwarfdump
+# CHECK: (0)
+# CHECK: B104CFA1-046A-36A6-8EB4-07DDD7CC2DF3
+# CHECK: /Users/USER 1/Documents/*/llvm-dwarfdump
+
+"0x7fff63f20000 - 0x7fff63f77ff7  libc++.1.dylib (400.9.4) <D4AB366F-48A9-3C7D-91BD-41198F69DD57> /usr/lib/libc++.1.dylib",
+# CHECK: 0x7fff63f20000
+# CHECK: 0x7fff63f77ff7
+# CHECK: libc++.1.dylib
+# CHECK: (400.9.4)
+# CHECK: D4AB366F-48A9-3C7D-91BD-41198F69DD57
+# CHECK: /usr/lib/libc++.1.dylib
+
+"0x1111111 - 0x22222 +MyApp Pro arm64  <01234> /tmp/MyApp Pro.app/MyApp Pro",
+# CHECK: 0x1111111
+# CHECK: 0x22222
+# CHECK: MyApp Pro arm64
+# CHECK: None
+# CHECK: 01234
+# CHECK: /tmp/MyApp Pro.app/MyApp Pro
+
+"0x1111111 - 0x22222 +MyApp Pro (0) <01234> /tmp/MyApp Pro.app/MyApp Pro",
+# CHECK: 0x1111111
+# CHECK: 0x22222
+# CHECK: MyApp Pro
+# CHECK: (0)
+# CHECK: 01234
+# CHECK: /tmp/MyApp Pro.app/MyApp Pro
+    
+"0x7fff63f20000 - 0x7fff63f77ff7  libc++.1.dylib (400.9.4) /usr/lib/libc++.1.dylib"
+# CHECK: 0x7fff63f20000
+# CHECK: 0x7fff63f77ff7
+# CHECK: libc++.1.dylib
+# CHECK: (400.9.4)
+# CHECK: None
+# CHECK: /usr/lib/libc++.1.dylib
+]
+# CHECK-LABEL: FRAMES
+frames = [
+"0 libsystem_kernel.dylib        	0x00007fff684b78a6 read + 10",
+# CHECK: 0
+# CHECK: libsystem_kernel.dylib
+# CHECK: 0x00007fff684b78a6
+# CHECK: read + 10
+"1   com.apple.LLDB.framework      	0x000000010f7954af lldb_private::HostNativeThreadBase::ThreadCreateTrampoline(void*) + 105",
+# CHECK: 1
+# CHECK: com.apple.LLDB.framework
+# CHECK: 0x000000010f7954af
+# CHECK: lldb_private{{.*}} + 105
+"2   MyApp Pro arm64    	0x000000019b0db3a8 foo + 72",
+# CHECK: 2
+# CHECK: MyApp Pro arm64
+# CHECK: 0x000000019b0db3a8
+# CHECK: foo + 72
+"3   He 0x1    	0x000000019b0db3a8 foo + 72"
+# CHECK: 3
+# CHECK: He 0x1
+# CHECK: 0x000000019b0db3a8
+# CHECK: foo + 72
+]
+
+
+# Avoid matching the text inside the input.
+print("SKIP BEYOND CHECKS")
+for image in images:
+    print('"%s"'%image)
+    print("--------------")
+    match = cl.image_regex_uuid.search(image)
+    for group in match.groups():
+        print(group)
+
+print("FRAMES")
+for frame in frames:
+    print('"%s"'%frame)
+    print("--------------")
+    match = cl.frame_regex.search(frame)
+    for group in match.groups():
+        print(group)
+
+exit()
+quit

Added: lldb/trunk/lit/Quit/TestQuitExitCode-30.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Quit/TestQuitExitCode-30.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Quit/TestQuitExitCode-30.test (added)
+++ lldb/trunk/lit/Quit/TestQuitExitCode-30.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,3 @@
+# UNSUPPORTED: system-windows
+# RUN: %python %S/expect_exit_code.py 226 %lldb -b -s %s
+q -30

Added: lldb/trunk/lit/Quit/TestQuitExitCode0.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Quit/TestQuitExitCode0.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Quit/TestQuitExitCode0.test (added)
+++ lldb/trunk/lit/Quit/TestQuitExitCode0.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,3 @@
+# UNSUPPORTED: system-windows
+# RUN: %lldb -b -s %s
+q 0

Added: lldb/trunk/lit/Quit/TestQuitExitCode30.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Quit/TestQuitExitCode30.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Quit/TestQuitExitCode30.test (added)
+++ lldb/trunk/lit/Quit/TestQuitExitCode30.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,3 @@
+# UNSUPPORTED: system-windows
+# RUN: %python %S/expect_exit_code.py 30  %lldb -b -s %s
+q 30

Added: lldb/trunk/lit/Quit/TestQuitExitCodeHex0.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Quit/TestQuitExitCodeHex0.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Quit/TestQuitExitCodeHex0.test (added)
+++ lldb/trunk/lit/Quit/TestQuitExitCodeHex0.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,3 @@
+# UNSUPPORTED: system-windows
+# RUN: %lldb -b -s %s
+q 0x0

Added: lldb/trunk/lit/Quit/TestQuitExitCodeHexA.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Quit/TestQuitExitCodeHexA.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Quit/TestQuitExitCodeHexA.test (added)
+++ lldb/trunk/lit/Quit/TestQuitExitCodeHexA.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,3 @@
+# UNSUPPORTED: system-windows
+# RUN: %python %S/expect_exit_code.py 10 %lldb -b -s %s
+q 0xA

Added: lldb/trunk/lit/Quit/TestQuitExitCodeImplicit0.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Quit/TestQuitExitCodeImplicit0.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Quit/TestQuitExitCodeImplicit0.test (added)
+++ lldb/trunk/lit/Quit/TestQuitExitCodeImplicit0.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,3 @@
+# UNSUPPORTED: system-windows
+# RUN: %lldb -b -s %s
+q

Added: lldb/trunk/lit/Quit/TestQuitExitCodeNonInt.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Quit/TestQuitExitCodeNonInt.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Quit/TestQuitExitCodeNonInt.test (added)
+++ lldb/trunk/lit/Quit/TestQuitExitCodeNonInt.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,4 @@
+# UNSUPPORTED: system-windows
+# RUN: %lldb -b -s %s 2>&1 | FileCheck %s
+q str
+// CHECK: Couldn't parse 'str'

Added: lldb/trunk/lit/Quit/TestQuitExitCodeTooManyArgs.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Quit/TestQuitExitCodeTooManyArgs.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Quit/TestQuitExitCodeTooManyArgs.test (added)
+++ lldb/trunk/lit/Quit/TestQuitExitCodeTooManyArgs.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,4 @@
+# UNSUPPORTED: system-windows
+# RUN: %lldb -b -s %s 2>&1 | FileCheck %s
+q 1 2
+// CHECK: Too many arguments for 'quit'

Added: lldb/trunk/lit/Quit/expect_exit_code.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Quit/expect_exit_code.py?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Quit/expect_exit_code.py (added)
+++ lldb/trunk/lit/Quit/expect_exit_code.py Wed Oct  9 10:35:43 2019
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+
+import subprocess
+import sys
+
+args = sys.argv
+
+expected_exit_code = args[1]
+
+args = args[2:]
+print("Running " + (" ".join(args)))
+real_exit_code = subprocess.call(args)
+
+if str(real_exit_code) != expected_exit_code:
+  print("Got exit code %d but expected %s" % (real_exit_code, expected_exit_code))
+  exit(1)

Propchange: lldb/trunk/lit/Quit/expect_exit_code.py
------------------------------------------------------------------------------
    svn:executable = *

Added: lldb/trunk/lit/Register/Inputs/x86-64-gp-read.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/Inputs/x86-64-gp-read.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/Inputs/x86-64-gp-read.cpp (added)
+++ lldb/trunk/lit/Register/Inputs/x86-64-gp-read.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,33 @@
+#include <cstdint>
+
+int main() {
+  constexpr uint64_t rax = 0x0102030405060708;
+  constexpr uint64_t rbx = 0x1112131415161718;
+  constexpr uint64_t rcx = 0x2122232425262728;
+  constexpr uint64_t rdx = 0x3132333435363738;
+  constexpr uint64_t rsp = 0x4142434445464748;
+  constexpr uint64_t rbp = 0x5152535455565758;
+  constexpr uint64_t rsi = 0x6162636465666768;
+  constexpr uint64_t rdi = 0x7172737475767778;
+
+  asm volatile(
+    // save rsp & rbp
+    "movq    %%rsp, %%r8\n\t"
+    "movq    %%rbp, %%r9\n\t"
+    "\n\t"
+    "movq    %4, %%rsp\n\t"
+    "movq    %5, %%rbp\n\t"
+    "\n\t"
+    "int3\n\t"
+    "\n\t"
+    // restore rsp & rbp
+    "movq    %%r8, %%rsp\n\t"
+    "movq    %%r9, %%rbp"
+    :
+    : "a"(rax), "b"(rbx), "c"(rcx), "d"(rdx), "i"(rsp), "i"(rbp), "S"(rsi),
+      "D"(rdi)
+    : "%r8", "%r9"
+  );
+
+  return 0;
+}

Added: lldb/trunk/lit/Register/Inputs/x86-64-gp-write.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/Inputs/x86-64-gp-write.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/Inputs/x86-64-gp-write.cpp (added)
+++ lldb/trunk/lit/Register/Inputs/x86-64-gp-write.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,45 @@
+#include <cinttypes>
+#include <cstdint>
+#include <cstdio>
+
+int main() {
+  constexpr uint64_t fill = 0x0F0F0F0F0F0F0F0F;
+
+  uint64_t rax, rbx, rcx, rdx, rsp, rbp, rsi, rdi;
+
+  asm volatile(
+    // save rsp & rbp
+    "movq    %%rsp, %4\n\t"
+    "movq    %%rbp, %5\n\t"
+    "\n\t"
+    "movq    %8, %%rax\n\t"
+    "movq    %8, %%rbx\n\t"
+    "movq    %8, %%rcx\n\t"
+    "movq    %8, %%rdx\n\t"
+    "movq    %8, %%rsp\n\t"
+    "movq    %8, %%rbp\n\t"
+    "movq    %8, %%rsi\n\t"
+    "movq    %8, %%rdi\n\t"
+    "\n\t"
+    "int3\n\t"
+    "\n\t"
+    // swap saved & current rsp & rbp
+    "xchgq    %%rsp, %4\n\t"
+    "xchgq    %%rbp, %5\n\t"
+    : "=a"(rax), "=b"(rbx), "=c"(rcx), "=d"(rdx), "=r"(rsp), "=r"(rbp),
+      "=S"(rsi), "=D"(rdi)
+    : "g"(fill)
+    :
+  );
+
+  printf("rax = 0x%016" PRIx64 "\n", rax);
+  printf("rbx = 0x%016" PRIx64 "\n", rbx);
+  printf("rcx = 0x%016" PRIx64 "\n", rcx);
+  printf("rdx = 0x%016" PRIx64 "\n", rdx);
+  printf("rsp = 0x%016" PRIx64 "\n", rsp);
+  printf("rbp = 0x%016" PRIx64 "\n", rbp);
+  printf("rsi = 0x%016" PRIx64 "\n", rsi);
+  printf("rdi = 0x%016" PRIx64 "\n", rdi);
+
+  return 0;
+}

Added: lldb/trunk/lit/Register/Inputs/x86-64-read.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/Inputs/x86-64-read.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/Inputs/x86-64-read.cpp (added)
+++ lldb/trunk/lit/Register/Inputs/x86-64-read.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,57 @@
+#include <cstdint>
+
+struct alignas(16) xmm_t {
+  uint64_t a, b;
+};
+
+int main() {
+  constexpr uint64_t r8[] = {
+    0x0001020304050607,
+    0x1011121314151617,
+    0x2021222324252627,
+    0x3031323334353637,
+    0x4041424344454647,
+    0x5051525354555657,
+    0x6061626364656667,
+    0x7071727374757677,
+  };
+
+  constexpr xmm_t xmm8[] = {
+    { 0x0F0E0D0C0B0A0908, 0x1716151413121110, },
+    { 0x100F0E0D0C0B0A09, 0x1817161514131211, },
+    { 0x11100F0E0D0C0B0A, 0x1918171615141312, },
+    { 0x1211100F0E0D0C0B, 0x1A19181716151413, },
+    { 0x131211100F0E0D0C, 0x1B1A191817161514, },
+    { 0x14131211100F0E0D, 0x1C1B1A1918171615, },
+    { 0x1514131211100F0E, 0x1D1C1B1A19181716, },
+    { 0x161514131211100F, 0x1E1D1C1B1A191817, },
+  };
+
+  asm volatile(
+    "movq     0x00(%0), %%r8\n\t"
+    "movq     0x08(%0), %%r9\n\t"
+    "movq     0x10(%0), %%r10\n\t"
+    "movq     0x18(%0), %%r11\n\t"
+    "movq     0x20(%0), %%r12\n\t"
+    "movq     0x28(%0), %%r13\n\t"
+    "movq     0x30(%0), %%r14\n\t"
+    "movq     0x38(%0), %%r15\n\t"
+    "\n\t"
+    "movaps   0x00(%1), %%xmm8\n\t"
+    "movaps   0x10(%1), %%xmm9\n\t"
+    "movaps   0x20(%1), %%xmm10\n\t"
+    "movaps   0x30(%1), %%xmm11\n\t"
+    "movaps   0x40(%1), %%xmm12\n\t"
+    "movaps   0x50(%1), %%xmm13\n\t"
+    "movaps   0x60(%1), %%xmm14\n\t"
+    "movaps   0x70(%1), %%xmm15\n\t"
+    "\n\t"
+    "int3\n\t"
+    :
+    : "a"(r8), "b"(xmm8)
+    : "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15", "%xmm8",
+      "%xmm9", "%xmm10", "%xmm11", "%xmm12", "%xmm13", "%xmm14", "%xmm15"
+  );
+
+  return 0;
+}

Added: lldb/trunk/lit/Register/Inputs/x86-64-write.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/Inputs/x86-64-write.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/Inputs/x86-64-write.cpp (added)
+++ lldb/trunk/lit/Register/Inputs/x86-64-write.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,72 @@
+#include <cinttypes>
+#include <cstdint>
+#include <cstdio>
+
+union alignas(16) xmm_t {
+  uint64_t as_uint64[2];
+  uint8_t as_uint8[16];
+};
+
+int main() {
+  constexpr xmm_t xmm_fill = {
+    .as_uint64 = { 0x0F0F0F0F0F0F0F0F, 0x0F0F0F0F0F0F0F0F }
+  };
+
+  uint64_t r64[8];
+  xmm_t xmm[8];
+
+  asm volatile(
+    "movq    %2, %%r8\n\t"
+    "movq    %2, %%r9\n\t"
+    "movq    %2, %%r10\n\t"
+    "movq    %2, %%r11\n\t"
+    "movq    %2, %%r12\n\t"
+    "movq    %2, %%r13\n\t"
+    "movq    %2, %%r14\n\t"
+    "movq    %2, %%r15\n\t"
+    "\n\t"
+    "movaps  %2, %%xmm8\n\t"
+    "movaps  %2, %%xmm9\n\t"
+    "movaps  %2, %%xmm10\n\t"
+    "movaps  %2, %%xmm11\n\t"
+    "movaps  %2, %%xmm12\n\t"
+    "movaps  %2, %%xmm13\n\t"
+    "movaps  %2, %%xmm14\n\t"
+    "movaps  %2, %%xmm15\n\t"
+    "\n\t"
+    "int3\n\t"
+    "\n\t"
+    "movq    %%r8, 0x00(%0)\n\t"
+    "movq    %%r9, 0x08(%0)\n\t"
+    "movq    %%r10, 0x10(%0)\n\t"
+    "movq    %%r11, 0x18(%0)\n\t"
+    "movq    %%r12, 0x20(%0)\n\t"
+    "movq    %%r13, 0x28(%0)\n\t"
+    "movq    %%r14, 0x30(%0)\n\t"
+    "movq    %%r15, 0x38(%0)\n\t"
+    "\n\t"
+    "movaps  %%xmm8, 0x00(%1)\n\t"
+    "movaps  %%xmm9, 0x10(%1)\n\t"
+    "movaps  %%xmm10, 0x20(%1)\n\t"
+    "movaps  %%xmm11, 0x30(%1)\n\t"
+    "movaps  %%xmm12, 0x40(%1)\n\t"
+    "movaps  %%xmm13, 0x50(%1)\n\t"
+    "movaps  %%xmm14, 0x60(%1)\n\t"
+    "movaps  %%xmm15, 0x70(%1)\n\t"
+    :
+    : "a"(r64), "b"(xmm), "m"(xmm_fill)
+    : "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15", "%xmm8",
+      "%xmm9", "%xmm10", "%xmm11", "%xmm12", "%xmm13", "%xmm14", "%xmm15"
+  );
+
+  for (int i = 0; i < 8; ++i)
+    printf("r%d = 0x%016" PRIx64 "\n", i+8, r64[i]);
+  for (int i = 0; i < 8; ++i) {
+    printf("xmm%d = { ", i+8);
+    for (int j = 0; j < sizeof(xmm->as_uint8); ++j)
+      printf("0x%02x ", xmm[i].as_uint8[j]);
+    printf("}\n");
+  }
+
+  return 0;
+}

Added: lldb/trunk/lit/Register/Inputs/x86-gp-read.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/Inputs/x86-gp-read.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/Inputs/x86-gp-read.cpp (added)
+++ lldb/trunk/lit/Register/Inputs/x86-gp-read.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,33 @@
+#include <cstdint>
+
+int main() {
+  constexpr uint32_t eax = 0x05060708;
+  constexpr uint32_t ebx = 0x15161718;
+  constexpr uint32_t ecx = 0x25262728;
+  constexpr uint32_t edx = 0x35363738;
+  constexpr uint32_t esp = 0x45464748;
+  constexpr uint32_t ebp = 0x55565758;
+  constexpr uint32_t esi = 0x65666768;
+  constexpr uint32_t edi = 0x75767778;
+
+  asm volatile(
+    // save esp & ebp
+    "movd    %%esp, %%mm0\n\t"
+    "movd    %%ebp, %%mm1\n\t"
+    "\n\t"
+    "movl    %4, %%esp\n\t"
+    "movl    %5, %%ebp\n\t"
+    "\n\t"
+    "int3\n\t"
+    "\n\t"
+    // restore esp & ebp
+    "movd    %%mm0, %%esp\n\t"
+    "movd    %%mm1, %%ebp\n\t"
+    :
+    : "a"(eax), "b"(ebx), "c"(ecx), "d"(edx), "i"(esp), "i"(ebp), "S"(esi),
+      "D"(edi)
+    : "%mm0", "%mm1"
+  );
+
+  return 0;
+}

Added: lldb/trunk/lit/Register/Inputs/x86-gp-write.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/Inputs/x86-gp-write.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/Inputs/x86-gp-write.cpp (added)
+++ lldb/trunk/lit/Register/Inputs/x86-gp-write.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,51 @@
+#include <cinttypes>
+#include <cstdint>
+#include <cstdio>
+
+int main() {
+  constexpr uint32_t fill = 0x0F0F0F0F;
+
+  uint32_t eax, ebx, ecx, edx, esi, edi;
+  // need to use 64-bit types due to bug in clang
+  // https://bugs.llvm.org/show_bug.cgi?id=41748
+  uint64_t esp, ebp;
+
+  asm volatile(
+    // save esp & ebp
+    "movd    %%esp, %%mm0\n\t"
+    "movd    %%ebp, %%mm1\n\t"
+    "\n\t"
+    "movl    %8, %%eax\n\t"
+    "movl    %8, %%ebx\n\t"
+    "movl    %8, %%ecx\n\t"
+    "movl    %8, %%edx\n\t"
+    "movl    %8, %%esp\n\t"
+    "movl    %8, %%ebp\n\t"
+    "movl    %8, %%esi\n\t"
+    "movl    %8, %%edi\n\t"
+    "\n\t"
+    "int3\n\t"
+    "\n\t"
+    // copy new values of esp & ebp
+    "movd    %%esp, %4\n\t"
+    "movd    %%ebp, %5\n\t"
+    // restore saved esp & ebp
+    "movd    %%mm0, %%esp\n\t"
+    "movd    %%mm1, %%ebp\n\t"
+    : "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx), "=y"(esp), "=y"(ebp),
+      "=S"(esi), "=D"(edi)
+    : "i"(fill)
+    : "%mm0", "%mm1"
+  );
+
+  printf("eax = 0x%08" PRIx32 "\n", eax);
+  printf("ebx = 0x%08" PRIx32 "\n", ebx);
+  printf("ecx = 0x%08" PRIx32 "\n", ecx);
+  printf("edx = 0x%08" PRIx32 "\n", edx);
+  printf("esp = 0x%08" PRIx32 "\n", static_cast<uint32_t>(esp));
+  printf("ebp = 0x%08" PRIx32 "\n", static_cast<uint32_t>(ebp));
+  printf("esi = 0x%08" PRIx32 "\n", esi);
+  printf("edi = 0x%08" PRIx32 "\n", edi);
+
+  return 0;
+}

Added: lldb/trunk/lit/Register/Inputs/x86-mm-xmm-read.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/Inputs/x86-mm-xmm-read.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/Inputs/x86-mm-xmm-read.cpp (added)
+++ lldb/trunk/lit/Register/Inputs/x86-mm-xmm-read.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,57 @@
+#include <cstdint>
+
+struct alignas(16) xmm_t {
+  uint64_t a, b;
+};
+
+int main() {
+  constexpr uint64_t mm[] = {
+    0x0001020304050607,
+    0x1011121314151617,
+    0x2021222324252627,
+    0x3031323334353637,
+    0x4041424344454647,
+    0x5051525354555657,
+    0x6061626364656667,
+    0x7071727374757677,
+  };
+
+  constexpr xmm_t xmm[] = {
+    { 0x0706050403020100, 0x0F0E0D0C0B0A0908, },
+    { 0x0807060504030201, 0x100F0E0D0C0B0A09, },
+    { 0x0908070605040302, 0x11100F0E0D0C0B0A, },
+    { 0x0A09080706050403, 0x1211100F0E0D0C0B, },
+    { 0x0B0A090807060504, 0x131211100F0E0D0C, },
+    { 0x0C0B0A0908070605, 0x14131211100F0E0D, },
+    { 0x0D0C0B0A09080706, 0x1514131211100F0E, },
+    { 0x0E0D0C0B0A090807, 0x161514131211100F, },
+  };
+
+  asm volatile(
+    "movq     0x00(%0), %%mm0\n\t"
+    "movq     0x08(%0), %%mm1\n\t"
+    "movq     0x10(%0), %%mm2\n\t"
+    "movq     0x18(%0), %%mm3\n\t"
+    "movq     0x20(%0), %%mm4\n\t"
+    "movq     0x28(%0), %%mm5\n\t"
+    "movq     0x30(%0), %%mm6\n\t"
+    "movq     0x38(%0), %%mm7\n\t"
+    "\n\t"
+    "movaps   0x00(%1), %%xmm0\n\t"
+    "movaps   0x10(%1), %%xmm1\n\t"
+    "movaps   0x20(%1), %%xmm2\n\t"
+    "movaps   0x30(%1), %%xmm3\n\t"
+    "movaps   0x40(%1), %%xmm4\n\t"
+    "movaps   0x50(%1), %%xmm5\n\t"
+    "movaps   0x60(%1), %%xmm6\n\t"
+    "movaps   0x70(%1), %%xmm7\n\t"
+    "\n\t"
+    "int3\n\t"
+    :
+    : "a"(mm), "b"(xmm)
+    : "%mm0", "%mm1", "%mm2", "%mm3", "%mm4", "%mm5", "%mm6", "%mm7",
+      "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5", "%xmm6", "%xmm7"
+  );
+
+  return 0;
+}

Added: lldb/trunk/lit/Register/Inputs/x86-mm-xmm-write.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/Inputs/x86-mm-xmm-write.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/Inputs/x86-mm-xmm-write.cpp (added)
+++ lldb/trunk/lit/Register/Inputs/x86-mm-xmm-write.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,72 @@
+#include <cinttypes>
+#include <cstdint>
+#include <cstdio>
+
+union alignas(16) xmm_t {
+  uint64_t as_uint64[2];
+  uint8_t as_uint8[16];
+};
+
+int main() {
+  constexpr xmm_t xmm_fill = {
+    .as_uint64 = { 0x0F0F0F0F0F0F0F0F, 0x0F0F0F0F0F0F0F0F }
+  };
+
+  uint64_t mm[8];
+  xmm_t xmm[8];
+
+  asm volatile(
+    "movq    %2, %%mm0\n\t"
+    "movq    %2, %%mm1\n\t"
+    "movq    %2, %%mm2\n\t"
+    "movq    %2, %%mm3\n\t"
+    "movq    %2, %%mm4\n\t"
+    "movq    %2, %%mm5\n\t"
+    "movq    %2, %%mm6\n\t"
+    "movq    %2, %%mm7\n\t"
+    "\n\t"
+    "movaps  %2, %%xmm0\n\t"
+    "movaps  %2, %%xmm1\n\t"
+    "movaps  %2, %%xmm2\n\t"
+    "movaps  %2, %%xmm3\n\t"
+    "movaps  %2, %%xmm4\n\t"
+    "movaps  %2, %%xmm5\n\t"
+    "movaps  %2, %%xmm6\n\t"
+    "movaps  %2, %%xmm7\n\t"
+    "\n\t"
+    "int3\n\t"
+    "\n\t"
+    "movq    %%mm0, 0x00(%0)\n\t"
+    "movq    %%mm1, 0x08(%0)\n\t"
+    "movq    %%mm2, 0x10(%0)\n\t"
+    "movq    %%mm3, 0x18(%0)\n\t"
+    "movq    %%mm4, 0x20(%0)\n\t"
+    "movq    %%mm5, 0x28(%0)\n\t"
+    "movq    %%mm6, 0x30(%0)\n\t"
+    "movq    %%mm7, 0x38(%0)\n\t"
+    "\n\t"
+    "movaps  %%xmm0, 0x00(%1)\n\t"
+    "movaps  %%xmm1, 0x10(%1)\n\t"
+    "movaps  %%xmm2, 0x20(%1)\n\t"
+    "movaps  %%xmm3, 0x30(%1)\n\t"
+    "movaps  %%xmm4, 0x40(%1)\n\t"
+    "movaps  %%xmm5, 0x50(%1)\n\t"
+    "movaps  %%xmm6, 0x60(%1)\n\t"
+    "movaps  %%xmm7, 0x70(%1)\n\t"
+    :
+    : "a"(mm), "b"(xmm), "m"(xmm_fill)
+    : "%mm0", "%mm1", "%mm2", "%mm3", "%mm4", "%mm5", "%mm6", "%mm7", "%xmm0",
+      "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5", "%xmm6", "%xmm7"
+  );
+
+  for (int i = 0; i < 8; ++i)
+    printf("mm%d = 0x%016" PRIx64 "\n", i, mm[i]);
+  for (int i = 0; i < 8; ++i) {
+    printf("xmm%d = { ", i);
+    for (int j = 0; j < sizeof(xmm->as_uint8); ++j)
+      printf("0x%02x ", xmm[i].as_uint8[j]);
+    printf("}\n");
+  }
+
+  return 0;
+}

Added: lldb/trunk/lit/Register/Inputs/x86-ymm-read.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/Inputs/x86-ymm-read.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/Inputs/x86-ymm-read.cpp (added)
+++ lldb/trunk/lit/Register/Inputs/x86-ymm-read.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,76 @@
+#include <cstdint>
+
+struct alignas(32) ymm_t {
+  uint64_t a, b, c, d;
+};
+
+int main() {
+  constexpr ymm_t ymm[] = {
+    { 0x0706050403020100, 0x0F0E0D0C0B0A0908,
+      0x1716151413121110, 0x1F1E1D1C1B1A1918, },
+    { 0x0807060504030201, 0x100F0E0D0C0B0A09,
+      0x1817161514131211, 0x201F1E1D1C1B1A19, },
+    { 0x0908070605040302, 0x11100F0E0D0C0B0A,
+      0x1918171615141312, 0x21201F1E1D1C1B1A, },
+    { 0x0A09080706050403, 0x1211100F0E0D0C0B,
+      0x1A19181716151413, 0x2221201F1E1D1C1B, },
+    { 0x0B0A090807060504, 0x131211100F0E0D0C,
+      0x1B1A191817161514, 0x232221201F1E1D1C, },
+    { 0x0C0B0A0908070605, 0x14131211100F0E0D,
+      0x1C1B1A1918171615, 0x24232221201F1E1D, },
+    { 0x0D0C0B0A09080706, 0x1514131211100F0E,
+      0x1D1C1B1A19181716, 0x2524232221201F1E, },
+    { 0x0E0D0C0B0A090807, 0x161514131211100F,
+      0x1E1D1C1B1A191817, 0x262524232221201F, },
+#if defined(__x86_64__) || defined(_M_X64)
+    { 0x0F0E0D0C0B0A0908, 0x1716151413121110,
+      0x1F1E1D1C1B1A1918, 0x2726252423222120, },
+    { 0x100F0E0D0C0B0A09, 0x1817161514131211,
+      0x201F1E1D1C1B1A19, 0x2827262524232221, },
+    { 0x11100F0E0D0C0B0A, 0x1918171615141312,
+      0x21201F1E1D1C1B1A, 0x2928272625242322, },
+    { 0x1211100F0E0D0C0B, 0x1A19181716151413,
+      0x2221201F1E1D1C1B, 0x2A29282726252423, },
+    { 0x131211100F0E0D0C, 0x1B1A191817161514,
+      0x232221201F1E1D1C, 0x2B2A292827262524, },
+    { 0x14131211100F0E0D, 0x1C1B1A1918171615,
+      0x24232221201F1E1D, 0x2C2B2A2928272625, },
+    { 0x1514131211100F0E, 0x1D1C1B1A19181716,
+      0x2524232221201F1E, 0x2D2C2B2A29282726, },
+    { 0x161514131211100F, 0x1E1D1C1B1A191817,
+      0x262524232221201F, 0x2E2D2C2B2A292827, },
+#endif
+  };
+
+  asm volatile(
+    "vmovaps  0x000(%0), %%ymm0\n\t"
+    "vmovaps  0x020(%0), %%ymm1\n\t"
+    "vmovaps  0x040(%0), %%ymm2\n\t"
+    "vmovaps  0x060(%0), %%ymm3\n\t"
+    "vmovaps  0x080(%0), %%ymm4\n\t"
+    "vmovaps  0x0A0(%0), %%ymm5\n\t"
+    "vmovaps  0x0C0(%0), %%ymm6\n\t"
+    "vmovaps  0x0E0(%0), %%ymm7\n\t"
+#if defined(__x86_64__) || defined(_M_X64)
+    "vmovaps  0x100(%0), %%ymm8\n\t"
+    "vmovaps  0x120(%0), %%ymm9\n\t"
+    "vmovaps  0x140(%0), %%ymm10\n\t"
+    "vmovaps  0x160(%0), %%ymm11\n\t"
+    "vmovaps  0x180(%0), %%ymm12\n\t"
+    "vmovaps  0x1A0(%0), %%ymm13\n\t"
+    "vmovaps  0x1C0(%0), %%ymm14\n\t"
+    "vmovaps  0x1E0(%0), %%ymm15\n\t"
+#endif
+    "\n\t"
+    "int3\n\t"
+    :
+    : "b"(ymm)
+    : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7"
+#if defined(__x86_64__) || defined(_M_X64)
+    , "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14",
+      "%ymm15"
+#endif
+  );
+
+  return 0;
+}

Added: lldb/trunk/lit/Register/Inputs/x86-ymm-write.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/Inputs/x86-ymm-write.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/Inputs/x86-ymm-write.cpp (added)
+++ lldb/trunk/lit/Register/Inputs/x86-ymm-write.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,75 @@
+#include <cinttypes>
+#include <cstdint>
+#include <cstdio>
+
+union alignas(32) ymm_t {
+  uint64_t as_uint64[4];
+  uint8_t as_uint8[32];
+};
+
+int main() {
+  constexpr ymm_t ymm_fill = {
+    .as_uint64 = { 0x0F0F0F0F0F0F0F0F, 0x0F0F0F0F0F0F0F0F,
+                   0x0F0F0F0F0F0F0F0F, 0x0F0F0F0F0F0F0F0F }
+  };
+
+  ymm_t ymm[16];
+
+  asm volatile(
+    "vmovaps  %1, %%ymm0\n\t"
+    "vmovaps  %1, %%ymm1\n\t"
+    "vmovaps  %1, %%ymm2\n\t"
+    "vmovaps  %1, %%ymm3\n\t"
+    "vmovaps  %1, %%ymm4\n\t"
+    "vmovaps  %1, %%ymm5\n\t"
+    "vmovaps  %1, %%ymm6\n\t"
+    "vmovaps  %1, %%ymm7\n\t"
+#if defined(__x86_64__) || defined(_M_X64)
+    "vmovaps  %1, %%ymm8\n\t"
+    "vmovaps  %1, %%ymm9\n\t"
+    "vmovaps  %1, %%ymm10\n\t"
+    "vmovaps  %1, %%ymm11\n\t"
+    "vmovaps  %1, %%ymm12\n\t"
+    "vmovaps  %1, %%ymm13\n\t"
+    "vmovaps  %1, %%ymm14\n\t"
+    "vmovaps  %1, %%ymm15\n\t"
+#endif
+    "\n\t"
+    "int3\n\t"
+    "\n\t"
+    "vmovaps %%ymm0,  0x000(%0)\n\t"
+    "vmovaps %%ymm1,  0x020(%0)\n\t"
+    "vmovaps %%ymm2,  0x040(%0)\n\t"
+    "vmovaps %%ymm3,  0x060(%0)\n\t"
+    "vmovaps %%ymm4,  0x080(%0)\n\t"
+    "vmovaps %%ymm5,  0x0A0(%0)\n\t"
+    "vmovaps %%ymm6,  0x0C0(%0)\n\t"
+    "vmovaps %%ymm7,  0x0E0(%0)\n\t"
+#if defined(__x86_64__) || defined(_M_X64)
+    "vmovaps %%ymm8,  0x100(%0)\n\t"
+    "vmovaps %%ymm9,  0x120(%0)\n\t"
+    "vmovaps %%ymm10, 0x140(%0)\n\t"
+    "vmovaps %%ymm11, 0x160(%0)\n\t"
+    "vmovaps %%ymm12, 0x180(%0)\n\t"
+    "vmovaps %%ymm13, 0x1A0(%0)\n\t"
+    "vmovaps %%ymm14, 0x1C0(%0)\n\t"
+    "vmovaps %%ymm15, 0x1E0(%0)\n\t"
+#endif
+    :
+    : "b"(ymm), "m"(ymm_fill)
+    : "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7"
+#if defined(__x86_64__) || defined(_M_X64)
+    , "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14",
+      "%ymm15"
+#endif
+  );
+
+  for (int i = 0; i < 16; ++i) {
+    printf("ymm%d = { ", i);
+    for (int j = 0; j < sizeof(ymm->as_uint8); ++j)
+      printf("0x%02x ", ymm[i].as_uint8[j]);
+    printf("}\n");
+  }
+
+  return 0;
+}

Added: lldb/trunk/lit/Register/Inputs/x86-zmm-read.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/Inputs/x86-zmm-read.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/Inputs/x86-zmm-read.cpp (added)
+++ lldb/trunk/lit/Register/Inputs/x86-zmm-read.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,190 @@
+#include <cstdint>
+
+struct alignas(64) zmm_t {
+  uint64_t a, b, c, d, e, f, g, h;
+};
+
+int main() {
+  constexpr zmm_t zmm[] = {
+    { 0x0706050403020100, 0x0F0E0D0C0B0A0908,
+      0x1716151413121110, 0x1F1E1D1C1B1A1918,
+      0x2726252423222120, 0x2F2E2D2C2B2A2928,
+      0x3736353433323130, 0x3F3E3D3C3B3A3938, },
+    { 0x0807060504030201, 0x100F0E0D0C0B0A09,
+      0x1817161514131211, 0x201F1E1D1C1B1A19,
+      0x2827262524232221, 0x302F2E2D2C2B2A29,
+      0x3837363534333231, 0x403F3E3D3C3B3A39, },
+    { 0x0908070605040302, 0x11100F0E0D0C0B0A,
+      0x1918171615141312, 0x21201F1E1D1C1B1A,
+      0x2928272625242322, 0x31302F2E2D2C2B2A,
+      0x3938373635343332, 0x41403F3E3D3C3B3A, },
+    { 0x0A09080706050403, 0x1211100F0E0D0C0B,
+      0x1A19181716151413, 0x2221201F1E1D1C1B,
+      0x2A29282726252423, 0x3231302F2E2D2C2B,
+      0x3A39383736353433, 0x4241403F3E3D3C3B, },
+    { 0x0B0A090807060504, 0x131211100F0E0D0C,
+      0x1B1A191817161514, 0x232221201F1E1D1C,
+      0x2B2A292827262524, 0x333231302F2E2D2C,
+      0x3B3A393837363534, 0x434241403F3E3D3C, },
+    { 0x0C0B0A0908070605, 0x14131211100F0E0D,
+      0x1C1B1A1918171615, 0x24232221201F1E1D,
+      0x2C2B2A2928272625, 0x34333231302F2E2D,
+      0x3C3B3A3938373635, 0x44434241403F3E3D, },
+    { 0x0D0C0B0A09080706, 0x1514131211100F0E,
+      0x1D1C1B1A19181716, 0x2524232221201F1E,
+      0x2D2C2B2A29282726, 0x3534333231302F2E,
+      0x3D3C3B3A39383736, 0x4544434241403F3E, },
+    { 0x0E0D0C0B0A090807, 0x161514131211100F,
+      0x1E1D1C1B1A191817, 0x262524232221201F,
+      0x2E2D2C2B2A292827, 0x363534333231302F,
+      0x3E3D3C3B3A393837, 0x464544434241403F, },
+#if defined(__x86_64__) || defined(_M_X64)
+    { 0x0F0E0D0C0B0A0908, 0x1716151413121110,
+      0x1F1E1D1C1B1A1918, 0x2726252423222120,
+      0x2F2E2D2C2B2A2928, 0x3736353433323130,
+      0x3F3E3D3C3B3A3938, 0x4746454443424140, },
+    { 0x100F0E0D0C0B0A09, 0x1817161514131211,
+      0x201F1E1D1C1B1A19, 0x2827262524232221,
+      0x302F2E2D2C2B2A29, 0x3837363534333231,
+      0x403F3E3D3C3B3A39, 0x4847464544434241, },
+    { 0x11100F0E0D0C0B0A, 0x1918171615141312,
+      0x21201F1E1D1C1B1A, 0x2928272625242322,
+      0x31302F2E2D2C2B2A, 0x3938373635343332,
+      0x41403F3E3D3C3B3A, 0x4948474645444342, },
+    { 0x1211100F0E0D0C0B, 0x1A19181716151413,
+      0x2221201F1E1D1C1B, 0x2A29282726252423,
+      0x3231302F2E2D2C2B, 0x3A39383736353433,
+      0x4241403F3E3D3C3B, 0x4A49484746454443, },
+    { 0x131211100F0E0D0C, 0x1B1A191817161514,
+      0x232221201F1E1D1C, 0x2B2A292827262524,
+      0x333231302F2E2D2C, 0x3B3A393837363534,
+      0x434241403F3E3D3C, 0x4B4A494847464544, },
+    { 0x14131211100F0E0D, 0x1C1B1A1918171615,
+      0x24232221201F1E1D, 0x2C2B2A2928272625,
+      0x34333231302F2E2D, 0x3C3B3A3938373635,
+      0x44434241403F3E3D, 0x4C4B4A4948474645, },
+    { 0x1514131211100F0E, 0x1D1C1B1A19181716,
+      0x2524232221201F1E, 0x2D2C2B2A29282726,
+      0x3534333231302F2E, 0x3D3C3B3A39383736,
+      0x4544434241403F3E, 0x4D4C4B4A49484746, },
+    { 0x161514131211100F, 0x1E1D1C1B1A191817,
+      0x262524232221201F, 0x2E2D2C2B2A292827,
+      0x363534333231302F, 0x3E3D3C3B3A393837,
+      0x464544434241403F, 0x4E4D4C4B4A494847, },
+    { 0x1716151413121110, 0x1F1E1D1C1B1A1918,
+      0x2726252423222120, 0x2F2E2D2C2B2A2928,
+      0x3736353433323130, 0x3F3E3D3C3B3A3938,
+      0x4746454443424140, 0x4F4E4D4C4B4A4948, },
+    { 0x1817161514131211, 0x201F1E1D1C1B1A19,
+      0x2827262524232221, 0x302F2E2D2C2B2A29,
+      0x3837363534333231, 0x403F3E3D3C3B3A39,
+      0x4847464544434241, 0x504F4E4D4C4B4A49, },
+    { 0x1918171615141312, 0x21201F1E1D1C1B1A,
+      0x2928272625242322, 0x31302F2E2D2C2B2A,
+      0x3938373635343332, 0x41403F3E3D3C3B3A,
+      0x4948474645444342, 0x51504F4E4D4C4B4A, },
+    { 0x1A19181716151413, 0x2221201F1E1D1C1B,
+      0x2A29282726252423, 0x3231302F2E2D2C2B,
+      0x3A39383736353433, 0x4241403F3E3D3C3B,
+      0x4A49484746454443, 0x5251504F4E4D4C4B, },
+    { 0x1B1A191817161514, 0x232221201F1E1D1C,
+      0x2B2A292827262524, 0x333231302F2E2D2C,
+      0x3B3A393837363534, 0x434241403F3E3D3C,
+      0x4B4A494847464544, 0x535251504F4E4D4C, },
+    { 0x1C1B1A1918171615, 0x24232221201F1E1D,
+      0x2C2B2A2928272625, 0x34333231302F2E2D,
+      0x3C3B3A3938373635, 0x44434241403F3E3D,
+      0x4C4B4A4948474645, 0x54535251504F4E4D, },
+    { 0x1D1C1B1A19181716, 0x2524232221201F1E,
+      0x2D2C2B2A29282726, 0x3534333231302F2E,
+      0x3D3C3B3A39383736, 0x4544434241403F3E,
+      0x4D4C4B4A49484746, 0x5554535251504F4E, },
+    { 0x1E1D1C1B1A191817, 0x262524232221201F,
+      0x2E2D2C2B2A292827, 0x363534333231302F,
+      0x3E3D3C3B3A393837, 0x464544434241403F,
+      0x4E4D4C4B4A494847, 0x565554535251504F, },
+    { 0x1F1E1D1C1B1A1918, 0x2726252423222120,
+      0x2F2E2D2C2B2A2928, 0x3736353433323130,
+      0x3F3E3D3C3B3A3938, 0x4746454443424140,
+      0x4F4E4D4C4B4A4948, 0x5756555453525150, },
+    { 0x201F1E1D1C1B1A19, 0x2827262524232221,
+      0x302F2E2D2C2B2A29, 0x3837363534333231,
+      0x403F3E3D3C3B3A39, 0x4847464544434241,
+      0x504F4E4D4C4B4A49, 0x5857565554535251, },
+    { 0x21201F1E1D1C1B1A, 0x2928272625242322,
+      0x31302F2E2D2C2B2A, 0x3938373635343332,
+      0x41403F3E3D3C3B3A, 0x4948474645444342,
+      0x51504F4E4D4C4B4A, 0x5958575655545352, },
+    { 0x2221201F1E1D1C1B, 0x2A29282726252423,
+      0x3231302F2E2D2C2B, 0x3A39383736353433,
+      0x4241403F3E3D3C3B, 0x4A49484746454443,
+      0x5251504F4E4D4C4B, 0x5A59585756555453, },
+    { 0x232221201F1E1D1C, 0x2B2A292827262524,
+      0x333231302F2E2D2C, 0x3B3A393837363534,
+      0x434241403F3E3D3C, 0x4B4A494847464544,
+      0x535251504F4E4D4C, 0x5B5A595857565554, },
+    { 0x24232221201F1E1D, 0x2C2B2A2928272625,
+      0x34333231302F2E2D, 0x3C3B3A3938373635,
+      0x44434241403F3E3D, 0x4C4B4A4948474645,
+      0x54535251504F4E4D, 0x5C5B5A5958575655, },
+    { 0x2524232221201F1E, 0x2D2C2B2A29282726,
+      0x3534333231302F2E, 0x3D3C3B3A39383736,
+      0x4544434241403F3E, 0x4D4C4B4A49484746,
+      0x5554535251504F4E, 0x5D5C5B5A59585756, },
+    { 0x262524232221201F, 0x2E2D2C2B2A292827,
+      0x363534333231302F, 0x3E3D3C3B3A393837,
+      0x464544434241403F, 0x4E4D4C4B4A494847,
+      0x565554535251504F, 0x5E5D5C5B5A595857, },
+#endif
+  };
+
+  asm volatile(
+    "vmovaps  0x000(%0), %%zmm0\n\t"
+    "vmovaps  0x040(%0), %%zmm1\n\t"
+    "vmovaps  0x080(%0), %%zmm2\n\t"
+    "vmovaps  0x0C0(%0), %%zmm3\n\t"
+    "vmovaps  0x100(%0), %%zmm4\n\t"
+    "vmovaps  0x140(%0), %%zmm5\n\t"
+    "vmovaps  0x180(%0), %%zmm6\n\t"
+    "vmovaps  0x1C0(%0), %%zmm7\n\t"
+#if defined(__x86_64__) || defined(_M_X64)
+    "vmovaps  0x200(%0), %%zmm8\n\t"
+    "vmovaps  0x240(%0), %%zmm9\n\t"
+    "vmovaps  0x280(%0), %%zmm10\n\t"
+    "vmovaps  0x2C0(%0), %%zmm11\n\t"
+    "vmovaps  0x300(%0), %%zmm12\n\t"
+    "vmovaps  0x340(%0), %%zmm13\n\t"
+    "vmovaps  0x380(%0), %%zmm14\n\t"
+    "vmovaps  0x3C0(%0), %%zmm15\n\t"
+    "vmovaps  0x400(%0), %%zmm16\n\t"
+    "vmovaps  0x440(%0), %%zmm17\n\t"
+    "vmovaps  0x480(%0), %%zmm18\n\t"
+    "vmovaps  0x4C0(%0), %%zmm19\n\t"
+    "vmovaps  0x500(%0), %%zmm20\n\t"
+    "vmovaps  0x540(%0), %%zmm21\n\t"
+    "vmovaps  0x580(%0), %%zmm22\n\t"
+    "vmovaps  0x5C0(%0), %%zmm23\n\t"
+    "vmovaps  0x600(%0), %%zmm24\n\t"
+    "vmovaps  0x640(%0), %%zmm25\n\t"
+    "vmovaps  0x680(%0), %%zmm26\n\t"
+    "vmovaps  0x6C0(%0), %%zmm27\n\t"
+    "vmovaps  0x700(%0), %%zmm28\n\t"
+    "vmovaps  0x740(%0), %%zmm29\n\t"
+    "vmovaps  0x780(%0), %%zmm30\n\t"
+    "vmovaps  0x7C0(%0), %%zmm31\n\t"
+#endif
+    "\n\t"
+    "int3\n\t"
+    :
+    : "b"(zmm)
+    : "%zmm0", "%zmm1", "%zmm2", "%zmm3", "%zmm4", "%zmm5", "%zmm6", "%zmm7"
+#if defined(__x86_64__) || defined(_M_X64)
+    , "%zmm8", "%zmm9", "%zmm10", "%zmm11", "%zmm12", "%zmm13", "%zmm14",
+      "%zmm15", "%zmm16", "%zmm17", "%zmm18", "%zmm19", "%zmm20", "%zmm21",
+      "%zmm22", "%zmm23", "%zmm24", "%zmm25", "%zmm26", "%zmm27", "%zmm28",
+      "%zmm29", "%zmm30", "%zmm31"
+#endif
+  );
+
+  return 0;
+}

Added: lldb/trunk/lit/Register/Inputs/x86-zmm-write.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/Inputs/x86-zmm-write.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/Inputs/x86-zmm-write.cpp (added)
+++ lldb/trunk/lit/Register/Inputs/x86-zmm-write.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,111 @@
+#include <cinttypes>
+#include <cstdint>
+#include <cstdio>
+
+union alignas(64) zmm_t {
+  uint64_t as_uint64[8];
+  uint8_t as_uint8[64];
+};
+
+int main() {
+  constexpr zmm_t zmm_fill = {
+    .as_uint64 = { 0x0F0F0F0F0F0F0F0F, 0x0F0F0F0F0F0F0F0F,
+                   0x0F0F0F0F0F0F0F0F, 0x0F0F0F0F0F0F0F0F,
+                   0x0F0F0F0F0F0F0F0F, 0x0F0F0F0F0F0F0F0F,
+                   0x0F0F0F0F0F0F0F0F, 0x0F0F0F0F0F0F0F0F }
+  };
+
+  zmm_t zmm[32];
+
+  asm volatile(
+    "vmovaps  %1, %%zmm0\n\t"
+    "vmovaps  %1, %%zmm1\n\t"
+    "vmovaps  %1, %%zmm2\n\t"
+    "vmovaps  %1, %%zmm3\n\t"
+    "vmovaps  %1, %%zmm4\n\t"
+    "vmovaps  %1, %%zmm5\n\t"
+    "vmovaps  %1, %%zmm6\n\t"
+    "vmovaps  %1, %%zmm7\n\t"
+#if defined(__x86_64__) || defined(_M_X64)
+    "vmovaps  %1, %%zmm8\n\t"
+    "vmovaps  %1, %%zmm9\n\t"
+    "vmovaps  %1, %%zmm10\n\t"
+    "vmovaps  %1, %%zmm11\n\t"
+    "vmovaps  %1, %%zmm12\n\t"
+    "vmovaps  %1, %%zmm13\n\t"
+    "vmovaps  %1, %%zmm14\n\t"
+    "vmovaps  %1, %%zmm15\n\t"
+    "vmovaps  %1, %%zmm16\n\t"
+    "vmovaps  %1, %%zmm17\n\t"
+    "vmovaps  %1, %%zmm18\n\t"
+    "vmovaps  %1, %%zmm19\n\t"
+    "vmovaps  %1, %%zmm20\n\t"
+    "vmovaps  %1, %%zmm21\n\t"
+    "vmovaps  %1, %%zmm22\n\t"
+    "vmovaps  %1, %%zmm23\n\t"
+    "vmovaps  %1, %%zmm24\n\t"
+    "vmovaps  %1, %%zmm25\n\t"
+    "vmovaps  %1, %%zmm26\n\t"
+    "vmovaps  %1, %%zmm27\n\t"
+    "vmovaps  %1, %%zmm28\n\t"
+    "vmovaps  %1, %%zmm29\n\t"
+    "vmovaps  %1, %%zmm30\n\t"
+    "vmovaps  %1, %%zmm31\n\t"
+#endif
+    "\n\t"
+    "int3\n\t"
+    "\n\t"
+    "vmovaps %%zmm0,  0x000(%0)\n\t"
+    "vmovaps %%zmm1,  0x040(%0)\n\t"
+    "vmovaps %%zmm2,  0x080(%0)\n\t"
+    "vmovaps %%zmm3,  0x0C0(%0)\n\t"
+    "vmovaps %%zmm4,  0x100(%0)\n\t"
+    "vmovaps %%zmm5,  0x140(%0)\n\t"
+    "vmovaps %%zmm6,  0x180(%0)\n\t"
+    "vmovaps %%zmm7,  0x1C0(%0)\n\t"
+#if defined(__x86_64__) || defined(_M_X64)
+    "vmovaps %%zmm8,  0x200(%0)\n\t"
+    "vmovaps %%zmm9,  0x240(%0)\n\t"
+    "vmovaps %%zmm10, 0x280(%0)\n\t"
+    "vmovaps %%zmm11, 0x2C0(%0)\n\t"
+    "vmovaps %%zmm12, 0x300(%0)\n\t"
+    "vmovaps %%zmm13, 0x340(%0)\n\t"
+    "vmovaps %%zmm14, 0x380(%0)\n\t"
+    "vmovaps %%zmm15, 0x3C0(%0)\n\t"
+    "vmovaps %%zmm16, 0x400(%0)\n\t"
+    "vmovaps %%zmm17, 0x440(%0)\n\t"
+    "vmovaps %%zmm18, 0x480(%0)\n\t"
+    "vmovaps %%zmm19, 0x4C0(%0)\n\t"
+    "vmovaps %%zmm20, 0x500(%0)\n\t"
+    "vmovaps %%zmm21, 0x540(%0)\n\t"
+    "vmovaps %%zmm22, 0x580(%0)\n\t"
+    "vmovaps %%zmm23, 0x5C0(%0)\n\t"
+    "vmovaps %%zmm24, 0x600(%0)\n\t"
+    "vmovaps %%zmm25, 0x640(%0)\n\t"
+    "vmovaps %%zmm26, 0x680(%0)\n\t"
+    "vmovaps %%zmm27, 0x6C0(%0)\n\t"
+    "vmovaps %%zmm28, 0x700(%0)\n\t"
+    "vmovaps %%zmm29, 0x740(%0)\n\t"
+    "vmovaps %%zmm30, 0x780(%0)\n\t"
+    "vmovaps %%zmm31, 0x7C0(%0)\n\t"
+#endif
+    :
+    : "b"(zmm), "m"(zmm_fill)
+    : "%zmm0", "%zmm1", "%zmm2", "%zmm3", "%zmm4", "%zmm5", "%zmm6", "%zmm7"
+#if defined(__x86_64__) || defined(_M_X64)
+    , "%zmm8", "%zmm9", "%zmm10", "%zmm11", "%zmm12", "%zmm13", "%zmm14",
+      "%zmm15", "%zmm16", "%zmm17", "%zmm18", "%zmm19", "%zmm20", "%zmm21",
+      "%zmm22", "%zmm23", "%zmm24", "%zmm25", "%zmm26", "%zmm27", "%zmm28",
+      "%zmm29", "%zmm30", "%zmm31"
+#endif
+  );
+
+  for (int i = 0; i < 32; ++i) {
+    printf("zmm%d = { ", i);
+    for (int j = 0; j < sizeof(zmm->as_uint8); ++j)
+      printf("0x%02x ", zmm[i].as_uint8[j]);
+    printf("}\n");
+  }
+
+  return 0;
+}

Added: lldb/trunk/lit/Register/x86-64-gp-read.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/x86-64-gp-read.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/x86-64-gp-read.test (added)
+++ lldb/trunk/lit/Register/x86-64-gp-read.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,42 @@
+# XFAIL: system-windows
+# REQUIRES: native && target-x86_64
+# RUN: %clangxx -fomit-frame-pointer %p/Inputs/x86-64-gp-read.cpp -o %t
+# RUN: %lldb -b -s %s %t | FileCheck %s
+process launch
+
+register read --all
+# CHECK-DAG: rax = 0x0102030405060708
+# CHECK-DAG: rbx = 0x1112131415161718
+# CHECK-DAG: rcx = 0x2122232425262728
+# CHECK-DAG: rdx = 0x3132333435363738
+# CHECK-DAG: rdi = 0x7172737475767778
+# CHECK-DAG: rsi = 0x6162636465666768
+# CHECK-DAG: rbp = 0x5152535455565758
+# CHECK-DAG: rsp = 0x4142434445464748
+# CHECK-DAG: eax = 0x05060708
+# CHECK-DAG: ebx = 0x15161718
+# CHECK-DAG: ecx = 0x25262728
+# CHECK-DAG: edx = 0x35363738
+# CHECK-DAG: edi = 0x75767778
+# CHECK-DAG: esi = 0x65666768
+# CHECK-DAG: ebp = 0x55565758
+# CHECK-DAG: esp = 0x45464748
+# CHECK-DAG: ax = 0x0708
+# CHECK-DAG: bx = 0x1718
+# CHECK-DAG: cx = 0x2728
+# CHECK-DAG: dx = 0x3738
+# CHECK-DAG: di = 0x7778
+# CHECK-DAG: si = 0x6768
+# CHECK-DAG: bp = 0x5758
+# CHECK-DAG: sp = 0x4748
+# CHECK-DAG: ah = 0x07
+# CHECK-DAG: bh = 0x17
+# CHECK-DAG: ch = 0x27
+# CHECK-DAG: dh = 0x37
+# CHECK-DAG: al = 0x08
+# CHECK-DAG: bl = 0x18
+# CHECK-DAG: cl = 0x28
+# CHECK-DAG: dl = 0x38
+
+process continue
+# CHECK: Process {{[0-9]+}} exited with status = 0

Added: lldb/trunk/lit/Register/x86-64-gp-write.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/x86-64-gp-write.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/x86-64-gp-write.test (added)
+++ lldb/trunk/lit/Register/x86-64-gp-write.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,26 @@
+# UNSUPPORTED: system-darwin
+# REQUIRES: native && target-x86_64
+# RUN: %clangxx -fomit-frame-pointer %p/Inputs/x86-64-gp-write.cpp -o %t
+# RUN: %lldb -b -s %s %t | FileCheck %s
+process launch
+
+register write rax 0x0102030405060708
+register write rbx 0x1112131415161718
+register write rcx 0x2122232425262728
+register write rdx 0x3132333435363738
+register write rsp 0x4142434445464748
+register write rbp 0x5152535455565758
+register write rsi 0x6162636465666768
+register write rdi 0x7172737475767778
+
+process continue
+# CHECK-DAG: rax = 0x0102030405060708
+# CHECK-DAG: rbx = 0x1112131415161718
+# CHECK-DAG: rcx = 0x2122232425262728
+# CHECK-DAG: rdx = 0x3132333435363738
+# CHECK-DAG: rsp = 0x4142434445464748
+# CHECK-DAG: rbp = 0x5152535455565758
+# CHECK-DAG: rsi = 0x6162636465666768
+# CHECK-DAG: rdi = 0x7172737475767778
+
+# CHECK: Process {{[0-9]+}} exited with status = 0

Added: lldb/trunk/lit/Register/x86-64-read.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/x86-64-read.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/x86-64-read.test (added)
+++ lldb/trunk/lit/Register/x86-64-read.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,51 @@
+# XFAIL: system-windows
+# REQUIRES: native && target-x86_64
+# RUN: %clangxx %p/Inputs/x86-64-read.cpp -o %t
+# RUN: %lldb -b -s %s %t | FileCheck %s
+process launch
+
+register read --all
+# CHECK-DAG: r8 = 0x0001020304050607
+# CHECK-DAG: r9 = 0x1011121314151617
+# CHECK-DAG: r10 = 0x2021222324252627
+# CHECK-DAG: r11 = 0x3031323334353637
+# CHECK-DAG: r12 = 0x4041424344454647
+# CHECK-DAG: r13 = 0x5051525354555657
+# CHECK-DAG: r14 = 0x6061626364656667
+# CHECK-DAG: r15 = 0x7071727374757677
+# CHECK-DAG: r8d = 0x04050607
+# CHECK-DAG: r9d = 0x14151617
+# CHECK-DAG: r10d = 0x24252627
+# CHECK-DAG: r11d = 0x34353637
+# CHECK-DAG: r12d = 0x44454647
+# CHECK-DAG: r13d = 0x54555657
+# CHECK-DAG: r14d = 0x64656667
+# CHECK-DAG: r15d = 0x74757677
+# CHECK-DAG: r8w = 0x0607
+# CHECK-DAG: r9w = 0x1617
+# CHECK-DAG: r10w = 0x2627
+# CHECK-DAG: r11w = 0x3637
+# CHECK-DAG: r12w = 0x4647
+# CHECK-DAG: r13w = 0x5657
+# CHECK-DAG: r14w = 0x6667
+# CHECK-DAG: r15w = 0x7677
+# CHECK-DAG: r8l = 0x07
+# CHECK-DAG: r9l = 0x17
+# CHECK-DAG: r10l = 0x27
+# CHECK-DAG: r11l = 0x37
+# CHECK-DAG: r12l = 0x47
+# CHECK-DAG: r13l = 0x57
+# CHECK-DAG: r14l = 0x67
+# CHECK-DAG: r15l = 0x77
+
+# CHECK-DAG: xmm8 = {0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17}
+# CHECK-DAG: xmm9 = {0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18}
+# CHECK-DAG: xmm10 = {0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19}
+# CHECK-DAG: xmm11 = {0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a}
+# CHECK-DAG: xmm12 = {0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b}
+# CHECK-DAG: xmm13 = {0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c}
+# CHECK-DAG: xmm14 = {0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d}
+# CHECK-DAG: xmm15 = {0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e}
+
+process continue
+# CHECK: Process {{[0-9]+}} exited with status = 0

Added: lldb/trunk/lit/Register/x86-64-write.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/x86-64-write.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/x86-64-write.test (added)
+++ lldb/trunk/lit/Register/x86-64-write.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,47 @@
+# XFAIL: system-darwin
+# XFAIL: system-windows
+# REQUIRES: native && (target-x86 || target-x86_64) && native-cpu-sse
+# RUN: %clangxx %p/Inputs/x86-64-write.cpp -o %t
+# RUN: %lldb -b -s %s %t | FileCheck %s
+process launch
+
+register write r8 0x0001020304050607
+register write r9 0x1011121314151617
+register write r10 0x2021222324252627
+register write r11 0x3031323334353637
+register write r12 0x4041424344454647
+register write r13 0x5051525354555657
+register write r14 0x6061626364656667
+register write r15 0x7071727374757677
+
+register write xmm8 "{0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17}"
+register write xmm9 "{0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18}"
+register write xmm10 "{0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19}"
+register write xmm11 "{0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a}"
+register write xmm12 "{0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b}"
+register write xmm13 "{0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c}"
+register write xmm14 "{0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d}"
+register write xmm15 "{0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e}"
+
+process continue
+# CHECK: process continue
+
+# CHECK-DAG: r8 = 0x0001020304050607
+# CHECK-DAG: r9 = 0x1011121314151617
+# CHECK-DAG: r10 = 0x2021222324252627
+# CHECK-DAG: r11 = 0x3031323334353637
+# CHECK-DAG: r12 = 0x4041424344454647
+# CHECK-DAG: r13 = 0x5051525354555657
+# CHECK-DAG: r14 = 0x6061626364656667
+# CHECK-DAG: r15 = 0x7071727374757677
+
+# CHECK-DAG: xmm8 = { 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 }
+# CHECK-DAG: xmm9 = { 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 }
+# CHECK-DAG: xmm10 = { 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 }
+# CHECK-DAG: xmm11 = { 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a }
+# CHECK-DAG: xmm12 = { 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b }
+# CHECK-DAG: xmm13 = { 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c }
+# CHECK-DAG: xmm14 = { 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d }
+# CHECK-DAG: xmm15 = { 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e }
+
+# CHECK: Process {{[0-9]+}} exited with status = 0

Added: lldb/trunk/lit/Register/x86-64-xmm16-read.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/x86-64-xmm16-read.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/x86-64-xmm16-read.test (added)
+++ lldb/trunk/lit/Register/x86-64-xmm16-read.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,30 @@
+# XFAIL: system-freebsd
+# XFAIL: system-linux
+# XFAIL: system-netbsd
+# XFAIL: system-windows
+# XFAIL: system-darwin
+# REQUIRES: native && target-x86_64 && native-cpu-avx512f
+# RUN: %clangxx %p/Inputs/x86-zmm-read.cpp -o %t
+# RUN: %lldb -b -s %s %t | FileCheck %s
+process launch
+
+register read --all
+# CHECK-DAG: xmm16 = {0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f}
+# CHECK-DAG: xmm17 = {0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20}
+# CHECK-DAG: xmm18 = {0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21}
+# CHECK-DAG: xmm19 = {0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22}
+# CHECK-DAG: xmm20 = {0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23}
+# CHECK-DAG: xmm21 = {0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24}
+# CHECK-DAG: xmm22 = {0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25}
+# CHECK-DAG: xmm23 = {0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26}
+# CHECK-DAG: xmm24 = {0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27}
+# CHECK-DAG: xmm25 = {0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28}
+# CHECK-DAG: xmm26 = {0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29}
+# CHECK-DAG: xmm27 = {0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a}
+# CHECK-DAG: xmm28 = {0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b}
+# CHECK-DAG: xmm29 = {0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c}
+# CHECK-DAG: xmm30 = {0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d}
+# CHECK-DAG: xmm31 = {0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e}
+
+process continue
+# CHECK: Process {{[0-9]+}} exited with status = 0

Added: lldb/trunk/lit/Register/x86-64-xmm16-write.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/x86-64-xmm16-write.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/x86-64-xmm16-write.test (added)
+++ lldb/trunk/lit/Register/x86-64-xmm16-write.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,48 @@
+# XFAIL: system-darwin
+# XFAIL: system-freebsd
+# XFAIL: system-linux
+# XFAIL: system-netbsd
+# XFAIL: system-windows
+# REQUIRES: native && target-x86 && native-cpu-avx512f
+# RUN: %clangxx %p/Inputs/x86-zmm-write.cpp -o %t
+# RUN: %lldb -b -s %s %t | FileCheck %s
+process launch
+
+register write xmm16 "{0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f}"
+register write xmm17 "{0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20}"
+register write xmm18 "{0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21}"
+register write xmm19 "{0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22}"
+register write xmm20 "{0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23}"
+register write xmm21 "{0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24}"
+register write xmm22 "{0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25}"
+register write xmm23 "{0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26}"
+register write xmm24 "{0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27}"
+register write xmm25 "{0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28}"
+register write xmm26 "{0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29}"
+register write xmm27 "{0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a}"
+register write xmm28 "{0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b}"
+register write xmm29 "{0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c}"
+register write xmm30 "{0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d}"
+register write xmm31 "{0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e}"
+
+process continue
+# CHECK: process continue
+
+# CHECK-DAG: zmm16 = { 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm17 = { 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm18 = { 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm19 = { 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm20 = { 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm21 = { 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm22 = { 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm23 = { 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm24 = { 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm25 = { 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm26 = { 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm27 = { 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm28 = { 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm29 = { 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm30 = { 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm31 = { 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+
+# CHECK: Process {{[0-9]+}} exited with status = 0

Added: lldb/trunk/lit/Register/x86-64-ymm-read.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/x86-64-ymm-read.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/x86-64-ymm-read.test (added)
+++ lldb/trunk/lit/Register/x86-64-ymm-read.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,43 @@
+# XFAIL: system-windows
+# REQUIRES: native && target-x86_64 && native-cpu-avx
+# RUN: %clangxx %p/Inputs/x86-ymm-read.cpp -o %t
+# RUN: %lldb -b -s %s %t | FileCheck %s
+process launch
+
+register read --all
+# CHECK-DAG: xmm0 = {0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f}
+# CHECK-DAG: xmm1 = {0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10}
+# CHECK-DAG: xmm2 = {0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11}
+# CHECK-DAG: xmm3 = {0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12}
+# CHECK-DAG: xmm4 = {0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13}
+# CHECK-DAG: xmm5 = {0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14}
+# CHECK-DAG: xmm6 = {0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15}
+# CHECK-DAG: xmm7 = {0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16}
+# CHECK-DAG: xmm8 = {0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17}
+# CHECK-DAG: xmm9 = {0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18}
+# CHECK-DAG: xmm10 = {0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19}
+# CHECK-DAG: xmm11 = {0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a}
+# CHECK-DAG: xmm12 = {0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b}
+# CHECK-DAG: xmm13 = {0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c}
+# CHECK-DAG: xmm14 = {0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d}
+# CHECK-DAG: xmm15 = {0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e}
+
+# CHECK-DAG: ymm0 = {0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f}
+# CHECK-DAG: ymm1 = {0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20}
+# CHECK-DAG: ymm2 = {0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21}
+# CHECK-DAG: ymm3 = {0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22}
+# CHECK-DAG: ymm4 = {0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23}
+# CHECK-DAG: ymm5 = {0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24}
+# CHECK-DAG: ymm6 = {0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25}
+# CHECK-DAG: ymm7 = {0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26}
+# CHECK-DAG: ymm8 = {0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27}
+# CHECK-DAG: ymm9 = {0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28}
+# CHECK-DAG: ymm10 = {0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29}
+# CHECK-DAG: ymm11 = {0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a}
+# CHECK-DAG: ymm12 = {0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b}
+# CHECK-DAG: ymm13 = {0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c}
+# CHECK-DAG: ymm14 = {0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d}
+# CHECK-DAG: ymm15 = {0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e}
+
+process continue
+# CHECK: Process {{[0-9]+}} exited with status = 0

Added: lldb/trunk/lit/Register/x86-64-ymm-write.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/x86-64-ymm-write.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/x86-64-ymm-write.test (added)
+++ lldb/trunk/lit/Register/x86-64-ymm-write.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,45 @@
+# XFAIL: system-darwin
+# XFAIL: system-windows
+# REQUIRES: native && target-x86_64 && native-cpu-avx
+# RUN: %clangxx %p/Inputs/x86-ymm-write.cpp -o %t
+# RUN: %lldb -b -s %s %t | FileCheck %s
+process launch
+
+register write ymm0 "{0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f}"
+register write ymm1 "{0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20}"
+register write ymm2 "{0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21}"
+register write ymm3 "{0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22}"
+register write ymm4 "{0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23}"
+register write ymm5 "{0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24}"
+register write ymm6 "{0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25}"
+register write ymm7 "{0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26}"
+register write ymm8 "{0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27}"
+register write ymm9 "{0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28}"
+register write ymm10 "{0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29}"
+register write ymm11 "{0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a}"
+register write ymm12 "{0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b}"
+register write ymm13 "{0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c}"
+register write ymm14 "{0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d}"
+register write ymm15 "{0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e}"
+
+process continue
+# CHECK: process continue
+
+# CHECK-DAG: ymm0 = { 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f }
+# CHECK-DAG: ymm1 = { 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 }
+# CHECK-DAG: ymm2 = { 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 }
+# CHECK-DAG: ymm3 = { 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 }
+# CHECK-DAG: ymm4 = { 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 }
+# CHECK-DAG: ymm5 = { 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 }
+# CHECK-DAG: ymm6 = { 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 }
+# CHECK-DAG: ymm7 = { 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 }
+# CHECK-DAG: ymm8 = { 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 }
+# CHECK-DAG: ymm9 = { 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 }
+# CHECK-DAG: ymm10 = { 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 }
+# CHECK-DAG: ymm11 = { 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a }
+# CHECK-DAG: ymm12 = { 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b }
+# CHECK-DAG: ymm13 = { 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c }
+# CHECK-DAG: ymm14 = { 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d }
+# CHECK-DAG: ymm15 = { 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e }
+
+# CHECK: Process {{[0-9]+}} exited with status = 0

Added: lldb/trunk/lit/Register/x86-64-ymm16-read.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/x86-64-ymm16-read.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/x86-64-ymm16-read.test (added)
+++ lldb/trunk/lit/Register/x86-64-ymm16-read.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,30 @@
+# XFAIL: system-freebsd
+# XFAIL: system-linux
+# XFAIL: system-netbsd
+# XFAIL: system-windows
+# XFAIL: system-darwin
+# REQUIRES: native && target-x86_64 && native-cpu-avx512f
+# RUN: %clangxx %p/Inputs/x86-zmm-read.cpp -o %t
+# RUN: %lldb -b -s %s %t | FileCheck %s
+process launch
+
+register read --all
+# CHECK-DAG: ymm16 = {0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f}
+# CHECK-DAG: ymm17 = {0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30}
+# CHECK-DAG: ymm18 = {0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31}
+# CHECK-DAG: ymm19 = {0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32}
+# CHECK-DAG: ymm20 = {0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33}
+# CHECK-DAG: ymm21 = {0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34}
+# CHECK-DAG: ymm22 = {0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35}
+# CHECK-DAG: ymm23 = {0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36}
+# CHECK-DAG: ymm24 = {0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37}
+# CHECK-DAG: ymm25 = {0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38}
+# CHECK-DAG: ymm26 = {0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39}
+# CHECK-DAG: ymm27 = {0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a}
+# CHECK-DAG: ymm28 = {0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b}
+# CHECK-DAG: ymm29 = {0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c}
+# CHECK-DAG: ymm30 = {0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d}
+# CHECK-DAG: ymm31 = {0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e}
+
+process continue
+# CHECK: Process {{[0-9]+}} exited with status = 0

Added: lldb/trunk/lit/Register/x86-64-ymm16-write.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/x86-64-ymm16-write.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/x86-64-ymm16-write.test (added)
+++ lldb/trunk/lit/Register/x86-64-ymm16-write.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,48 @@
+# XFAIL: system-darwin
+# XFAIL: system-freebsd
+# XFAIL: system-linux
+# XFAIL: system-netbsd
+# XFAIL: system-windows
+# REQUIRES: native && target-x86 && native-cpu-avx512f
+# RUN: %clangxx %p/Inputs/x86-zmm-write.cpp -o %t
+# RUN: %lldb -b -s %s %t | FileCheck %s
+process launch
+
+register write ymm16 "{0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f}"
+register write ymm17 "{0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30}"
+register write ymm18 "{0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31}"
+register write ymm19 "{0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32}"
+register write ymm20 "{0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33}"
+register write ymm21 "{0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34}"
+register write ymm22 "{0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35}"
+register write ymm23 "{0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36}"
+register write ymm24 "{0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37}"
+register write ymm25 "{0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38}"
+register write ymm26 "{0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39}"
+register write ymm27 "{0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a}"
+register write ymm28 "{0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b}"
+register write ymm29 "{0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c}"
+register write ymm30 "{0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d}"
+register write ymm31 "{0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e}"
+
+process continue
+# CHECK: process continue
+
+# CHECK-DAG: zmm16 = { 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm17 = { 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm18 = { 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm19 = { 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm20 = { 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm21 = { 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm22 = { 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm23 = { 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm24 = { 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm25 = { 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm26 = { 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm27 = { 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm28 = { 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm29 = { 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm30 = { 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+# CHECK-DAG: zmm31 = { 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 }
+
+# CHECK: Process {{[0-9]+}} exited with status = 0

Added: lldb/trunk/lit/Register/x86-64-zmm-read.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/x86-64-zmm-read.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/x86-64-zmm-read.test (added)
+++ lldb/trunk/lit/Register/x86-64-zmm-read.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,45 @@
+# XFAIL: system-freebsd
+# XFAIL: system-linux
+# XFAIL: system-netbsd
+# XFAIL: system-windows
+# REQUIRES: native && target-x86_64 && native-cpu-avx512f
+# RUN: %clangxx %p/Inputs/x86-zmm-read.cpp -o %t
+# RUN: %lldb -b -s %s %t | FileCheck %s
+process launch
+
+register read --all
+# CHECK-DAG: zmm0 = {0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f}
+# CHECK-DAG: zmm1 = {0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40}
+# CHECK-DAG: zmm2 = {0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41}
+# CHECK-DAG: zmm3 = {0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42}
+# CHECK-DAG: zmm4 = {0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43}
+# CHECK-DAG: zmm5 = {0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44}
+# CHECK-DAG: zmm6 = {0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45}
+# CHECK-DAG: zmm7 = {0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46}
+# CHECK-DAG: zmm8 = {0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47}
+# CHECK-DAG: zmm9 = {0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48}
+# CHECK-DAG: zmm10 = {0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49}
+# CHECK-DAG: zmm11 = {0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a}
+# CHECK-DAG: zmm12 = {0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b}
+# CHECK-DAG: zmm13 = {0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c}
+# CHECK-DAG: zmm14 = {0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d}
+# CHECK-DAG: zmm15 = {0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e}
+# CHECK-DAG: zmm16 = {0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f}
+# CHECK-DAG: zmm17 = {0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50}
+# CHECK-DAG: zmm18 = {0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51}
+# CHECK-DAG: zmm19 = {0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52}
+# CHECK-DAG: zmm20 = {0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53}
+# CHECK-DAG: zmm21 = {0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54}
+# CHECK-DAG: zmm22 = {0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55}
+# CHECK-DAG: zmm23 = {0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56}
+# CHECK-DAG: zmm24 = {0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57}
+# CHECK-DAG: zmm25 = {0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58}
+# CHECK-DAG: zmm26 = {0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59}
+# CHECK-DAG: zmm27 = {0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a}
+# CHECK-DAG: zmm28 = {0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a 0x5b}
+# CHECK-DAG: zmm29 = {0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a 0x5b 0x5c}
+# CHECK-DAG: zmm30 = {0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a 0x5b 0x5c 0x5d}
+# CHECK-DAG: zmm31 = {0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a 0x5b 0x5c 0x5d 0x5e}
+
+process continue
+# CHECK: Process {{[0-9]+}} exited with status = 0

Added: lldb/trunk/lit/Register/x86-64-zmm-write.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/x86-64-zmm-write.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/x86-64-zmm-write.test (added)
+++ lldb/trunk/lit/Register/x86-64-zmm-write.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,80 @@
+# XFAIL: system-darwin
+# XFAIL: system-freebsd
+# XFAIL: system-linux
+# XFAIL: system-netbsd
+# XFAIL: system-windows
+# REQUIRES: native && target-x86_64 && native-cpu-avx512f
+# RUN: %clangxx %p/Inputs/x86-zmm-write.cpp -o %t
+# RUN: %lldb -b -s %s %t | FileCheck %s
+process launch
+
+register write zmm0 "{0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f}"
+register write zmm1 "{0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40}"
+register write zmm2 "{0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41}"
+register write zmm3 "{0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42}"
+register write zmm4 "{0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43}"
+register write zmm5 "{0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44}"
+register write zmm6 "{0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45}"
+register write zmm7 "{0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46}"
+register write zmm8 "{0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47}"
+register write zmm9 "{0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48}"
+register write zmm10 "{0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49}"
+register write zmm11 "{0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a}"
+register write zmm12 "{0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b}"
+register write zmm13 "{0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c}"
+register write zmm14 "{0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d}"
+register write zmm15 "{0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e}"
+register write zmm16 "{0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f}"
+register write zmm17 "{0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50}"
+register write zmm18 "{0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51}"
+register write zmm19 "{0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52}"
+register write zmm20 "{0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53}"
+register write zmm21 "{0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54}"
+register write zmm22 "{0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55}"
+register write zmm23 "{0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56}"
+register write zmm24 "{0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57}"
+register write zmm25 "{0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58}"
+register write zmm26 "{0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59}"
+register write zmm27 "{0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a}"
+register write zmm28 "{0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a 0x5b}"
+register write zmm29 "{0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a 0x5b 0x5c}"
+register write zmm30 "{0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a 0x5b 0x5c 0x5d}"
+register write zmm31 "{0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a 0x5b 0x5c 0x5d 0x5e}"
+
+process continue
+# CHECK: process continue
+
+# CHECK-DAG: zmm0 = { 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f }
+# CHECK-DAG: zmm1 = { 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 }
+# CHECK-DAG: zmm2 = { 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 }
+# CHECK-DAG: zmm3 = { 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 }
+# CHECK-DAG: zmm4 = { 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 }
+# CHECK-DAG: zmm5 = { 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 }
+# CHECK-DAG: zmm6 = { 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 }
+# CHECK-DAG: zmm7 = { 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 }
+# CHECK-DAG: zmm8 = { 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 }
+# CHECK-DAG: zmm9 = { 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 }
+# CHECK-DAG: zmm10 = { 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 }
+# CHECK-DAG: zmm11 = { 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a }
+# CHECK-DAG: zmm12 = { 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b }
+# CHECK-DAG: zmm13 = { 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c }
+# CHECK-DAG: zmm14 = { 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d }
+# CHECK-DAG: zmm15 = { 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e }
+# CHECK-DAG: zmm16 = { 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f }
+# CHECK-DAG: zmm17 = { 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 }
+# CHECK-DAG: zmm18 = { 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 }
+# CHECK-DAG: zmm19 = { 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 }
+# CHECK-DAG: zmm20 = { 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 }
+# CHECK-DAG: zmm21 = { 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 }
+# CHECK-DAG: zmm22 = { 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 }
+# CHECK-DAG: zmm23 = { 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 }
+# CHECK-DAG: zmm24 = { 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 }
+# CHECK-DAG: zmm25 = { 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 }
+# CHECK-DAG: zmm26 = { 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 }
+# CHECK-DAG: zmm27 = { 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a }
+# CHECK-DAG: zmm28 = { 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a 0x5b }
+# CHECK-DAG: zmm29 = { 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a 0x5b 0x5c }
+# CHECK-DAG: zmm30 = { 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a 0x5b 0x5c 0x5d }
+# CHECK-DAG: zmm31 = { 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a 0x4b 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a 0x5b 0x5c 0x5d 0x5e }
+
+# CHECK: Process {{[0-9]+}} exited with status = 0

Added: lldb/trunk/lit/Register/x86-gp-read.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/x86-gp-read.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/x86-gp-read.test (added)
+++ lldb/trunk/lit/Register/x86-gp-read.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,34 @@
+# XFAIL: system-windows
+# REQUIRES: native && target-x86
+# RUN: %clangxx -fomit-frame-pointer %p/Inputs/x86-gp-read.cpp -o %t
+# RUN: %lldb -b -s %s %t | FileCheck %s
+process launch
+
+register read --all
+# CHECK-DAG: eax = 0x05060708
+# CHECK-DAG: ebx = 0x15161718
+# CHECK-DAG: ecx = 0x25262728
+# CHECK-DAG: edx = 0x35363738
+# CHECK-DAG: edi = 0x75767778
+# CHECK-DAG: esi = 0x65666768
+# CHECK-DAG: ebp = 0x55565758
+# CHECK-DAG: esp = 0x45464748
+# CHECK-DAG: ax = 0x0708
+# CHECK-DAG: bx = 0x1718
+# CHECK-DAG: cx = 0x2728
+# CHECK-DAG: dx = 0x3738
+# CHECK-DAG: di = 0x7778
+# CHECK-DAG: si = 0x6768
+# CHECK-DAG: bp = 0x5758
+# CHECK-DAG: sp = 0x4748
+# CHECK-DAG: ah = 0x07
+# CHECK-DAG: bh = 0x17
+# CHECK-DAG: ch = 0x27
+# CHECK-DAG: dh = 0x37
+# CHECK-DAG: al = 0x08
+# CHECK-DAG: bl = 0x18
+# CHECK-DAG: cl = 0x28
+# CHECK-DAG: dl = 0x38
+
+process continue
+# CHECK: Process {{[0-9]+}} exited with status = 0

Added: lldb/trunk/lit/Register/x86-gp-write.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/x86-gp-write.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/x86-gp-write.test (added)
+++ lldb/trunk/lit/Register/x86-gp-write.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,26 @@
+# XFAIL: system-windows
+# REQUIRES: native && target-x86
+# RUN: %clangxx -fomit-frame-pointer %p/Inputs/x86-gp-write.cpp -o %t
+# RUN: %lldb -b -s %s %t | FileCheck %s
+process launch
+
+register write eax 0x01020304
+register write ebx 0x11121314
+register write ecx 0x21222324
+register write edx 0x31323334
+register write esp 0x41424344
+register write ebp 0x51525354
+register write esi 0x61626364
+register write edi 0x71727374
+
+process continue
+# CHECK-DAG: eax = 0x01020304
+# CHECK-DAG: ebx = 0x11121314
+# CHECK-DAG: ecx = 0x21222324
+# CHECK-DAG: edx = 0x31323334
+# CHECK-DAG: esp = 0x41424344
+# CHECK-DAG: ebp = 0x51525354
+# CHECK-DAG: esi = 0x61626364
+# CHECK-DAG: edi = 0x71727374
+
+# CHECK: Process {{[0-9]+}} exited with status = 0

Added: lldb/trunk/lit/Register/x86-mm-xmm-read.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/x86-mm-xmm-read.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/x86-mm-xmm-read.test (added)
+++ lldb/trunk/lit/Register/x86-mm-xmm-read.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,28 @@
+# XFAIL: system-darwin
+# XFAIL: system-windows
+# REQUIRES: native && (target-x86 || target-x86_64) && native-cpu-sse
+# RUN: %clangxx %p/Inputs/x86-mm-xmm-read.cpp -o %t
+# RUN: %lldb -b -s %s %t | FileCheck %s
+process launch
+
+register read --all
+# CHECK-DAG: mm0 = 0x0001020304050607
+# CHECK-DAG: mm1 = 0x1011121314151617
+# CHECK-DAG: mm2 = 0x2021222324252627
+# CHECK-DAG: mm3 = 0x3031323334353637
+# CHECK-DAG: mm4 = 0x4041424344454647
+# CHECK-DAG: mm5 = 0x5051525354555657
+# CHECK-DAG: mm6 = 0x6061626364656667
+# CHECK-DAG: mm7 = 0x7071727374757677
+
+# CHECK-DAG: xmm0 = {0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f}
+# CHECK-DAG: xmm1 = {0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10}
+# CHECK-DAG: xmm2 = {0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11}
+# CHECK-DAG: xmm3 = {0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12}
+# CHECK-DAG: xmm4 = {0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13}
+# CHECK-DAG: xmm5 = {0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14}
+# CHECK-DAG: xmm6 = {0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15}
+# CHECK-DAG: xmm7 = {0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16}
+
+process continue
+# CHECK: Process {{[0-9]+}} exited with status = 0

Added: lldb/trunk/lit/Register/x86-mm-xmm-write.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/x86-mm-xmm-write.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/x86-mm-xmm-write.test (added)
+++ lldb/trunk/lit/Register/x86-mm-xmm-write.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,47 @@
+# XFAIL: system-darwin
+# XFAIL: system-windows
+# REQUIRES: native && (target-x86 || target-x86_64) && native-cpu-sse
+# RUN: %clangxx %p/Inputs/x86-mm-xmm-write.cpp -o %t
+# RUN: %lldb -b -s %s %t | FileCheck %s
+process launch
+
+register write mm0 0x0001020304050607
+register write mm1 0x1011121314151617
+register write mm2 0x2021222324252627
+register write mm3 0x3031323334353637
+register write mm4 0x4041424344454647
+register write mm5 0x5051525354555657
+register write mm6 0x6061626364656667
+register write mm7 0x7071727374757677
+
+register write xmm0 "{0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f}"
+register write xmm1 "{0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10}"
+register write xmm2 "{0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11}"
+register write xmm3 "{0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12}"
+register write xmm4 "{0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13}"
+register write xmm5 "{0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14}"
+register write xmm6 "{0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15}"
+register write xmm7 "{0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16}"
+
+process continue
+# CHECK: process continue
+
+# CHECK-DAG: mm0 = 0x0001020304050607
+# CHECK-DAG: mm1 = 0x1011121314151617
+# CHECK-DAG: mm2 = 0x2021222324252627
+# CHECK-DAG: mm3 = 0x3031323334353637
+# CHECK-DAG: mm4 = 0x4041424344454647
+# CHECK-DAG: mm5 = 0x5051525354555657
+# CHECK-DAG: mm6 = 0x6061626364656667
+# CHECK-DAG: mm7 = 0x7071727374757677
+
+# CHECK-DAG: xmm0 = { 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f }
+# CHECK-DAG: xmm1 = { 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 }
+# CHECK-DAG: xmm2 = { 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 }
+# CHECK-DAG: xmm3 = { 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 }
+# CHECK-DAG: xmm4 = { 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 }
+# CHECK-DAG: xmm5 = { 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 }
+# CHECK-DAG: xmm6 = { 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 }
+# CHECK-DAG: xmm7 = { 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 }
+
+# CHECK: Process {{[0-9]+}} exited with status = 0

Added: lldb/trunk/lit/Register/x86-ymm-read.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/x86-ymm-read.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/x86-ymm-read.test (added)
+++ lldb/trunk/lit/Register/x86-ymm-read.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,27 @@
+# XFAIL: system-windows
+# REQUIRES: native && target-x86 && native-cpu-avx
+# RUN: %clangxx %p/Inputs/x86-ymm-read.cpp -o %t
+# RUN: %lldb -b -s %s %t | FileCheck %s
+process launch
+
+register read --all
+# CHECK-DAG: xmm0 = {0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f}
+# CHECK-DAG: xmm1 = {0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10}
+# CHECK-DAG: xmm2 = {0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11}
+# CHECK-DAG: xmm3 = {0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12}
+# CHECK-DAG: xmm4 = {0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13}
+# CHECK-DAG: xmm5 = {0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14}
+# CHECK-DAG: xmm6 = {0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15}
+# CHECK-DAG: xmm7 = {0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16}
+
+# CHECK-DAG: ymm0 = {0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f}
+# CHECK-DAG: ymm1 = {0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20}
+# CHECK-DAG: ymm2 = {0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21}
+# CHECK-DAG: ymm3 = {0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22}
+# CHECK-DAG: ymm4 = {0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23}
+# CHECK-DAG: ymm5 = {0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24}
+# CHECK-DAG: ymm6 = {0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25}
+# CHECK-DAG: ymm7 = {0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26}
+
+process continue
+# CHECK: Process {{[0-9]+}} exited with status = 0

Added: lldb/trunk/lit/Register/x86-ymm-write.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/x86-ymm-write.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/x86-ymm-write.test (added)
+++ lldb/trunk/lit/Register/x86-ymm-write.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,28 @@
+# XFAIL: system-windows
+# REQUIRES: native && target-x86 && native-cpu-avx
+# RUN: %clangxx %p/Inputs/x86-ymm-write.cpp -o %t
+# RUN: %lldb -b -s %s %t | FileCheck %s
+process launch
+
+register write ymm0 "{0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f}"
+register write ymm1 "{0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20}"
+register write ymm2 "{0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21}"
+register write ymm3 "{0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22}"
+register write ymm4 "{0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23}"
+register write ymm5 "{0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24}"
+register write ymm6 "{0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25}"
+register write ymm7 "{0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26}"
+
+process continue
+# CHECK: process continue
+
+# CHECK-DAG: ymm0 = { 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f }
+# CHECK-DAG: ymm1 = { 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 }
+# CHECK-DAG: ymm2 = { 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 }
+# CHECK-DAG: ymm3 = { 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 }
+# CHECK-DAG: ymm4 = { 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 }
+# CHECK-DAG: ymm5 = { 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 }
+# CHECK-DAG: ymm6 = { 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 }
+# CHECK-DAG: ymm7 = { 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 }
+
+# CHECK: Process {{[0-9]+}} exited with status = 0

Added: lldb/trunk/lit/Register/x86-zmm-read.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/x86-zmm-read.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/x86-zmm-read.test (added)
+++ lldb/trunk/lit/Register/x86-zmm-read.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,21 @@
+# XFAIL: system-freebsd
+# XFAIL: system-linux
+# XFAIL: system-netbsd
+# XFAIL: system-windows
+# REQUIRES: native && target-x86 && native-cpu-avx512f
+# RUN: %clangxx %p/Inputs/x86-zmm-read.cpp -o %t
+# RUN: %lldb -b -s %s %t | FileCheck %s
+process launch
+
+register read --all
+# CHECK-DAG: zmm0 = {0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f}
+# CHECK-DAG: zmm1 = {0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40}
+# CHECK-DAG: zmm2 = {0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41}
+# CHECK-DAG: zmm3 = {0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42}
+# CHECK-DAG: zmm4 = {0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43}
+# CHECK-DAG: zmm5 = {0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44}
+# CHECK-DAG: zmm6 = {0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45}
+# CHECK-DAG: zmm7 = {0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46}
+
+process continue
+# CHECK: Process {{[0-9]+}} exited with status = 0

Added: lldb/trunk/lit/Register/x86-zmm-write.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/x86-zmm-write.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Register/x86-zmm-write.test (added)
+++ lldb/trunk/lit/Register/x86-zmm-write.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,31 @@
+# XFAIL: system-freebsd
+# XFAIL: system-linux
+# XFAIL: system-netbsd
+# XFAIL: system-windows
+# REQUIRES: native && target-x86 && native-cpu-avx512f
+# RUN: %clangxx %p/Inputs/x86-zmm-write.cpp -o %t
+# RUN: %lldb -b -s %s %t | FileCheck %s
+process launch
+
+register write zmm0 "{0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f}"
+register write zmm1 "{0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40}"
+register write zmm2 "{0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41}"
+register write zmm3 "{0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42}"
+register write zmm4 "{0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43}"
+register write zmm5 "{0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44}"
+register write zmm6 "{0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45}"
+register write zmm7 "{0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46}"
+
+process continue
+# CHECK: process continue
+
+# CHECK-DAG: zmm0 = { 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f }
+# CHECK-DAG: zmm1 = { 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 }
+# CHECK-DAG: zmm2 = { 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 }
+# CHECK-DAG: zmm3 = { 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 }
+# CHECK-DAG: zmm4 = { 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 }
+# CHECK-DAG: zmm5 = { 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 }
+# CHECK-DAG: zmm6 = { 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 }
+# CHECK-DAG: zmm7 = { 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 }
+
+# CHECK: Process {{[0-9]+}} exited with status = 0

Added: lldb/trunk/lit/Reproducer/Functionalities/Inputs/DataFormatter.in
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/Functionalities/Inputs/DataFormatter.in?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/Functionalities/Inputs/DataFormatter.in (added)
+++ lldb/trunk/lit/Reproducer/Functionalities/Inputs/DataFormatter.in Wed Oct  9 10:35:43 2019
@@ -0,0 +1,7 @@
+breakpoint set -f foo.cpp -l 11
+run
+frame var foo
+next
+frame var foo
+cont
+reproducer generate

Added: lldb/trunk/lit/Reproducer/Functionalities/Inputs/foo.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/Functionalities/Inputs/foo.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/Functionalities/Inputs/foo.cpp (added)
+++ lldb/trunk/lit/Reproducer/Functionalities/Inputs/foo.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,13 @@
+class Foo {
+public:
+  Foo(int i, double d) : m_i(i), m_d(d){};
+
+private:
+  int m_i;
+  int m_d;
+};
+
+int main(int argc, char **argv) {
+  static Foo foo(1, 2.22);
+  return 0;
+}

Added: lldb/trunk/lit/Reproducer/Functionalities/Inputs/stepping.c
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/Functionalities/Inputs/stepping.c?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/Functionalities/Inputs/stepping.c (added)
+++ lldb/trunk/lit/Reproducer/Functionalities/Inputs/stepping.c Wed Oct  9 10:35:43 2019
@@ -0,0 +1,37 @@
+int a(int);
+int b(int);
+int c(int);
+int complex(int, int, int);
+
+int a(int val) {
+  int return_value = val;
+
+  if (val <= 1) {
+    return_value = b(val);
+  } else if (val >= 3) {
+    return_value = c(val);
+  }
+
+  return return_value;
+}
+
+int b(int val) {
+  int rc = c(val);
+  return rc;
+}
+
+int c(int val) { return val + 3; }
+
+int complex(int first, int second, int third) { return first + second + third; }
+
+int main(int argc, char const *argv[]) {
+  int A1 = a(1);
+
+  int B2 = b(2);
+
+  int A3 = a(3);
+
+  int A4 = complex(a(1), b(2), c(3));
+
+  return 0;
+}

Added: lldb/trunk/lit/Reproducer/Functionalities/TestDataFormatter.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/Functionalities/TestDataFormatter.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/Functionalities/TestDataFormatter.test (added)
+++ lldb/trunk/lit/Reproducer/Functionalities/TestDataFormatter.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,16 @@
+# UNSUPPORTED: system-windows, system-freebsd
+
+# This tests that data formatters continue to work when replaying a reproducer.
+
+# RUN: rm -rf %t.repro
+# RUN: %clangxx %S/Inputs/foo.cpp -g -o %t.out
+
+# RUN: %lldb -x -b -s %S/Inputs/DataFormatter.in --capture --capture-path %t.repro %t.out | FileCheck %s
+# RUN: %lldb --replay %t.repro | FileCheck %s
+
+# CHECK: stop reason = breakpoint 1.1
+# CHECK: (Foo) foo = (m_i = 0, m_d = 0)
+# CHECK: stop reason = step over
+# CHECK: (Foo) foo = (m_i = 1, m_d = 2)
+# CHECK: Process {{.*}} resuming
+# CHECK: Process {{.*}} exited with status = 0

Added: lldb/trunk/lit/Reproducer/Functionalities/TestImageList.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/Functionalities/TestImageList.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/Functionalities/TestImageList.test (added)
+++ lldb/trunk/lit/Reproducer/Functionalities/TestImageList.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,30 @@
+# UNSUPPORTED: system-windows, system-freebsd
+
+# This tests that image list works when replaying. We arbitrarily assume
+# there's at least two entries and compare that they're identical.
+
+# RUN: %clang %S/Inputs/stepping.c -g -o %t.out
+
+# RUN: rm -rf %t.txt
+
+# RUN: echo "CAPTURE" >> %t.txt
+# RUN: %lldb -x -b  --capture --capture-path %t.repro \
+# RUN:    -o 'run' \
+# RUN:    -o 'image list' \
+# RUN:    -o 'reproducer generate' \
+# RUN:    %t.out >> %t.txt 2>&1
+
+# RUN: echo "REPLAY" >> %t.txt
+# RUN: %lldb -x -b --replay %t.repro >> %t.txt 2>&1
+
+# RUN: cat %t.txt | FileCheck %s
+
+# CHECK: CAPTURE
+# CHECK: image list
+# CHECK: [  0] [[ZERO:.*]]
+# CHECK: [  1] [[ONE:.*]]
+
+# CHECK: REPLAY
+# CHECK: image list
+# CHECK: [  0] {{.*}}[[ZERO]]
+# CHECK: [  1] {{.*}}[[ONE]]

Added: lldb/trunk/lit/Reproducer/Functionalities/TestStepping.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/Functionalities/TestStepping.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/Functionalities/TestStepping.test (added)
+++ lldb/trunk/lit/Reproducer/Functionalities/TestStepping.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,100 @@
+# UNSUPPORTED: system-windows, system-freebsd
+
+# This tests that stepping continues to work when replaying a reproducer.
+
+# RUN: rm -rf %t.repro
+# RUN: %clang %S/Inputs/stepping.c -O0 -g -o %t.out
+# RUN: grep -v '#' %s > %t.in
+
+# RUN: %lldb -x -b -s %t.in --capture --capture-path %t.repro %t.out | FileCheck %s --check-prefix CHECK
+# RUN: %lldb --replay %t.repro | FileCheck %s --check-prefix CHECK
+
+# Set breakpoints in a,b and c and verify we stop there when stepping.
+
+breakpoint set -f stepping.c -l 28
+# CHECK: Breakpoint 1: {{.*}} stepping.c:28
+
+breakpoint set -f stepping.c -l 10
+# CHECK: Breakpoint 2: {{.*}} stepping.c:10
+
+breakpoint set -f stepping.c -l 19
+# CHECK: Breakpoint 3: {{.*}} stepping.c:19
+
+breakpoint set -f stepping.c -l 23
+# CHECK: Breakpoint 4: {{.*}} stepping.c:23
+
+run
+# CHECK: Process {{.*}} stopped
+# CHECK: stop reason = breakpoint 1.1
+
+next
+# CHECK: Process {{.*}} stopped
+# CHECK: stop reason = breakpoint 2.1
+
+next
+# CHECK: Process {{.*}} stopped
+# CHECK: stop reason = breakpoint 3.1
+
+next
+# CHECK: Process {{.*}} stopped
+# CHECK: stop reason = breakpoint 4.1
+
+bt
+# CHECK: frame #0: {{.*}}`c
+# CHECK: frame #1: {{.*}}`b
+# CHECK: frame #2: {{.*}}`a
+
+# Continue and stop resulting from the step overs.
+
+cont
+# CHECK: Process {{.*}} resuming
+# CHECK: Process {{.*}} stopped
+# CHECK: stop reason = step over
+cont
+# CHECK: Process {{.*}} resuming
+# CHECK: Process {{.*}} stopped
+# CHECK: stop reason = step over
+cont
+# CHECK: Process {{.*}} resuming
+# CHECK: Process {{.*}} stopped
+# CHECK: stop reason = step over
+
+breakpoint disable 1
+# CHECK: 1 breakpoints disabled.
+
+breakpoint disable 2
+# CHECK: 1 breakpoints disabled.
+
+breakpoint disable 3
+# CHECK: 1 breakpoints disabled.
+
+breakpoint disable 4
+# CHECK: 1 breakpoints disabled.
+
+# Continue to line 48.
+
+next
+# CHECK: stop reason = step over
+next
+# CHECK: stop reason = step over
+
+# Step into c.
+thread step-in
+# CHECK: stop reason = step in
+thread step-in
+# CHECK: stop reason = step in
+thread step-in
+# CHECK: stop reason = step in
+thread step-in
+# CHECK: stop reason = step in
+thread step-in
+# CHECK: stop reason = step in
+
+# Finally continue until the end.
+
+cont
+# CHECK: Process {{.*}} resuming
+# CHECK: Process {{.*}} exited with status = 0
+
+# Generate the reproducer.
+reproducer generate

Added: lldb/trunk/lit/Reproducer/Inputs/FileCapture.in
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/Inputs/FileCapture.in?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/Inputs/FileCapture.in (added)
+++ lldb/trunk/lit/Reproducer/Inputs/FileCapture.in Wed Oct  9 10:35:43 2019
@@ -0,0 +1,4 @@
+run
+reproducer status
+reproducer dump -p files
+reproducer generate

Added: lldb/trunk/lit/Reproducer/Inputs/GDBRemoteCapture.in
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/Inputs/GDBRemoteCapture.in?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/Inputs/GDBRemoteCapture.in (added)
+++ lldb/trunk/lit/Reproducer/Inputs/GDBRemoteCapture.in Wed Oct  9 10:35:43 2019
@@ -0,0 +1,6 @@
+breakpoint set -f simple.c -l 12
+run
+bt
+cont
+reproducer status
+reproducer generate

Added: lldb/trunk/lit/Reproducer/Inputs/simple.c
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/Inputs/simple.c?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/Inputs/simple.c (added)
+++ lldb/trunk/lit/Reproducer/Inputs/simple.c Wed Oct  9 10:35:43 2019
@@ -0,0 +1,18 @@
+//===-- main.c --------------------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include <stdio.h>
+
+void foo() {
+    printf("testing\n");
+}
+
+int main (int argc, char const *argv[]) {
+    foo();
+    return 0;
+}

Added: lldb/trunk/lit/Reproducer/Modules/Inputs/Bar.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/Modules/Inputs/Bar.h?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/Modules/Inputs/Bar.h (added)
+++ lldb/trunk/lit/Reproducer/Modules/Inputs/Bar.h Wed Oct  9 10:35:43 2019
@@ -0,0 +1,3 @@
+struct Bar {
+  int success;
+};

Added: lldb/trunk/lit/Reproducer/Modules/Inputs/Foo.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/Modules/Inputs/Foo.h?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/Modules/Inputs/Foo.h (added)
+++ lldb/trunk/lit/Reproducer/Modules/Inputs/Foo.h Wed Oct  9 10:35:43 2019
@@ -0,0 +1 @@
+struct Foo {};

Added: lldb/trunk/lit/Reproducer/Modules/Inputs/ModuleCXX.in
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/Modules/Inputs/ModuleCXX.in?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/Modules/Inputs/ModuleCXX.in (added)
+++ lldb/trunk/lit/Reproducer/Modules/Inputs/ModuleCXX.in Wed Oct  9 10:35:43 2019
@@ -0,0 +1,6 @@
+breakpoint set -f main.cpp -l 5
+run
+expr -l Objective-C++ -- @import Foo
+expr -l Objective-C++ -- @import Bar
+expr -- Bar()
+reproducer generate

Added: lldb/trunk/lit/Reproducer/Modules/Inputs/main.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/Modules/Inputs/main.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/Modules/Inputs/main.cpp (added)
+++ lldb/trunk/lit/Reproducer/Modules/Inputs/main.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,9 @@
+#include "Foo.h"
+
+void stop() {}
+
+int main(int argc, char **argv) {
+  Foo foo;
+  stop(); // break here.
+  return 0;
+}

Added: lldb/trunk/lit/Reproducer/Modules/Inputs/module.modulemap
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/Modules/Inputs/module.modulemap?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/Modules/Inputs/module.modulemap (added)
+++ lldb/trunk/lit/Reproducer/Modules/Inputs/module.modulemap Wed Oct  9 10:35:43 2019
@@ -0,0 +1,7 @@
+module Foo {
+  header "Foo.h"
+}
+
+module Bar {
+  header "Bar.h"
+}

Added: lldb/trunk/lit/Reproducer/Modules/TestModuleCXX.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/Modules/TestModuleCXX.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/Modules/TestModuleCXX.test (added)
+++ lldb/trunk/lit/Reproducer/Modules/TestModuleCXX.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,37 @@
+# REQUIRES: system-darwin
+
+# Start fresh.
+# RUN: rm -rf %t.repro
+# RUN: rm -rf %t.root
+# RUN: rm -rf %t.clang-cache
+# RUN: rm -rf %t.lldb-cache
+
+# Create a temporary root we can remove later.
+# RUN: mkdir -p %t.root
+# RUN: mkdir -p %t.clang-cache
+# RUN: mkdir -p %t.lldb-cache
+# RUN: cp %S/Inputs/main.cpp %t.root
+# RUN: cp %S/Inputs/Foo.h %t.root
+# RUN: cp %S/Inputs/Bar.h %t.root
+# RUN: cp %S/Inputs/module.modulemap %t.root
+
+# Compile the test case form the temporary root.
+# RUN: %clang %t.root/main.cpp -g -fmodules -fcxx-modules -fmodules-cache-path=%t.clang-cache -o %t.root/a.out
+
+# Capture the debug session.
+# RUN: %lldb -x -b -o 'settings set symbols.clang-modules-cache-path %t.lldb-cache' -s %S/Inputs/ModuleCXX.in --capture --capture-path %t.repro %t.root/a.out | FileCheck %s --check-prefix CAPTURE
+# CAPTURE: (success = 0)
+
+# RUN: cat %t.repro/files.yaml | FileCheck %s --check-prefix YAML
+# YAML-DAG: Foo.h
+# YAML-DAG: Bar.h
+# YAML-DAG: module.modulemap
+
+# Remove the temporary root.
+# RUN: rm -rf %t.root
+# RUN: rm -rf %t.clang-cache
+# RUN: rm -rf %t.lldb-cache
+
+# Replay the debug session.
+# RUN: %lldb -x -b -o 'settings set symbols.clang-modules-cache-path %t.lldb-cache' -s %S/Inputs/ModuleCXX.in --replay %t.repro %t.root/a.out | FileCheck %s --check-prefix REPLAY
+# REPLAY: (success = 0)

Added: lldb/trunk/lit/Reproducer/TestDriverOptions.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/TestDriverOptions.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/TestDriverOptions.test (added)
+++ lldb/trunk/lit/Reproducer/TestDriverOptions.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,17 @@
+# Check that errors are propagated to the driver.
+#
+# RUN: not %lldb --capture --capture-path %t/bogus/bogus 2>&1 | FileCheck %s --check-prefix INVALID-CAPTURE
+# RUN: not %lldb --replay %t/bogus/bogus  2>&1 | FileCheck %s --check-prefix INVALID-REPLAY
+#
+# INVALID-CAPTURE: unable to create reproducer directory
+# INVALID-REPLAY: unable to load reproducer index
+
+# Check that all option combination work as expected.
+#
+# RUN: %lldb --capture --capture-path %t.repro -b -o 'reproducer status' 2>&1 | FileCheck %s --check-prefix NO-WARNING --check-prefix STATUS-CAPTURE
+# RUN: %lldb --capture -b -o 'reproducer status' 2>&1 | FileCheck %s --check-prefix NO-WARNING --check-prefix STATUS-CAPTURE
+# RUN: %lldb --capture-path %t.repro -b -o 'reproducer status' 2>&1 | FileCheck %s --check-prefix WARNING --check-prefix STATUS-CAPTURE
+#
+# NO-WARNING-NOT: warning: -capture-path specified without -capture
+# WARNING: warning: -capture-path specified without -capture
+# STATUS-CAPTURE: Reproducer is in capture mode.

Added: lldb/trunk/lit/Reproducer/TestDump.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/TestDump.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/TestDump.test (added)
+++ lldb/trunk/lit/Reproducer/TestDump.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,26 @@
+# UNSUPPORTED: system-windows
+# This tests the reproducer dump functionality.
+
+# Generate a reproducer.
+# RUN: mkdir -p %t
+# RUN: rm -rf %t.repro
+# RUN: %clang %S/Inputs/simple.c -g -o %t/reproducer.out
+# RUN: %lldb -x -b -s %S/Inputs/FileCapture.in -o 'reproducer dump -p files' --capture --capture-path %t.repro %t/reproducer.out
+
+# RUN: %lldb -b -o 'reproducer dump -p files -f %t.repro' | FileCheck %s --check-prefix FILES
+# FILES-DAG: 'reproducer.out'
+# FILES-DAG: 'FileCapture.in'
+
+# RUN: %lldb -b -o 'reproducer dump -p version -f %t.repro' | FileCheck %s --check-prefix VERSION
+# VERSION: lldb version
+
+# RUN: %lldb -b -o 'reproducer dump -p commands -f %t.repro' | FileCheck %s --check-prefix COMMANDS
+# COMMANDS: command source
+# COMMANDS: target create
+# COMMANDS: command source
+
+# RUN: %lldb -b -o 'reproducer dump -p gdb -f %t.repro' | FileCheck %s --check-prefix GDB
+# GDB: send packet: $QStartNoAckMode#b0
+# GDB: read packet: $OK#9a
+
+# RUN: %lldb --replay %t.repro | FileCheck %s --check-prefix FILES

Added: lldb/trunk/lit/Reproducer/TestFileRepro.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/TestFileRepro.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/TestFileRepro.test (added)
+++ lldb/trunk/lit/Reproducer/TestFileRepro.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,24 @@
+# REQUIRES: system-darwin
+
+# This tests the replaying of GDB remote packets.
+#
+# We issue the same commands and ensure the output is identical to the original
+# process. To ensure we're not actually running the original binary we check
+# that the string "testing" is not printed.
+
+# RUN: rm -rf %t.repro
+# RUN: %clang %S/Inputs/simple.c -g -o %t.out
+# RUN: %lldb -x -b -s %S/Inputs/FileCapture.in --capture --capture-path %t.repro %t.out | FileCheck %s --check-prefix CHECK --check-prefix CAPTURE
+# RUN: rm %t.out
+# RUN: %lldb --replay %t.repro | FileCheck %s --check-prefix CHECK --check-prefix REPLAY
+# RUN: cat %t.repro/version.txt | FileCheck %s --check-prefix VERSION
+
+# CAPTURE: testing
+# REPLAY-NOT: testing
+
+# CHECK: Process {{.*}} exited
+
+# CAPTURE: Reproducer is in capture mode.
+# CAPTURE: Reproducer written
+
+# VERSION: lldb version

Added: lldb/trunk/lit/Reproducer/TestGDBRemoteRepro.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/TestGDBRemoteRepro.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/TestGDBRemoteRepro.test (added)
+++ lldb/trunk/lit/Reproducer/TestGDBRemoteRepro.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,27 @@
+# UNSUPPORTED: system-windows, system-freebsd
+
+# This tests the replaying of GDB remote packets.
+#
+# We issue the same commands and ensure the output is identical to the original
+# process. To ensure we're not actually running the original binary we check
+# that the string "testing" is not printed.
+
+# RUN: rm -rf %t.repro
+# RUN: %clang %S/Inputs/simple.c -g -o %t.out
+# RUN: %lldb -x -b -s %S/Inputs/GDBRemoteCapture.in --capture --capture-path %t.repro %t.out | FileCheck %s --check-prefix CHECK --check-prefix CAPTURE
+# RUN: env FOO=BAR %lldb --replay %t.repro | FileCheck %s --check-prefix CHECK --check-prefix REPLAY
+
+# CHECK: Breakpoint 1
+# CHECK: Process {{.*}} stopped
+# CHECK: Process {{.*}} launched
+# CHECK: thread {{.*}} stop reason = breakpoint
+# CHECK: frame {{.*}} simple.c
+
+# CAPTURE: testing
+# REPLAY-NOT: testing
+
+# CHECK: Process {{.*}} resuming
+# CHECK: Process {{.*}} exited
+
+# CAPTURE: Reproducer is in capture mode.
+# CAPTURE: Reproducer written

Added: lldb/trunk/lit/Reproducer/TestRelativePath.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/TestRelativePath.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/TestRelativePath.test (added)
+++ lldb/trunk/lit/Reproducer/TestRelativePath.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,8 @@
+# This tests relative capture paths.
+
+# RUN: mkdir -p %t
+# RUN: cd %t
+# RUN: rm -rf ./foo
+# RUN: %clang %S/Inputs/simple.c -g -o %t/reproducer.out
+# RUN: %lldb -x -b -s %S/Inputs/FileCapture.in -o 'reproducer dump -p files' --capture --capture-path ./foo %t/reproducer.out
+# RUN: %lldb --replay ./foo

Added: lldb/trunk/lit/Reproducer/TestReuseDirectory.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/TestReuseDirectory.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/TestReuseDirectory.test (added)
+++ lldb/trunk/lit/Reproducer/TestReuseDirectory.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,17 @@
+# UNSUPPORTED: system-windows, system-freebsd
+
+# Test that we can capture twice to the same directory without breaking the
+# reproducer functionality.
+
+# RUN: rm -rf %t.repro
+# RUN: %clang %S/Inputs/simple.c -g -o %t.out
+# RUN: %lldb -x -b -s %S/Inputs/GDBRemoteCapture.in --capture --capture-path %t.repro %t.out | FileCheck %S/TestGDBRemoteRepro.test --check-prefix CHECK --check-prefix CAPTURE
+# RUN: %lldb -x -b -s %S/Inputs/GDBRemoteCapture.in --capture --capture-path %t.repro %t.out | FileCheck %S/TestGDBRemoteRepro.test --check-prefix CHECK --check-prefix CAPTURE
+# RUN: %lldb --replay %t.repro | FileCheck %S/TestGDBRemoteRepro.test --check-prefix CHECK --check-prefix REPLAY
+
+# Test that we can replay from a different location, i.e. that the reproducer
+# is relocatable.
+
+# RUN: rm -rf %t.repro_moved
+# RUN: mv %t.repro %t.repro_moved
+# RUN: %lldb --replay %t.repro_moved | FileCheck %S/TestGDBRemoteRepro.test --check-prefix CHECK --check-prefix REPLAY

Added: lldb/trunk/lit/Reproducer/TestSynchronous.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Reproducer/TestSynchronous.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Reproducer/TestSynchronous.test (added)
+++ lldb/trunk/lit/Reproducer/TestSynchronous.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,14 @@
+# REQUIRES: python
+# Ensure that replay happens in synchronous mode.
+
+# RUN: rm -rf %t.repro
+# RUN: %lldb -x -b --capture --capture-path %t.repro -o 'script lldb.debugger.SetAsync(True)' -o 'script lldb.debugger.GetAsync()' -o 'reproducer generate' | FileCheck %s --check-prefix CAPTURE
+# RUN: %lldb --replay %t.repro | FileCheck %s --check-prefix REPLAY
+
+# CAPTURE: script lldb.debugger.SetAsync(True)
+# CAPTURE-NEXT: script lldb.debugger.GetAsync()
+# CAPTURE-NEXT: True
+
+# REPLAY: script lldb.debugger.SetAsync(True)
+# REPLAY-NEXT: script lldb.debugger.GetAsync()
+# REPLAY-NEXT: False

Added: lldb/trunk/lit/Settings/Inputs/DontStopCommandSource.in
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Settings/Inputs/DontStopCommandSource.in?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Settings/Inputs/DontStopCommandSource.in (added)
+++ lldb/trunk/lit/Settings/Inputs/DontStopCommandSource.in Wed Oct  9 10:35:43 2019
@@ -0,0 +1,3 @@
+settings set interpreter.stop-command-source-on-error false
+bogus
+print 123400000 + 56789

Added: lldb/trunk/lit/Settings/Inputs/EchoCommandsAll.out
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Settings/Inputs/EchoCommandsAll.out?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Settings/Inputs/EchoCommandsAll.out (added)
+++ lldb/trunk/lit/Settings/Inputs/EchoCommandsAll.out Wed Oct  9 10:35:43 2019
@@ -0,0 +1,6 @@
+# CHECK: (lldb) command source -s {{.*\n}}
+# CHECK: (lldb) command source -s {{.*\n}}
+# CHECK-NEXT: Executing commands in {{.*\n}}
+# CHECK-NEXT: Evaluate expr 1+2
+# CHECK-NEXT: expr 1+2
+# CHECK-NEXT: (int) $0 = 3

Added: lldb/trunk/lit/Settings/Inputs/EchoCommandsNoComments.out
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Settings/Inputs/EchoCommandsNoComments.out?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Settings/Inputs/EchoCommandsNoComments.out (added)
+++ lldb/trunk/lit/Settings/Inputs/EchoCommandsNoComments.out Wed Oct  9 10:35:43 2019
@@ -0,0 +1,5 @@
+# CHECK: (lldb) command source -s {{.*\n}}
+# CHECK: (lldb) command source -s {{.*\n}}
+# CHECK-NEXT: Executing commands in {{.*\n}}
+# CHECK-NEXT: expr 1+2
+# CHECK-NEXT: (int) $0 = 3

Added: lldb/trunk/lit/Settings/Inputs/EchoCommandsNone.out
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Settings/Inputs/EchoCommandsNone.out?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Settings/Inputs/EchoCommandsNone.out (added)
+++ lldb/trunk/lit/Settings/Inputs/EchoCommandsNone.out Wed Oct  9 10:35:43 2019
@@ -0,0 +1,4 @@
+# CHECK: (lldb) command source -s {{.*\n}}
+# CHECK: (lldb) command source -s {{.*\n}}
+# CHECK-NEXT: Executing commands in {{.*\n}}
+# CHECK-NEXT: (int) $0 = 3

Added: lldb/trunk/lit/Settings/Inputs/EchoCommandsQuiet.out
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Settings/Inputs/EchoCommandsQuiet.out?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Settings/Inputs/EchoCommandsQuiet.out (added)
+++ lldb/trunk/lit/Settings/Inputs/EchoCommandsQuiet.out Wed Oct  9 10:35:43 2019
@@ -0,0 +1,2 @@
+# CHECK: (lldb) command source -s 1 {{.*\n}}
+# CHECK-NEXT: (lldb) command source -s 1 {{.*\n}}

Added: lldb/trunk/lit/Settings/Inputs/EchoCommandsTest.in
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Settings/Inputs/EchoCommandsTest.in?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Settings/Inputs/EchoCommandsTest.in (added)
+++ lldb/trunk/lit/Settings/Inputs/EchoCommandsTest.in Wed Oct  9 10:35:43 2019
@@ -0,0 +1,2 @@
+# Evaluate expr 1+2
+expr 1+2

Added: lldb/trunk/lit/Settings/Inputs/StopCommandSource.in
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Settings/Inputs/StopCommandSource.in?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Settings/Inputs/StopCommandSource.in (added)
+++ lldb/trunk/lit/Settings/Inputs/StopCommandSource.in Wed Oct  9 10:35:43 2019
@@ -0,0 +1,3 @@
+settings set interpreter.stop-command-source-on-error true
+bogus
+print 123400000 + 56789

Added: lldb/trunk/lit/Settings/Inputs/main.c
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Settings/Inputs/main.c?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Settings/Inputs/main.c (added)
+++ lldb/trunk/lit/Settings/Inputs/main.c Wed Oct  9 10:35:43 2019
@@ -0,0 +1,2 @@
+int foo() { return 0; }
+int main() { return foo(); }

Added: lldb/trunk/lit/Settings/TestDisableColor.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Settings/TestDisableColor.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Settings/TestDisableColor.test (added)
+++ lldb/trunk/lit/Settings/TestDisableColor.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,7 @@
+# RUN: %lldb -x -b -s %s | FileCheck %s
+settings show use-color
+q
+# This tests that LLDB turns off use-color if the output file is not an
+# interactive terminal. In this example, use-color should be off because LLDB
+# is run just by the non-interactive lit test runner.
+# CHECK: use-color (boolean) = false

Added: lldb/trunk/lit/Settings/TestDisassemblyFormat.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Settings/TestDisassemblyFormat.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Settings/TestDisassemblyFormat.test (added)
+++ lldb/trunk/lit/Settings/TestDisassemblyFormat.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,2 @@
+# RUN: %lldb -x -b -o "settings show disassembly-format" | FileCheck %s
+# CHECK: disassembly-format (format-string) = "{${function.initial-function}{${module.file.basename}\`}{${function.name-without-args}}:\n}{${function.changed}\n{${module.file.basename}\`}{${function.name-without-args}}:\n}{${current-pc-arrow} }${addr-file-or-load}{ <${function.concrete-only-addr-offset-no-padding}>}: "

Added: lldb/trunk/lit/Settings/TestEchoCommands.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Settings/TestEchoCommands.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Settings/TestEchoCommands.test (added)
+++ lldb/trunk/lit/Settings/TestEchoCommands.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,4 @@
+# RUN: %lldb -x -b -o 'settings set interpreter.echo-comment-commands true'  -s %S/Inputs/EchoCommandsTest.in | FileCheck %S/Inputs/EchoCommandsAll.out
+# RUN: %lldb -x -b -o 'settings set interpreter.echo-comment-commands false' -s %S/Inputs/EchoCommandsTest.in | FileCheck %S/Inputs/EchoCommandsNoComments.out
+# RUN: %lldb -x -b -o 'settings set interpreter.echo-commands false'         -s %S/Inputs/EchoCommandsTest.in | FileCheck %S/Inputs/EchoCommandsNone.out
+# RUN: %lldb -x -b --source-quietly                                          -s %S/Inputs/EchoCommandsTest.in | FileCheck %S/Inputs/EchoCommandsQuiet.out

Added: lldb/trunk/lit/Settings/TestFrameFormatColor.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Settings/TestFrameFormatColor.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Settings/TestFrameFormatColor.test (added)
+++ lldb/trunk/lit/Settings/TestFrameFormatColor.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,12 @@
+# RUN: %clang -g -O0 %S/Inputs/main.c -o %t.out
+# RUN: %lldb -x -b -s %s %t.out | FileCheck %s
+settings set use-color true
+settings set -f frame-format "frame #${frame.index}: \`${ansi.fg.green}{${function.name-with-args}${ansi.normal}\n"
+b foo
+run
+bt
+c
+q
+
+# Check the ASCII escape code
+# CHECK: 

Added: lldb/trunk/lit/Settings/TestFrameFormatNoColor.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Settings/TestFrameFormatNoColor.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Settings/TestFrameFormatNoColor.test (added)
+++ lldb/trunk/lit/Settings/TestFrameFormatNoColor.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,12 @@
+# RUN: %clang -g -O0 %S/Inputs/main.c -o %t.out
+# RUN: %lldb -x -b -s %s %t.out | FileCheck %s
+settings set use-color false
+settings set -f frame-format "frame #${frame.index}: \`${ansi.fg.green}{${function.name-with-args}${ansi.normal}\n"
+b foo
+run
+bt
+c
+q
+
+# Check the ASCII escape code
+# CHECK-NOT: 

Added: lldb/trunk/lit/Settings/TestModuleCacheSanity.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Settings/TestModuleCacheSanity.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Settings/TestModuleCacheSanity.test (added)
+++ lldb/trunk/lit/Settings/TestModuleCacheSanity.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,4 @@
+# This is a sanity check that verifies that the module cache path is set
+# correctly and points inside the default test build directory.
+RUN: %lldb -o 'settings show symbols.clang-modules-cache-path' | FileCheck  %s
+CHECK: lldb-test-build.noindex{{.*}}module-cache-lldb

Added: lldb/trunk/lit/Settings/TestSettingsSet.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Settings/TestSettingsSet.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Settings/TestSettingsSet.test (added)
+++ lldb/trunk/lit/Settings/TestSettingsSet.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,15 @@
+# This tests setting setting values.
+
+# Check that setting an empty value with -f(orce) clears the value.
+# RUN: %lldb -b -s %s 2>&1 | FileCheck %s
+
+settings set tab-size 16
+settings show tab-size
+# CHECK: tab-size (unsigned) = 16
+
+settings set -f tab-size
+settings show tab-size
+# CHECK: tab-size (unsigned) = 4
+
+settings set tab-size
+# CHECK: error: 'settings set' takes more arguments

Added: lldb/trunk/lit/Settings/TestSettingsWrite.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Settings/TestSettingsWrite.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Settings/TestSettingsWrite.test (added)
+++ lldb/trunk/lit/Settings/TestSettingsWrite.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,32 @@
+# This tests writing and reading settings from LLDB.
+
+# Check that the settings can be written to file and read again without
+# altering the values.
+# RUN: %lldb -b -o 'settings write -f %t.foo' -o 'settings read -f %t.foo' -o 'settings write -f %t.bar' -o 'settings read -f %t.bar' 2>&1 | FileCheck %s --check-prefix SUCCESS
+# RUN: diff -w %t.foo %t.bar
+# SUCCESS-NOT: error:
+
+# Check that exporting target settings only export target settings and nothing else.
+# RUN: %lldb -b -o 'settings write -f %t.target target' 2>&1 | FileCheck %s --check-prefix SUCCESS
+# RUN: cat %t.target | FileCheck %s --check-prefix TARGET
+# TARGET: settings set -f target
+# TARGET-NOT: settings set -f platform
+# TARGET-NOT: settings set -f symbols
+# TARGET-NOT: settings set -f interpreter
+# TARGET-NOT: settings set -f plugin
+
+# Check that settings appear twice when appending.
+# RUN: %lldb -b -o 'settings write -a -f %t.append target' -o 'settings write -a -f %t.append target' 2>&1 | FileCheck %s --check-prefix SUCCESS
+# RUN: cat %t.append | FileCheck %s --check-prefix APPEND
+# APPEND: settings set -f target.language
+# APPEND: settings set -f target.language
+
+# Check that an error is printed for non-existing setting.
+# RUN: echo "settings set -f bogus" > %t.bogus_setting
+# RUN: %lldb -b -o 'settings read -f %t.bogus_setting' 2>&1 | FileCheck %s --check-prefix BOGUS-SETTING
+# BOGUS-SETTING: error: invalid value path
+
+# Check that an error is printed for invalid value.
+# RUN: echo "settings set -f target.language bogus" > %t.bogus_value
+# RUN: %lldb -b -o 'settings read -f %t.bogus_value' 2>&1 | FileCheck %s --check-prefix BOGUS-VALUE
+# BOGUS-VALUE: error: invalid language type

Added: lldb/trunk/lit/Settings/TestStopCommandSourceOnError.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Settings/TestStopCommandSourceOnError.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Settings/TestStopCommandSourceOnError.test (added)
+++ lldb/trunk/lit/Settings/TestStopCommandSourceOnError.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,24 @@
+# Modifying the interpreter settings is tricky because they don't take effect
+# until we create a new command interpreter, which should be merely an
+# implementation detail. This leads to confusing and unexpected scenarios.
+#
+# Below are a few scenarios that we should fix.
+
+# CONTINUE: 123456789
+# STOP-NOT: 111111111
+# STOP-NOT: 123456789
+
+# FIXME: Should stop
+# RUN: %lldb -b -o 'settings set interpreter.stop-command-source-on-error false' -s %S/Inputs/StopCommandSource.in | FileCheck %s --check-prefix CONTINUE
+
+# FIXME: Should continue
+# RUN: %lldb -b -s %S/Inputs/DontStopCommandSource.in -o 'bogus' -o 'print 111100000 + 11111' | FileCheck %s --check-prefix STOP
+
+# FIXME: Should continue
+# RUN: %lldb -b -o 'settings set interpreter.stop-command-source-on-error false' -o 'bogus' -o 'print 123400000 + 56789'  | FileCheck %s --check-prefix STOP
+
+# FIXME: Should continue
+# RUN: %lldb -b -s %S/Inputs/DontStopCommandSource.in | FileCheck %s --check-prefix STOP
+
+# FIXME: Should continue
+# RUN: %lldb -b -o 'settings set interpreter.stop-command-source-on-error true' -s %S/Inputs/DontStopCommandSource.in | FileCheck %s --check-prefix STOP

Added: lldb/trunk/lit/Suite/lit.cfg
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Suite/lit.cfg?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Suite/lit.cfg (added)
+++ lldb/trunk/lit/Suite/lit.cfg Wed Oct  9 10:35:43 2019
@@ -0,0 +1,80 @@
+# -*- Python -*-
+
+# Configuration file for the 'lit' test runner.
+
+import os
+import platform
+import shlex
+
+import lit.formats
+
+# name: The name of this test suite.
+config.name = 'lldb-Suite'
+
+# suffixes: A list of file extensions to treat as test files.
+config.suffixes = ['.py']
+
+# test_source_root: The root path where tests are located.
+# test_exec_root: The root path where tests should be run.
+config.test_source_root = os.path.join(config.lldb_src_root, 'packages',
+                                       'Python', 'lldbsuite', 'test')
+config.test_exec_root = config.test_source_root
+
+if 'Address' in config.llvm_use_sanitizer:
+  config.environment['ASAN_OPTIONS'] = 'detect_stack_use_after_return=1'
+  # macOS flags needed for LLDB built with address sanitizer.
+  if 'Darwin' in config.host_os and 'x86' in config.host_triple:
+    import subprocess
+    resource_dir = subprocess.check_output(
+        [config.cmake_cxx_compiler, '-print-resource-dir']).strip()
+    runtime = os.path.join(resource_dir, 'lib', 'darwin',
+                           'libclang_rt.asan_osx_dynamic.dylib')
+    config.environment['DYLD_INSERT_LIBRARIES'] = runtime
+
+def find_shlibpath_var():
+  if platform.system() in ['Linux', 'FreeBSD', 'NetBSD', 'SunOS']:
+    yield 'LD_LIBRARY_PATH'
+  elif platform.system() == 'Darwin':
+    yield 'DYLD_LIBRARY_PATH'
+  elif platform.system() == 'Windows':
+    yield 'PATH'
+
+# Shared library build of LLVM may require LD_LIBRARY_PATH or equivalent.
+if config.shared_libs:
+  for shlibpath_var in find_shlibpath_var():
+    # In stand-alone build llvm_shlib_dir specifies LLDB's lib directory while
+    # llvm_libs_dir specifies LLVM's lib directory.
+    shlibpath = os.path.pathsep.join(
+        (config.llvm_shlib_dir, config.llvm_libs_dir,
+         config.environment.get(shlibpath_var, '')))
+    config.environment[shlibpath_var] = shlibpath
+  else:
+    lit_config.warning("unable to inject shared library path on '{}'".format(
+        platform.system()))
+
+# Build dotest command.
+dotest_cmd = [config.dotest_path]
+dotest_cmd.extend(config.dotest_args_str.split(';'))
+
+# We don't want to force users passing arguments to lit to use `;` as a
+# separator. We use Python's simple lexical analyzer to turn the args into a
+# list.
+if config.dotest_lit_args_str:
+  dotest_cmd.extend(shlex.split(config.dotest_lit_args_str))
+
+# Library path may be needed to locate just-built clang.
+if config.llvm_libs_dir:
+  dotest_cmd += ['--env', 'LLVM_LIBS_DIR=' + config.llvm_libs_dir]
+
+if config.lldb_build_directory:
+  dotest_cmd += ['--build-dir', config.lldb_build_directory]
+
+if config.lldb_module_cache:
+  dotest_cmd += ['--module-cache-dir', config.lldb_module_cache]
+
+# Load LLDB test format.
+sys.path.append(os.path.join(config.lldb_src_root, "lit", "Suite"))
+import lldbtest
+
+# testFormat: The test format to use to interpret tests.
+config.test_format = lldbtest.LLDBTest(dotest_cmd)

Added: lldb/trunk/lit/Suite/lit.site.cfg.in
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Suite/lit.site.cfg.in?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Suite/lit.site.cfg.in (added)
+++ lldb/trunk/lit/Suite/lit.site.cfg.in Wed Oct  9 10:35:43 2019
@@ -0,0 +1,46 @@
+ at LIT_SITE_CFG_IN_HEADER@
+
+config.test_exec_root = "@LLDB_BINARY_DIR@"
+config.llvm_src_root = "@LLVM_SOURCE_DIR@"
+config.llvm_obj_root = "@LLVM_BINARY_DIR@"
+config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
+config.llvm_libs_dir = "@LLVM_LIBS_DIR@"
+config.llvm_shlib_dir = "@SHLIBDIR@"
+config.llvm_build_mode = "@LLVM_BUILD_MODE@"
+config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
+config.lldb_obj_root = "@LLDB_BINARY_DIR@"
+config.lldb_src_root = "@LLDB_SOURCE_DIR@"
+config.cmake_cxx_compiler = "@CMAKE_CXX_COMPILER@"
+config.host_os = "@HOST_OS@"
+config.host_triple = "@LLVM_HOST_TRIPLE@"
+config.shared_libs = @LLVM_ENABLE_SHARED_LIBS@
+config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
+config.target_triple = "@TARGET_TRIPLE@"
+config.lldb_build_directory = "@LLDB_TEST_BUILD_DIRECTORY@"
+config.lldb_module_cache = "@LLDB_TEST_MODULE_CACHE_LLDB@"
+config.clang_module_cache = "@LLDB_TEST_MODULE_CACHE_CLANG@"
+config.python_executable = "@PYTHON_EXECUTABLE@"
+config.dotest_path = "@LLDB_SOURCE_DIR@/test/dotest.py"
+config.dotest_args_str = "@LLDB_DOTEST_ARGS@"
+config.lldb_disable_python = @LLDB_DISABLE_PYTHON@
+config.dotest_lit_args_str = None
+
+# Additional dotest arguments can be passed to lit by providing a
+# semicolon-separates list: --param dotest-args="arg;arg".
+dotest_lit_args_str = lit_config.params.get('dotest-args', None)
+if dotest_lit_args_str:
+    config.dotest_lit_args_str = dotest_lit_args_str
+
+# Support substitution of the tools and libs dirs with user parameters. This is
+# used when we can't determine the tool dir at configuration time.
+try:
+    config.llvm_tools_dir = config.llvm_tools_dir % lit_config.params
+    config.llvm_libs_dir = config.llvm_libs_dir % lit_config.params
+    config.dotest_args_str = config.dotest_args_str % lit_config.params
+    config.llvm_build_mode = config.llvm_build_mode % lit_config.params
+except KeyError as e:
+    key, = e.args
+    lit_config.fatal("unable to find %r parameter, use '--param=%s=VALUE'" % (key,key))
+
+# Let the main config do the real work.
+lit_config.load_config(config, "@LLDB_SOURCE_DIR@/lit/Suite/lit.cfg")

Added: lldb/trunk/lit/Suite/lldbtest.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Suite/lldbtest.py?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Suite/lldbtest.py (added)
+++ lldb/trunk/lit/Suite/lldbtest.py Wed Oct  9 10:35:43 2019
@@ -0,0 +1,116 @@
+from __future__ import absolute_import
+import os
+
+import subprocess
+import sys
+
+import lit.Test
+import lit.TestRunner
+import lit.util
+from lit.formats.base import TestFormat
+
+def getBuildDir(cmd):
+    found = False
+    for arg in cmd:
+        if found:
+            return arg
+        if arg == '--build-dir':
+            found = True
+    return None
+
+def mkdir_p(path):
+    import errno
+    try:
+        os.makedirs(path)
+    except OSError as e:
+        if e.errno != errno.EEXIST:
+            raise
+    if not os.path.isdir(path):
+        raise OSError(errno.ENOTDIR, "%s is not a directory"%path)
+
+class LLDBTest(TestFormat):
+    def __init__(self, dotest_cmd):
+        self.dotest_cmd = dotest_cmd
+
+    def getTestsInDirectory(self, testSuite, path_in_suite, litConfig,
+                            localConfig):
+        source_path = testSuite.getSourcePath(path_in_suite)
+        for filename in os.listdir(source_path):
+            # Ignore dot files and excluded tests.
+            if (filename.startswith('.') or filename in localConfig.excludes):
+                continue
+
+            # Ignore files that don't start with 'Test'.
+            if not filename.startswith('Test'):
+                continue
+
+            filepath = os.path.join(source_path, filename)
+            if not os.path.isdir(filepath):
+                base, ext = os.path.splitext(filename)
+                if ext in localConfig.suffixes:
+                    yield lit.Test.Test(testSuite, path_in_suite +
+                                        (filename, ), localConfig)
+
+    def execute(self, test, litConfig):
+        if litConfig.noExecute:
+            return lit.Test.PASS, ''
+
+        if test.config.lldb_disable_python:
+            return (lit.Test.UNSUPPORTED, 'Python module disabled')
+
+        if test.config.unsupported:
+            return (lit.Test.UNSUPPORTED, 'Test is unsupported')
+
+        testPath, testFile = os.path.split(test.getSourcePath())
+        # On Windows, the system does not always correctly interpret
+        # shebang lines.  To make sure we can execute the tests, add
+        # python exe as the first parameter of the command.
+        cmd = [sys.executable] + self.dotest_cmd + [testPath, '-p', testFile]
+
+        # The macOS system integrity protection (SIP) doesn't allow injecting
+        # libraries into system binaries, but this can be worked around by
+        # copying the binary into a different location.
+        if 'DYLD_INSERT_LIBRARIES' in test.config.environment and \
+                (sys.executable.startswith('/System/') or \
+                sys.executable.startswith('/usr/')):
+            builddir = getBuildDir(cmd)
+            mkdir_p(builddir)
+            copied_python = os.path.join(builddir, 'copied-system-python')
+            if not os.path.isfile(copied_python):
+                import shutil, subprocess
+                python = subprocess.check_output([
+                    '/usr/bin/python2.7', '-c',
+                    'import sys; print sys.executable']).strip()
+                shutil.copy(python, copied_python)
+            cmd[0] = copied_python
+
+        try:
+            out, err, exitCode = lit.util.executeCommand(
+                cmd,
+                env=test.config.environment,
+                timeout=litConfig.maxIndividualTestTime)
+        except lit.util.ExecuteCommandTimeoutException:
+            return (lit.Test.TIMEOUT, 'Reached timeout of {} seconds'.format(
+                litConfig.maxIndividualTestTime))
+
+        if exitCode:
+            # Match FAIL but not XFAIL.
+            for line in out.splitlines() + err.splitlines():
+                if line.startswith('FAIL:'):
+                    return lit.Test.FAIL, out + err
+
+            if 'XPASS:' in out or 'XPASS:' in err:
+                return lit.Test.XPASS, out + err
+
+        has_unsupported_tests = 'UNSUPPORTED:' in out or 'UNSUPPORTED:' in err
+        has_passing_tests = 'PASS:' in out or 'PASS:' in err
+        if has_unsupported_tests and not has_passing_tests:
+            return lit.Test.UNSUPPORTED, out + err
+
+        passing_test_line = 'RESULT: PASSED'
+        if passing_test_line not in out and passing_test_line not in err:
+            msg = ('Unable to find %r in dotest output (exit code %d):\n\n%s%s'
+                   % (passing_test_line, exitCode, out, err))
+            return lit.Test.UNRESOLVED, msg
+
+        return lit.Test.PASS, ''

Added: lldb/trunk/lit/SymbolFile/Breakpad/Inputs/basic-elf.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/Inputs/basic-elf.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/Inputs/basic-elf.yaml (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/Inputs/basic-elf.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,33 @@
+# A very basic ELF file to serve as a recipient of breakpad info
+
+--- !ELF
+FileHeader:      
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x0000000000400000
+Sections:        
+  - Name:            .text1
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x0000000000400000
+    AddressAlign:    0x0000000000001000
+    Size:            0xb0
+  - Name:            .text2
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x00000000004000B0
+    AddressAlign:    0x0000000000000010
+    Size:            0x42
+Symbols:         
+DynamicSymbols:  
+ProgramHeaders:
+  - Type: PT_LOAD
+    Flags: [ PF_X, PF_R ]
+    VAddr: 0x400000
+    Align: 0x1000
+    Sections:
+      - Section: .text1
+      - Section: .text2
+...

Added: lldb/trunk/lit/SymbolFile/Breakpad/Inputs/basic-macho.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/Inputs/basic-macho.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/Inputs/basic-macho.yaml (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/Inputs/basic-macho.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,50 @@
+--- !mach-o
+FileHeader:      
+  magic:           0xFEEDFACF
+  cputype:         0x01000007
+  cpusubtype:      0x00000003
+  filetype:        0x00000002
+  ncmds:           9
+  sizeofcmds:      520
+  flags:           0x00000085
+  reserved:        0x00000000
+LoadCommands:    
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         72
+    segname:         __PAGEZERO
+    vmaddr:          0
+    vmsize:          4294967296
+    fileoff:         0
+    filesize:        0
+    maxprot:         0
+    initprot:        0
+    nsects:          0
+    flags:           0
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         152
+    segname:         __TEXT
+    vmaddr:          4294967296
+    vmsize:          4096
+    fileoff:         0
+    filesize:        4096
+    maxprot:         7
+    initprot:        5
+    nsects:          1
+    flags:           0
+    Sections:        
+      - sectname:        __text
+        segname:         __TEXT
+        addr:            0x0000000100000FF0
+        size:            6
+        offset:          0x00000FF0
+        align:           4
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x80000400
+        reserved1:       0x00000000
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+  - cmd:             LC_UUID
+    cmdsize:         24
+    uuid:            B3051760-22B1-7D7B-39F9-240E077D625B
+...

Added: lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table-discontinuous-file-ids.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table-discontinuous-file-ids.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table-discontinuous-file-ids.syms (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table-discontinuous-file-ids.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,8 @@
+MODULE Linux x86_64 761550E08086333960A9074A9CE2895C0 a.out
+INFO CODE_ID E05015768680393360A9074A9CE2895C
+FILE 1 /tmp/a.c
+FILE 3 /tmp/c.c
+FUNC b0 10 0 func
+b0 1 1 1
+b1 1 2 1
+b2 1 2 3

Added: lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table-edgecases.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table-edgecases.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table-edgecases.syms (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table-edgecases.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,7 @@
+MODULE Linux x86_64 761550E08086333960A9074A9CE2895C0 a.out
+INFO CODE_ID E05015768680393360A9074A9CE2895C
+FILE 0 /tmp/a.c
+a0 1 1 0
+FUNC b0 10 0 func
+FUNC c0 10 0 func2
+c0 2 2 0

Added: lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table-missing-file.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table-missing-file.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table-missing-file.syms (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table-missing-file.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,7 @@
+MODULE Linux x86_64 761550E08086333960A9074A9CE2895C0 a.out
+INFO CODE_ID E05015768680393360A9074A9CE2895C
+FILE 0 /tmp/a.c
+FUNC b0 10 0 func
+b0 1 1 0
+b1 1 2 0
+b2 1 2 1

Added: lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table-mixed-path-styles.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table-mixed-path-styles.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table-mixed-path-styles.syms (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table-mixed-path-styles.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,7 @@
+MODULE Linux x86_64 761550E08086333960A9074A9CE2895C0 a.out
+INFO CODE_ID E05015768680393360A9074A9CE2895C
+FILE 0 /tmp/a.c
+FILE 1 c:\tmp\b.c
+FUNC b0 10 0 func
+b0 1 1 0
+b1 1 1 1

Added: lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table.syms (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/Inputs/line-table.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,17 @@
+MODULE Linux x86_64 761550E08086333960A9074A9CE2895C0 a.out
+INFO CODE_ID E05015768680393360A9074A9CE2895C
+FILE 0 /tmp/a.c
+FILE 1 /tmp/c.c
+FILE 2 /tmp/d.c
+FUNC b0 10 0 func
+b0 1 1 0
+b1 1 2 0
+b2 1 2 1
+b4 1 3 1
+FUNC c0 10 0 func2
+c0 2 1 1
+c2 2 2 0
+FUNC d0 10 0 func3
+d0 2 1 2
+FUNC e0 10 0 func4
+e0 2 2 2

Added: lldb/trunk/lit/SymbolFile/Breakpad/Inputs/stack-cfi-parsing.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/Inputs/stack-cfi-parsing.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/Inputs/stack-cfi-parsing.syms (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/Inputs/stack-cfi-parsing.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,20 @@
+MODULE Linux x86_64 E5894855C35DCCCCCCCCCCCCCCCCCCCC0 linux.out
+INFO CODE_ID E35C283BC327C28762DB788BF5A4078BE2351448
+FUNC 0 2 0 func0
+FUNC 2 1 0 func2
+FUNC 3 1 0 func3
+FUNC 4 1 0 func4
+FUNC 5 1 0 func5
+FUNC 6 1 0 func6
+FUNC 7 2 0 func7
+FUNC 9 1 0 func9
+STACK CFI INIT 0 2 .cfa: $rsp .ra: .cfa $rbp: $rsp
+STACK CFI 1 $rbp: $rax $rbx: $rcx
+STACK CFI INIT 2 1 $r47: $r42
+STACK CFI INIT 3 1 $rbp:
+STACK CFI INIT 4 1 $rbp
+STACK CFI INIT 5 1 $rbp: $rbx $rsp:
+STACK CFI INIT 6 1 $rbp: $rsp:
+STACK CFI INIT 7 1 .cfa: $rsp
+STACK CFI bogus
+STACK CFI INIT 9 1 .cfa: $rbp .ra: $rax

Added: lldb/trunk/lit/SymbolFile/Breakpad/Inputs/stack-cfi-parsing.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/Inputs/stack-cfi-parsing.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/Inputs/stack-cfi-parsing.yaml (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/Inputs/stack-cfi-parsing.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,36 @@
+--- !minidump
+Streams:         
+  - Type:            ThreadList
+    Threads:         
+      - Thread Id:       0x00003E81
+        Context:         DEAD
+        Stack:           
+          Start of Memory Range: 0x00007FFCEB34A000
+          Content:         DEAD
+  - Type:            ModuleList
+    Modules:         
+      - Base of Image:   0x0000000000400000
+        Size of Image:   0x00001000
+        Module Name:     '/tmp/stack-cfi-parsing.out'
+        CodeView Record: 4C457042E35C283BC327C28762DB788BF5A4078BE2351448
+  - Type:            SystemInfo
+    Processor Arch:  AMD64
+    Processor Level: 6
+    Processor Revision: 15876
+    Number of Processors: 40
+    Platform ID:     Linux
+    CSD Version:     'Linux 3.13.0-91-generic'
+    CPU:             
+      Vendor ID:       GenuineIntel
+      Version Info:    0x00000000
+      Feature Info:    0x00000000
+  - Type:            LinuxProcStatus
+    Text:             |
+      Name:	linux-x86_64
+      State:	t (tracing stop)
+      Tgid:	29917
+      Ngid:	0
+      Pid:	29917
+      PPid:	29370
+
+...

Added: lldb/trunk/lit/SymbolFile/Breakpad/Inputs/symtab-macho.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/Inputs/symtab-macho.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/Inputs/symtab-macho.syms (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/Inputs/symtab-macho.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,2 @@
+MODULE mac x86_64 B305176022B17D7B39F9240E077D625B0 mac.out
+PUBLIC ff0 0 _start

Added: lldb/trunk/lit/SymbolFile/Breakpad/Inputs/symtab.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/Inputs/symtab.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/Inputs/symtab.syms (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/Inputs/symtab.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,9 @@
+MODULE Linux x86_64 761550E08086333960A9074A9CE2895C0 a.out
+INFO CODE_ID E05015768680393360A9074A9CE2895C
+FILE 0 /tmp/a.c
+PUBLIC b0 0 f1
+PUBLIC m c0 0 f2
+PUBLIC d0 0 _start
+PUBLIC ff 0 _out_of_range_ignored
+FUNC b0 c 0 f1_func
+FUNC m a0 d 0 func_only

Added: lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-raSearch.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-raSearch.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-raSearch.syms (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-raSearch.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,15 @@
+MODULE windows x86 897DD83EA8C8411897F3A925EE4BF7411 unwind-via-stack-win.pdb
+INFO CODE_ID 5D499B5C5000 unwind-via-stack-win.exe
+PUBLIC  0 0 dummy
+PUBLIC 10 0 call_many
+PUBLIC 80 0 main
+PUBLIC 90 0 many_pointer_args
+PUBLIC 100 0 complex_rasearch
+PUBLIC 110 0 esp_rasearch
+PUBLIC 120 0 nonzero_frame_size
+STACK WIN 4 10 6d 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 80 8 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 90 5 0 0 50 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 100 4 0 0 0 0 0 0 1 $T0 .raSearch 80 + = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 110 4 0 0 0 0 0 0 1 $T0 .raSearch = $eip $T0 ^ = $esp .raSearch 4 + =
+STACK WIN 4 120 4 0 0 0 4 8 0 1 $T0 .raSearch = $eip $T0 ^ = $esp $T0 4 + =

Added: lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-stack-cfi.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-stack-cfi.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-stack-cfi.syms (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-stack-cfi.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,6 @@
+MODULE Linux x86_64 603FCF6CA7FF4BCC86AE8FF44DB2576A0 linux-x86_64_not_crashed
+INFO CODE_ID 6CCF3F60FFA7CC4B86AE8FF44DB2576A68983611
+PUBLIC 420 0 bar
+PUBLIC 450 0 foo
+PUBLIC 480 0 _start
+STACK CFI INIT 420 29 .cfa: $rbp ^ .ra: .cfa 8 + ^ $rsp: .cfa 16 + $rbp: .cfa ^

Added: lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-stack-cfi.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-stack-cfi.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-stack-cfi.yaml (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-stack-cfi.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,43 @@
+--- !minidump
+Streams:         
+  - Type:            ThreadList
+    Threads:         
+      - Thread Id:       0x000074F3
+        Context:         0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B001000000000006CAE000000006B7FC05A0000C81D415A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A2BF9E5A6B7F0000000000000000000000000000000000008850C14BFD7F00009850C14BFD7F00000100000000000000B04AC14BFD7F0000000000000000000060812D01000000000800000000000000B065E05A6B7F00008004400000000000E050C14BFD7F00000000000000000000000000000000000030044000000000007F03FFFF0000FFFFFFFFFFFF000000000000000000000000801F00006B7F00000400000000000000B84CC14BFD7F0000304D405A6B7F0000C84DC14BFD7F0000C0AA405A6B7F00004F033D0000000000B84DC14BFD7F0000E84DC14BFD7F0000000000000000000000000000000000000070E05A6B7F000078629E5A6B7F0000C81D415A6B7F0000804F9E5A6B7F00000000000001000000E603000001000000E093115A6B7F0000804EC14BFD7F0000584EC14BFD7F000099ADC05A6B7F00000100000000000000AAAAD77D0000000002000000000000000800000000000000B065E05A6B7F0000E6B7C05A6B7F0000010000006B7F0000884DC14BFD7F0000106F7C5A6B7F0000984EC14BFD7F0000488B7C5A6B7F0000C4A71CB90000000001000000000000000800000000000000B065E05A6B7F000048B6C05A6B7F0000702AE25A6B7F0000D84DC14BFD7F000030489E5A6B7F0000E84EC14BFD7F0000E05E9E5A6B7F00000991F0460000000001000000000000000800000000000000B065E05A6B7F000048B6C05A6B7F00000100000000000000284EC14BFD7F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+        Stack:           
+          Start of Memory Range: 0x00007FFD4BC15080
+          Content:         30044000000000000000000000000000FFFFFFFF03000000B850C14BFD7F0000670440000000000000000000000000000000000001000000D850C14BFD7F0000970440000000000000000000000000000000000000000000000000000000000001000000000000009F67C14BFD7F00000000000000000000BA67C14BFD7F0000
+  - Type:            ModuleList
+    Modules:         
+      - Base of Image:   0x0000000000400000
+        Size of Image:   0x00001000
+        Module Name:     '/tmp/unwind-via-stack-cfi'
+        CodeView Record: 4C4570426CCF3F60FFA7CC4B86AE8FF44DB2576A68983611
+  - Type:            MemoryList
+    Memory Ranges:   
+      - Start of Memory Range: 0x00007FFD4BC15080
+        Content:         30044000000000000000000000000000FFFFFFFF03000000B850C14BFD7F0000670440000000000000000000000000000000000001000000D850C14BFD7F0000970440000000000000000000000000000000000000000000000000000000000001000000000000009F67C14BFD7F00000000000000000000BA67C14BFD7F0000
+  - Type:            SystemInfo
+    Processor Arch:  AMD64
+    Processor Level: 6
+    Processor Revision: 15876
+    Number of Processors: 40
+    Platform ID:     Linux
+    CSD Version:     'Linux 3.13.0-91-generic'
+    CPU:             
+      Vendor ID:       GenuineIntel
+      Version Info:    0x00000000
+      Feature Info:    0x00000000
+  - Type:            LinuxProcStatus
+    Text:             |
+      Name:	unwind-via-stack-cfi
+      State:	t (tracing stop)
+      Tgid:	29939
+      Ngid:	0
+      Pid:	29939
+      PPid:	29370
+      TracerPid:	29940
+      Uid:	1001	1001	1001	1001
+      Gid:	1001	1001	1001	1001
+
+...

Added: lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-stack-win.syms
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-stack-win.syms?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-stack-win.syms (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-stack-win.syms Wed Oct  9 10:35:43 2019
@@ -0,0 +1,17 @@
+MODULE windows x86 897DD83EA8C8411897F3A925EE4BF7411 unwind-via-stack-win.pdb
+INFO CODE_ID 5D499B5C5000 unwind-via-stack-win.exe
+PUBLIC  0 0 dummy
+PUBLIC 10 0 call_many
+PUBLIC 80 0 main
+PUBLIC 90 0 many_pointer_args
+PUBLIC 100 0 bogus_rule
+PUBLIC 110 0 bogus_cfa_rhs
+PUBLIC 120 0 bogus_esp_rhs
+PUBLIC 130 0 temporary_var
+STACK WIN 4 10 6d 0 0 0 0 0 0 1 $T0 $esp 80 + = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 80 8 0 0 0 0 0 0 1 $T0 $esp = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 90 5 0 0 50 0 0 0 1 $T0 $esp = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 100 4 0 0 0 0 0 0 1 bogus
+STACK WIN 4 110 4 0 0 0 0 0 0 1 $T0 $bogus = $eip $T0 ^ = $esp $T0 4 + =
+STACK WIN 4 120 4 0 0 0 0 0 0 1 $T0 $esp = $eip $T0 ^ = $esp $bogus 4 + =
+STACK WIN 4 130 4 0 0 0 0 0 0 1 $T0 $esp = $bogus $T0 = $eip $bogus ^ = $esp $T0 4 + =

Added: lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-stack-win.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-stack-win.yaml?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-stack-win.yaml (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/Inputs/unwind-via-stack-win.yaml Wed Oct  9 10:35:43 2019
@@ -0,0 +1,37 @@
+--- !minidump
+Streams:
+  - Type:            ThreadList
+    Threads:
+      - Thread Id:       0x0000290C
+        Priority Class:  0x00000020
+        Environment Block: 0x0000000000A98000
+        Context:         3F0001000000000000000000000000000000000000000000000000007F02000000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002B000000530000002B0000002B00000080100B0080100B000050A90080100B0080100B0000000000E4FECF0092100B0023000000440301007CFECF002B0000007F0200000000000000000000000000000000000000000000801F0000FFFF020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000144E3D6C2000000001000000EA1E00F4C000E50700000000FC0100002CE3C014D8E202010000E507880F401D839DC60100000000400000007F00000000000000880F401D0A000000900F401D0000000000000100EA1E00009808E5077F00000000000000000000009008E507990100006002E5072CABC87708346474B42300000100000044E3C014200000000000000020532777A80F401D4F346474D00F401D6F378CCC5C4CD5010000000000000000000000000000000000000000000000003AFCD72F90E3C01418CE3470B4230000B80F401DC00F401DC80F401DD00F401D
+        Stack:
+          Start of Memory Range: 0x0000000000CFFE78
+          Content:         0000000079100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0085100B0094842777
+  - Type:            ModuleList
+    Modules:
+      - Base of Image:   0x00000000000B1000
+        Size of Image:   0x00004000
+        Module Name:     'unwind-via-stack-win.exe'
+        CodeView Record: 525344533ED87D89C8A8184197F3A925EE4BF74101000000433A5C70726F6A656374735C746573745F6170705C436F6E736F6C654170706C69636174696F6E315C44656275675C436F6E736F6C654170706C69636174696F6E312E70646200
+      - Base of Image:   0x0000000077260000
+        Size of Image:   0x000E0000
+        Module Name:     'C:\Windows\System32\kernel32.dll'
+        CodeView Record: 5253445300F90A57CF8DED8A463A90390318CD4401000000776B65726E656C33322EFFFFFFFF
+  - Type:            MemoryList
+    Memory Ranges:
+      - Start of Memory Range: 0x0000000000CFFE78
+        Content:         0000000079100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0000100B0085100B0094842777
+  - Type:            MemoryInfoList
+    Content:         1000000030000000020000000000000000100B00000000000000000000000000000000000000000000400000000000000010000010000000000000010000000000002677000000000000000000000000000000000000000000000E000000000000100000100000000000000100000000
+  - Type:            SystemInfo
+    Processor Arch:  X86
+    Platform ID:     Win32NT
+    CPU:
+      Vendor ID:       AuthenticAMD
+      Version Info:    0x00800F82
+      Feature Info:    0x178BFBFF
+  - Type:            MiscInfo
+    Content:         54050000F703000008290000C883495D0000000000000000AC0D000098080000AC0D00000200000002000000002000000D0000000000000002000000C4FFFFFF430065006E007400720061006C0020004500750072006F007000650020005300740061006E0064006100720064002000540069006D006500000000000000000000000A0000000500030000000000000000000000430065006E007400720061006C0020004500750072006F00700065002000530075006D006D00650072002000540069006D00650000000000000000000000000000000300000005000200000000000000C4FFFFFF310037003100330034002E0031002E007800380036006600720065002E007200730034005F00720065006C0065006100730065002E003100380030003400310030002D00310038003000340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064006200670063006F00720065002E0069003300380036002C00310030002E0030002E00310037003100330034002E0031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006C816B92
+...

Added: lldb/trunk/lit/SymbolFile/Breakpad/line-table-discontinuous-file-ids.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/line-table-discontinuous-file-ids.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/line-table-discontinuous-file-ids.test (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/line-table-discontinuous-file-ids.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,13 @@
+# Test that we handle files which has gaps in the FILE record IDs.
+
+# RUN: yaml2obj %S/Inputs/basic-elf.yaml > %T/line-table-discontinuous-file-ids.out
+# RUN: %lldb %T/line-table-discontinuous-file-ids.out \
+# RUN:   -o "target symbols add -s line-table-discontinuous-file-ids.out %S/Inputs/line-table-discontinuous-file-ids.syms" \
+# RUN:   -s %s -o exit | FileCheck %s
+
+image dump line-table a.c
+# CHECK-LABEL: Line table for /tmp/a.c
+# CHECK-NEXT: 0x00000000004000b0: /tmp/a.c:1
+# CHECK-NEXT: 0x00000000004000b1: /tmp/a.c:2
+# CHECK-NEXT: 0x00000000004000b2: /tmp/c.c:2
+# CHECK-NEXT: 0x00000000004000b3: 

Added: lldb/trunk/lit/SymbolFile/Breakpad/line-table-edgecases.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/line-table-edgecases.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/line-table-edgecases.test (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/line-table-edgecases.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,21 @@
+# Test handling of breakpad files with some unusual or erroneous constructs. The
+# input contains a LINE record which does not belong to any function as well as
+# a FUNC record without any LINE records.
+
+# RUN: yaml2obj %S/Inputs/basic-elf.yaml > %T/line-table-edgecases.out
+# RUN: %lldb %T/line-table-edgecases.out \
+# RUN:   -o "target symbols add -s line-table-edgecases.out %S/Inputs/line-table-edgecases.syms" \
+# RUN:   -s %s -o exit | FileCheck %s
+
+# Test that line table for func2 was parsed properly:
+image dump line-table a.c
+# CHECK-LABEL: Line table for /tmp/a.c
+# CHECK-NEXT: 0x00000000004000c0: /tmp/a.c:2
+# CHECK-NEXT: 0x00000000004000c2: 
+# CHECK-EMPTY: 
+
+# Looking up an address inside func should still work even if it does not result
+# in a line entry.
+image lookup -a 0x4000b2 -v
+# CHECK-LABEL: image lookup -a 0x4000b2 -v
+# CHECK: Summary: line-table-edgecases.out`func + 2

Added: lldb/trunk/lit/SymbolFile/Breakpad/line-table-missing-file.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/line-table-missing-file.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/line-table-missing-file.test (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/line-table-missing-file.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,17 @@
+# Test that we do something reasonable if a LINE record references a
+# non-existing FILE record.
+# Right now, "something reasonable" means creating a line entry with an empty
+# file.
+
+# RUN: yaml2obj %S/Inputs/basic-elf.yaml > %T/line-table-missing-file.out
+# RUN: %lldb %T/line-table-missing-file.out \
+# RUN:   -o "target symbols add -s line-table-missing-file.out %S/Inputs/line-table-missing-file.syms" \
+# RUN:   -s %s -o exit | FileCheck %s
+
+image dump line-table a.c
+# CHECK-LABEL: Line table for /tmp/a.c
+# CHECK-NEXT: 0x00000000004000b0: /tmp/a.c:1
+# CHECK-NEXT: 0x00000000004000b1: /tmp/a.c:2
+# CHECK-NEXT: 0x00000000004000b2: :2
+# CHECK-NEXT: 0x00000000004000b3: 
+# CHECK-EMPTY: 

Added: lldb/trunk/lit/SymbolFile/Breakpad/line-table-mixed-path-styles.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/line-table-mixed-path-styles.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/line-table-mixed-path-styles.test (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/line-table-mixed-path-styles.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,11 @@
+# RUN: yaml2obj %S/Inputs/basic-elf.yaml > %T/line-table-mixed-path-styles.out
+# RUN: %lldb %T/line-table-mixed-path-styles.out \
+# RUN:   -o "target symbols add -s line-table-mixed-path-styles.out %S/Inputs/line-table-mixed-path-styles.syms" \
+# RUN:   -s %s -o exit | FileCheck %s
+
+image dump line-table a.c
+# CHECK-LABEL: Line table for /tmp/a.c
+# CHECK-NEXT: 0x00000000004000b0: /tmp/a.c:1
+# CHECK-NEXT: 0x00000000004000b1: c:\tmp\b.c:1
+# CHECK-NEXT: 0x00000000004000b2:
+# CHECK-EMPTY:

Added: lldb/trunk/lit/SymbolFile/Breakpad/line-table.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/line-table.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/line-table.test (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/line-table.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,45 @@
+# RUN: yaml2obj %S/Inputs/basic-elf.yaml > %T/line-table.out
+# RUN: %lldb %T/line-table.out -o "target symbols add -s line-table.out %S/Inputs/line-table.syms" \
+# RUN:   -s %s -o exit | FileCheck %s
+
+# We create a compile unit for each function. The compile unit name is the first
+# line table entry in that function.
+# This symbol file contains a single function in the "compile unit" a.c. This
+# function has two line table sequences.
+image dump line-table a.c
+# CHECK-LABEL: Line table for /tmp/a.c
+# CHECK-NEXT: 0x00000000004000b0: /tmp/a.c:1
+# CHECK-NEXT: 0x00000000004000b1: /tmp/a.c:2
+# CHECK-NEXT: 0x00000000004000b2: /tmp/c.c:2
+# CHECK-NEXT: 0x00000000004000b3: 
+# CHECK-EMPTY: 
+# CHECK-NEXT: 0x00000000004000b4: /tmp/c.c:3
+# CHECK-NEXT: 0x00000000004000b5: 
+# CHECK-EMPTY: 
+
+# Single compile unit for c.c with a single line sequence.
+image dump line-table c.c
+# CHECK-LABEL: Line table for /tmp/c.c
+# CHECK-NEXT: 0x00000000004000c0: /tmp/c.c:1
+# CHECK-NEXT: 0x00000000004000c2: /tmp/a.c:2
+# CHECK-NEXT: 0x00000000004000c4: 
+# CHECK-EMPTY: 
+
+# There are two compile units called "d.c". Hence, two line tables.
+image dump line-table d.c
+# CHECK-LABEL: Line table for /tmp/d.c
+# CHECK-NEXT: 0x00000000004000d0: /tmp/d.c:1
+# CHECK-NEXT: 0x00000000004000d2: 
+# CHECK-EMPTY: 
+# CHECK-LABEL: Line table for /tmp/d.c
+# CHECK-NEXT: 0x00000000004000e0: /tmp/d.c:2
+# CHECK-NEXT: 0x00000000004000e2: 
+# CHECK-EMPTY: 
+
+image lookup -a 0x4000b2 -v
+# CHECK-LABEL: image lookup -a 0x4000b2 -v
+# CHECK: Summary: line-table.out`func + 2
+
+breakpoint set -f c.c -l 2
+# CHECK-LABEL: breakpoint set -f c.c -l 2
+# CHECK: Breakpoint 1: where = line-table.out`func + 2, address = 0x00000000004000b2

Added: lldb/trunk/lit/SymbolFile/Breakpad/stack-cfi-parsing.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/stack-cfi-parsing.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/stack-cfi-parsing.test (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/stack-cfi-parsing.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,52 @@
+# RUN: yaml2obj %S/Inputs/stack-cfi-parsing.yaml > %t
+# RUN: %lldb -c %t -o "target symbols add %S/Inputs/stack-cfi-parsing.syms" \
+# RUN:   -s %s -b | FileCheck %s
+
+image show-unwind -n func0
+# CHECK-LABEL: image show-unwind -n func0
+# CHECK: Asynchronous (not restricted to call-sites) UnwindPlan is 'breakpad STACK CFI'
+# CHECK: Synchronous (restricted to call-sites) UnwindPlan is 'breakpad STACK CFI'
+# CHECK:      Symbol file UnwindPlan:
+# CHECK-NEXT: This UnwindPlan originally sourced from breakpad STACK CFI
+# CHECK-NEXT: This UnwindPlan is sourced from the compiler: yes.
+# CHECK-NEXT: This UnwindPlan is valid at all instruction locations: no.
+# CHECK-NEXT: Address range of this UnwindPlan: [stack-cfi-parsing.out..module_image + 0-0x0000000000000002)
+# CHECK-NEXT: row[0]:    0: CFA=DW_OP_breg7 +0 => rbp=DW_OP_breg7 +0 rip=DW_OP_pick 0x00 
+# CHECK-NEXT: row[1]:    1: CFA=DW_OP_breg7 +0 => rbx=DW_OP_breg2 +0 rbp=DW_OP_breg0 +0 rip=DW_OP_pick 0x00 
+
+# The following plans are all (syntactically) invalid for various reasons.
+# Processing those should not cause a crash.
+
+image show-unwind -n func2
+# CHECK-LABEL: image show-unwind -n func2
+# CHECK-NOT: Symbol file
+
+image show-unwind -n func3
+# CHECK-LABEL: image show-unwind -n func3
+# CHECK-NOT: Symbol file
+
+image show-unwind -n func4
+# CHECK-LABEL: image show-unwind -n func4
+# CHECK-NOT: Symbol file
+
+image show-unwind -n func5
+# CHECK-LABEL: image show-unwind -n func5
+# CHECK-NOT: Symbol file
+
+image show-unwind -n func6
+# CHECK-LABEL: image show-unwind -n func6
+# CHECK-NOT: Symbol file
+
+image show-unwind -n func7
+# CHECK-LABEL: image show-unwind -n func7
+# CHECK-NOT: Symbol file
+
+# Finally, try an unwind plan with just a single row
+image show-unwind -n func9
+# CHECK-LABEL: image show-unwind -n func9
+# CHECK: Asynchronous (not restricted to call-sites) UnwindPlan is 'breakpad STACK CFI'
+# CHECK: Synchronous (restricted to call-sites) UnwindPlan is 'breakpad STACK CFI'
+# CHECK: Symbol file UnwindPlan:
+# CHECK: Address range of this UnwindPlan: [stack-cfi-parsing.out..module_image + 9-0x000000000000000a)
+# CHECK: row[0]:    0: CFA=DW_OP_breg6 +0 => rip=DW_OP_breg0 +0
+

Added: lldb/trunk/lit/SymbolFile/Breakpad/symtab-macho.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/symtab-macho.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/symtab-macho.test (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/symtab-macho.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,21 @@
+# RUN: yaml2obj %S/Inputs/basic-macho.yaml > %T/symtab-macho.out
+# RUN: %lldb %T/symtab-macho.out -o "target symbols add %S/Inputs/symtab-macho.syms" \
+# RUN:   -s %s | FileCheck %s
+
+image dump symtab symtab-macho.out
+# CHECK-LABEL: (lldb) image dump symtab symtab-macho.out
+# CHECK: Symtab, file = {{.*}}symtab-macho.out, num_symbols = 1:
+# CHECK: Index   UserID DSX Type            File Address/Value Load Address       Size               Flags      Name
+# CHECK: [    0]      0   X Code            0x0000000100000ff0                    0x0000000000000006 0x00000000 _start
+
+# CHECK-LABEL: (lldb) image lookup -a 0x100000ff0 -v
+# CHECK: Address: symtab-macho.out[0x0000000100000ff0] (symtab-macho.out.__TEXT.__text + 0)
+# CHECK: Symbol: id = {0x00000000}, range = [0x0000000100000ff0-0x0000000100000ff6), name="_start"
+
+# CHECK-LABEL: (lldb) image lookup -n _start -v
+# CHECK: Address: symtab-macho.out[0x0000000100000ff0] (symtab-macho.out.__TEXT.__text + 0)
+# CHECK: Symbol: id = {0x00000000}, range = [0x0000000100000ff0-0x0000000100000ff6), name="_start"
+
+image lookup -a 0x100000ff0 -v
+image lookup -n _start -v
+exit

Added: lldb/trunk/lit/SymbolFile/Breakpad/symtab.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/symtab.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/symtab.test (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/symtab.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,25 @@
+# RUN: yaml2obj %S/Inputs/basic-elf.yaml > %T/symtab.out
+# RUN: %lldb %T/symtab.out -o "target symbols add -s symtab.out %S/Inputs/symtab.syms" \
+# RUN:   -s %s | FileCheck %s
+
+# CHECK-LABEL: (lldb) image dump symtab symtab.out
+# CHECK: Symtab, file = {{.*}}symtab.out, num_symbols = 5:
+# CHECK: Index   UserID DSX Type            File Address/Value Load Address       Size               Flags      Name
+# CHECK: [    0]      0  SX Code            0x0000000000400000                    0x00000000000000b0 0x00000000 ___lldb_unnamed_symbol1$$symtab.out
+# CHECK: [    1]      0   X Code            0x00000000004000c0                    0x0000000000000010 0x00000000 f2
+# CHECK: [    2]      0   X Code            0x00000000004000d0                    0x0000000000000022 0x00000000 _start
+# CHECK: [    3]      0   X Code            0x00000000004000a0                    0x000000000000000d 0x00000000 func_only
+# CHECK: [    4]      0   X Code            0x00000000004000b0                    0x000000000000000c 0x00000000 f1_func
+
+# CHECK-LABEL: (lldb) image lookup -a 0x4000b0 -v
+# CHECK: Address: symtab.out[0x00000000004000b0] (symtab.out.PT_LOAD[0]..text2 + 0)
+# CHECK: Symbol: id = {0x00000000}, range = [0x00000000004000b0-0x00000000004000bc), name="f1_func"
+
+# CHECK-LABEL: (lldb) image lookup -n f2 -v
+# CHECK: Address: symtab.out[0x00000000004000c0] (symtab.out.PT_LOAD[0]..text2 + 16)
+# CHECK: Symbol: id = {0x00000000}, range = [0x00000000004000c0-0x00000000004000d0), name="f2"
+
+image dump symtab symtab.out
+image lookup -a 0x4000b0 -v
+image lookup -n f2 -v
+exit

Added: lldb/trunk/lit/SymbolFile/Breakpad/unwind-via-raSearch.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/unwind-via-raSearch.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/unwind-via-raSearch.test (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/unwind-via-raSearch.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,43 @@
+# RUN: yaml2obj %S/Inputs/unwind-via-stack-win.yaml > %t
+# RUN: %lldb -c %t \
+# RUN:   -o "target symbols add %S/Inputs/unwind-via-raSearch.syms" \
+# RUN:   -s %s -b | FileCheck %s
+
+# First check that unwind plan generation works correctly.
+# This function has a "typical" unwind rule.
+image show-unwind -n call_many
+# CHECK-LABEL: image show-unwind -n call_many
+# CHECK: UNWIND PLANS for unwind-via-stack-win.exe`call_many
+# CHECK: Symbol file UnwindPlan:
+# CHECK: This UnwindPlan originally sourced from breakpad STACK WIN
+# CHECK: This UnwindPlan is sourced from the compiler: yes.
+# CHECK: This UnwindPlan is valid at all instruction locations: no.
+# CHECK: Address range of this UnwindPlan: [unwind-via-stack-win.exe..module_image + 16-0x0000007d)
+# CHECK: row[0]:    0: CFA=RaSearch at SP+0 => esp=DW_OP_pick 0x00, DW_OP_consts +4, DW_OP_plus  eip=DW_OP_pick 0x00, DW_OP_deref
+
+image show-unwind -n nonzero_frame_size
+# CHECK-LABEL: image show-unwind -n nonzero_frame_size
+# CHECK: UNWIND PLANS for unwind-via-stack-win.exe`nonzero_frame_size
+# CHECK: Symbol file UnwindPlan:
+# CHECK: row[0]:    0: CFA=RaSearch at SP+12 => esp=DW_OP_pick 0x00, DW_OP_consts +4, DW_OP_plus  eip=DW_OP_pick 0x00, DW_OP_deref
+
+# Then, some invalid rules.
+image show-unwind -n complex_rasearch
+# CHECK-LABEL: image show-unwind -n complex_rasearch
+# CHECK: UNWIND PLANS for unwind-via-stack-win.exe`complex_rasearch
+# CHECK-NOT: Symbol file
+
+image show-unwind -n esp_rasearch
+# CHECK-LABEL: image show-unwind -n esp_rasearch
+# CHECK: UNWIND PLANS for unwind-via-stack-win.exe`esp_rasearch
+# CHECK-NOT: Symbol file
+
+# And finally, check that backtracing works as a whole by unwinding a simple
+# stack.
+thread backtrace
+# CHECK-LABEL: thread backtrace
+# CHECK: frame #0: 0x000b1092 unwind-via-stack-win.exe`many_pointer_args
+# CHECK: frame #1: 0x000b1079 unwind-via-stack-win.exe`call_many + 105
+# CHECK: frame #2: 0x000b1085 unwind-via-stack-win.exe`main + 5
+# CHECK: frame #3: 0x77278494 kernel32.dll
+# CHECK-NOT: frame

Added: lldb/trunk/lit/SymbolFile/Breakpad/unwind-via-stack-cfi.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/unwind-via-stack-cfi.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/unwind-via-stack-cfi.test (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/unwind-via-stack-cfi.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,20 @@
+# RUN: yaml2obj %S/Inputs/unwind-via-stack-cfi.yaml > %t
+# RUN: %lldb -c %t -o "target symbols add %S/Inputs/unwind-via-stack-cfi.syms" \
+# RUN:   -s %s -b | FileCheck %s
+
+image show-unwind -n bar
+# CHECK-LABEL: image show-unwind -n bar
+# CHECK: Asynchronous (not restricted to call-sites) UnwindPlan is 'breakpad STACK CFI'
+# CHECK: Synchronous (restricted to call-sites) UnwindPlan is 'breakpad STACK CFI'
+# CHECK:      Symbol file UnwindPlan:
+# CHECK-NEXT: This UnwindPlan originally sourced from breakpad STACK CFI
+# CHECK-NEXT: This UnwindPlan is sourced from the compiler: yes.
+# CHECK-NEXT: This UnwindPlan is valid at all instruction locations: no.
+# CHECK-NEXT: Address range of this UnwindPlan: [unwind-via-stack-cfi..module_image + 1056-0x0000000000000449)
+# CHECK-NEXT: row[0]: 0: CFA=DW_OP_breg6 +0, DW_OP_deref => rbp=DW_OP_pick 0x00, DW_OP_deref rsp=DW_OP_pick 0x00, DW_OP_consts +16, DW_OP_plus rip=DW_OP_pick 0x00, DW_OP_consts +8, DW_OP_plus , DW_OP_deref
+
+thread backtrace
+# CHECK-LABEL: thread backtrace
+# CHECK: frame #0: 0x0000000000400430 unwind-via-stack-cfi`bar + 16
+# CHECK: frame #1: 0x0000000000400497 unwind-via-stack-cfi`_start + 23
+# CHECK-NOT: frame

Added: lldb/trunk/lit/SymbolFile/Breakpad/unwind-via-stack-win.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Breakpad/unwind-via-stack-win.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Breakpad/unwind-via-stack-win.test (added)
+++ lldb/trunk/lit/SymbolFile/Breakpad/unwind-via-stack-win.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,54 @@
+# RUN: yaml2obj %S/Inputs/unwind-via-stack-win.yaml > %t
+# RUN: %lldb -c %t \
+# RUN:   -o "target symbols add %S/Inputs/unwind-via-stack-win.syms" \
+# RUN:   -s %s -b | FileCheck %s
+
+# First check that unwind plan generation works correctly.
+# This function has a "typical" unwind rule.
+image show-unwind -n call_many
+# CHECK-LABEL: image show-unwind -n call_many
+# CHECK: UNWIND PLANS for unwind-via-stack-win.exe`call_many
+# CHECK: Symbol file UnwindPlan:
+# CHECK: This UnwindPlan originally sourced from breakpad STACK WIN
+# CHECK: This UnwindPlan is sourced from the compiler: yes.
+# CHECK: This UnwindPlan is valid at all instruction locations: no.
+# CHECK: Address range of this UnwindPlan: [unwind-via-stack-win.exe..module_image + 16-0x0000007d)
+# CHECK: row[0]:    0: CFA=DW_OP_breg7 +0, DW_OP_consts +80, DW_OP_plus  => esp=DW_OP_pick 0x00, DW_OP_consts +4, DW_OP_plus  eip=DW_OP_pick 0x00, DW_OP_deref
+
+# Then, some invalid rules.
+image show-unwind -n bogus_rule
+# CHECK-LABEL: image show-unwind -n bogus_rule
+# CHECK: UNWIND PLANS for unwind-via-stack-win.exe`bogus_rule
+# CHECK-NOT: Symbol file
+
+image show-unwind -n bogus_cfa_rhs
+# CHECK-LABEL: image show-unwind -n bogus_cfa_rhs
+# CHECK: UNWIND PLANS for unwind-via-stack-win.exe`bogus_cfa_rhs
+# CHECK-NOT: Symbol file
+
+image show-unwind -n bogus_esp_rhs
+# CHECK-LABEL: image show-unwind -n bogus_esp_rhs
+# CHECK: UNWIND PLANS for unwind-via-stack-win.exe`bogus_esp_rhs
+# CHECK-NOT: Symbol file
+
+# We don't treat unknown lhs as an error, as it can be just a temporary
+# variable used in other rules.
+image show-unwind -n temporary_var
+# CHECK-LABEL: image show-unwind -n temporary_var
+# CHECK: UNWIND PLANS for unwind-via-stack-win.exe`temporary_var
+# CHECK: Symbol file UnwindPlan:
+# CHECK: This UnwindPlan originally sourced from breakpad STACK WIN
+# CHECK: This UnwindPlan is sourced from the compiler: yes.
+# CHECK: This UnwindPlan is valid at all instruction locations: no.
+# CHECK: Address range of this UnwindPlan: [unwind-via-stack-win.exe..module_image + 304-0x00000134)
+# CHECK: row[0]:    0: CFA=DW_OP_breg7 +0 => esp=DW_OP_pick 0x00, DW_OP_consts +4, DW_OP_plus  eip=DW_OP_pick 0x00, DW_OP_deref
+
+# And finally, check that backtracing works as a whole by unwinding a simple
+# stack.
+thread backtrace
+# CHECK-LABEL: thread backtrace
+# CHECK: frame #0: 0x000b1092 unwind-via-stack-win.exe`many_pointer_args
+# CHECK: frame #1: 0x000b1079 unwind-via-stack-win.exe`call_many + 105
+# CHECK: frame #2: 0x000b1085 unwind-via-stack-win.exe`main + 5
+# CHECK: frame #3: 0x77278494 kernel32.dll
+# CHECK-NOT: frame

Added: lldb/trunk/lit/SymbolFile/DWARF/Inputs/debug-line-basic.script
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/Inputs/debug-line-basic.script?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/Inputs/debug-line-basic.script (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/Inputs/debug-line-basic.script Wed Oct  9 10:35:43 2019
@@ -0,0 +1,14 @@
+PHDRS {
+  text PT_LOAD;
+}
+SECTIONS {
+  .shstrtab     : { *(.shstrtab    ) }
+  .debug_info   : { *(.debug_info  ) }
+  .debug_line   : { *(.debug_line  ) }
+  .debug_str    : { *(.debug_str   ) }
+  .debug_abbrev : { *(.debug_abbrev) }
+
+  . = 0x201000;
+  .text : { *(.text .text.f) } :text
+  /DISCARD/ : { *(*) }
+}

Added: lldb/trunk/lit/SymbolFile/DWARF/Inputs/debug-types-basic.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/Inputs/debug-types-basic.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/Inputs/debug-types-basic.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/Inputs/debug-types-basic.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,15 @@
+enum E { e1, e2, e3 };
+enum class EC { e1, e2, e3 };
+
+struct A {
+  int i;
+  long l;
+  float f;
+  double d;
+  E e;
+  EC ec;
+};
+
+extern constexpr A a{42, 47l, 4.2f, 4.7, e1, EC::e3};
+extern constexpr E e(e2);
+extern constexpr EC ec(EC::e2);

Added: lldb/trunk/lit/SymbolFile/DWARF/Inputs/debug-types-expressions.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/Inputs/debug-types-expressions.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/Inputs/debug-types-expressions.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/Inputs/debug-types-expressions.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,33 @@
+struct A {
+  int i = 47;
+  int f() { return i; }
+  virtual ~A() = default;
+};
+
+struct B: public A {
+  int j = 42;
+};
+
+namespace ns {
+struct A {
+  int i = 147;
+  ::A getA();
+  A();
+};
+A::A() = default;
+
+::A A::getA() {
+  ::A a;
+  a.i = i - 1;
+  return a;
+}
+
+} // namespace ns
+
+int foo(A *a) {
+  return a->f();
+}
+
+int main() {
+  return foo(new B);
+}

Added: lldb/trunk/lit/SymbolFile/DWARF/Inputs/dir-separator-no-comp-dir-relative-name.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/Inputs/dir-separator-no-comp-dir-relative-name.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/Inputs/dir-separator-no-comp-dir-relative-name.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/Inputs/dir-separator-no-comp-dir-relative-name.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,3 @@
+image dump line-table a.c
+breakpoint set -f a.c -l 1
+breakpoint set -f foo/b.c -l 1

Added: lldb/trunk/lit/SymbolFile/DWARF/Inputs/dir-separator-posix.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/Inputs/dir-separator-posix.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/Inputs/dir-separator-posix.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/Inputs/dir-separator-posix.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,3 @@
+image dump line-table a.c
+breakpoint set -f a.c -l 1
+breakpoint set -f /tmp/b.c -l 1

Added: lldb/trunk/lit/SymbolFile/DWARF/Inputs/dir-separator-windows.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/Inputs/dir-separator-windows.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/Inputs/dir-separator-windows.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/Inputs/dir-separator-windows.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,7 @@
+image dump line-table a.c
+breakpoint set -f a.c -l 1
+breakpoint set -f C:/tmp/b.c -l 1
+
+# This will fail on non-windows systems because the path will by parsed
+# according to posix rules
+# breakpoint set -f 'C:\tmp\b.c' -l 1

Added: lldb/trunk/lit/SymbolFile/DWARF/Inputs/find-variable-file-2.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/Inputs/find-variable-file-2.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/Inputs/find-variable-file-2.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/Inputs/find-variable-file-2.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,3 @@
+namespace two {
+int foo;
+}

Added: lldb/trunk/lit/SymbolFile/DWARF/apple-index-is-used.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/apple-index-is-used.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/apple-index-is-used.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/apple-index-is-used.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,8 @@
+// Test that we use the apple indexes.
+// RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx
+// RUN: lldb-test symbols %t | FileCheck %s
+
+// CHECK: .apple_names index present
+// CHECK: .apple_types index present
+
+int foo;

Added: lldb/trunk/lit/SymbolFile/DWARF/array-sizes.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/array-sizes.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/array-sizes.s (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/array-sizes.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,147 @@
+# This tests a bug where we would incorrectly parse the size of an array if that
+# size happened to match an existing DIE offset. This happened because we
+# misinterpreted that value as a reference to a DIE specifying the VLA size even
+# though the form was a data form (as it should be).
+
+# REQUIRES: lld, x86
+
+# RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj > %t.o
+# RUN: ld.lld %t.o -o %t
+# RUN: lldb-test symbols %t | FileCheck %s
+
+# CHECK: Variable{0x7fffffff0000001e}, name = "X"
+# CHECK-SAME: type = {7fffffff00000033} 0x{{[0-9a-f]*}} (char [56])
+
+
+# Generated from "char X[47];"
+# The array size was modified by hand.
+
+	.text
+	.file	"-"
+	.file	1 "/tmp" "<stdin>"
+	.type	X, at object               # @X
+	.comm	X,63,16
+	.section	.debug_str,"MS", at progbits,1
+.Linfo_string0:
+	.asciz	"clang version 8.0.0 (trunk 349604) (llvm/trunk 349608)" # string offset=0
+.Linfo_string1:
+	.asciz	"-"                     # string offset=55
+.Linfo_string2:
+	.asciz	"/tmp"                  # string offset=57
+.Linfo_string3:
+	.asciz	"X"                     # string offset=62
+.Linfo_string4:
+	.asciz	"char"                  # string offset=64
+.Linfo_string5:
+	.asciz	"__ARRAY_SIZE_TYPE__"   # string offset=69
+	.section	.debug_abbrev,"", at progbits
+	.byte	1                       # Abbreviation Code
+	.byte	17                      # DW_TAG_compile_unit
+	.byte	1                       # DW_CHILDREN_yes
+	.byte	37                      # DW_AT_producer
+	.byte	14                      # DW_FORM_strp
+	.byte	19                      # DW_AT_language
+	.byte	5                       # DW_FORM_data2
+	.byte	3                       # DW_AT_name
+	.byte	14                      # DW_FORM_strp
+	.byte	16                      # DW_AT_stmt_list
+	.byte	23                      # DW_FORM_sec_offset
+	.byte	27                      # DW_AT_comp_dir
+	.byte	14                      # DW_FORM_strp
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	2                       # Abbreviation Code
+	.byte	52                      # DW_TAG_variable
+	.byte	0                       # DW_CHILDREN_no
+	.byte	3                       # DW_AT_name
+	.byte	14                      # DW_FORM_strp
+	.byte	73                      # DW_AT_type
+	.byte	19                      # DW_FORM_ref4
+	.byte	63                      # DW_AT_external
+	.byte	25                      # DW_FORM_flag_present
+	.byte	58                      # DW_AT_decl_file
+	.byte	11                      # DW_FORM_data1
+	.byte	59                      # DW_AT_decl_line
+	.byte	11                      # DW_FORM_data1
+	.byte	2                       # DW_AT_location
+	.byte	24                      # DW_FORM_exprloc
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	3                       # Abbreviation Code
+	.byte	1                       # DW_TAG_array_type
+	.byte	1                       # DW_CHILDREN_yes
+	.byte	73                      # DW_AT_type
+	.byte	19                      # DW_FORM_ref4
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	4                       # Abbreviation Code
+	.byte	33                      # DW_TAG_subrange_type
+	.byte	0                       # DW_CHILDREN_no
+	.byte	73                      # DW_AT_type
+	.byte	19                      # DW_FORM_ref4
+	.byte	55                      # DW_AT_count
+	.byte	11                      # DW_FORM_data1
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	5                       # Abbreviation Code
+	.byte	36                      # DW_TAG_base_type
+	.byte	0                       # DW_CHILDREN_no
+	.byte	3                       # DW_AT_name
+	.byte	14                      # DW_FORM_strp
+	.byte	62                      # DW_AT_encoding
+	.byte	11                      # DW_FORM_data1
+	.byte	11                      # DW_AT_byte_size
+	.byte	11                      # DW_FORM_data1
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	6                       # Abbreviation Code
+	.byte	36                      # DW_TAG_base_type
+	.byte	0                       # DW_CHILDREN_no
+	.byte	3                       # DW_AT_name
+	.byte	14                      # DW_FORM_strp
+	.byte	11                      # DW_AT_byte_size
+	.byte	11                      # DW_FORM_data1
+	.byte	62                      # DW_AT_encoding
+	.byte	11                      # DW_FORM_data1
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	0                       # EOM(3)
+	.section	.debug_info,"", at progbits
+.Lcu_begin0:
+	.long	.Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
+.Ldebug_info_start0:
+	.short	4                       # DWARF version number
+	.long	.debug_abbrev           # Offset Into Abbrev. Section
+	.byte	8                       # Address Size (in bytes)
+	.byte	1                       # Abbrev [1] 0xb:0x43 DW_TAG_compile_unit
+	.long	.Linfo_string0          # DW_AT_producer
+	.short	12                      # DW_AT_language
+	.long	.Linfo_string1          # DW_AT_name
+	.long	0                       # DW_AT_stmt_list
+	.long	.Linfo_string2          # DW_AT_comp_dir
+	.byte	2                       # Abbrev [2] 0x1e:0x15 DW_TAG_variable
+	.long	.Linfo_string3          # DW_AT_name
+	.long	51                      # DW_AT_type
+                                        # DW_AT_external
+	.byte	1                       # DW_AT_decl_file
+	.byte	1                       # DW_AT_decl_line
+	.byte	9                       # DW_AT_location
+	.byte	3
+	.quad	X
+	.byte	3                       # Abbrev [3] 0x33:0xc DW_TAG_array_type
+	.long	63                      # DW_AT_type
+.Ldie:
+	.byte	4                       # Abbrev [4] 0x38:0x6 DW_TAG_subrange_type
+	.long	70                      # DW_AT_type
+	.byte	.Ldie-.Lcu_begin0       # DW_AT_count - should match the offset of an existing die
+	.byte	0                       # End Of Children Mark
+	.byte	5                       # Abbrev [5] 0x3f:0x7 DW_TAG_base_type
+	.long	.Linfo_string4          # DW_AT_name
+	.byte	6                       # DW_AT_encoding
+	.byte	1                       # DW_AT_byte_size
+	.byte	6                       # Abbrev [6] 0x46:0x7 DW_TAG_base_type
+	.long	.Linfo_string5          # DW_AT_name
+	.byte	8                       # DW_AT_byte_size
+	.byte	7                       # DW_AT_encoding
+	.byte	0                       # End Of Children Mark
+.Ldebug_info_end0:

Added: lldb/trunk/lit/SymbolFile/DWARF/childless-compile-unit.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/childless-compile-unit.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/childless-compile-unit.s (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/childless-compile-unit.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,47 @@
+# Test that we don't crash when parsing slightly invalid DWARF.  The compile
+# unit in this file sets DW_CHILDREN_no, but it still includes an
+# end-of-children marker in its contribution.
+
+# REQUIRES: x86
+
+# RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj > %t.o
+# RUN: lldb-test symbols %t.o
+
+	.section	.debug_str,"MS", at progbits,1
+.Linfo_string0:
+	.asciz	"Hand-written DWARF"
+.Linfo_string1:
+	.asciz	"-"
+.Linfo_string2:
+	.asciz	"/tmp"
+
+	.section	.debug_abbrev,"", at progbits
+	.byte	1                       # Abbreviation Code
+	.byte	17                      # DW_TAG_compile_unit
+	.byte	0                       # DW_CHILDREN_no
+	.byte	37                      # DW_AT_producer
+	.byte	14                      # DW_FORM_strp
+	.byte	19                      # DW_AT_language
+	.byte	5                       # DW_FORM_data2
+	.byte	3                       # DW_AT_name
+	.byte	14                      # DW_FORM_strp
+	.byte	27                      # DW_AT_comp_dir
+	.byte	14                      # DW_FORM_strp
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	0                       # EOM(3)
+
+	.section	.debug_info,"", at progbits
+.Lcu_begin0:
+	.long	.Lcu_length_end-.Lcu_length_start # Length of Unit
+.Lcu_length_start:
+	.short	4                       # DWARF version number
+	.long	.debug_abbrev           # Offset Into Abbrev. Section
+	.byte	8                       # Address Size (in bytes)
+	.byte	1                       # Abbrev [1] 0xb:0x30 DW_TAG_compile_unit
+	.long	.Linfo_string0          # DW_AT_producer
+	.short	12                      # DW_AT_language
+	.long	.Linfo_string1          # DW_AT_name
+	.long	.Linfo_string2          # DW_AT_comp_dir
+	.byte	0                       # Bogus End Of Children Mark
+.Lcu_length_end:

Added: lldb/trunk/lit/SymbolFile/DWARF/compilercontext.ll
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/compilercontext.ll?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/compilercontext.ll (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/compilercontext.ll Wed Oct  9 10:35:43 2019
@@ -0,0 +1,52 @@
+; Test finding types by CompilerContext.
+; RUN: llc %s -filetype=obj -o %t.o
+; RUN: lldb-test symbols %t.o -find=type --language=C99 \
+; RUN:   -compiler-context="Module:CModule,Module:SubModule,Struct:FromSubmoduleX" \
+; RUN:   | FileCheck %s --check-prefix=NORESULTS
+; RUN: lldb-test symbols %t.o -find=type --language=C++ \
+; RUN:   -compiler-context="Module:CModule,Module:SubModule,Struct:FromSubmodule" \
+; RUN:   | FileCheck %s --check-prefix=NORESULTS
+; RUN: lldb-test symbols %t.o -find=type --language=C99 \
+; RUN:   -compiler-context="Module:CModule,Module:SubModule,Struct:FromSubmodule" \
+; RUN:   | FileCheck %s
+; RUN: lldb-test symbols %t.o -find=type --language=C99 \
+; RUN:   -compiler-context="Module:CModule,AnyModule:*,Struct:FromSubmodule" \
+; RUN:   | FileCheck %s
+; RUN: lldb-test symbols %t.o -find=type --language=C99 \
+; RUN:   -compiler-context="AnyModule:*,Struct:FromSubmodule" \
+; RUN:   | FileCheck %s
+; RUN: lldb-test symbols %t.o -find=type --language=C99 \
+; RUN:   -compiler-context="Module:CModule,Module:SubModule,AnyType:FromSubmodule" \
+; RUN:   | FileCheck %s
+;
+; NORESULTS: Found 0 types
+; CHECK: Found 1 types:
+; CHECK: struct FromSubmodule {
+; CHECK-NEXT:     unsigned int x;
+; CHECK-NEXT:     unsigned int y;
+; CHECK-NEXT:     unsigned int z;
+; CHECK-NEXT: }
+
+source_filename = "/t.c"
+target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-apple-macosx10.14.0"
+
+!llvm.dbg.cu = !{!2}
+!llvm.linker.options = !{}
+!llvm.module.flags = !{!18, !19}
+!llvm.ident = !{!22}
+
+; This simulates the debug info for a Clang module.
+!2 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, producer: "clang", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, nameTableKind: GNU, retainedTypes: !{!11})
+!3 = !DIFile(filename: "t.c", directory: "/")
+!8 = !DIModule(scope: !9, name: "SubModule", includePath: "", isysroot: "/")
+!9 = !DIModule(scope: null, name: "CModule", includePath: "", isysroot: "/")
+!11 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "FromSubmodule", scope: !8, file: !3, line: 1, size: 96, elements: !13)
+!13 = !{!14, !16, !17}
+!14 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !11, file: !3, line: 2, baseType: !15, size: 32)
+!15 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned)
+!16 = !DIDerivedType(tag: DW_TAG_member, name: "y", scope: !11, file: !3, line: 2, baseType: !15, size: 32, offset: 32)
+!17 = !DIDerivedType(tag: DW_TAG_member, name: "z", scope: !11, file: !3, line: 2, baseType: !15, size: 32, offset: 64)
+!18 = !{i32 2, !"Dwarf Version", i32 4}
+!19 = !{i32 2, !"Debug Info Version", i32 3}
+!22 = !{!"clang version 10.0.0 (https://github.com/llvm/llvm-project 056f1b5cc7c2133f0cb3e30e7f24808d321096d7)"}

Added: lldb/trunk/lit/SymbolFile/DWARF/debug-line-basic.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/debug-line-basic.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/debug-line-basic.s (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/debug-line-basic.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,86 @@
+# Test basics of debug_line parsing. This test uses a linker script which
+# ensures the code is placed at the end of a module to test the boundary
+# condition when the final end-of-sequence line table entry points to an address
+# that is outside the range of memory covered by the module.
+
+# REQUIRES: lld, x86
+
+# RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj > %t.o
+# RUN: ld.lld --script=%S/Inputs/debug-line-basic.script %t.o -o %t
+# RUN: %lldb %t -o "image dump line-table -v a.c" -o exit | FileCheck %s
+
+	.text
+	.globl	_start
+_start:
+# CHECK: Line table for /tmp/a.c
+	.file	1 "/tmp/b.c"
+	.loc	1 0 0
+        nop
+# CHECK-NEXT: 0x0000000000201000: /tmp/b.c, is_start_of_statement = TRUE{{$}}
+	.loc	1 1 0
+        nop
+# CHECK-NEXT: 0x0000000000201001: /tmp/b.c:1, is_start_of_statement = TRUE{{$}}
+        .loc   1 1 1
+        nop
+# CHECK-NEXT: 0x0000000000201002: /tmp/b.c:1:1, is_start_of_statement = TRUE{{$}}
+        .loc   1 2 0 is_stmt 0
+        nop
+# CHECK-NEXT: 0x0000000000201003: /tmp/b.c:2{{$}}
+        .loc   1 2 0 is_stmt 0 basic_block
+        nop
+# CHECK-NEXT: 0x0000000000201004: /tmp/b.c:2, is_start_of_basic_block = TRUE{{$}}
+        .loc   1 2 0 is_stmt 0 prologue_end
+        nop
+# CHECK-NEXT: 0x0000000000201005: /tmp/b.c:2, is_prologue_end = TRUE{{$}}
+        .loc   1 2 0 is_stmt 0 epilogue_begin
+        nop
+# CHECK-NEXT: 0x0000000000201006: /tmp/b.c:2, is_epilogue_begin = TRUE{{$}}
+	.file  2 "/tmp/c.c"
+	.loc   2 1 0 is_stmt 0
+        nop
+# CHECK-NEXT: 0x0000000000201007: /tmp/c.c:1{{$}}
+# CHECK-NEXT: 0x0000000000201008: /tmp/c.c:1, is_terminal_entry = TRUE{{$}}
+
+	.section	.text.f,"ax", at progbits
+f:
+        .loc   1 3 0 is_stmt 0
+        nop
+# CHECK-NEXT: 0x0000000000201008: /tmp/b.c:3{{$}}
+# CHECK-NEXT: 0x0000000000201009: /tmp/b.c:3, is_terminal_entry = TRUE{{$}}
+
+
+	.section	.debug_str,"MS", at progbits,1
+.Linfo_string1:
+	.asciz	"a.c"
+.Linfo_string2:
+	.asciz	"/tmp"
+	.section	.debug_abbrev,"", at progbits
+	.byte	1                       # Abbreviation Code
+	.byte	17                      # DW_TAG_compile_unit
+	.byte	0                       # DW_CHILDREN_no
+	.byte	19                      # DW_AT_language
+	.byte	5                       # DW_FORM_data2
+	.byte	3                       # DW_AT_name
+	.byte	14                      # DW_FORM_strp
+	.byte	16                      # DW_AT_stmt_list
+	.byte	23                      # DW_FORM_sec_offset
+	.byte	27                      # DW_AT_comp_dir
+	.byte	14                      # DW_FORM_strp
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	0                       # EOM(3)
+	.section	.debug_info,"", at progbits
+.Lcu_begin0:
+	.long	.Lcu_end0-.Lcu_start0   # Length of Unit
+.Lcu_start0:
+	.short	4                       # DWARF version number
+	.long	.debug_abbrev           # Offset Into Abbrev. Section
+	.byte	8                       # Address Size (in bytes)
+	.byte	1                       # Abbrev [1] 0xb:0x1f DW_TAG_compile_unit
+	.short	12                      # DW_AT_language
+	.long	.Linfo_string1          # DW_AT_name
+	.long	.Lline_table_start0     # DW_AT_stmt_list
+	.long	.Linfo_string2          # DW_AT_comp_dir
+.Lcu_end0:
+	.section	.debug_line,"", at progbits
+.Lline_table_start0:

Added: lldb/trunk/lit/SymbolFile/DWARF/debug-names-compressed.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/debug-names-compressed.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/debug-names-compressed.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/debug-names-compressed.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,14 @@
+// Test for a bug where we crashed while processing a compressed debug_names
+// section (use after free).
+
+// REQUIRES: lld, zlib
+
+// RUN: %clang -g -c -o %t.o --target=x86_64-pc-linux -mllvm -accel-tables=Dwarf %s
+// RUN: ld.lld %t.o -o %t --compress-debug-sections=zlib
+// RUN: lldb-test symbols --find=variable --name=foo %t | FileCheck %s
+
+// CHECK: Found 1 variables:
+int foo;
+// ONE-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = debug-names-compressed.cpp:[[@LINE-1]]
+
+extern "C" void _start() {}

Added: lldb/trunk/lit/SymbolFile/DWARF/debug-types-address-ranges.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/debug-types-address-ranges.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/debug-types-address-ranges.s (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/debug-types-address-ranges.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,340 @@
+# Check address lookup works correctly in the presence of type units.
+# Specifically check that we don't use the line table pointed to by the
+# DW_AT_stmt_list of the type unit (which used only for the file names) to
+# compute address range for the type unit as type units don't describe any
+# addresses. The addresses should always resolve to the relevant compile units.
+
+# REQUIRES: lld, x86
+
+# RUN: llvm-mc -dwarf-version=5 -triple x86_64-pc-linux %s -filetype=obj >%t.o
+# RUN: ld.lld %t.o -o %t -image-base=0x47000 -z separate-code
+# RUN: %lldb %t -o "image lookup -a 0x48000 -v" -o exit | FileCheck %s
+
+# CHECK:   CompileUnit: id = {0x00000001}, file = "/tmp/a.cc", language = "c++"
+# CHECK:      Function: id = {0x7fffffff0000006a}, name = "::_start({{.*}})", range = [0x0000000000048000-0x000000000004800c)
+# CHECK:     LineEntry: [0x0000000000048000-0x000000000004800a): /tmp/a.cc:4
+# CHECK:        Symbol: id = {0x00000002}, range = [0x0000000000048000-0x000000000004800c), name="_start"
+# CHECK:      Variable: id = {0x7fffffff00000075}, name = "v1", {{.*}} decl = a.cc:4
+# CHECK:      Variable: id = {0x7fffffff00000080}, name = "v2", {{.*}} decl = a.cc:4
+
+
+# Output generated via
+# clang -g -fdebug-types-section -gdwarf-5 -S
+# from
+# enum E1 { e1 };
+# enum E2 { e2 };
+# extern "C" void _start(E1 v1, E2 v2) {}
+# The output was modified to place the compile unit in between the two type
+# units.
+
+        .text
+        .file   "a.cc"
+        .file   0 "/tmp" "a.cc"
+
+        .text
+        .globl  _start                  # -- Begin function _start
+        .p2align        4, 0x90
+        .type   _start, at function
+_start:                                 # @_start
+.Lfunc_begin0:
+        .loc    0 4 0                   # /tmp/a.cc:4:0
+        .cfi_startproc
+# %bb.0:                                # %entry
+        pushq   %rbp
+        .cfi_def_cfa_offset 16
+        .cfi_offset %rbp, -16
+        movq    %rsp, %rbp
+        .cfi_def_cfa_register %rbp
+        movl    %edi, -4(%rbp)
+        movl    %esi, -8(%rbp)
+.Ltmp0:
+        .loc    0 4 23 prologue_end     # /tmp/a.cc:4:23
+        popq    %rbp
+        .cfi_def_cfa %rsp, 8
+        retq
+.Ltmp1:
+.Lfunc_end0:
+        .size   _start, .Lfunc_end0-_start
+        .cfi_endproc
+                                        # -- End function
+        .section        .debug_str_offsets,"", at progbits
+        .long   52
+        .short  5
+        .short  0
+.Lstr_offsets_base0:
+        .section        .debug_str,"MS", at progbits,1
+.Linfo_string0:
+        .asciz  "clang version 9.0.0 (trunk 360907) (llvm/trunk 360908)"
+.Linfo_string1:
+        .asciz  "a.cc"
+.Linfo_string2:
+        .asciz  "/tmp"
+.Linfo_string3:
+        .asciz  "unsigned int"
+.Linfo_string4:
+        .asciz  "e1"
+.Linfo_string5:
+        .asciz  "E1"
+.Linfo_string6:
+        .asciz  "e2"
+.Linfo_string7:
+        .asciz  "E2"
+.Linfo_string8:
+        .asciz  "_start"
+.Linfo_string9:
+        .asciz  "f"
+.Linfo_string10:
+        .asciz  "v1"
+.Linfo_string11:
+        .asciz  "v2"
+        .section        .debug_str_offsets,"", at progbits
+        .long   .Linfo_string0
+        .long   .Linfo_string1
+        .long   .Linfo_string2
+        .long   .Linfo_string3
+        .long   .Linfo_string4
+        .long   .Linfo_string5
+        .long   .Linfo_string6
+        .long   .Linfo_string7
+        .long   .Linfo_string8
+        .long   .Linfo_string9
+        .long   .Linfo_string10
+        .long   .Linfo_string11
+        .section        .debug_abbrev,"", at progbits
+        .byte   1                       # Abbreviation Code
+        .byte   65                      # DW_TAG_type_unit
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   19                      # DW_AT_language
+        .byte   5                       # DW_FORM_data2
+        .byte   16                      # DW_AT_stmt_list
+        .byte   23                      # DW_FORM_sec_offset
+        .byte   114                     # DW_AT_str_offsets_base
+        .byte   23                      # DW_FORM_sec_offset
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   2                       # Abbreviation Code
+        .byte   4                       # DW_TAG_enumeration_type
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   73                      # DW_AT_type
+        .byte   19                      # DW_FORM_ref4
+        .byte   3                       # DW_AT_name
+        .byte   37                      # DW_FORM_strx1
+        .byte   11                      # DW_AT_byte_size
+        .byte   11                      # DW_FORM_data1
+        .byte   58                      # DW_AT_decl_file
+        .byte   11                      # DW_FORM_data1
+        .byte   59                      # DW_AT_decl_line
+        .byte   11                      # DW_FORM_data1
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   3                       # Abbreviation Code
+        .byte   40                      # DW_TAG_enumerator
+        .byte   0                       # DW_CHILDREN_no
+        .byte   3                       # DW_AT_name
+        .byte   37                      # DW_FORM_strx1
+        .byte   28                      # DW_AT_const_value
+        .byte   15                      # DW_FORM_udata
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   4                       # Abbreviation Code
+        .byte   36                      # DW_TAG_base_type
+        .byte   0                       # DW_CHILDREN_no
+        .byte   3                       # DW_AT_name
+        .byte   37                      # DW_FORM_strx1
+        .byte   62                      # DW_AT_encoding
+        .byte   11                      # DW_FORM_data1
+        .byte   11                      # DW_AT_byte_size
+        .byte   11                      # DW_FORM_data1
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   5                       # Abbreviation Code
+        .byte   17                      # DW_TAG_compile_unit
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   37                      # DW_AT_producer
+        .byte   37                      # DW_FORM_strx1
+        .byte   19                      # DW_AT_language
+        .byte   5                       # DW_FORM_data2
+        .byte   3                       # DW_AT_name
+        .byte   37                      # DW_FORM_strx1
+        .byte   114                     # DW_AT_str_offsets_base
+        .byte   23                      # DW_FORM_sec_offset
+        .byte   16                      # DW_AT_stmt_list
+        .byte   23                      # DW_FORM_sec_offset
+        .byte   27                      # DW_AT_comp_dir
+        .byte   37                      # DW_FORM_strx1
+        .byte   17                      # DW_AT_low_pc
+        .byte   27                      # DW_FORM_addrx
+        .byte   18                      # DW_AT_high_pc
+        .byte   6                       # DW_FORM_data4
+        .byte   115                     # DW_AT_addr_base
+        .byte   23                      # DW_FORM_sec_offset
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   6                       # Abbreviation Code
+        .byte   4                       # DW_TAG_enumeration_type
+        .byte   0                       # DW_CHILDREN_no
+        .byte   60                      # DW_AT_declaration
+        .byte   25                      # DW_FORM_flag_present
+        .byte   105                     # DW_AT_signature
+        .byte   32                      # DW_FORM_ref_sig8
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   7                       # Abbreviation Code
+        .byte   46                      # DW_TAG_subprogram
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   17                      # DW_AT_low_pc
+        .byte   27                      # DW_FORM_addrx
+        .byte   18                      # DW_AT_high_pc
+        .byte   6                       # DW_FORM_data4
+        .byte   64                      # DW_AT_frame_base
+        .byte   24                      # DW_FORM_exprloc
+        .byte   3                       # DW_AT_name
+        .byte   37                      # DW_FORM_strx1
+        .byte   58                      # DW_AT_decl_file
+        .byte   11                      # DW_FORM_data1
+        .byte   59                      # DW_AT_decl_line
+        .byte   11                      # DW_FORM_data1
+        .byte   63                      # DW_AT_external
+        .byte   25                      # DW_FORM_flag_present
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   8                       # Abbreviation Code
+        .byte   5                       # DW_TAG_formal_parameter
+        .byte   0                       # DW_CHILDREN_no
+        .byte   2                       # DW_AT_location
+        .byte   24                      # DW_FORM_exprloc
+        .byte   3                       # DW_AT_name
+        .byte   37                      # DW_FORM_strx1
+        .byte   58                      # DW_AT_decl_file
+        .byte   11                      # DW_FORM_data1
+        .byte   59                      # DW_AT_decl_line
+        .byte   11                      # DW_FORM_data1
+        .byte   73                      # DW_AT_type
+        .byte   19                      # DW_FORM_ref4
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   0                       # EOM(3)
+        .section        .debug_info,"", at progbits
+.Lcu_begin0:
+        .long   .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
+.Ldebug_info_start0:
+        .short  5                       # DWARF version number
+        .byte   2                       # DWARF Unit Type
+        .byte   8                       # Address Size (in bytes)
+        .long   .debug_abbrev           # Offset Into Abbrev. Section
+        .quad   -6180787752776176174    # Type Signature
+        .long   35                      # Type DIE Offset
+        .byte   1                       # Abbrev [1] 0x18:0x1d DW_TAG_type_unit
+        .short  4                       # DW_AT_language
+        .long   .Lline_table_start0     # DW_AT_stmt_list
+        .long   .Lstr_offsets_base0     # DW_AT_str_offsets_base
+        .byte   2                       # Abbrev [2] 0x23:0xd DW_TAG_enumeration_type
+        .long   48                      # DW_AT_type
+        .byte   5                       # DW_AT_name
+        .byte   4                       # DW_AT_byte_size
+        .byte   0                       # DW_AT_decl_file
+        .byte   1                       # DW_AT_decl_line
+        .byte   3                       # Abbrev [3] 0x2c:0x3 DW_TAG_enumerator
+        .byte   4                       # DW_AT_name
+        .byte   0                       # DW_AT_const_value
+        .byte   0                       # End Of Children Mark
+        .byte   4                       # Abbrev [4] 0x30:0x4 DW_TAG_base_type
+        .byte   3                       # DW_AT_name
+        .byte   7                       # DW_AT_encoding
+        .byte   4                       # DW_AT_byte_size
+        .byte   0                       # End Of Children Mark
+.Ldebug_info_end0:
+
+        .long   .Ldebug_info_end2-.Ldebug_info_start2 # Length of Unit
+.Ldebug_info_start2:
+        .short  5                       # DWARF version number
+        .byte   1                       # DWARF Unit Type
+        .byte   8                       # Address Size (in bytes)
+        .long   .debug_abbrev           # Offset Into Abbrev. Section
+        .byte   5                       # Abbrev [5] 0xc:0x4d DW_TAG_compile_unit
+        .byte   0                       # DW_AT_producer
+        .short  4                       # DW_AT_language
+        .byte   1                       # DW_AT_name
+        .long   .Lstr_offsets_base0     # DW_AT_str_offsets_base
+        .long   .Lline_table_start0     # DW_AT_stmt_list
+        .byte   2                       # DW_AT_comp_dir
+        .byte   0                       # DW_AT_low_pc
+        .long   .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
+        .long   .Laddr_table_base0      # DW_AT_addr_base
+        .byte   6                       # Abbrev [6] 0x23:0x9 DW_TAG_enumeration_type
+                                        # DW_AT_declaration
+        .quad   -6180787752776176174    # DW_AT_signature
+        .byte   6                       # Abbrev [6] 0x2c:0x9 DW_TAG_enumeration_type
+                                        # DW_AT_declaration
+        .quad   7818257750321376053     # DW_AT_signature
+        .byte   7                       # Abbrev [7] 0x35:0x23 DW_TAG_subprogram
+        .byte   0                       # DW_AT_low_pc
+        .long   .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
+        .byte   1                       # DW_AT_frame_base
+        .byte   86
+        .byte   8                       # DW_AT_name
+        .byte   0                       # DW_AT_decl_file
+        .byte   4                       # DW_AT_decl_line
+                                        # DW_AT_external
+        .byte   8                       # Abbrev [8] 0x41:0xb DW_TAG_formal_parameter
+        .byte   2                       # DW_AT_location
+        .byte   145
+        .byte   124
+        .byte   10                      # DW_AT_name
+        .byte   0                       # DW_AT_decl_file
+        .byte   4                       # DW_AT_decl_line
+        .long   35                      # DW_AT_type
+        .byte   8                       # Abbrev [8] 0x4c:0xb DW_TAG_formal_parameter
+        .byte   2                       # DW_AT_location
+        .byte   145
+        .byte   120
+        .byte   11                      # DW_AT_name
+        .byte   0                       # DW_AT_decl_file
+        .byte   4                       # DW_AT_decl_line
+        .long   44                      # DW_AT_type
+        .byte   0                       # End Of Children Mark
+        .byte   0                       # End Of Children Mark
+.Ldebug_info_end2:
+
+        .long   .Ldebug_info_end1-.Ldebug_info_start1 # Length of Unit
+.Ldebug_info_start1:
+        .short  5                       # DWARF version number
+        .byte   2                       # DWARF Unit Type
+        .byte   8                       # Address Size (in bytes)
+        .long   .debug_abbrev           # Offset Into Abbrev. Section
+        .quad   7818257750321376053     # Type Signature
+        .long   35                      # Type DIE Offset
+        .byte   1                       # Abbrev [1] 0x18:0x1d DW_TAG_type_unit
+        .short  4                       # DW_AT_language
+        .long   .Lline_table_start0     # DW_AT_stmt_list
+        .long   .Lstr_offsets_base0     # DW_AT_str_offsets_base
+        .byte   2                       # Abbrev [2] 0x23:0xd DW_TAG_enumeration_type
+        .long   48                      # DW_AT_type
+        .byte   7                       # DW_AT_name
+        .byte   4                       # DW_AT_byte_size
+        .byte   0                       # DW_AT_decl_file
+        .byte   2                       # DW_AT_decl_line
+        .byte   3                       # Abbrev [3] 0x2c:0x3 DW_TAG_enumerator
+        .byte   6                       # DW_AT_name
+        .byte   0                       # DW_AT_const_value
+        .byte   0                       # End Of Children Mark
+        .byte   4                       # Abbrev [4] 0x30:0x4 DW_TAG_base_type
+        .byte   3                       # DW_AT_name
+        .byte   7                       # DW_AT_encoding
+        .byte   4                       # DW_AT_byte_size
+        .byte   0                       # End Of Children Mark
+.Ldebug_info_end1:
+        .section        .debug_macinfo,"", at progbits
+        .byte   0                       # End Of Macro List Mark
+        .section        .debug_addr,"", at progbits
+        .long   .Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution
+.Ldebug_addr_start0:
+        .short  5                       # DWARF version number
+        .byte   8                       # Address size
+        .byte   0                       # Segment selector size
+.Laddr_table_base0:
+        .quad   .Lfunc_begin0
+.Ldebug_addr_end0:
+
+        .section        .debug_line,"", at progbits
+.Lline_table_start0:

Added: lldb/trunk/lit/SymbolFile/DWARF/debug-types-basic.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/debug-types-basic.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/debug-types-basic.test (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/debug-types-basic.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,66 @@
+# REQUIRES: lld
+
+# Make sure DWARF v4 type units work.
+# RUN: %clangxx -target x86_64-pc-linux %S/Inputs/debug-types-basic.cpp \
+# RUN:   -g -gdwarf-4 -fdebug-types-section -c -o %t4.o
+# RUN: ld.lld %t4.o -o %t4
+# RUN: %lldb %t4 -s %s -o exit | FileCheck %s
+
+# Now do the same for DWARF v5.
+# RUN: %clangxx -target x86_64-pc-linux %S/Inputs/debug-types-basic.cpp \
+# RUN:   -g -gdwarf-5 -fdebug-types-section -c -o %t5.o
+# RUN: ld.lld %t5.o -o %t5
+# RUN: %lldb %t5 -s %s -o exit | FileCheck %s
+
+# Test type units in dwo files.
+# RUN: %clangxx -target x86_64-pc-linux %S/Inputs/debug-types-basic.cpp \
+# RUN:   -g -gdwarf-4 -fdebug-types-section -gsplit-dwarf -c -o %t4dwo.o
+# RUN: ld.lld %t4dwo.o -o %t4dwo
+# RUN: %lldb %t4dwo -s %s -o exit | FileCheck %s
+
+# And type units+dwo+dwarf5.
+# RUN: %clangxx -target x86_64-pc-linux %S/Inputs/debug-types-basic.cpp \
+# RUN:   -g -gdwarf-5 -fdebug-types-section -c -o %t5dwo.o
+# RUN: ld.lld %t5dwo.o -o %t5dwo
+# RUN: %lldb %t5dwo -s %s -o exit | FileCheck %s
+
+type lookup A
+# CHECK-LABEL: type lookup A
+# CHECK:      struct A {
+# CHECK-NEXT:   int i;
+# CHECK-NEXT:   long l;
+# CHECK-NEXT:   float f;
+# CHECK-NEXT:   double d;
+# CHECK-NEXT:   E e;
+# CHECK-NEXT:   EC ec;
+# CHECK-NEXT: }
+
+type lookup E
+# CHECK-LABEL: type lookup E
+# CHECK:      enum E {
+# CHECK-NEXT:   e1,
+# CHECK-NEXT:   e2,
+# CHECK-NEXT:   e3
+# CHECK-NEXT: }
+
+type lookup EC
+# CHECK-LABEL: type lookup EC
+# CHECK:      enum class EC {
+# CHECK-NEXT:   e1,
+# CHECK-NEXT:   e2,
+# CHECK-NEXT:   e3
+# CHECK-NEXT: }
+
+print (E) 1
+# CHECK-LABEL: print (E) 1
+# CHECK: (E) $0 = e2
+
+print (EC) 1
+# CHECK-LABEL: print (EC) 1
+# CHECK: (EC) $1 = e2
+
+target variable a e ec
+# CHECK-LABEL: target variable a e ec
+# CHECK: (const A) a = (i = 42, l = 47, f = 4.{{[12].*}}, d = 4.{{[67].*}}, e = e1, ec = e3)
+# CHECK: (const E) e = e2
+# CHECK: (const EC) ec = e2

Added: lldb/trunk/lit/SymbolFile/DWARF/debug-types-dwarf5.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/debug-types-dwarf5.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/debug-types-dwarf5.s (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/debug-types-dwarf5.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,94 @@
+# RUN: llvm-mc -triple=x86_64-pc-linux -filetype=obj %s > %t
+# RUN: %lldb %t -o "image lookup -v -s f1" -o exit | FileCheck %s
+
+# CHECK:  Function: id = {0x7fffffff0000003c}, name = "f1", range = [0x0000000000000000-0x0000000000000001)
+# CHECK:    Blocks: id = {0x7fffffff0000003c}, range = [0x00000000-0x00000001)
+
+
+        .text
+        .globl  f1
+        .type   f1, at function
+f1:
+        nop
+.Lfunc_end0:
+        .size   f1, .Lfunc_end0-f1
+                                        # -- End function
+        .section        .debug_str,"MS", at progbits,1
+.Lproducer:
+        .asciz  "Hand-written DWARF"
+.Lf1:
+        .asciz  "f1"
+.Le1:
+        .asciz  "e1"
+
+        .section        .debug_abbrev,"", at progbits
+        .byte   1                       # Abbreviation Code
+        .byte   17                      # DW_TAG_compile_unit
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   37                      # DW_AT_producer
+        .byte   14                      # DW_FORM_strp
+        .byte   17                      # DW_AT_low_pc
+        .byte   1                       # DW_FORM_addr
+        .byte   18                      # DW_AT_high_pc
+        .byte   6                       # DW_FORM_data4
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   2                       # Abbreviation Code
+        .byte   46                      # DW_TAG_subprogram
+        .byte   0                       # DW_CHILDREN_no
+        .byte   17                      # DW_AT_low_pc
+        .byte   1                       # DW_FORM_addr
+        .byte   18                      # DW_AT_high_pc
+        .byte   6                       # DW_FORM_data4
+        .byte   3                       # DW_AT_name
+        .byte   14                      # DW_FORM_strp
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   3                       # Abbreviation Code
+        .byte   65                      # DW_TAG_type_unit
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   5                       # Abbreviation Code
+        .byte   4                       # DW_TAG_enumeration_type
+        .byte   0                       # DW_CHILDREN_no
+        .byte   3                       # DW_AT_name
+        .byte   14                      # DW_FORM_strp
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   0                       # EOM(3)
+
+        .section        .debug_info,"", at progbits
+.Ltu_begin0:
+        .long   .Ltu_end0-.Ltu_start0   # Length of Unit
+.Ltu_start0:
+        .short  5                       # DWARF version number
+        .byte   2                       # DWARF Unit Type
+        .byte   8                       # Address Size (in bytes)
+        .long   .debug_abbrev           # Offset Into Abbrev. Section
+        .quad   47                      # Type Signature
+        .long   .Ltype-.Ltu_begin0      # Type DIE Offset
+        .byte   3                       # Abbrev [1] 0x18:0x1d DW_TAG_type_unit
+.Ltype:
+        .byte   5                       # Abbrev [5] 0x2e:0x9 DW_TAG_enumeration_type
+        .long   .Le1                    # DW_AT_name
+        .byte   0                       # End Of Children Mark
+.Ltu_end0:
+
+.Lcu_begin0:
+        .long   .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
+.Ldebug_info_start0:
+        .short  5                       # DWARF version number
+        .byte   1                       # DWARF Unit Type
+        .byte   8                       # Address Size (in bytes)
+        .long   .debug_abbrev           # Offset Into Abbrev. Section
+        .byte   1                       # Abbrev [1] 0xc:0x5f DW_TAG_compile_unit
+        .long   .Lproducer              # DW_AT_producer
+        .quad   f1                      # DW_AT_low_pc
+        .long   .Lfunc_end0-f1          # DW_AT_high_pc
+        .byte   2                       # Abbrev [2] 0x2b:0x37 DW_TAG_subprogram
+        .quad   f1                      # DW_AT_low_pc
+        .long   .Lfunc_end0-f1          # DW_AT_high_pc
+        .long   .Lf1                    # DW_AT_name
+        .byte   0                       # End Of Children Mark
+.Ldebug_info_end0:

Added: lldb/trunk/lit/SymbolFile/DWARF/debug-types-dwo-cross-reference.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/debug-types-dwo-cross-reference.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/debug-types-dwo-cross-reference.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/debug-types-dwo-cross-reference.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,37 @@
+// Test that we can jump from a type unit in one dwo file into a type unit in a
+// different dwo file.
+
+// REQUIRES: lld
+
+// RUN: %clang %s -target x86_64-pc-linux -fno-standalone-debug -g \
+// RUN:   -fdebug-types-section -gsplit-dwarf -c -o %t1.o -DONE
+// RUN: %clang %s -target x86_64-pc-linux -fno-standalone-debug -g \
+// RUN:   -fdebug-types-section -gsplit-dwarf -c -o %t2.o -DTWO
+// RUN: llvm-dwarfdump %t1.dwo -debug-types | FileCheck --check-prefix=ONEUNIT %s
+// RUN: llvm-dwarfdump %t2.dwo -debug-types | FileCheck --check-prefix=ONEUNIT %s
+// RUN: ld.lld %t1.o %t2.o -o %t
+// RUN: %lldb %t -o "target var a b **b.a" -b | FileCheck %s
+
+// ONEUNIT-COUNT-1: DW_TAG_type_unit
+
+// CHECK:      (const A) a = (a = 42)
+// CHECK:      (const B) b = {
+// CHECK-NEXT:   a = 0x{{.*}}
+// CHECK-NEXT: }
+// CHECK:      (const A) **b.a = (a = 42)
+
+struct A;
+
+extern const A *a_ptr;
+#ifdef ONE
+struct A {
+  int a = 42;
+};
+constexpr A a{};
+const A *a_ptr = &a;
+#else
+struct B {
+  const A **a;
+};
+extern constexpr B b{&a_ptr};
+#endif

Added: lldb/trunk/lit/SymbolFile/DWARF/debug-types-expressions.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/debug-types-expressions.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/debug-types-expressions.test (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/debug-types-expressions.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,53 @@
+# UNSUPPORTED: system-darwin, system-windows
+
+# Make sure DWARF v4 type units work.
+# RUN: %clangxx %S/Inputs/debug-types-expressions.cpp \
+# RUN:   -g -gdwarf-4 -fdebug-types-section -o %t4
+# RUN: %lldb %t4 -s %s -o exit | FileCheck %s
+
+# Now do the same for DWARF v5.
+# RUN: %clangxx %S/Inputs/debug-types-expressions.cpp \
+# RUN:   -g -gdwarf-5 -fdebug-types-section -o %t5
+# RUN: %lldb %t5 -s %s -o exit | FileCheck %s
+
+# Test type units in dwo files.
+# RUN: %clangxx %S/Inputs/debug-types-expressions.cpp \
+# RUN:   -g -gdwarf-4 -fdebug-types-section -o %t4dwo
+# RUN: %lldb %t4dwo -s %s -o exit | FileCheck %s
+
+# And type units+dwo+dwarf5.
+# RUN: %clangxx %S/Inputs/debug-types-expressions.cpp \
+# RUN:   -g -gdwarf-5 -fdebug-types-section -o %t5dwo
+# RUN: %lldb %t5dwo -s %s -o exit | FileCheck %s
+
+breakpoint set -n foo
+process launch
+
+# CHECK: Process {{.*}} stopped
+
+frame variable a
+# CHECK-LABEL: frame variable a
+# CHECK: (B *) a =
+
+frame variable *a
+# CHECK-LABEL: frame variable *a
+# CHECK:      (B) *a = {
+# CHECK-NEXT:   A = (i = 47)
+# CHECK-NEXT:   j = 42
+# CHECK-NEXT: }
+
+print a->f()
+# CHECK-LABEL: print a->f()
+# CHECK: (int) $0 = 47
+
+print ns::A()
+# CHECK-LABEL: print ns::A()
+# CHECK: (ns::A) $1 = (i = 147)
+
+print ns::A().i + a->i
+# CHECK-LABEL: print ns::A().i + a->i
+# CHECK: (int) $2 = 194
+
+print ns::A().getA()
+# CHECK-LABEL: ns::A().getA()
+# CHECK: (A) $3 = (i = 146)

Added: lldb/trunk/lit/SymbolFile/DWARF/debug-types-line-tables.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/debug-types-line-tables.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/debug-types-line-tables.s (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/debug-types-line-tables.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,202 @@
+# REQUIRES: x86
+
+# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux %s -o %t
+# RUN: lldb-test symbols %t | FileCheck %s
+
+        .file   1 "/tmp" "b.cc"
+
+        .section        .debug_types,"", at progbits
+
+# CHECK: Types:
+# Type unit one: "struct A" defined at b.cc:1
+# CHECK-DAG: name = "A", size = 4, decl = b.cc:1
+1:
+        .long   4f-2f                   # Length of Unit
+2:
+        .short  4                       # DWARF version number
+        .long   .debug_abbrev           # Offset Into Abbrev. Section
+        .byte   8                       # Address Size (in bytes)
+        .quad   5390450678491038984     # Type Signature
+        .long   3f-1b                   # Type DIE Offset
+        .byte   1                       # Abbrev [1] 0x17:0x1b DW_TAG_type_unit
+        .short  4                       # DW_AT_language
+        .long   .Lline_table_start0     # DW_AT_stmt_list
+3:
+        .byte   2                       # Abbrev [2] 0x1e:0xc DW_TAG_structure_type
+        .long   .LA                     # DW_AT_name
+        .byte   4                       # DW_AT_byte_size
+        .byte   1                       # DW_AT_decl_file
+        .byte   1                       # DW_AT_decl_line
+        .byte   0                       # End Of Children Mark
+4:
+
+# Type unit two: "struct B" defined at b.cc:2
+# It shares the same line table as unit one.
+# CHECK-DAG: name = "B", size = 4, decl = b.cc:2
+1:
+        .long   4f-2f                   # Length of Unit
+2:
+        .short  4                       # DWARF version number
+        .long   .debug_abbrev           # Offset Into Abbrev. Section
+        .byte   8                       # Address Size (in bytes)
+        .quad   5390450678491038985     # Type Signature
+        .long   3f-1b                   # Type DIE Offset
+        .byte   1                       # Abbrev [1] 0x17:0x1b DW_TAG_type_unit
+        .short  4                       # DW_AT_language
+        .long   .Lline_table_start0     # DW_AT_stmt_list
+3:
+        .byte   2                       # Abbrev [2] 0x1e:0xc DW_TAG_structure_type
+        .long   .LB                     # DW_AT_name
+        .byte   4                       # DW_AT_byte_size
+        .byte   1                       # DW_AT_decl_file
+        .byte   2                       # DW_AT_decl_line
+        .byte   0                       # End Of Children Mark
+4:
+
+# Type unit three: "struct C".
+# DW_AT_stmt_list missing
+# CHECK-DAG: name = "C", size = 4, line = 3
+1:
+        .long   4f-2f                   # Length of Unit
+2:
+        .short  4                       # DWARF version number
+        .long   .debug_abbrev           # Offset Into Abbrev. Section
+        .byte   8                       # Address Size (in bytes)
+        .quad   5390450678491038986     # Type Signature
+        .long   3f-1b                   # Type DIE Offset
+        .byte   4                       # Abbrev [4] 0x17:0x1b DW_TAG_type_unit
+        .short  4                       # DW_AT_language
+3:
+        .byte   2                       # Abbrev [2] 0x1e:0xc DW_TAG_structure_type
+        .long   .LC                     # DW_AT_name
+        .byte   4                       # DW_AT_byte_size
+        .byte   1                       # DW_AT_decl_file
+        .byte   3                       # DW_AT_decl_line
+        .byte   0                       # End Of Children Mark
+4:
+
+# Type unit four: "struct D".
+# DW_AT_stmt_list invalid
+# CHECK-DAG: name = "D", size = 4, line = 4
+1:
+        .long   4f-2f                   # Length of Unit
+2:
+        .short  4                       # DWARF version number
+        .long   .debug_abbrev           # Offset Into Abbrev. Section
+        .byte   8                       # Address Size (in bytes)
+        .quad   5390450678491038987     # Type Signature
+        .long   3f-1b                   # Type DIE Offset
+        .byte   1                       # Abbrev [1] 0x17:0x1b DW_TAG_type_unit
+        .short  4                       # DW_AT_language
+        .long   .Lline_table_start0+47  # DW_AT_stmt_list
+3:
+        .byte   2                       # Abbrev [2] 0x1e:0xc DW_TAG_structure_type
+        .long   .LD                     # DW_AT_name
+        .byte   4                       # DW_AT_byte_size
+        .byte   1                       # DW_AT_decl_file
+        .byte   4                       # DW_AT_decl_line
+        .byte   0                       # End Of Children Mark
+4:
+
+# Type unit five: "struct E".
+# DW_AT_decl_file invalid
+# CHECK-DAG: name = "E", size = 4, line = 5
+1:
+        .long   4f-2f                   # Length of Unit
+2:
+        .short  4                       # DWARF version number
+        .long   .debug_abbrev           # Offset Into Abbrev. Section
+        .byte   8                       # Address Size (in bytes)
+        .quad   5390450678491038988     # Type Signature
+        .long   3f-1b                   # Type DIE Offset
+        .byte   1                       # Abbrev [1] 0x17:0x1b DW_TAG_type_unit
+        .short  4                       # DW_AT_language
+        .long   .Lline_table_start0     # DW_AT_stmt_list
+3:
+        .byte   2                       # Abbrev [2] 0x1e:0xc DW_TAG_structure_type
+        .long   .LE                     # DW_AT_name
+        .byte   4                       # DW_AT_byte_size
+        .byte   47                      # DW_AT_decl_file
+        .byte   5                       # DW_AT_decl_line
+        .byte   0                       # End Of Children Mark
+4:
+
+
+        .section        .debug_str,"MS", at progbits,1
+.LA:
+        .asciz  "A"
+.LB:
+        .asciz  "B"
+.LC:
+        .asciz  "C"
+.LD:
+        .asciz  "D"
+.LE:
+        .asciz  "E"
+
+        .section        .debug_abbrev,"", at progbits
+        .byte   1                       # Abbreviation Code
+        .byte   65                      # DW_TAG_type_unit
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   19                      # DW_AT_language
+        .byte   5                       # DW_FORM_data2
+        .byte   16                      # DW_AT_stmt_list
+        .byte   23                      # DW_FORM_sec_offset
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   2                       # Abbreviation Code
+        .byte   19                      # DW_TAG_structure_type
+        .byte   0                       # DW_CHILDREN_no
+        .byte   3                       # DW_AT_name
+        .byte   14                      # DW_FORM_strp
+        .byte   11                      # DW_AT_byte_size
+        .byte   11                      # DW_FORM_data1
+        .byte   58                      # DW_AT_decl_file
+        .byte   11                      # DW_FORM_data1
+        .byte   59                      # DW_AT_decl_line
+        .byte   11                      # DW_FORM_data1
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   3                       # Abbreviation Code
+        .byte   65                      # DW_TAG_type_unit
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   19                      # DW_AT_language
+        .byte   5                       # DW_FORM_data2
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   4                       # Abbreviation Code
+        .byte   17                      # DW_TAG_compile_unit
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   5                       # Abbreviation Code
+        .byte   19                      # DW_TAG_structure_type
+        .byte   0                       # DW_CHILDREN_no
+        .byte   105                     # DW_AT_signature
+        .byte   32                      # DW_FORM_ref_sig8
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   0                       # EOM(3)
+        .section        .debug_info,"", at progbits
+.Lcu_begin0:
+        .long   .Ldebug_info_end1-.Ldebug_info_start1 # Length of Unit
+.Ldebug_info_start1:
+        .short  4                       # DWARF version number
+        .long   .debug_abbrev           # Offset Into Abbrev. Section
+        .byte   8                       # Address Size (in bytes)
+        .byte   4                       # Abbrev [4] 0xb:0x32 DW_TAG_compile_unit
+        .byte   5                       # Abbrev [5] DW_TAG_structure_type
+        .quad   5390450678491038984     # DW_AT_signature
+        .byte   5                       # Abbrev [5] DW_TAG_structure_type
+        .quad   5390450678491038985     # DW_AT_signature
+        .byte   5                       # Abbrev [5] DW_TAG_structure_type
+        .quad   5390450678491038986     # DW_AT_signature
+        .byte   5                       # Abbrev [5] DW_TAG_structure_type
+        .quad   5390450678491038987     # DW_AT_signature
+        .byte   5                       # Abbrev [5] DW_TAG_structure_type
+        .quad   5390450678491038988     # DW_AT_signature
+        .byte   0                       # End Of Children Mark
+.Ldebug_info_end1:
+
+        .section        .debug_line,"", at progbits
+.Lline_table_start0:

Added: lldb/trunk/lit/SymbolFile/DWARF/debug-types-missing-signature.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/debug-types-missing-signature.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/debug-types-missing-signature.test (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/debug-types-missing-signature.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,26 @@
+Create a dangling DW_AT_signature reference by stripping the debug_types
+section, and make sure lldb does something reasonable.
+RUN: %clangxx -target x86_64-pc-linux %S/Inputs/debug-types-basic.cpp \
+RUN:   -g -gdwarf-4 -fdebug-types-section -c -o %t.o
+RUN: llvm-objcopy --remove-section=.debug_types %t.o %t
+
+
+RUN: %lldb %t -b -o "type lookup A" | FileCheck --check-prefix=LOOKUPA %s
+LOOKUPA: no type was found matching 'A'
+
+RUN: %lldb %t -b -o "type lookup E" | FileCheck --check-prefix=LOOKUPE %s
+LOOKUPE: no type was found matching 'E'
+
+RUN: %lldb %t -b -o "type lookup EC" | FileCheck --check-prefix=LOOKUPEC %s
+LOOKUPEC: no type was found matching 'EC'
+
+RUN: %lldb %t -b -o "print (E) 1" 2>&1 | FileCheck --check-prefix=PRINTE %s
+PRINTE: use of undeclared identifier 'E'
+
+RUN: %lldb %t -b -o "print (EC) 1" 2>&1 | FileCheck --check-prefix=PRINTEC %s
+PRINTEC: use of undeclared identifier 'EC'
+
+RUN: %lldb %t -b -o "target variable a e ec" | FileCheck --check-prefix=VARS %s
+VARS: (const (anonymous struct)) a = {}
+VARS: (const (anonymous enum)) e = 0x1
+VARS: (const (anonymous enum)) ec = 0x1

Added: lldb/trunk/lit/SymbolFile/DWARF/debug-types-signature-loop.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/debug-types-signature-loop.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/debug-types-signature-loop.s (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/debug-types-signature-loop.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,115 @@
+# REQUIRES: lld, x86
+
+# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux -o %t.o %s
+# RUN: ld.lld %t.o -o %t
+# RUN: %lldb %t -o "target variable e" -b | FileCheck %s
+
+# CHECK: e = <could not resolve type>
+
+        .type   e, at object               # @e
+        .section        .rodata,"a", at progbits
+        .globl  e
+        .p2align        2
+e:
+        .long   0                       # 0x0
+        .size   e, 4
+
+.Lstr_offsets_base0:
+        .section        .debug_str,"MS", at progbits,1
+.Linfo_string0:
+        .asciz  "Hand-written DWARF"
+.Linfo_string1:
+        .asciz  "a.cpp"            
+.Linfo_string3:
+        .asciz  "e"           
+.Linfo_string4:
+        .asciz  "unsigned int"
+.Linfo_string5:
+        .asciz  "e1"          
+.Linfo_string6:
+        .asciz  "E"           
+
+        .section        .debug_abbrev,"", at progbits
+        .byte   1                       # Abbreviation Code
+        .byte   65                      # DW_TAG_type_unit
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   19                      # DW_AT_language
+        .byte   5                       # DW_FORM_data2
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   5                       # Abbreviation Code
+        .byte   17                      # DW_TAG_compile_unit
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   37                      # DW_AT_producer
+        .byte   14                      # DW_FORM_strp
+        .byte   19                      # DW_AT_language
+        .byte   5                       # DW_FORM_data2
+        .byte   3                       # DW_AT_name
+        .byte   14                      # DW_FORM_strp
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   6                       # Abbreviation Code
+        .byte   52                      # DW_TAG_variable
+        .byte   0                       # DW_CHILDREN_no
+        .byte   3                       # DW_AT_name
+        .byte   14                      # DW_FORM_strp
+        .byte   73                      # DW_AT_type
+        .byte   19                      # DW_FORM_ref4
+        .byte   2                       # DW_AT_location
+        .byte   24                      # DW_FORM_exprloc
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   8                       # Abbreviation Code
+        .byte   4                       # DW_TAG_enumeration_type
+        .byte   0                       # DW_CHILDREN_no
+        .byte   60                      # DW_AT_declaration
+        .byte   25                      # DW_FORM_flag_present
+        .byte   105                     # DW_AT_signature
+        .byte   32                      # DW_FORM_ref_sig8
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   0                       # EOM(3)
+
+        .section        .debug_info,"", at progbits
+.Ltu_begin0:
+        .long   .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
+.Ldebug_info_start0:
+        .short  5                       # DWARF version number
+        .byte   2                       # DWARF Unit Type
+        .byte   8                       # Address Size (in bytes)
+        .long   .debug_abbrev           # Offset Into Abbrev. Section
+        .quad   5390450678491038984     # Type Signature
+        .long   .LE-.Ltu_begin0         # Type DIE Offset
+        .byte   1                       # Abbrev [1] 0x18:0x1d DW_TAG_type_unit
+        .short  4                       # DW_AT_language
+.LE:
+        .byte   8                       # Abbrev [8] 0x23:0xd DW_TAG_enumeration_type
+                                        # DW_AT_declaration
+        .quad   5390450678491038984     # DW_AT_signature
+.Lbase:
+        .byte   0                       # End Of Children Mark
+.Ldebug_info_end0:
+
+.Lcu_begin0:
+        .long   .Ldebug_info_end1-.Ldebug_info_start1 # Length of Unit
+.Ldebug_info_start1:
+        .short  5                       # DWARF version number
+        .byte   1                       # DWARF Unit Type
+        .byte   8                       # Address Size (in bytes)
+        .long   .debug_abbrev           # Offset Into Abbrev. Section
+        .byte   5                       # Abbrev [5] 0xc:0x2c DW_TAG_compile_unit
+        .long   .Linfo_string0          # DW_AT_producer
+        .short  4                       # DW_AT_language
+        .long   .Linfo_string1          # DW_AT_name
+        .byte   6                       # Abbrev [6] 0x1e:0xb DW_TAG_variable
+        .long   .Linfo_string3          # DW_AT_name
+        .long   .LE_sig-.Lcu_begin0     # DW_AT_type
+        .byte   9                       # DW_AT_location
+        .byte   3
+        .quad   e
+.LE_sig:
+        .byte   8                       # Abbrev [8] 0x2e:0x9 DW_TAG_enumeration_type
+                                        # DW_AT_declaration
+        .quad   5390450678491038984     # DW_AT_signature
+        .byte   0                       # End Of Children Mark
+.Ldebug_info_end1:

Added: lldb/trunk/lit/SymbolFile/DWARF/debug_aranges-empty-section.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/debug_aranges-empty-section.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/debug_aranges-empty-section.s (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/debug_aranges-empty-section.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,65 @@
+# Test that an empty .debug_aranges section doesn't confuse (or crash) us.
+
+# REQUIRES: x86
+
+# RUN: llvm-mc %s -triple x86_64-pc-linux -filetype=obj >%t
+# RUN: lldb %t -o "breakpoint set -n f" -b | FileCheck %s
+
+# CHECK: Breakpoint 1: where = {{.*}}`f, address = 0x0000000000000047
+
+	.text
+	.globl	f                       # -- Begin function f
+	.type	f, at function
+        .rept 0x47
+        nop
+        .endr
+f:                                      # @f
+.Lfunc_begin0:
+	retq
+.Lfunc_end0:
+	.size	f, .Lfunc_end0-f
+                                        # -- End function
+	.section	.debug_str,"MS", at progbits,1
+.Linfo_string3:
+	.asciz	"f"                     # string offset=83
+	.section	.debug_abbrev,"", at progbits
+	.byte	1                       # Abbreviation Code
+	.byte	17                      # DW_TAG_compile_unit
+	.byte	1                       # DW_CHILDREN_yes
+	.byte	17                      # DW_AT_low_pc
+	.byte	1                       # DW_FORM_addr
+	.byte	18                      # DW_AT_high_pc
+	.byte	6                       # DW_FORM_data4
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	2                       # Abbreviation Code
+	.byte	46                      # DW_TAG_subprogram
+	.byte	0                       # DW_CHILDREN_no
+	.byte	17                      # DW_AT_low_pc
+	.byte	1                       # DW_FORM_addr
+	.byte	18                      # DW_AT_high_pc
+	.byte	6                       # DW_FORM_data4
+	.byte	3                       # DW_AT_name
+	.byte	14                      # DW_FORM_strp
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	0                       # EOM(3)
+	.section	.debug_info,"", at progbits
+.Lcu_begin0:
+	.long	.Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
+.Ldebug_info_start0:
+	.short	4                       # DWARF version number
+	.long	.debug_abbrev           # Offset Into Abbrev. Section
+	.byte	8                       # Address Size (in bytes)
+	.byte	1                       # Abbrev [1] 0xb:0x35 DW_TAG_compile_unit
+	.quad	.Lfunc_begin0           # DW_AT_low_pc
+	.long	.Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
+	.byte	2                       # Abbrev [2] 0x2a:0x15 DW_TAG_subprogram
+	.quad	.Lfunc_begin0           # DW_AT_low_pc
+	.long	.Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
+	.long	.Linfo_string3          # DW_AT_name
+	.byte	0                       # End Of Children Mark
+.Ldebug_info_end0:
+
+	.section	".note.GNU-stack","", at progbits
+	.section	.debug_aranges,"", at progbits

Added: lldb/trunk/lit/SymbolFile/DWARF/debug_loc.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/debug_loc.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/debug_loc.s (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/debug_loc.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,143 @@
+# Test debug_loc parsing, including the cases of invalid input. The exact
+# behavior in the invalid cases is not particularly important, but it should be
+# "reasonable".
+
+# REQUIRES: x86
+
+# RUN: llvm-mc -triple=x86_64-pc-linux -filetype=obj %s > %t
+# RUN: %lldb %t -o "image lookup -v -a 0" -o "image lookup -v -a 2" -o exit \
+# RUN:   | FileCheck %s
+
+# CHECK-LABEL: image lookup -v -a 0
+# CHECK: Variable: {{.*}}, name = "x0", type = "int", location = DW_OP_reg5 RDI,
+# CHECK: Variable: {{.*}}, name = "x1", type = "int", location = ,
+# CHECK: Variable: {{.*}}, name = "x2", type = "int", location = ,
+
+# CHECK-LABEL: image lookup -v -a 2
+# CHECK: Variable: {{.*}}, name = "x0", type = "int", location = DW_OP_reg0 RAX,
+# CHECK: Variable: {{.*}}, name = "x1", type = "int", location = ,
+# CHECK: Variable: {{.*}}, name = "x2", type = "int", location = ,
+
+        .type   f, at function
+f:                                      # @f
+.Lfunc_begin0:
+        movl    %edi, %eax
+.Ltmp0:
+        retq
+.Ltmp1:
+.Lfunc_end0:
+        .size   f, .Lfunc_end0-f
+
+        .section        .debug_str,"MS", at progbits,1
+.Linfo_string0:
+        .asciz  "Hand-written DWARF"
+.Linfo_string3:
+        .asciz  "f"
+.Linfo_string4:
+        .asciz  "int"
+.Lx0:
+        .asciz  "x0"
+.Lx1:
+        .asciz  "x1"
+.Lx2:
+        .asciz  "x2"
+
+        .section        .debug_loc,"", at progbits
+.Ldebug_loc0:
+        .quad   .Lfunc_begin0-.Lfunc_begin0
+        .quad   .Ltmp0-.Lfunc_begin0
+        .short  1                       # Loc expr size
+        .byte   85                      # super-register DW_OP_reg5
+        .quad   .Ltmp0-.Lfunc_begin0
+        .quad   .Lfunc_end0-.Lfunc_begin0
+        .short  1                       # Loc expr size
+        .byte   80                      # super-register DW_OP_reg0
+        .quad   0
+        .quad   0
+.Ldebug_loc2:
+        .quad   .Lfunc_begin0-.Lfunc_begin0
+        .quad   .Lfunc_end0-.Lfunc_begin0
+        .short  0xdead                  # Loc expr size
+
+        .section        .debug_abbrev,"", at progbits
+        .byte   1                       # Abbreviation Code
+        .byte   17                      # DW_TAG_compile_unit
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   37                      # DW_AT_producer
+        .byte   14                      # DW_FORM_strp
+        .byte   19                      # DW_AT_language
+        .byte   5                       # DW_FORM_data2
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   2                       # Abbreviation Code
+        .byte   46                      # DW_TAG_subprogram
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   17                      # DW_AT_low_pc
+        .byte   1                       # DW_FORM_addr
+        .byte   18                      # DW_AT_high_pc
+        .byte   6                       # DW_FORM_data4
+        .byte   3                       # DW_AT_name
+        .byte   14                      # DW_FORM_strp
+        .byte   73                      # DW_AT_type
+        .byte   19                      # DW_FORM_ref4
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   3                       # Abbreviation Code
+        .byte   5                       # DW_TAG_formal_parameter
+        .byte   0                       # DW_CHILDREN_no
+        .byte   2                       # DW_AT_location
+        .byte   23                      # DW_FORM_sec_offset
+        .byte   3                       # DW_AT_name
+        .byte   14                      # DW_FORM_strp
+        .byte   73                      # DW_AT_type
+        .byte   19                      # DW_FORM_ref4
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   4                       # Abbreviation Code
+        .byte   36                      # DW_TAG_base_type
+        .byte   0                       # DW_CHILDREN_no
+        .byte   3                       # DW_AT_name
+        .byte   14                      # DW_FORM_strp
+        .byte   62                      # DW_AT_encoding
+        .byte   11                      # DW_FORM_data1
+        .byte   11                      # DW_AT_byte_size
+        .byte   11                      # DW_FORM_data1
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   0                       # EOM(3)
+
+        .section        .debug_info,"", at progbits
+.Lcu_begin0:
+        .long   .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
+.Ldebug_info_start0:
+        .short  4                       # DWARF version number
+        .long   .debug_abbrev           # Offset Into Abbrev. Section
+        .byte   8                       # Address Size (in bytes)
+        .byte   1                       # Abbrev [1] 0xb:0x50 DW_TAG_compile_unit
+        .long   .Linfo_string0          # DW_AT_producer
+        .short  12                      # DW_AT_language
+        .byte   2                       # Abbrev [2] 0x2a:0x29 DW_TAG_subprogram
+        .quad   .Lfunc_begin0           # DW_AT_low_pc
+        .long   .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
+        .long   .Linfo_string3          # DW_AT_name
+        .long   .Lint                   # DW_AT_type
+        .byte   3                       # Abbrev [3] DW_TAG_formal_parameter
+        .long   .Ldebug_loc0            # DW_AT_location
+        .long   .Lx0                    # DW_AT_name
+        .long   .Lint-.Lcu_begin0       # DW_AT_type
+        .byte   3                       # Abbrev [3] DW_TAG_formal_parameter
+        .long   0xdeadbeef              # DW_AT_location
+        .long   .Lx1                    # DW_AT_name
+        .long   .Lint-.Lcu_begin0       # DW_AT_type
+        .byte   3                       # Abbrev [3] DW_TAG_formal_parameter
+        .long   .Ldebug_loc2            # DW_AT_location
+        .long   .Lx2                    # DW_AT_name
+        .long   .Lint-.Lcu_begin0       # DW_AT_type
+        .byte   0                       # End Of Children Mark
+.Lint:
+        .byte   4                       # Abbrev [4] 0x53:0x7 DW_TAG_base_type
+        .long   .Linfo_string4          # DW_AT_name
+        .byte   5                       # DW_AT_encoding
+        .byte   4                       # DW_AT_byte_size
+        .byte   0                       # End Of Children Mark
+.Ldebug_info_end0:

Added: lldb/trunk/lit/SymbolFile/DWARF/debug_ranges-missing-section.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/debug_ranges-missing-section.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/debug_ranges-missing-section.s (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/debug_ranges-missing-section.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,80 @@
+# REQUIRES: x86
+
+# RUN: llvm-mc -triple=x86_64-pc-linux -filetype=obj %s > %t
+# RUN: %lldb %t -o "image lookup -v -s lookup_ranges" -o exit 2>&1 | FileCheck %s
+
+# CHECK: DIE has DW_AT_ranges(0x47) attribute, but range extraction failed (No debug_ranges section),
+# CHECK:  Function: id = {0x7fffffff0000001c}, name = "ranges", range = [0x0000000000000000-0x0000000000000004)
+# CHECK:    Blocks: id = {0x7fffffff0000001c}, range = [0x00000000-0x00000004)
+
+        .text
+        .p2align 12
+        .globl  ranges
+        .type   ranges, at function
+ranges:                                    # @ranges
+        nop
+lookup_ranges:
+        nop
+        nop
+        nop
+.Lranges_end:
+        .size   ranges, .Lranges_end-ranges
+                                        # -- End function
+        .section        .debug_str,"MS", at progbits,1
+.Lproducer:
+        .asciz  "Hand-written DWARF"
+.Lranges:
+        .asciz  "ranges"
+
+        .section        .debug_abbrev,"", at progbits
+        .byte   1                       # Abbreviation Code
+        .byte   17                      # DW_TAG_compile_unit
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   37                      # DW_AT_producer
+        .byte   14                      # DW_FORM_strp
+        .byte   17                      # DW_AT_low_pc
+        .byte   1                       # DW_FORM_addr
+        .byte   18                      # DW_AT_high_pc
+        .byte   6                       # DW_FORM_data4
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   2                       # Abbreviation Code
+        .byte   46                      # DW_TAG_subprogram
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   17                      # DW_AT_low_pc
+        .byte   1                       # DW_FORM_addr
+        .byte   18                      # DW_AT_high_pc
+        .byte   6                       # DW_FORM_data4
+        .byte   3                       # DW_AT_name
+        .byte   14                      # DW_FORM_strp
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   5                       # Abbreviation Code
+        .byte   11                      # DW_TAG_lexical_block
+        .byte   0                       # DW_CHILDREN_no
+        .byte   85                      # DW_AT_ranges
+        .byte   23                      # DW_FORM_sec_offset
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   0                       # EOM(3)
+
+        .section        .debug_info,"", at progbits
+.Lcu_begin0:
+        .long   .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
+.Ldebug_info_start0:
+        .short  4                       # DWARF version number
+        .long   .debug_abbrev           # Offset Into Abbrev. Section
+        .byte   8                       # Address Size (in bytes)
+        .byte   1                       # Abbrev [1] 0xb:0x7b DW_TAG_compile_unit
+        .long   .Lproducer              # DW_AT_producer
+        .quad   ranges                  # DW_AT_low_pc
+        .long   .Lranges_end-ranges     # DW_AT_high_pc
+        .byte   2                       # Abbrev [2] 0x2a:0x4d DW_TAG_subprogram
+        .quad   ranges                  # DW_AT_low_pc
+        .long   .Lranges_end-ranges     # DW_AT_high_pc
+        .long   .Lranges                # DW_AT_name
+        .byte   5                       # Abbrev [5] 0x61:0x15 DW_TAG_lexical_block
+        .long   0x47                    # DW_AT_ranges
+        .byte   0                       # End Of Children Mark
+        .byte   0                       # End Of Children Mark
+.Ldebug_info_end0:

Added: lldb/trunk/lit/SymbolFile/DWARF/debug_ranges.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/debug_ranges.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/debug_ranges.s (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/debug_ranges.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,94 @@
+# REQUIRES: x86
+
+# RUN: llvm-mc -triple=x86_64-pc-linux -filetype=obj %s > %t
+# RUN: %lldb %t -o "image lookup -v -s lookup_ranges" -o exit | FileCheck %s
+
+# CHECK:  Function: id = {0x7fffffff0000001c}, name = "ranges", range = [0x0000000000000000-0x0000000000000004)
+# CHECK:    Blocks: id = {0x7fffffff0000001c}, range = [0x00000000-0x00000004)
+# CHECK-NEXT:       id = {0x7fffffff0000002d}, ranges = [0x00000001-0x00000002)[0x00000003-0x00000004)
+
+        .text
+        .p2align 12
+        .globl  ranges
+        .type   ranges, at function
+ranges:                                    # @ranges
+.Lfoo_begin:
+        nop
+.Lblock1_begin:
+lookup_ranges:
+        nop
+.Lblock1_end:
+        nop
+.Lblock2_begin:
+        nop
+.Lblock2_end:
+.Lfunc_end0:
+        .size   ranges, .Lfunc_end0-ranges
+                                        # -- End function
+        .section        .debug_str,"MS", at progbits,1
+.Lproducer:
+        .asciz  "Hand-written DWARF"
+.Lranges:
+        .asciz  "ranges"
+
+        .section        .debug_abbrev,"", at progbits
+        .byte   1                       # Abbreviation Code
+        .byte   17                      # DW_TAG_compile_unit
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   37                      # DW_AT_producer
+        .byte   14                      # DW_FORM_strp
+        .byte   17                      # DW_AT_low_pc
+        .byte   1                       # DW_FORM_addr
+        .byte   18                      # DW_AT_high_pc
+        .byte   6                       # DW_FORM_data4
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   2                       # Abbreviation Code
+        .byte   46                      # DW_TAG_subprogram
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   17                      # DW_AT_low_pc
+        .byte   1                       # DW_FORM_addr
+        .byte   18                      # DW_AT_high_pc
+        .byte   6                       # DW_FORM_data4
+        .byte   3                       # DW_AT_name
+        .byte   14                      # DW_FORM_strp
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   5                       # Abbreviation Code
+        .byte   11                      # DW_TAG_lexical_block
+        .byte   0                       # DW_CHILDREN_no
+        .byte   85                      # DW_AT_ranges
+        .byte   23                      # DW_FORM_sec_offset
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   0                       # EOM(3)
+
+        .section        .debug_info,"", at progbits
+.Lcu_begin0:
+        .long   .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
+.Ldebug_info_start0:
+        .short  4                       # DWARF version number
+        .long   .debug_abbrev           # Offset Into Abbrev. Section
+        .byte   8                       # Address Size (in bytes)
+        .byte   1                       # Abbrev [1] 0xb:0x7b DW_TAG_compile_unit
+        .long   .Lproducer              # DW_AT_producer
+        .quad   .Lfoo_begin             # DW_AT_low_pc
+        .long   .Lfunc_end0-.Lfoo_begin # DW_AT_high_pc
+        .byte   2                       # Abbrev [2] 0x2a:0x4d DW_TAG_subprogram
+        .quad   .Lfoo_begin             # DW_AT_low_pc
+        .long   .Lfunc_end0-.Lfoo_begin # DW_AT_high_pc
+        .long   .Lranges                # DW_AT_name
+        .byte   5                       # Abbrev [5] 0x61:0x15 DW_TAG_lexical_block
+        .long   .Ldebug_ranges0         # DW_AT_ranges
+        .byte   0                       # End Of Children Mark
+        .byte   0                       # End Of Children Mark
+.Ldebug_info_end0:
+
+        .section        .debug_ranges,"", at progbits
+.Ldebug_ranges0:
+        .quad   .Lblock1_begin-.Lfoo_begin  
+        .quad   .Lblock1_end-.Lfoo_begin  
+        .quad   .Lblock2_begin-.Lfoo_begin  
+        .quad   .Lblock2_end-.Lfoo_begin  
+        .quad   0
+        .quad   0

Added: lldb/trunk/lit/SymbolFile/DWARF/debug_ranges_and_rnglists.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/debug_ranges_and_rnglists.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/debug_ranges_and_rnglists.test (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/debug_ranges_and_rnglists.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,18 @@
+# REQUIRES: lld
+
+# RUN: llvm-mc -triple=x86_64-pc-linux -filetype=obj %S/debug_ranges.s > %t-ranges.o
+# RUN: llvm-mc -triple=x86_64-pc-linux -filetype=obj %S/debug_rnglists.s > %t-rnglists.o
+# RUN: ld.lld -r %t-ranges.o %t-rnglists.o -o %t
+# RUN: %lldb %t -s %s | FileCheck %s
+
+image lookup -v -s lookup_ranges
+# CHECK-LABEL: image lookup -v -s lookup_ranges
+# CHECK:  Function: {{.*}} name = "ranges", range = [0x0000000000000000-0x0000000000000004)
+# CHECK:    Blocks: {{.*}} range = [0x00000000-0x00000004)
+# CHECK-NEXT:       {{.*}} ranges = [0x00000001-0x00000002)[0x00000003-0x00000004)
+
+image lookup -v -s lookup_rnglists
+# CHECK-LABEL: image lookup -v -s lookup_rnglists
+# CHECK:  Function: {{.*}} name = "rnglists", range = [0x0000000000001000-0x0000000000001004)
+# CHECK:    Blocks: {{.*}} range = [0x00001000-0x00001004)
+# CHECK-NEXT:       {{.*}} ranges = [0x00001001-0x00001002)[0x00001003-0x00001004)

Added: lldb/trunk/lit/SymbolFile/DWARF/debug_rnglists.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/debug_rnglists.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/debug_rnglists.s (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/debug_rnglists.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,110 @@
+# REQUIRES: x86
+
+# RUN: llvm-mc -triple=x86_64-pc-linux -filetype=obj %s > %t
+# RUN: %lldb %t -o "image lookup -v -s lookup_rnglists" -o exit | FileCheck %s
+
+# CHECK:  Function: id = {0x7fffffff00000021}, name = "rnglists", range = [0x0000000000000000-0x0000000000000004)
+# CHECK:    Blocks: id = {0x7fffffff00000021}, range = [0x00000000-0x00000004)
+# CHECK-NEXT:       id = {0x7fffffff00000032}, ranges = [0x00000001-0x00000002)[0x00000003-0x00000004)
+
+        .text
+        .p2align 12
+        .globl  rnglists
+        .type   rnglists, at function
+rnglists:                                    # @rnglists
+.Lfoo_begin:
+        nop
+.Lblock1_begin:
+lookup_rnglists:
+        nop
+.Lblock1_end:
+        nop
+.Lblock2_begin:
+        nop
+.Lblock2_end:
+.Lfunc_end0:
+        .size   rnglists, .Lfunc_end0-rnglists
+                                        # -- End function
+        .section        .debug_str,"MS", at progbits,1
+.Lproducer:
+        .asciz  "Hand-written DWARF"
+.Lrnglists:
+        .asciz  "rnglists"
+
+        .section        .debug_abbrev,"", at progbits
+        .byte   1                       # Abbreviation Code
+        .byte   17                      # DW_TAG_compile_unit
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   37                      # DW_AT_producer
+        .byte   14                      # DW_FORM_strp
+        .byte   17                      # DW_AT_low_pc
+        .byte   1                       # DW_FORM_addr
+        .byte   18                      # DW_AT_high_pc
+        .byte   6                       # DW_FORM_data4
+        .byte   116                     # DW_AT_rnglists_base
+        .byte   23                      # DW_FORM_sec_offset
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   2                       # Abbreviation Code
+        .byte   46                      # DW_TAG_subprogram
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   17                      # DW_AT_low_pc
+        .byte   1                       # DW_FORM_addr
+        .byte   18                      # DW_AT_high_pc
+        .byte   6                       # DW_FORM_data4
+        .byte   3                       # DW_AT_name
+        .byte   14                      # DW_FORM_strp
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   5                       # Abbreviation Code
+        .byte   11                      # DW_TAG_lexical_block
+        .byte   0                       # DW_CHILDREN_no
+        .byte   85                      # DW_AT_ranges
+        .byte   35                      # DW_FORM_rnglistx
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   0                       # EOM(3)
+
+        .section        .debug_info,"", at progbits
+.Lcu_begin0:
+        .long   .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
+.Ldebug_info_start0:
+        .short  5                       # DWARF version number
+        .byte   1                       # DWARF Unit Type
+        .byte   8                       # Address Size (in bytes)
+        .long   .debug_abbrev           # Offset Into Abbrev. Section
+        .byte   1                       # Abbrev [1] 0xc:0x5f DW_TAG_compile_unit
+        .long   .Lproducer              # DW_AT_producer
+        .quad   .Lfoo_begin             # DW_AT_low_pc
+        .long   .Lfunc_end0-.Lfoo_begin # DW_AT_high_pc
+        .long   .Lrnglists_table_base0  # DW_AT_rnglists_base
+        .byte   2                       # Abbrev [2] 0x2b:0x37 DW_TAG_subprogram
+        .quad   .Lfoo_begin             # DW_AT_low_pc
+        .long   .Lfunc_end0-.Lfoo_begin # DW_AT_high_pc
+        .long   .Lrnglists              # DW_AT_name
+        .byte   5                       # Abbrev [5] 0x52:0xf DW_TAG_lexical_block
+        .byte   0                       # DW_AT_ranges
+        .byte   0                       # End Of Children Mark
+        .byte   0                       # End Of Children Mark
+.Ldebug_info_end0:
+
+        .section        .debug_rnglists,"", at progbits
+        .long   .Ldebug_rnglist_table_end0-.Ldebug_rnglist_table_start0 # Length
+.Ldebug_rnglist_table_start0:
+        .short  5                       # Version
+        .byte   8                       # Address size
+        .byte   0                       # Segment selector size
+        .long   1                       # Offset entry count
+.Lrnglists_table_base0:
+        .long   .Ldebug_ranges0-.Lrnglists_table_base0
+.Ldebug_ranges0:
+        .byte   4                       # DW_RLE_offset_pair
+        .uleb128 .Lblock1_begin-.Lfoo_begin #   starting offset
+        .uleb128 .Lblock1_end-.Lfoo_begin #   ending offset
+        .byte   4                       # DW_RLE_offset_pair
+        .uleb128 .Lblock2_begin-.Lfoo_begin #   starting offset
+        .uleb128 .Lblock2_end-.Lfoo_begin #   ending offset
+        .byte   0                       # DW_RLE_end_of_list
+.Ldebug_rnglist_table_end0:
+        .section        .debug_macinfo,"", at progbits
+        .byte   0                       # End Of Macro List Mark

Added: lldb/trunk/lit/SymbolFile/DWARF/deterministic-build.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/deterministic-build.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/deterministic-build.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/deterministic-build.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,11 @@
+// Test that binaries linked deterministically (N_OSO has timestamp 0) can still
+// have their object files loaded by lldb. Note that the env var ZERO_AR_DATE
+// requires the ld64 linker, which clang invokes by default.
+// REQUIRES: system-darwin
+// RUN: %clang %s -g -c -o %t.o
+// RUN: ZERO_AR_DATE=1 %clang %t.o -g -o %t
+// RUN: %lldb %t -o "breakpoint set -f %s -l 11" -o run -o exit | FileCheck %s
+// CHECK: stop reason = breakpoint
+
+
+int main() { return 0; }

Added: lldb/trunk/lit/SymbolFile/DWARF/dir-separator-no-comp-dir-relative-name.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/dir-separator-no-comp-dir-relative-name.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/dir-separator-no-comp-dir-relative-name.s (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/dir-separator-no-comp-dir-relative-name.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,63 @@
+# Test that parsing of line tables works reasonably. In this case the debug info
+# does not have enough information for our heuristics to determine the path
+# style, so we will just treat them as native host paths.
+
+# REQUIRES: lld, x86
+
+# RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj > %t.o
+# RUN: ld.lld %t.o -o %t -z separate-code
+# RUN: %lldb %t -s %S/Inputs/dir-separator-no-comp-dir-relative-name.lldbinit -o exit | FileCheck %s
+
+# CHECK-LABEL: image dump line-table a.c
+# CHECK: Line table for foo{{.}}a.c
+# CHECK-NEXT: 0x0000000000201000: foo{{.}}a.c:1
+# CHECK-NEXT: 0x0000000000201001: foo{{.}}b.c:1
+# CHECK-NEXT: 0x0000000000201002: foo{{.}}b.c:1
+# CHECK-EMPTY:
+
+# CHECK-LABEL: breakpoint set -f a.c -l 1
+# CHECK: Breakpoint 1: {{.*}}`_start,
+
+# CHECK-LABEL: breakpoint set -f foo/b.c -l 1
+# CHECK: Breakpoint 2: {{.*}}`_start + 1,
+
+	.text
+	.globl	_start
+_start:
+	.file	1 "foo/a.c"
+	.loc	1 1 0
+        nop
+	.file	2 "foo/b.c"
+	.loc	2 1 0
+        nop
+
+	.section	.debug_str,"MS", at progbits,1
+.Linfo_string1:
+	.asciz	"foo/a.c"
+	.section	.debug_abbrev,"", at progbits
+	.byte	1                       # Abbreviation Code
+	.byte	17                      # DW_TAG_compile_unit
+	.byte	0                       # DW_CHILDREN_no
+	.byte	19                      # DW_AT_language
+	.byte	5                       # DW_FORM_data2
+	.byte	3                       # DW_AT_name
+	.byte	14                      # DW_FORM_strp
+	.byte	16                      # DW_AT_stmt_list
+	.byte	23                      # DW_FORM_sec_offset
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	0                       # EOM(3)
+	.section	.debug_info,"", at progbits
+.Lcu_begin0:
+	.long	.Lcu_end0-.Lcu_start0   # Length of Unit
+.Lcu_start0:
+	.short	4                       # DWARF version number
+	.long	.debug_abbrev           # Offset Into Abbrev. Section
+	.byte	8                       # Address Size (in bytes)
+	.byte	1                       # Abbrev [1] 0xb:0x1f DW_TAG_compile_unit
+	.short	12                      # DW_AT_language
+	.long	.Linfo_string1          # DW_AT_name
+	.long	.Lline_table_start0     # DW_AT_stmt_list
+.Lcu_end0:
+	.section	.debug_line,"", at progbits
+.Lline_table_start0:

Added: lldb/trunk/lit/SymbolFile/DWARF/dir-separator-no-comp-dir.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/dir-separator-no-comp-dir.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/dir-separator-no-comp-dir.s (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/dir-separator-no-comp-dir.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,62 @@
+# Test that we properly determine the path syntax of a compile unit even if the
+# compile unit does not have a DW_AT_comp_dir attribute.
+
+# REQUIRES: lld, x86
+
+# RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj > %t.o
+# RUN: ld.lld %t.o -o %t -z separate-code
+# RUN: %lldb %t -s %S/Inputs/dir-separator-windows.lldbinit -o exit | FileCheck %s
+
+# CHECK-LABEL: image dump line-table a.c
+# CHECK: Line table for C:\tmp\a.c
+# CHECK-NEXT: 0x0000000000201000: C:\tmp\a.c:1
+# CHECK-NEXT: 0x0000000000201001: C:\tmp\b.c:1
+# CHECK-NEXT: 0x0000000000201002: C:\tmp\b.c:1
+# CHECK-EMPTY:
+
+# CHECK-LABEL: breakpoint set -f a.c -l 1
+# CHECK: Breakpoint 1: {{.*}}`_start,
+
+# CHECK-LABEL: breakpoint set -f C:/tmp/b.c -l 1
+# CHECK: Breakpoint 2: {{.*}}`_start + 1,
+
+	.text
+	.globl	_start
+_start:
+	.file	1 "C:\\tmp\\a.c"
+	.loc	1 1 0
+        nop
+	.file	2 "C:\\tmp\\b.c"
+	.loc	2 1 0
+        nop
+
+	.section	.debug_str,"MS", at progbits,1
+.Linfo_string1:
+	.asciz	"C:\\tmp\\a.c"
+	.section	.debug_abbrev,"", at progbits
+	.byte	1                       # Abbreviation Code
+	.byte	17                      # DW_TAG_compile_unit
+	.byte	0                       # DW_CHILDREN_no
+	.byte	19                      # DW_AT_language
+	.byte	5                       # DW_FORM_data2
+	.byte	3                       # DW_AT_name
+	.byte	14                      # DW_FORM_strp
+	.byte	16                      # DW_AT_stmt_list
+	.byte	23                      # DW_FORM_sec_offset
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	0                       # EOM(3)
+	.section	.debug_info,"", at progbits
+.Lcu_begin0:
+	.long	.Lcu_end0-.Lcu_start0   # Length of Unit
+.Lcu_start0:
+	.short	4                       # DWARF version number
+	.long	.debug_abbrev           # Offset Into Abbrev. Section
+	.byte	8                       # Address Size (in bytes)
+	.byte	1                       # Abbrev [1] 0xb:0x1f DW_TAG_compile_unit
+	.short	12                      # DW_AT_language
+	.long	.Linfo_string1          # DW_AT_name
+	.long	.Lline_table_start0     # DW_AT_stmt_list
+.Lcu_end0:
+	.section	.debug_line,"", at progbits
+.Lline_table_start0:

Added: lldb/trunk/lit/SymbolFile/DWARF/dir-separator-posix.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/dir-separator-posix.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/dir-separator-posix.s (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/dir-separator-posix.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,67 @@
+# Test that parsing of line tables works reasonably, even if the host directory
+# separator does not match the separator of the compile unit.
+
+# REQUIRES: lld, x86
+
+# RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj > %t.o
+# RUN: ld.lld %t.o -o %t -z separate-code
+# RUN: %lldb %t -s %S/Inputs/dir-separator-posix.lldbinit -o exit | FileCheck %s
+
+# CHECK-LABEL: image dump line-table a.c
+# CHECK: Line table for /tmp/a.c
+# CHECK-NEXT: 0x0000000000201000: /tmp/a.c:1
+# CHECK-NEXT: 0x0000000000201001: /tmp/b.c:1
+# CHECK-NEXT: 0x0000000000201002: /tmp/b.c:1
+# CHECK-EMPTY:
+
+# CHECK-LABEL: breakpoint set -f a.c -l 1
+# CHECK: Breakpoint 1: {{.*}}`_start,
+
+# CHECK-LABEL: breakpoint set -f /tmp/b.c -l 1
+# CHECK: Breakpoint 2: {{.*}}`_start + 1,
+
+	.text
+	.globl	_start
+_start:
+	.file	1 "/tmp/a.c"
+	.loc	1 1 0
+        nop
+	.file	2 "/tmp/b.c"
+	.loc	2 1 0
+        nop
+
+	.section	.debug_str,"MS", at progbits,1
+.Linfo_string1:
+	.asciz	"a.c"
+.Linfo_string2:
+	.asciz	"/tmp"
+	.section	.debug_abbrev,"", at progbits
+	.byte	1                       # Abbreviation Code
+	.byte	17                      # DW_TAG_compile_unit
+	.byte	0                       # DW_CHILDREN_no
+	.byte	19                      # DW_AT_language
+	.byte	5                       # DW_FORM_data2
+	.byte	3                       # DW_AT_name
+	.byte	14                      # DW_FORM_strp
+	.byte	16                      # DW_AT_stmt_list
+	.byte	23                      # DW_FORM_sec_offset
+	.byte	27                      # DW_AT_comp_dir
+	.byte	14                      # DW_FORM_strp
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	0                       # EOM(3)
+	.section	.debug_info,"", at progbits
+.Lcu_begin0:
+	.long	.Lcu_end0-.Lcu_start0   # Length of Unit
+.Lcu_start0:
+	.short	4                       # DWARF version number
+	.long	.debug_abbrev           # Offset Into Abbrev. Section
+	.byte	8                       # Address Size (in bytes)
+	.byte	1                       # Abbrev [1] 0xb:0x1f DW_TAG_compile_unit
+	.short	12                      # DW_AT_language
+	.long	.Linfo_string1          # DW_AT_name
+	.long	.Lline_table_start0     # DW_AT_stmt_list
+	.long	.Linfo_string2          # DW_AT_comp_dir
+.Lcu_end0:
+	.section	.debug_line,"", at progbits
+.Lline_table_start0:

Added: lldb/trunk/lit/SymbolFile/DWARF/dir-separator-windows.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/dir-separator-windows.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/dir-separator-windows.s (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/dir-separator-windows.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,67 @@
+# Test that parsing of line tables works reasonably, even if the host directory
+# separator does not match the separator of the compile unit.
+
+# REQUIRES: lld, x86
+
+# RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj > %t.o
+# RUN: ld.lld %t.o -o %t -z separate-code
+# RUN: %lldb %t -s %S/Inputs/dir-separator-windows.lldbinit -o exit | FileCheck %s
+
+# CHECK-LABEL: image dump line-table a.c
+# CHECK: Line table for C:\tmp\a.c
+# CHECK-NEXT: 0x0000000000201000: C:\tmp\a.c:1
+# CHECK-NEXT: 0x0000000000201001: C:\tmp\b.c:1
+# CHECK-NEXT: 0x0000000000201002: C:\tmp\b.c:1
+# CHECK-EMPTY:
+
+# CHECK-LABEL: breakpoint set -f a.c -l 1
+# CHECK: Breakpoint 1: {{.*}}`_start,
+
+# CHECK-LABEL: breakpoint set -f C:/tmp/b.c -l 1
+# CHECK: Breakpoint 2: {{.*}}`_start + 1,
+
+	.text
+	.globl	_start
+_start:
+	.file	1 "C:\\tmp\\a.c"
+	.loc	1 1 0
+        nop
+	.file	2 "C:\\tmp\\b.c"
+	.loc	2 1 0
+        nop
+
+	.section	.debug_str,"MS", at progbits,1
+.Linfo_string1:
+	.asciz	"a.c"
+.Linfo_string2:
+	.asciz	"C:\\tmp"
+	.section	.debug_abbrev,"", at progbits
+	.byte	1                       # Abbreviation Code
+	.byte	17                      # DW_TAG_compile_unit
+	.byte	0                       # DW_CHILDREN_no
+	.byte	19                      # DW_AT_language
+	.byte	5                       # DW_FORM_data2
+	.byte	3                       # DW_AT_name
+	.byte	14                      # DW_FORM_strp
+	.byte	16                      # DW_AT_stmt_list
+	.byte	23                      # DW_FORM_sec_offset
+	.byte	27                      # DW_AT_comp_dir
+	.byte	14                      # DW_FORM_strp
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	0                       # EOM(3)
+	.section	.debug_info,"", at progbits
+.Lcu_begin0:
+	.long	.Lcu_end0-.Lcu_start0   # Length of Unit
+.Lcu_start0:
+	.short	4                       # DWARF version number
+	.long	.debug_abbrev           # Offset Into Abbrev. Section
+	.byte	8                       # Address Size (in bytes)
+	.byte	1                       # Abbrev [1] 0xb:0x1f DW_TAG_compile_unit
+	.short	12                      # DW_AT_language
+	.long	.Linfo_string1          # DW_AT_name
+	.long	.Lline_table_start0     # DW_AT_stmt_list
+	.long	.Linfo_string2          # DW_AT_comp_dir
+.Lcu_end0:
+	.section	.debug_line,"", at progbits
+.Lline_table_start0:

Added: lldb/trunk/lit/SymbolFile/DWARF/dwarf5-index-is-used.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/dwarf5-index-is-used.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/dwarf5-index-is-used.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/dwarf5-index-is-used.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,13 @@
+// Test that we use the DWARF v5 name indexes.
+
+// REQUIRES: lld
+
+// RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -mllvm -accel-tables=Dwarf -gpubnames
+// RUN: ld.lld %t.o -o %t
+// RUN: lldb-test symbols %t | FileCheck %s
+
+// CHECK: Name Index
+// CHECK: String: 0x{{.*}} "_start"
+// CHECK: Tag: DW_TAG_subprogram
+
+extern "C" void _start() {}

Added: lldb/trunk/lit/SymbolFile/DWARF/dwarf5-partial-index.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/dwarf5-partial-index.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/dwarf5-partial-index.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/dwarf5-partial-index.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,23 @@
+// Test that we return complete results when only a part of the binary is built
+// with an index.
+
+// REQUIRES: lld
+
+// RUN: %clang %s -g -c -o %t-1.o --target=x86_64-pc-linux -DONE -mllvm -accel-tables=Dwarf
+// RUN: %clang %s -g -c -o %t-2.o --target=x86_64-pc-linux -DTWO -mllvm -accel-tables=Dwarf
+// RUN: ld.lld %t-1.o %t-2.o -o %t
+// RUN: lldb-test symbols --find=variable --name=foo  %t | FileCheck %s
+
+// CHECK: Found 2 variables:
+#ifdef ONE
+namespace one {
+int foo;
+// CHECK-DAG: name = "foo", {{.*}} decl = dwarf5-partial-index.cpp:[[@LINE-1]]
+} // namespace one
+extern "C" void _start() {}
+#else
+namespace two {
+int foo;
+// CHECK-DAG: name = "foo", {{.*}} decl = dwarf5-partial-index.cpp:[[@LINE-1]]
+} // namespace two
+#endif

Added: lldb/trunk/lit/SymbolFile/DWARF/dwarf5_locations.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/dwarf5_locations.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/dwarf5_locations.s (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/dwarf5_locations.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,68 @@
+# This tests that lldb is able to process DW_OP_addrx tags introduced in dwarf5.
+
+# REQUIRES: lld, x86
+
+# RUN: llvm-mc -g -dwarf-version=5 -triple x86_64-unknown-linux-gnu %s -filetype=obj > %t.o
+# RUN: ld.lld -m elf_x86_64 %t.o -o %t 
+# RUN: lldb-test symbols %t | FileCheck %s
+
+# CHECK: Variable{0x7fffffff00000011}, name = "color"
+# CHECK-SAME: location = DW_OP_addrx 0x0
+
+        .text
+        .section        .debug_str,"MS", at progbits,1
+.Lstr_offsets_base0:
+        .asciz  "color"
+
+        .section        .debug_str_offsets,"", at progbits
+        .long   .Lstr_offsets_base0
+
+        .section        .debug_abbrev,"", at progbits
+        .byte   1                       # Abbreviation Code
+        .byte   17                      # DW_TAG_compile_unit
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   114                     # DW_AT_str_offsets_base
+        .byte   23                      # DW_FORM_sec_offset
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   2                       # Abbreviation Code
+        .byte   52                      # DW_TAG_variable
+        .byte   0                       # DW_CHILDREN_no
+        .byte   3                       # DW_AT_name
+        .byte   37                      # DW_FORM_strx1
+        .byte   63                      # DW_AT_external
+        .byte   25                      # DW_FORM_flag_present
+        .byte   2                       # DW_AT_location
+        .byte   24                      # DW_FORM_exprloc
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   0                       # EOM(3)
+        .byte   0                       # EOM(4)
+
+        .section        .debug_info,"", at progbits
+        .long   .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
+.Ldebug_info_start0:
+        .short  5                       # DWARF version number
+        .byte   1                       # DWARF Unit Type
+        .byte   8                       # Address Size (in bytes)
+        .long   .debug_abbrev           # Offset Into Abbrev. Section
+        .byte   1                       # Abbrev [1] 0xc:0x22 DW_TAG_compile_unit
+        .long   .Lstr_offsets_base0     # DW_AT_str_offsets_base
+        .byte   2                       # Abbrev [2] 0x1e:0xb DW_TAG_variable
+        .byte   0                       # DW_AT_name
+                                        # DW_AT_external
+        .byte   2                       # DW_AT_location
+        .byte   161
+        .byte   0
+        .byte   0                       # End Of Children Mark
+.Ldebug_info_end0:
+
+        .section        .debug_addr,"", at progbits
+        .long   .Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution
+.Ldebug_addr_start0:
+        .short  5                       # DWARF version number
+        .byte   8                       # Address size
+        .byte   0                       # Segment selector size
+        .quad   color
+.Ldebug_addr_end0:
+

Added: lldb/trunk/lit/SymbolFile/DWARF/find-basic-function.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/find-basic-function.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/find-basic-function.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/find-basic-function.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,106 @@
+// REQUIRES: lld
+
+// RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -mllvm -accel-tables=Disable
+// RUN: ld.lld %t.o -o %t
+// RUN: lldb-test symbols --name=foo --find=function --function-flags=base %t | \
+// RUN:   FileCheck --check-prefix=BASE %s
+// RUN: lldb-test symbols --name=foo --find=function --function-flags=method %t | \
+// RUN:   FileCheck --check-prefix=METHOD %s
+// RUN: lldb-test symbols --name=foo --find=function --function-flags=full %t | \
+// RUN:   FileCheck --check-prefix=FULL %s
+// RUN: lldb-test symbols --name=_Z3fooi --find=function --function-flags=full %t | \
+// RUN:   FileCheck --check-prefix=FULL-MANGLED %s
+// RUN: lldb-test symbols --name=foo --context=context --find=function --function-flags=base %t | \
+// RUN:   FileCheck --check-prefix=CONTEXT %s
+// RUN: lldb-test symbols --name=not_there --find=function %t | \
+// RUN:   FileCheck --check-prefix=EMPTY %s
+//
+// RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx
+// RUN: lldb-test symbols --name=foo --find=function --function-flags=base %t | \
+// RUN:   FileCheck --check-prefix=BASE %s
+// RUN: lldb-test symbols --name=foo --find=function --function-flags=method %t | \
+// RUN:   FileCheck --check-prefix=METHOD %s
+// RUN: lldb-test symbols --name=foo --find=function --function-flags=full %t | \
+// RUN:   FileCheck --check-prefix=FULL %s
+// RUN: lldb-test symbols --name=_Z3fooi --find=function --function-flags=full %t | \
+// RUN:   FileCheck --check-prefix=FULL-MANGLED %s
+// RUN: lldb-test symbols --name=foo --context=context --find=function --function-flags=base %t | \
+// RUN:   FileCheck --check-prefix=CONTEXT %s
+// RUN: lldb-test symbols --name=not_there --find=function %t | \
+// RUN:   FileCheck --check-prefix=EMPTY %s
+
+// RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -mllvm -accel-tables=Dwarf
+// RUN: ld.lld %t.o -o %t
+// RUN: lldb-test symbols --name=foo --find=function --function-flags=base %t | \
+// RUN:   FileCheck --check-prefix=BASE %s
+// RUN: lldb-test symbols --name=foo --find=function --function-flags=method %t | \
+// RUN:   FileCheck --check-prefix=METHOD %s
+// RUN: lldb-test symbols --name=foo --find=function --function-flags=full %t | \
+// RUN:   FileCheck --check-prefix=FULL %s
+// RUN: lldb-test symbols --name=_Z3fooi --find=function --function-flags=full %t | \
+// RUN:   FileCheck --check-prefix=FULL-MANGLED %s
+// RUN: lldb-test symbols --name=foo --context=context --find=function --function-flags=base %t | \
+// RUN:   FileCheck --check-prefix=CONTEXT %s
+// RUN: lldb-test symbols --name=not_there --find=function %t | \
+// RUN:   FileCheck --check-prefix=EMPTY %s
+
+// BASE: Found 4 functions:
+// BASE-DAG: name = "foo()", mangled = "_Z3foov"
+// BASE-DAG: name = "foo(int)", mangled = "_Z3fooi"
+// BASE-DAG: name = "bar::foo()", mangled = "_ZN3bar3fooEv"
+// BASE-DAG: name = "bar::baz::foo()", mangled = "_ZN3bar3baz3fooEv"
+
+// METHOD: Found 3 functions:
+// METHOD-DAG: name = "sbar::foo()", mangled = "_ZN4sbar3fooEv"
+// METHOD-DAG: name = "sbar::foo(int)", mangled = "_ZN4sbar3fooEi"
+// METHOD-DAG: name = "ffbar()::sbaz::foo()", mangled = "_ZZ5ffbarvEN4sbaz3fooEv"
+
+// FULL: Found 7 functions:
+// FULL-DAG: name = "foo()", mangled = "_Z3foov"
+// FULL-DAG: name = "foo(int)", mangled = "_Z3fooi"
+// FULL-DAG: name = "bar::foo()", mangled = "_ZN3bar3fooEv"
+// FULL-DAG: name = "bar::baz::foo()", mangled = "_ZN3bar3baz3fooEv"
+// FULL-DAG: name = "sbar::foo()", mangled = "_ZN4sbar3fooEv"
+// FULL-DAG: name = "sbar::foo(int)", mangled = "_ZN4sbar3fooEi"
+// FULL-DAG: name = "ffbar()::sbaz::foo()", mangled = "_ZZ5ffbarvEN4sbaz3fooEv"
+
+// FULL-MANGLED: Found 1 functions:
+// FULL-MANGLED-DAG: name = "foo(int)", mangled = "_Z3fooi"
+
+// CONTEXT: Found 1 functions:
+// CONTEXT-DAG: name = "bar::foo()", mangled = "_ZN3bar3fooEv"
+
+// EMPTY: Found 0 functions:
+
+void foo() {}
+void foo(int) {}
+
+namespace bar {
+int context;
+void foo() {}
+namespace baz {
+void foo() {}
+} // namespace baz
+} // namespace bar
+
+struct foo {};
+void fbar(struct foo) {}
+
+void Foo() {}
+
+struct sbar {
+  void foo();
+  static void foo(int);
+};
+void sbar::foo() {}
+void sbar::foo(int) {}
+
+void ffbar() {
+  struct sbaz {
+    void foo() {}
+  };
+  sbaz a;
+  a.foo();
+}
+
+extern "C" void _start() {}

Added: lldb/trunk/lit/SymbolFile/DWARF/find-basic-namespace.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/find-basic-namespace.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/find-basic-namespace.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/find-basic-namespace.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,46 @@
+// REQUIRES: lld
+
+// RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -mllvm -accel-tables=Disable
+// RUN: ld.lld %t.o -o %t
+// RUN: lldb-test symbols --name=foo --find=namespace %t | \
+// RUN:   FileCheck --check-prefix=FOO %s
+// RUN: lldb-test symbols --name=foo --find=namespace --context=context %t | \
+// RUN:   FileCheck --check-prefix=CONTEXT %s
+// RUN: lldb-test symbols --name=not_there --find=namespace %t | \
+// RUN:   FileCheck --check-prefix=EMPTY %s
+//
+// RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx
+// RUN: lldb-test symbols --name=foo --find=namespace %t | \
+// RUN:   FileCheck --check-prefix=FOO %s
+// RUN: lldb-test symbols --name=foo --find=namespace --context=context %t | \
+// RUN:   FileCheck --check-prefix=CONTEXT %s
+// RUN: lldb-test symbols --name=not_there --find=namespace %t | \
+// RUN:   FileCheck --check-prefix=EMPTY %s
+
+// RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -mllvm -accel-tables=Dwarf
+// RUN: ld.lld %t.o -o %t
+// RUN: lldb-test symbols --name=foo --find=namespace %t | \
+// RUN:   FileCheck --check-prefix=FOO %s
+// RUN: lldb-test symbols --name=foo --find=namespace --context=context %t | \
+// RUN:   FileCheck --check-prefix=CONTEXT %s
+// RUN: lldb-test symbols --name=not_there --find=namespace %t | \
+// RUN:   FileCheck --check-prefix=EMPTY %s
+
+// FOO: Found namespace: foo
+
+// CONTEXT: Found namespace: bar::foo
+
+// EMPTY: Namespace not found.
+
+namespace foo {
+int X;
+}
+
+namespace bar {
+int context;
+namespace foo {
+int X;
+}
+} // namespace bar
+
+extern "C" void _start() {}

Added: lldb/trunk/lit/SymbolFile/DWARF/find-basic-type.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/find-basic-type.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/find-basic-type.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/find-basic-type.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,55 @@
+// REQUIRES: lld
+
+// RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -mllvm -accel-tables=Disable
+// RUN: ld.lld %t.o -o %t
+// RUN: lldb-test symbols --name=foo --find=type %t | \
+// RUN:   FileCheck --check-prefix=NAME %s
+// RUN: lldb-test symbols --name=foo --context=context --find=type %t | \
+// RUN:   FileCheck --check-prefix=CONTEXT %s
+// RUN: lldb-test symbols --name=not_there --find=type %t | \
+// RUN:   FileCheck --check-prefix=EMPTY %s
+//
+// RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx
+// RUN: lldb-test symbols --name=foo --find=type %t | \
+// RUN:   FileCheck --check-prefix=NAME %s
+// RUN: lldb-test symbols --name=foo --context=context --find=type %t | \
+// RUN:   FileCheck --check-prefix=CONTEXT %s
+// RUN: lldb-test symbols --name=not_there --find=type %t | \
+// RUN:   FileCheck --check-prefix=EMPTY %s
+
+// RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -mllvm -accel-tables=Dwarf
+// RUN: ld.lld %t.o -o %t
+// RUN: lldb-test symbols --name=foo --find=type %t | \
+// RUN:   FileCheck --check-prefix=NAME %s
+// RUN: lldb-test symbols --name=foo --context=context --find=type %t | \
+// RUN:   FileCheck --check-prefix=CONTEXT %s
+// RUN: lldb-test symbols --name=not_there --find=type %t | \
+// RUN:   FileCheck --check-prefix=EMPTY %s
+
+// EMPTY: Found 0 types:
+// NAME: Found 4 types:
+// CONTEXT: Found 1 types:
+struct foo { };
+// NAME-DAG: name = "foo", {{.*}} decl = find-basic-type.cpp:[[@LINE-1]]
+
+namespace bar {
+int context;
+struct foo {};
+// NAME-DAG: name = "foo", {{.*}} decl = find-basic-type.cpp:[[@LINE-1]]
+// CONTEXT-DAG: name = "foo", {{.*}} decl = find-basic-type.cpp:[[@LINE-2]]
+namespace baz {
+struct foo {};
+// NAME-DAG: name = "foo", {{.*}} decl = find-basic-type.cpp:[[@LINE-1]]
+}
+}
+
+struct sbar {
+  struct foo {};
+// NAME-DAG: name = "foo", {{.*}} decl = find-basic-type.cpp:[[@LINE-1]]
+};
+
+struct foobar {};
+
+struct Foo {};
+
+extern "C" void _start(foo, bar::foo, bar::baz::foo, sbar::foo, foobar, Foo) {}

Added: lldb/trunk/lit/SymbolFile/DWARF/find-basic-variable.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/find-basic-variable.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/find-basic-variable.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/find-basic-variable.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,76 @@
+// REQUIRES: lld
+
+// RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -mllvm -accel-tables=Disable
+// RUN: ld.lld %t.o -o %t
+// RUN: lldb-test symbols --name=foo --find=variable --context=context %t | \
+// RUN:   FileCheck --check-prefix=CONTEXT %s
+// RUN: lldb-test symbols --name=foo --find=variable %t | \
+// RUN:   FileCheck --check-prefix=NAME %s
+// RUN: lldb-test symbols --regex --name=foo --find=variable %t | \
+// RUN:   FileCheck --check-prefix=REGEX %s
+// RUN: lldb-test symbols --name=not_there --find=variable %t | \
+// RUN:   FileCheck --check-prefix=EMPTY %s
+//
+// RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx
+// RUN: lldb-test symbols --name=foo --find=variable --context=context %t | \
+// RUN:   FileCheck --check-prefix=CONTEXT %s
+// RUN: lldb-test symbols --name=foo --find=variable %t | \
+// RUN:   FileCheck --check-prefix=NAME %s
+// RUN: lldb-test symbols --regex --name=foo --find=variable %t | \
+// RUN:   FileCheck --check-prefix=REGEX %s
+// RUN: lldb-test symbols --name=not_there --find=variable %t | \
+// RUN:   FileCheck --check-prefix=EMPTY %s
+//
+// RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -mllvm -accel-tables=Dwarf
+// RUN: ld.lld %t.o -o %t
+// RUN: lldb-test symbols --name=foo --find=variable --context=context %t | \
+// RUN:   FileCheck --check-prefix=CONTEXT %s
+// RUN: lldb-test symbols --name=foo --find=variable %t | \
+// RUN:   FileCheck --check-prefix=NAME %s
+// RUN: lldb-test symbols --regex --name=foo --find=variable %t | \
+// RUN:   FileCheck --check-prefix=REGEX %s
+// RUN: lldb-test symbols --name=not_there --find=variable %t | \
+// RUN:   FileCheck --check-prefix=EMPTY %s
+
+// EMPTY: Found 0 variables:
+// NAME: Found 4 variables:
+// CONTEXT: Found 1 variables:
+// REGEX: Found 5 variables:
+int foo;
+// NAME-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-1]]
+// REGEX-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-2]]
+namespace bar {
+int context;
+long foo;
+// NAME-DAG: name = "foo", type = {{.*}} (long int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-1]]
+// CONTEXT-DAG: name = "foo", type = {{.*}} (long int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-2]]
+// REGEX-DAG: name = "foo", type = {{.*}} (long int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-3]]
+namespace baz {
+static short foo;
+// NAME-DAG: name = "foo", type = {{.*}} (short), {{.*}} decl = find-basic-variable.cpp:[[@LINE-1]]
+// REGEX-DAG: name = "foo", type = {{.*}} (short), {{.*}} decl = find-basic-variable.cpp:[[@LINE-2]]
+}
+}
+
+struct sbar {
+  static int foo;
+// NAME-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-1]]
+// REGEX-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-2]]
+};
+int sbar::foo;
+
+int foobar;
+// REGEX-DAG: name = "foobar", type = {{.*}} (int), {{.*}} decl = find-basic-variable.cpp:[[@LINE-1]]
+
+int fbar() {
+  static int foo;
+  return foo + bar::baz::foo;
+}
+
+int Foo;
+
+struct ssbar {
+  int foo;
+};
+
+extern "C" void _start(sbar, ssbar) {}

Added: lldb/trunk/lit/SymbolFile/DWARF/find-function-regex.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/find-function-regex.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/find-function-regex.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/find-function-regex.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,26 @@
+// REQUIRES: lld
+
+// RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -mllvm -accel-tables=Disable
+// RUN: ld.lld %t.o -o %t
+// RUN: lldb-test symbols --name=f.o --regex --find=function %t | FileCheck %s
+//
+// RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx
+// RUN: lldb-test symbols --name=f.o --regex --find=function %t | FileCheck %s
+
+// RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -mllvm -accel-tables=Dwarf
+// RUN: ld.lld %t.o -o %t
+// RUN: lldb-test symbols --name=f.o --regex --find=function %t | FileCheck %s
+
+// CHECK: Found 3 functions:
+// CHECK-DAG: name = "foo()", mangled = "_Z3foov"
+// CHECK-DAG: name = "ffo()", mangled = "_Z3ffov"
+// CHECK-DAG: name = "bar::foo()", mangled = "_ZN3bar3fooEv"
+
+void foo() {}
+void ffo() {}
+namespace bar {
+void foo() {}
+} // namespace bar
+void fof() {}
+
+extern "C" void _start() {}

Added: lldb/trunk/lit/SymbolFile/DWARF/find-inline-method.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/find-inline-method.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/find-inline-method.s (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/find-inline-method.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,152 @@
+# REQUIRES: lld, x86
+
+# RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj > %t.o
+# RUN: ld.lld %t.o -o %t -z separate-code
+# RUN: lldb-test symbols --find=function --name=inl --function-flags=method %t \
+# RUN:   | FileCheck %s
+
+# CHECK: Function: {{.*}} mangled = "_Z8externali"
+# CHECK: Blocks: {{.*}} range = [0x00201000-0x00201002)
+# CHECK-NEXT: range = [0x00201000-0x00201002), name = "inl", mangled = _ZN1S3inlEi
+
+
+# Generated via:
+#   clang -O2 -g -S
+
+# from file:
+#   int forward(int);
+#   struct S {
+#     static int inl(int a) { return forward(a); }
+#   };
+#   int external(int a) { return S::inl(a); }
+
+# and then simplified.
+
+	.text
+_Z8externali:
+.Lfunc_begin0:
+	jmp	_Z7forwardi
+.Lfunc_end0:
+
+.globl _start
+_start:
+_Z7forwardi:
+        ret
+
+	.section	.debug_str,"MS", at progbits,1
+.Linfo_string0:
+	.asciz	"clang version 7.0.0 (trunk 332830) (llvm/trunk 332835) with manual modifications"
+.Linfo_string3:
+	.asciz	"_ZN1S3inlEi"
+.Linfo_string4:
+	.asciz	"inl"
+.Linfo_string6:
+	.asciz	"S"
+.Linfo_string8:
+	.asciz	"_Z8externali"
+.Linfo_string9:
+	.asciz	"external"
+	.section	.debug_abbrev,"", at progbits
+	.byte	1                       # Abbreviation Code
+	.byte	17                      # DW_TAG_compile_unit
+	.byte	1                       # DW_CHILDREN_yes
+	.byte	37                      # DW_AT_producer
+	.byte	14                      # DW_FORM_strp
+	.byte	19                      # DW_AT_language
+	.byte	5                       # DW_FORM_data2
+	.byte	17                      # DW_AT_low_pc
+	.byte	1                       # DW_FORM_addr
+	.byte	18                      # DW_AT_high_pc
+	.byte	6                       # DW_FORM_data4
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	2                       # Abbreviation Code
+	.byte	19                      # DW_TAG_structure_type
+	.byte	1                       # DW_CHILDREN_yes
+	.byte	3                       # DW_AT_name
+	.byte	14                      # DW_FORM_strp
+	.byte	11                      # DW_AT_byte_size
+	.byte	11                      # DW_FORM_data1
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	3                       # Abbreviation Code
+	.byte	46                      # DW_TAG_subprogram
+	.byte	0                       # DW_CHILDREN_no
+	.byte	110                     # DW_AT_linkage_name
+	.byte	14                      # DW_FORM_strp
+	.byte	3                       # DW_AT_name
+	.byte	14                      # DW_FORM_strp
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	6                       # Abbreviation Code
+	.byte	46                      # DW_TAG_subprogram
+	.byte	0                       # DW_CHILDREN_no
+	.byte	71                      # DW_AT_specification
+	.byte	19                      # DW_FORM_ref4
+	.byte	32                      # DW_AT_inline
+	.byte	11                      # DW_FORM_data1
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	8                       # Abbreviation Code
+	.byte	46                      # DW_TAG_subprogram
+	.byte	1                       # DW_CHILDREN_yes
+	.byte	17                      # DW_AT_low_pc
+	.byte	1                       # DW_FORM_addr
+	.byte	18                      # DW_AT_high_pc
+	.byte	6                       # DW_FORM_data4
+	.byte	110                     # DW_AT_linkage_name
+	.byte	14                      # DW_FORM_strp
+	.byte	3                       # DW_AT_name
+	.byte	14                      # DW_FORM_strp
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	10                      # Abbreviation Code
+	.byte	29                      # DW_TAG_inlined_subroutine
+	.byte	1                       # DW_CHILDREN_yes
+	.byte	49                      # DW_AT_abstract_origin
+	.byte	19                      # DW_FORM_ref4
+	.byte	17                      # DW_AT_low_pc
+	.byte	1                       # DW_FORM_addr
+	.byte	18                      # DW_AT_high_pc
+	.byte	6                       # DW_FORM_data4
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	0                       # EOM(3)
+	.section	.debug_info,"", at progbits
+.Lcu_begin0:
+	.long	.Lcu_end0-.Lcu_start0   # Length of Unit
+.Lcu_start0:
+	.short	4                       # DWARF version number
+	.long	.debug_abbrev           # Offset Into Abbrev. Section
+	.byte	8                       # Address Size (in bytes)
+	.byte	1                       # Abbrev [1] 0xb:0x9e DW_TAG_compile_unit
+	.long	.Linfo_string0          # DW_AT_producer
+	.short	4                       # DW_AT_language
+	.quad	.Lfunc_begin0           # DW_AT_low_pc
+	.long	.Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
+	.byte	2                       # Abbrev [2] 0x2a:0x1f DW_TAG_structure_type
+	.long	.Linfo_string6          # DW_AT_name
+	.byte	1                       # DW_AT_byte_size
+.Linl_spec:
+	.byte	3                       # Abbrev [3] 0x33:0x15 DW_TAG_subprogram
+	.long	.Linfo_string3          # DW_AT_linkage_name
+	.long	.Linfo_string4          # DW_AT_name
+	.byte	0                       # End Of Children Mark
+.Linl_abstract:
+	.byte	6                       # Abbrev [6] 0x50:0x12 DW_TAG_subprogram
+	.long	.Linl_spec              # DW_AT_specification
+	.byte	1                       # DW_AT_inline
+.Linl_a_abstract:
+	.byte	8                       # Abbrev [8] 0x62:0x46 DW_TAG_subprogram
+	.quad	.Lfunc_begin0           # DW_AT_low_pc
+	.long	.Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
+	.long	.Linfo_string8          # DW_AT_linkage_name
+	.long	.Linfo_string9          # DW_AT_name
+	.byte	10                      # Abbrev [10] 0x8c:0x1b DW_TAG_inlined_subroutine
+	.long	.Linl_abstract          # DW_AT_abstract_origin
+	.quad	.Lfunc_begin0           # DW_AT_low_pc
+	.long	.Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
+	.byte	0                       # End Of Children Mark
+	.byte	0                       # End Of Children Mark
+	.byte	0                       # End Of Children Mark
+.Lcu_end0:

Added: lldb/trunk/lit/SymbolFile/DWARF/find-method-local-struct.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/find-method-local-struct.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/find-method-local-struct.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/find-method-local-struct.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,19 @@
+// RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx
+// RUN: lldb-test symbols --name=foo --find=function --function-flags=method %t | \
+// RUN:   FileCheck %s
+
+// CHECK-DAG: name = "sbar::foo()", mangled = "_ZN4sbar3fooEv"
+// CHECK-DAG: name = "ffbar()::sbar::foo()", mangled = "_ZZ5ffbarvEN4sbar3fooEv"
+
+struct sbar {
+  void foo();
+};
+void sbar::foo() {}
+
+void ffbar() {
+  struct sbar {
+    void foo() {}
+  };
+  sbar a;
+  a.foo();
+}

Added: lldb/trunk/lit/SymbolFile/DWARF/find-method.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/find-method.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/find-method.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/find-method.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,31 @@
+// REQUIRES: lld
+
+// RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux -mllvm -accel-tables=Disable
+// RUN: ld.lld %t.o -o %t
+// RUN: lldb-test symbols --name=foo --find=function --function-flags=method %t | \
+// RUN:   FileCheck %s
+//
+// RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx
+// RUN: lldb-test symbols --name=foo --find=function --function-flags=method %t | \
+// RUN:   FileCheck %s
+
+// CHECK-DAG: name = "A::foo()", mangled = "_ZN1A3fooEv"
+// CHECK-DAG: name = "B::foo()", mangled = "_ZN1B3fooEv"
+// CHECK-DAG: name = "C::foo()", mangled = "_ZN1C3fooEv"
+
+struct A {
+  void foo();
+};
+void A::foo() {}
+
+class B {
+  void foo();
+};
+void B::foo() {}
+
+union C {
+  void foo();
+};
+void C::foo() {}
+
+extern "C" void _start() {}

Added: lldb/trunk/lit/SymbolFile/DWARF/find-qualified-variable.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/find-qualified-variable.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/find-qualified-variable.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/find-qualified-variable.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,15 @@
+// RUN: %clang %s -g -c -o %t --target=x86_64-apple-macosx
+// RUN: lldb-test symbols --name=A::foo --find=variable %t | FileCheck %s
+
+// CHECK: Found 1 variables:
+
+struct A {
+  static int foo;
+};
+int A::foo;
+// NAME-DAG: name = "foo", {{.*}} decl = find-qualified-variable.cpp:[[@LINE-1]]
+
+struct B {
+  static int foo;
+};
+int B::foo;

Added: lldb/trunk/lit/SymbolFile/DWARF/find-type-in-function.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/find-type-in-function.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/find-type-in-function.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/find-type-in-function.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,24 @@
+// REQUIRES: lld
+
+// XFAIL: *
+
+// RUN: %clang %s -g -c -o %t.o --target=x86_64-pc-linux
+// RUN: ld.lld %t.o -o %t
+// RUN: lldb-test symbols --name=foo --find=type %t | \
+// RUN:   FileCheck --check-prefix=NAME %s
+
+// Lookup for "foo" should find either both "struct foo" types or just the
+// global one. Right now, it finds the definition inside bar(), which is
+// definitely wrong.
+
+// NAME: Found 2 types:
+struct foo {};
+// NAME-DAG: name = "foo", {{.*}} decl = find-type-in-function.cpp:[[@LINE-1]]
+
+void bar() {
+  struct foo {};
+// NAME-DAG: name = "foo", {{.*}} decl = find-type-in-function.cpp:[[@LINE-1]]
+  foo a;
+}
+
+extern "C" void _start(foo) {}

Added: lldb/trunk/lit/SymbolFile/DWARF/find-variable-dwo.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/find-variable-dwo.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/find-variable-dwo.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/find-variable-dwo.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,25 @@
+// REQUIRES: lld
+
+// RUN: %clang %s -g -gsplit-dwarf -c -emit-llvm -o - --target=x86_64-pc-linux -DONE | \
+// RUN:   llc -accel-tables=Dwarf -filetype=obj -split-dwarf-file=%t-1.dwo -o %t-1.o
+// RUN: llvm-objcopy --split-dwo=%t-1.dwo %t-1.o
+// RUN: %clang %s -g -gsplit-dwarf -c -emit-llvm -o - --target=x86_64-pc-linux -DTWO | \
+// RUN:   llc -accel-tables=Dwarf -filetype=obj -split-dwarf-file=%t-2.dwo -o %t-2.o
+// RUN: llvm-objcopy --split-dwo=%t-2.dwo %t-2.o
+// RUN: ld.lld %t-1.o %t-2.o -o %t
+// RUN: lldb-test symbols --name=foo --find=variable %t | FileCheck %s
+
+// CHECK: Found 2 variables:
+#ifdef ONE
+namespace one {
+int foo;
+// CHECK-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = find-variable-dwo.cpp:[[@LINE-1]]
+} // namespace one
+
+extern "C" void _start() {}
+#else
+namespace two {
+int foo;
+// CHECK-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = find-variable-dwo.cpp:[[@LINE-1]]
+} // namespace two
+#endif

Added: lldb/trunk/lit/SymbolFile/DWARF/find-variable-file.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/find-variable-file.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/find-variable-file.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/find-variable-file.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,38 @@
+// REQUIRES: lld
+
+// RUN: %clang -g -c -o %t-1.o --target=x86_64-pc-linux -mllvm -accel-tables=Disable %s
+// RUN: %clang -g -c -o %t-2.o --target=x86_64-pc-linux -mllvm -accel-tables=Disable %S/Inputs/find-variable-file-2.cpp
+// RUN: ld.lld %t-1.o %t-2.o -o %t
+// RUN: lldb-test symbols --file=find-variable-file.cpp --find=variable %t | \
+// RUN:   FileCheck --check-prefix=ONE %s
+// RUN: lldb-test symbols --file=find-variable-file-2.cpp --find=variable %t | \
+// RUN:   FileCheck --check-prefix=TWO %s
+
+// Run the same test with split-dwarf. This is interesting because the two
+// split compile units will have the same offset (0).
+// RUN: %clang -g -c -o %t-1.o --target=x86_64-pc-linux -gsplit-dwarf %s
+// RUN: %clang -g -c -o %t-2.o --target=x86_64-pc-linux -gsplit-dwarf %S/Inputs/find-variable-file-2.cpp
+// RUN: ld.lld %t-1.o %t-2.o -o %t
+// RUN: lldb-test symbols --file=find-variable-file.cpp --find=variable %t | \
+// RUN:   FileCheck --check-prefix=ONE %s
+// RUN: lldb-test symbols --file=find-variable-file-2.cpp --find=variable %t | \
+// RUN:   FileCheck --check-prefix=TWO %s
+
+// RUN: %clang -g -c -o %t-1.o --target=x86_64-pc-linux -mllvm -accel-tables=Dwarf %s
+// RUN: %clang -g -c -o %t-2.o --target=x86_64-pc-linux -mllvm -accel-tables=Dwarf %S/Inputs/find-variable-file-2.cpp
+// RUN: ld.lld %t-1.o %t-2.o -o %t
+// RUN: lldb-test symbols --file=find-variable-file.cpp --find=variable %t | \
+// RUN:   FileCheck --check-prefix=ONE %s
+// RUN: lldb-test symbols --file=find-variable-file-2.cpp --find=variable %t | \
+// RUN:   FileCheck --check-prefix=TWO %s
+
+// ONE: Found 1 variables:
+namespace one {
+int foo;
+// ONE-DAG: name = "foo", type = {{.*}} (int), {{.*}} decl = find-variable-file.cpp:[[@LINE-1]]
+} // namespace one
+
+extern "C" void _start() {}
+
+// TWO: Found 1 variables:
+// TWO-DAG: name = "foo", {{.*}} decl = find-variable-file-2.cpp:2

Added: lldb/trunk/lit/SymbolFile/DWARF/forward-declarations.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/forward-declarations.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/forward-declarations.s (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/forward-declarations.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,111 @@
+# Test handling of the situation (including the error message) where a structure
+# has a incomplete member.
+
+# REQUIRES: x86
+
+# RUN: llvm-mc -triple x86_64-pc-linux -filetype=obj %s -o %t
+# RUN: %lldb %t -o "target var b" -b 2>&1 | FileCheck %s
+
+# CHECK: error: {{.*}} DWARF DIE at 0x0000002b (class B) has a member variable 0x00000030 (a) whose type is a forward declaration, not a complete definition.
+# CHECK-NEXT: Please file a bug against the compiler and include the preprocessed output for /tmp/a.cc
+
+# CHECK: b = (a = A @ 0x0000000000000001)
+
+        .type   b, at object               # @b
+        .comm   b,1,1
+        .section        .debug_str,"MS", at progbits,1
+.Linfo_string0:
+        .asciz  "Hand-written DWARF"
+.Lcu_name:
+        .asciz  "/tmp/a.cc"
+.Lcu_compdir:
+        .asciz  "/foo/bar"
+.Lb:
+        .asciz  "b"
+.La:
+        .asciz  "a"
+.LA:
+        .asciz  "A"
+.LB:
+        .asciz  "B"
+
+        .section        .debug_abbrev,"", at progbits
+        .byte   1                       # Abbreviation Code
+        .byte   17                      # DW_TAG_compile_unit
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   37                      # DW_AT_producer
+        .byte   14                      # DW_FORM_strp
+        .byte   3                       # DW_AT_name
+        .byte   14                      # DW_FORM_strp
+        .byte   27                      # DW_AT_comp_dir
+        .byte   14                      # DW_FORM_strp
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   2                       # Abbreviation Code
+        .byte   52                      # DW_TAG_variable
+        .byte   0                       # DW_CHILDREN_no
+        .byte   3                       # DW_AT_name
+        .byte   14                      # DW_FORM_strp
+        .byte   73                      # DW_AT_type
+        .byte   19                      # DW_FORM_ref4
+        .byte   2                       # DW_AT_location
+        .byte   24                      # DW_FORM_exprloc
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   3                       # Abbreviation Code
+        .byte   19                      # DW_TAG_structure_type
+        .byte   1                       # DW_CHILDREN_yes
+        .byte   3                       # DW_AT_name
+        .byte   14                      # DW_FORM_strp
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   4                       # Abbreviation Code
+        .byte   13                      # DW_TAG_member
+        .byte   0                       # DW_CHILDREN_no
+        .byte   3                       # DW_AT_name
+        .byte   14                      # DW_FORM_strp
+        .byte   73                      # DW_AT_type
+        .byte   19                      # DW_FORM_ref4
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   5                       # Abbreviation Code
+        .byte   19                      # DW_TAG_structure_type
+        .byte   0                       # DW_CHILDREN_no
+        .byte   60                      # DW_AT_declaration
+        .byte   25                      # DW_FORM_flag_present
+        .byte   3                       # DW_AT_name
+        .byte   14                      # DW_FORM_strp
+        .byte   0                       # EOM(1)
+        .byte   0                       # EOM(2)
+        .byte   0                       # EOM(3)
+
+        .section        .debug_info,"", at progbits
+.Lcu_begin0:
+        .long   .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
+.Ldebug_info_start0:
+        .short  4                       # DWARF version number
+        .long   .debug_abbrev           # Offset Into Abbrev. Section
+        .byte   8                       # Address Size (in bytes)
+        .byte   1                       # Abbrev [1] 0xb:0x46 DW_TAG_compile_unit
+        .long   .Linfo_string0          # DW_AT_producer
+        .long   .Lcu_name               # DW_AT_name
+        .long   .Lcu_compdir            # DW_AT_comp_dir
+        .byte   2                       # Abbrev [2] 0x1e:0x15 DW_TAG_variable
+        .long   .Lb                     # DW_AT_name
+        .long   .LB_die-.Lcu_begin0     # DW_AT_type
+        .byte   9                       # DW_AT_location
+        .byte   3
+        .quad   b
+.LB_die:
+        .byte   3                       # Abbrev [3] 0x33:0x15 DW_TAG_structure_type
+        .long   .LB                     # DW_AT_name
+        .byte   4                       # Abbrev [4] 0x3b:0xc DW_TAG_member
+        .long   .La                     # DW_AT_name
+        .long   .LA_die-.Lcu_begin0     # DW_AT_type
+        .byte   0                       # End Of Children Mark
+.LA_die:
+        .byte   5                       # Abbrev [5] 0x48:0x8 DW_TAG_structure_type
+                                        # DW_AT_declaration
+        .long   .LA                     # DW_AT_name
+        .byte   0                       # End Of Children Mark
+.Ldebug_info_end0:

Added: lldb/trunk/lit/SymbolFile/DWARF/gnu-style-compression.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/gnu-style-compression.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/gnu-style-compression.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/gnu-style-compression.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,14 @@
+// REQUIRES: zlib
+
+// RUN: %clang %s -target x86_64-pc-linux -g -gsplit-dwarf -c -o %t \
+// RUN:   -Wa,--compress-debug-sections=zlib-gnu
+// RUN: %lldb %t -o "target var s a" -b | FileCheck %s
+
+// CHECK: (const short) s = 47
+// CHECK: (const A) a = (a = 42)
+
+struct A {
+  long a = 42;
+};
+extern constexpr short s = 47;
+extern constexpr A a{};

Added: lldb/trunk/lit/SymbolFile/DWARF/lit.local.cfg
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/lit.local.cfg?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/lit.local.cfg (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/lit.local.cfg Wed Oct  9 10:35:43 2019
@@ -0,0 +1 @@
+config.suffixes = ['.cpp', '.s', '.test', '.ll']

Added: lldb/trunk/lit/SymbolFile/DWARF/parallel-indexing-stress.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/parallel-indexing-stress.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/parallel-indexing-stress.s (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/parallel-indexing-stress.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,84 @@
+# Stress-test the parallel indexing of compile units.
+
+# REQUIRES: x86
+
+# RUN: llvm-mc -triple x86_64-pc-linux %s -o %t -filetype=obj
+# RUN: %lldb %t -o "target variable A" -b | FileCheck %s
+
+# CHECK-COUNT-256: A = 47
+
+	.section	.debug_str,"MS", at progbits,1
+.Linfo_string0:
+	.asciz	"Hand-written DWARF"
+.Lname:
+	.asciz	"A"
+.Linfo_string4:
+	.asciz	"int"                   # string offset=95
+
+	.section	.debug_abbrev,"", at progbits
+	.byte	1                       # Abbreviation Code
+	.byte	17                      # DW_TAG_compile_unit
+	.byte	1                       # DW_CHILDREN_yes
+	.byte	37                      # DW_AT_producer
+	.byte	14                      # DW_FORM_strp
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	2                       # Abbreviation Code
+	.byte	52                      # DW_TAG_variable
+	.byte	0                       # DW_CHILDREN_no
+	.byte	3                       # DW_AT_name
+	.byte	14                      # DW_FORM_strp
+	.byte	73                      # DW_AT_type
+	.byte	19                      # DW_FORM_ref4
+	.byte	2                       # DW_AT_location
+	.byte	24                      # DW_FORM_exprloc
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	3                       # Abbreviation Code
+	.byte	36                      # DW_TAG_base_type
+	.byte	0                       # DW_CHILDREN_no
+	.byte	3                       # DW_AT_name
+	.byte	14                      # DW_FORM_strp
+	.byte	62                      # DW_AT_encoding
+	.byte	11                      # DW_FORM_data1
+	.byte	11                      # DW_AT_byte_size
+	.byte	11                      # DW_FORM_data1
+	.byte	0                       # EOM(1)
+	.byte	0                       # EOM(2)
+	.byte	0                       # EOM(3)
+
+.macro generate_unit
+	.data
+A\@:
+	.long	47
+
+	.section	.debug_str,"MS", at progbits,1
+
+	.section	.debug_info,"", at progbits
+.Lcu_begin\@:
+	.long	.Ldebug_info_end\@-.Ldebug_info_start\@ # Length of Unit
+.Ldebug_info_start\@:
+	.short	4                       # DWARF version number
+	.long	.debug_abbrev           # Offset Into Abbrev. Section
+	.byte	8                       # Address Size (in bytes)
+	.byte	1                       # Abbrev [1] 0xb:0x30 DW_TAG_compile_unit
+	.long	.Linfo_string0          # DW_AT_producer
+	.byte	2                       # Abbrev [2] 0x1e:0x15 DW_TAG_variable
+	.long	.Lname                  # DW_AT_name
+	.long	.Ltype\@-.Lcu_begin\@   # DW_AT_type
+	.byte	9                       # DW_AT_location
+	.byte	3
+	.quad	A\@
+.Ltype\@:
+	.byte	3                       # Abbrev [3] 0x33:0x7 DW_TAG_base_type
+	.long	.Linfo_string4          # DW_AT_name
+	.byte	5                       # DW_AT_encoding
+	.byte	4                       # DW_AT_byte_size
+	.byte	0                       # End Of Children Mark
+.Ldebug_info_end\@:
+
+.endm
+
+.rept 256
+generate_unit
+.endr

Added: lldb/trunk/lit/SymbolFile/DWARF/split-dwarf-inlining.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/split-dwarf-inlining.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/split-dwarf-inlining.cpp (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/split-dwarf-inlining.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,8 @@
+// RUN: %clangxx -target x86_64-pc-linux -gsplit-dwarf -fsplit-dwarf-inlining \
+// RUN:   -c %s -o %t
+// RUN: %lldb %t -o "breakpoint set -n foo" -b | FileCheck %s
+
+// CHECK: Breakpoint 1: 2 locations
+
+__attribute__((always_inline)) int foo(int x) { return x; }
+int bar(int x) { return foo(x); }

Added: lldb/trunk/lit/SymbolFile/DWARF/split-dwarf-multiple-cu.ll
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/DWARF/split-dwarf-multiple-cu.ll?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/DWARF/split-dwarf-multiple-cu.ll (added)
+++ lldb/trunk/lit/SymbolFile/DWARF/split-dwarf-multiple-cu.ll Wed Oct  9 10:35:43 2019
@@ -0,0 +1,40 @@
+; Check handling of dwo files with multiple compile units. Right now this is not
+; supported, but it should not cause us to crash or misbehave either...
+
+; RUN: llc %s -filetype=obj -o %t.o --split-dwarf-file=%t.o
+; RUN: %lldb %t.o -o "image lookup -s x1 -v" -o "image lookup -s x2 -v" -b | FileCheck %s
+
+; CHECK: image lookup -s x1
+; CHECK: 1 symbols match 'x1'
+; CHECK-NOT: CompileUnit:
+; CHECK-NOT: Variable:
+
+; CHECK: image lookup -s x2
+; CHECK: 1 symbols match 'x2'
+; CHECK-NOT: CompileUnit:
+; CHECK-NOT: Variable:
+
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+
+ at x1 = dso_local global i32 42, align 4, !dbg !10
+ at x2 = dso_local global i32 47, align 4, !dbg !20
+
+!llvm.dbg.cu = !{!12, !22}
+!llvm.module.flags = !{!8, !9, !1}
+
+!10 = !DIGlobalVariableExpression(var: !11, expr: !DIExpression())
+!11 = distinct !DIGlobalVariable(name: "x1", scope: !12, type: !7)
+!12 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, emissionKind: FullDebug, globals: !15)
+!15 = !{!10}
+
+!20 = !DIGlobalVariableExpression(var: !21, expr: !DIExpression())
+!21 = distinct !DIGlobalVariable(name: "x2", scope: !22, type: !7)
+!22 = distinct !DICompileUnit(language: DW_LANG_C99, file: !3, emissionKind: FullDebug, globals: !25)
+!25 = !{!20}
+
+!3 = !DIFile(filename: "-", directory: "/tmp")
+!7 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
+!8 = !{i32 2, !"Dwarf Version", i32 4}
+!9 = !{i32 2, !"Debug Info Version", i32 3}
+!1 = !{i32 1, !"wchar_size", i32 4}

Added: lldb/trunk/lit/SymbolFile/Inputs/sizeless-symbol.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Inputs/sizeless-symbol.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Inputs/sizeless-symbol.s (added)
+++ lldb/trunk/lit/SymbolFile/Inputs/sizeless-symbol.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,8 @@
+        .text
+        .byte   0
+sizeless:
+sizeful:
+        .byte   0
+        .byte   0
+sizeend:
+        .size   sizeful, sizeend - sizeful

Added: lldb/trunk/lit/SymbolFile/Inputs/target-symbols-add-unwind.c
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/Inputs/target-symbols-add-unwind.c?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/Inputs/target-symbols-add-unwind.c (added)
+++ lldb/trunk/lit/SymbolFile/Inputs/target-symbols-add-unwind.c Wed Oct  9 10:35:43 2019
@@ -0,0 +1 @@
+int main() {}

Added: lldb/trunk/lit/SymbolFile/NativePDB/Inputs/ast-functions.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/Inputs/ast-functions.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/Inputs/ast-functions.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/Inputs/ast-functions.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,8 @@
+
+break set -n main
+break set -n static_fn
+break set -n varargs_fn
+
+target modules dump ast
+
+quit

Added: lldb/trunk/lit/SymbolFile/NativePDB/Inputs/ast-methods.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/Inputs/ast-methods.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/Inputs/ast-methods.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/Inputs/ast-methods.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,5 @@
+target variable s
+
+target modules dump ast
+
+quit

Added: lldb/trunk/lit/SymbolFile/NativePDB/Inputs/ast-types.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/Inputs/ast-types.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/Inputs/ast-types.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/Inputs/ast-types.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,25 @@
+target variable TC
+target variable TS
+target variable TU
+target variable TE
+
+target variable ABCInt
+target variable ABCFloat
+target variable ABCVoid
+
+target variable AC0
+target variable ACNeg1
+
+target variable AC1D
+target variable AC0D
+target variable ACNeg1D
+target variable AD
+target variable ADE
+
+target variable AnonInt
+target variable AnonABCVoid
+target variable AnonABCVoidD
+
+target modules dump ast
+
+quit

Added: lldb/trunk/lit/SymbolFile/NativePDB/Inputs/bitfields.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/Inputs/bitfields.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/Inputs/bitfields.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/Inputs/bitfields.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,5 @@
+settings set auto-one-line-summaries false
+
+target variable -T TheStruct
+
+target modules dump ast

Added: lldb/trunk/lit/SymbolFile/NativePDB/Inputs/break-by-function.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/Inputs/break-by-function.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/Inputs/break-by-function.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/Inputs/break-by-function.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,6 @@
+break set -n main
+break set -n OvlGlobalFn
+break set -n StaticFn
+break set -n DoesntExist
+break list
+quit

Added: lldb/trunk/lit/SymbolFile/NativePDB/Inputs/break-by-line.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/Inputs/break-by-line.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/Inputs/break-by-line.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/Inputs/break-by-line.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,3 @@
+break set -f break-by-line.cpp -l 14
+break list
+quit

Added: lldb/trunk/lit/SymbolFile/NativePDB/Inputs/disassembly.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/Inputs/disassembly.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/Inputs/disassembly.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/Inputs/disassembly.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,2 @@
+disassemble --flavor=intel -m -n main
+quit

Added: lldb/trunk/lit/SymbolFile/NativePDB/Inputs/function-types-builtins.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/Inputs/function-types-builtins.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/Inputs/function-types-builtins.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/Inputs/function-types-builtins.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,70 @@
+command alias dv target variable
+
+dv aa
+dv ab
+dv ac
+dv ad
+dv ae
+dv af
+dv ag
+dv ah
+dv ai
+dv aj
+dv ak
+dv al
+dv am
+dv an
+dv ao
+dv aq
+dv ar
+dv as
+dv at
+dv au
+dv av
+dv aw
+dv ax
+dv ay
+dv az
+dv aaa
+dv aab
+dv aac
+dv aad
+dv ra
+dv rb
+dv rc
+dv rd
+dv re
+dv rf
+dv rg
+dv rh
+dv ri
+dv rj
+dv rk
+dv rl
+dv rm
+dv rn
+dv ro
+dv rq
+dv rr
+dv rs
+dv rt
+dv ru
+dv rv
+dv rw
+dv rx
+dv ry
+dv rz
+dv raa
+dv rab
+dv rac
+dv rad
+dv ref
+dv ref2
+dv ref3
+dv binp
+dv binr
+dv null
+dv rae
+dv aae
+
+quit

Added: lldb/trunk/lit/SymbolFile/NativePDB/Inputs/function-types-calling-conv.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/Inputs/function-types-calling-conv.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/Inputs/function-types-calling-conv.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/Inputs/function-types-calling-conv.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,7 @@
+target variable sfn
+target variable ffn
+target variable tfn
+target variable cfn
+target variable vfn
+
+quit

Added: lldb/trunk/lit/SymbolFile/NativePDB/Inputs/function-types-classes.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/Inputs/function-types-classes.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/Inputs/function-types-classes.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/Inputs/function-types-classes.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,14 @@
+target variable a
+target variable b
+target variable c
+target variable d
+target variable e
+target variable f
+target variable g
+target variable h
+target variable i
+target variable incomplete
+
+target modules dump ast
+
+quit

Added: lldb/trunk/lit/SymbolFile/NativePDB/Inputs/globals-bss.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/Inputs/globals-bss.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/Inputs/globals-bss.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/Inputs/globals-bss.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,3 @@
+target variable GlobalVariable
+
+quit

Added: lldb/trunk/lit/SymbolFile/NativePDB/Inputs/globals-classes.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/Inputs/globals-classes.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/Inputs/globals-classes.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/Inputs/globals-classes.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,16 @@
+settings set auto-one-line-summaries false
+
+target variable -T ClassWithPaddingInstance
+target variable -T ClassNoPaddingInstance
+target variable -T DC
+target variable -T EBOC
+target variable -T PBC
+
+target variable -T UnnamedClassInstance
+
+target variable -T PointersInstance
+target variable -T ReferencesInstance
+
+target modules dump ast
+
+quit
\ No newline at end of file

Added: lldb/trunk/lit/SymbolFile/NativePDB/Inputs/globals-fundamental.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/Inputs/globals-fundamental.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/Inputs/globals-fundamental.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/Inputs/globals-fundamental.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,222 @@
+target variable BFalse
+target variable BTrue
+target variable CA
+target variable CZ
+target variable SCa
+target variable SCz
+target variable UC24
+target variable UC42
+target variable C16_24
+target variable C32_42
+target variable WC1
+target variable WCP
+target variable SMax
+target variable SMin
+target variable USMax
+target variable USMin
+target variable IMax
+target variable IMin
+target variable UIMax
+target variable UIMin
+target variable LMax
+target variable LMin
+target variable ULMax
+target variable ULMin
+target variable LLMax
+target variable LLMin
+target variable ULLMax
+target variable ULLMin
+target variable F
+target variable D
+
+target variable CBFalse
+target variable CBTrue
+target variable CCA
+target variable CCZ
+target variable CSCa
+target variable CSCz
+target variable CUC24
+target variable CUC42
+target variable CC16_24
+target variable CC32_42
+target variable CWC1
+target variable CWCP
+target variable CSMax
+target variable CSMin
+target variable CUSMax
+target variable CUSMin
+target variable CIMax
+target variable CIMin
+target variable CUIMax
+target variable CUIMin
+target variable CLMax
+target variable CLMin
+target variable CULMax
+target variable CULMin
+target variable CLLMax
+target variable CLLMin
+target variable CULLMax
+target variable CULLMin
+target variable CF
+target variable CD
+
+target variable ConstexprBFalse
+target variable ConstexprBTrue
+target variable ConstexprCA
+target variable ConstexprCZ
+target variable ConstexprSCa
+target variable ConstexprSCz
+target variable ConstexprUC24
+target variable ConstexprUC42
+target variable ConstexprC16_24
+target variable ConstexprC32_42
+target variable ConstexprWC1
+target variable ConstexprWCP
+target variable ConstexprSMax
+target variable ConstexprSMin
+target variable ConstexprUSMax
+target variable ConstexprUSMin
+target variable ConstexprIMax
+target variable ConstexprIMin
+target variable ConstexprUIMax
+target variable ConstexprUIMin
+target variable ConstexprLMax
+target variable ConstexprLMin
+target variable ConstexprULMax
+target variable ConstexprULMin
+target variable ConstexprLLMax
+target variable ConstexprLLMin
+target variable ConstexprULLMax
+target variable ConstexprULLMin
+target variable ConstexprF
+target variable ConstexprD
+
+target variable PBFalse
+target variable PBTrue
+target variable PCA
+target variable PCZ
+target variable PSCa
+target variable PSCz
+target variable PUC24
+target variable PUC42
+target variable PC16_24
+target variable PC32_42
+target variable PWC1
+target variable PWCP
+target variable PSMax
+target variable PSMin
+target variable PUSMax
+target variable PUSMin
+target variable PIMax
+target variable PIMin
+target variable PUIMax
+target variable PUIMin
+target variable PLMax
+target variable PLMin
+target variable PULMax
+target variable PULMin
+target variable PLLMax
+target variable PLLMin
+target variable PULLMax
+target variable PULLMin
+target variable PF
+target variable PD
+
+target variable CPBFalse
+target variable CPBTrue
+target variable CPCA
+target variable CPCZ
+target variable CPSCa
+target variable CPSCz
+target variable CPUC24
+target variable CPUC42
+target variable CPC16_24
+target variable CPC32_42
+target variable CPWC1
+target variable CPWCP
+target variable CPSMax
+target variable CPSMin
+target variable CPUSMax
+target variable CPUSMin
+target variable CPIMax
+target variable CPIMin
+target variable CPUIMax
+target variable CPUIMin
+target variable CPLMax
+target variable CPLMin
+target variable CPULMax
+target variable CPULMin
+target variable CPLLMax
+target variable CPLLMin
+target variable CPULLMax
+target variable CPULLMin
+target variable CPF
+target variable CPD
+
+target variable RBFalse
+target variable RBTrue
+target variable RCA
+target variable RCZ
+target variable RSCa
+target variable RSCz
+target variable RUC24
+target variable RUC42
+target variable RSMax
+target variable RSMin
+target variable RUSMax
+target variable RUSMin
+target variable RIMax
+target variable RIMin
+target variable RUIMax
+target variable RUIMin
+target variable RLMax
+target variable RLMin
+target variable RULMax
+target variable RULMin
+target variable RLLMax
+target variable RLLMin
+target variable RULLMax
+target variable RULLMin
+target variable RF
+target variable RD
+
+target variable CRBFalse
+target variable CRBTrue
+target variable CRCA
+target variable CRCZ
+target variable CRSCa
+target variable CRSCz
+target variable CRUC24
+target variable CRUC42
+target variable CRSMax
+target variable CRSMin
+target variable CRUSMax
+target variable CRUSMin
+target variable CRIMax
+target variable CRIMin
+target variable CRUIMax
+target variable CRUIMin
+target variable CRLMax
+target variable CRLMin
+target variable CRULMax
+target variable CRULMin
+target variable CRLLMax
+target variable CRLLMin
+target variable CRULLMax
+target variable CRULLMin
+target variable CRF
+target variable CRD
+
+target variable RC16_24
+target variable RC32_42
+target variable RWC1
+target variable RWCP
+target variable CRC16_24
+target variable CRC32_42
+target variable CRWC1
+target variable CRWCP
+
+target modules dump ast
+
+
+quit
\ No newline at end of file

Added: lldb/trunk/lit/SymbolFile/NativePDB/Inputs/local-variables.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/Inputs/local-variables.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/Inputs/local-variables.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/Inputs/local-variables.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,32 @@
+break set -n main
+run a b c d e f g
+p argc
+step
+p SomeLocal
+step
+p Param1
+p Param2
+step
+p Param1
+p Param2
+p Local1
+step
+p Param1
+p Param2
+p Local1
+p Local2
+step
+p Param1
+p Param2
+p Local1
+p Local2
+step
+p Param1
+p Param2
+p Local1
+p Local2
+continue
+
+target modules dump ast
+
+quit

Added: lldb/trunk/lit/SymbolFile/NativePDB/Inputs/nested-types.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/Inputs/nested-types.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/Inputs/nested-types.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/Inputs/nested-types.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,13 @@
+settings set auto-one-line-summaries false
+
+target variable -T GlobalA
+target variable -T GlobalB
+target variable -T GlobalC
+target variable -T GlobalD
+target variable -T GlobalE
+target variable -T GlobalF
+target variable -T GlobalG
+target variable -T GlobalH
+target variable -T GlobalEnum
+
+target modules dump ast

Added: lldb/trunk/lit/SymbolFile/NativePDB/Inputs/s_constant.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/Inputs/s_constant.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/Inputs/s_constant.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/Inputs/s_constant.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,25 @@
+target variable GlobalLUEA
+target variable GlobalLUEB
+target variable GlobalLUEC
+
+target variable GlobalLSEA
+target variable GlobalLSEB
+target variable GlobalLSEC
+
+target variable GlobalUEA
+target variable GlobalUEB
+target variable GlobalUEC
+
+target variable GlobalSEA
+target variable GlobalSEB
+target variable GlobalSEC
+
+target variable GlobalSUEA
+target variable GlobalSUEB
+target variable GlobalSUEC
+
+target variable GlobalSSEA
+target variable GlobalSSEB
+target variable GlobalSSEC
+
+quit

Added: lldb/trunk/lit/SymbolFile/NativePDB/Inputs/s_constant.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/Inputs/s_constant.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/Inputs/s_constant.s (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/Inputs/s_constant.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,971 @@
+	.text
+	.def	 @feat.00;
+	.scl	3;
+	.type	0;
+	.endef
+	.globl	@feat.00
+.set @feat.00, 0
+	.intel_syntax noprefix
+	.def	 main;
+	.scl	2;
+	.type	32;
+	.endef
+	.globl	main                    # -- Begin function main
+	.p2align	4, 0x90
+main:                                   # @main
+.Lfunc_begin0:
+	.cv_func_id 0
+	.cv_file	1 "D:\\src\\llvm-mono\\lldb\\lit\\SymbolFile\\NativePDB\\s_constant.cpp" "7F1DA683A9B72A1360C1FDEDD7550E06" 1
+	.cv_loc	0 1 79 0                # D:\src\llvm-mono\lldb\lit\SymbolFile\NativePDB\s_constant.cpp:79:0
+.seh_proc main
+# %bb.0:                                # %entry
+	sub	rsp, 24
+	.seh_stackalloc 24
+	.seh_endprologue
+	xor	eax, eax
+	mov	dword ptr [rsp + 20], 0
+	mov	qword ptr [rsp + 8], rdx
+	mov	dword ptr [rsp + 4], ecx
+.Ltmp0:
+	.cv_loc	0 1 80 0                # D:\src\llvm-mono\lldb\lit\SymbolFile\NativePDB\s_constant.cpp:80:0
+	add	rsp, 24
+	ret
+.Ltmp1:
+.Lfunc_end0:
+	.seh_handlerdata
+	.text
+	.seh_endproc
+                                        # -- End function
+	.section	.rdata,"dr"
+	.p2align	3               # @GlobalLUEA
+GlobalLUEA:
+	.quad	0                       # 0x0
+
+	.p2align	3               # @GlobalLUEB
+GlobalLUEB:
+	.quad	1000                    # 0x3e8
+
+	.p2align	3               # @GlobalLUEC
+GlobalLUEC:
+	.quad	-16                     # 0xfffffffffffffff0
+
+	.p2align	3               # @GlobalLSEA
+GlobalLSEA:
+	.quad	0                       # 0x0
+
+	.p2align	3               # @GlobalLSEB
+GlobalLSEB:
+	.quad	9223372036854775000     # 0x7ffffffffffffcd8
+
+	.p2align	3               # @GlobalLSEC
+GlobalLSEC:
+	.quad	-9223372036854775000    # 0x8000000000000328
+
+	.p2align	2               # @GlobalUEA
+GlobalUEA:
+	.long	0                       # 0x0
+
+	.p2align	2               # @GlobalUEB
+GlobalUEB:
+	.long	1000                    # 0x3e8
+
+	.p2align	2               # @GlobalUEC
+GlobalUEC:
+	.long	4294000000              # 0xfff13d80
+
+	.p2align	2               # @GlobalSEA
+GlobalSEA:
+	.long	0                       # 0x0
+
+	.p2align	2               # @GlobalSEB
+GlobalSEB:
+	.long	2147000000              # 0x7ff89ec0
+
+	.p2align	2               # @GlobalSEC
+GlobalSEC:
+	.long	2147967296              # 0x80076140
+
+GlobalSUEA:                             # @GlobalSUEA
+	.byte	0                       # 0x0
+
+GlobalSUEB:                             # @GlobalSUEB
+	.byte	100                     # 0x64
+
+GlobalSUEC:                             # @GlobalSUEC
+	.byte	200                     # 0xc8
+
+GlobalSSEA:                             # @GlobalSSEA
+	.byte	0                       # 0x0
+
+GlobalSSEB:                             # @GlobalSSEB
+	.byte	100                     # 0x64
+
+GlobalSSEC:                             # @GlobalSSEC
+	.byte	156                     # 0x9c
+
+	.section	.drectve,"yn"
+	.ascii	" /DEFAULTLIB:libcmt.lib"
+	.ascii	" /DEFAULTLIB:oldnames.lib"
+	.section	.debug$S,"dr"
+	.p2align	2
+	.long	4                       # Debug section magic
+	.long	241
+	.long	.Ltmp3-.Ltmp2           # Subsection size
+.Ltmp2:
+	.short	.Ltmp5-.Ltmp4           # Record length
+.Ltmp4:
+	.short	4412                    # Record kind: S_COMPILE3
+	.long	1                       # Flags and language
+	.short	208                     # CPUType
+	.short	8                       # Frontend version
+	.short	0
+	.short	0
+	.short	0
+	.short	8000                    # Backend version
+	.short	0
+	.short	0
+	.short	0
+	.asciz	"clang version 8.0.0 "  # Null-terminated compiler version string
+.Ltmp5:
+.Ltmp3:
+	.p2align	2
+	.long	241                     # Symbol subsection for main
+	.long	.Ltmp7-.Ltmp6           # Subsection size
+.Ltmp6:
+	.short	.Ltmp9-.Ltmp8           # Record length
+.Ltmp8:
+	.short	4423                    # Record kind: S_GPROC32_ID
+	.long	0                       # PtrParent
+	.long	0                       # PtrEnd
+	.long	0                       # PtrNext
+	.long	.Lfunc_end0-main        # Code size
+	.long	0                       # Offset after prologue
+	.long	0                       # Offset before epilogue
+	.long	4099                    # Function type index
+	.secrel32	main            # Function section relative address
+	.secidx	main                    # Function section index
+	.byte	0                       # Flags
+	.asciz	"main"                  # Function name
+.Ltmp9:
+	.short	.Ltmp11-.Ltmp10         # Record length
+.Ltmp10:
+	.short	4114                    # Record kind: S_FRAMEPROC
+	.long	24                      # FrameSize
+	.long	0                       # Padding
+	.long	0                       # Offset of padding
+	.long	0                       # Bytes of callee saved registers
+	.long	0                       # Exception handler offset
+	.short	0                       # Exception handler section
+	.long	81920                   # Flags (defines frame register)
+.Ltmp11:
+	.short	.Ltmp13-.Ltmp12         # Record length
+.Ltmp12:
+	.short	4414                    # Record kind: S_LOCAL
+	.long	116                     # TypeIndex
+	.short	1                       # Flags
+	.asciz	"argc"
+.Ltmp13:
+	.cv_def_range	 .Ltmp0 .Ltmp1, frame_ptr_rel, 4
+	.short	.Ltmp15-.Ltmp14         # Record length
+.Ltmp14:
+	.short	4414                    # Record kind: S_LOCAL
+	.long	4096                    # TypeIndex
+	.short	1                       # Flags
+	.asciz	"argv"
+.Ltmp15:
+	.cv_def_range	 .Ltmp0 .Ltmp1, frame_ptr_rel, 8
+	.short	2                       # Record length
+	.short	4431                    # Record kind: S_PROC_ID_END
+.Ltmp7:
+	.p2align	2
+	.cv_linetable	0, main, .Lfunc_end0
+	.long	241                     # Symbol subsection for globals
+	.long	.Ltmp17-.Ltmp16         # Subsection size
+.Ltmp16:
+	.short	.Ltmp19-.Ltmp18         # Record length
+.Ltmp18:
+	.short	4359                    # Record kind: S_CONSTANT
+	.long	4104                    # Type
+	.short  0					    # Value
+	.asciz	"GlobalLUEA"            # Name
+.Ltmp19:
+	.short	.Ltmp21-.Ltmp20         # Record length
+.Ltmp20:
+	.short	4359                    # Record kind: S_CONSTANT
+	.long	4104                    # Type
+	.short  1000				    # Value
+	.asciz	"GlobalLUEB"            # Name
+.Ltmp21:
+	.short	.Ltmp23-.Ltmp22         # Record length
+.Ltmp22:
+	.short	4359                    # Record kind: S_CONSTANT
+	.long	4104                    # Type
+	.byte   0x00, 0x80, 0xf0		# Value
+	.asciz	"GlobalLUEC"            # Name
+.Ltmp23:
+	.short	.Ltmp25-.Ltmp24         # Record length
+.Ltmp24:
+	.short	4359                    # Record kind: S_CONSTANT
+	.long	4108                    # Type
+	.byte   0x00, 0x00				# Value
+	.asciz	"GlobalLSEA"            # Name
+.Ltmp25:
+	.short	.Ltmp27-.Ltmp26         # Record length
+.Ltmp26:
+	.short	4359                    # Record kind: S_CONSTANT
+	.long	4108                    # Type
+	.byte   0x0A, 0x80, 0xD8, 0xFC  # Value
+	.byte   0xFF, 0xFF, 0xFF, 0xFF
+	.byte   0xFF, 0x7F
+	.asciz	"GlobalLSEB"            # Name
+.Ltmp27:
+	.short	.Ltmp29-.Ltmp28         # Record length
+.Ltmp28:
+	.short	4359                    # Record kind: S_CONSTANT
+	.long	4108                    # Type
+	.byte   0x09, 0x80, 0x28, 0x03  # Value
+	.byte   0x00, 0x00, 0x00, 0x00
+	.byte   0x00, 0x80
+	.asciz	"GlobalLSEC"            # Name
+.Ltmp29:
+	.short	.Ltmp31-.Ltmp30         # Record length
+.Ltmp30:
+	.short	4359                    # Record kind: S_CONSTANT
+	.long	4112                    # Type
+	.byte   0x00, 0x00              # Value
+	.asciz	"GlobalUEA"             # Name
+.Ltmp31:
+	.short	.Ltmp33-.Ltmp32         # Record length
+.Ltmp32:
+	.short	4359                    # Record kind: S_CONSTANT
+	.long	4112                    # Type
+	.byte   0xe8, 0x03              # Value
+	.asciz	"GlobalUEB"             # Name
+.Ltmp33:
+	.short	.Ltmp35-.Ltmp34         # Record length
+.Ltmp34:
+	.short	4359                    # Record kind: S_CONSTANT
+	.long	4112                    # Type
+	.byte   0x04, 0x80, 0x80, 0x3d  # Value
+	.byte   0xf1, 0xff
+	.asciz	"GlobalUEC"             # Name
+.Ltmp35:
+	.short	.Ltmp37-.Ltmp36         # Record length
+.Ltmp36:
+	.short	4359                    # Record kind: S_CONSTANT
+	.long	4116                    # Type
+	.byte   0x00, 0x00              # Value
+	.asciz	"GlobalSEA"             # Name
+.Ltmp37:
+	.short	.Ltmp39-.Ltmp38         # Record length
+.Ltmp38:
+	.short	4359                    # Record kind: S_CONSTANT
+	.long	4116                    # Type
+	.byte   0x04, 0x80, 0xc0, 0x9e  # Value
+	.byte   0xf8, 0x7f
+	.asciz	"GlobalSEB"             # Name
+.Ltmp39:
+	.short	.Ltmp41-.Ltmp40         # Record length
+.Ltmp40:
+	.short	4359                    # Record kind: S_CONSTANT
+	.long	4116                    # Type
+	.byte   0x03, 0x80, 0x40, 0x61  # Value
+	.byte   0x07, 0x80
+	.asciz	"GlobalSEC"             # Name
+.Ltmp41:
+	.short	.Ltmp43-.Ltmp42         # Record length
+.Ltmp42:
+	.short	4359                    # Record kind: S_CONSTANT
+	.long	4120                    # Type
+	.byte   0x00, 0x00              # Value
+	.asciz	"GlobalSUEA"            # Name
+.Ltmp43:
+	.short	.Ltmp45-.Ltmp44         # Record length
+.Ltmp44:
+	.short	4359                    # Record kind: S_CONSTANT
+	.long	4120                    # Type
+	.byte   0x64, 0x00              # Value
+	.asciz	"GlobalSUEB"            # Name
+.Ltmp45:
+	.short	.Ltmp47-.Ltmp46         # Record length
+.Ltmp46:
+	.short	4359                    # Record kind: S_CONSTANT
+	.long	4120                    # Type
+	.byte   0xc8, 0x00              # Value
+	.asciz	"GlobalSUEC"            # Name
+.Ltmp47:
+	.short	.Ltmp49-.Ltmp48         # Record length
+.Ltmp48:
+	.short	4359                    # Record kind: S_CONSTANT
+	.long	4124                    # Type
+	.byte   0x00, 0x00              # Value
+	.asciz	"GlobalSSEA"            # Name
+.Ltmp49:
+	.short	.Ltmp51-.Ltmp50         # Record length
+.Ltmp50:
+	.short	4359                    # Record kind: S_CONSTANT
+	.long	4124                    # Type
+	.byte   0x64, 0x00              # Value
+	.asciz	"GlobalSSEB"            # Name
+.Ltmp51:
+	.short	.Ltmp53-.Ltmp52         # Record length
+.Ltmp52:
+	.short	4359                    # Record kind: S_CONSTANT
+	.long	4124                    # Type
+	.byte   0x00, 0x80, 0x9c        # Value
+	.asciz	"GlobalSSEC"            # Name
+.Ltmp53:
+.Ltmp17:
+	.p2align	2
+	.cv_filechecksums               # File index to string table offset subsection
+	.cv_stringtable                 # String table
+	.long	241
+	.long	.Ltmp55-.Ltmp54         # Subsection size
+.Ltmp54:
+	.short	6                       # Record length
+	.short	4428                    # Record kind: S_BUILDINFO
+	.long	4127                    # LF_BUILDINFO index
+.Ltmp55:
+	.p2align	2
+	.section	.debug$T,"dr"
+	.p2align	2
+	.long	4                       # Debug section magic
+	# Pointer (0x1000) {
+	#   TypeLeafKind: LF_POINTER (0x1002)
+	#   PointeeType: char* (0x670)
+	#   PointerAttributes: 0x1000C
+	#   PtrType: Near64 (0xC)
+	#   PtrMode: Pointer (0x0)
+	#   IsFlat: 0
+	#   IsConst: 0
+	#   IsVolatile: 0
+	#   IsUnaligned: 0
+	#   IsRestrict: 0
+	#   SizeOf: 8
+	# }
+	.byte	0x0a, 0x00, 0x02, 0x10
+	.byte	0x70, 0x06, 0x00, 0x00
+	.byte	0x0c, 0x00, 0x01, 0x00
+	# ArgList (0x1001) {
+	#   TypeLeafKind: LF_ARGLIST (0x1201)
+	#   NumArgs: 2
+	#   Arguments [
+	#     ArgType: int (0x74)
+	#     ArgType: char** (0x1000)
+	#   ]
+	# }
+	.byte	0x0e, 0x00, 0x01, 0x12
+	.byte	0x02, 0x00, 0x00, 0x00
+	.byte	0x74, 0x00, 0x00, 0x00
+	.byte	0x00, 0x10, 0x00, 0x00
+	# Procedure (0x1002) {
+	#   TypeLeafKind: LF_PROCEDURE (0x1008)
+	#   ReturnType: int (0x74)
+	#   CallingConvention: NearC (0x0)
+	#   FunctionOptions [ (0x0)
+	#   ]
+	#   NumParameters: 2
+	#   ArgListType: (int, char**) (0x1001)
+	# }
+	.byte	0x0e, 0x00, 0x08, 0x10
+	.byte	0x74, 0x00, 0x00, 0x00
+	.byte	0x00, 0x00, 0x02, 0x00
+	.byte	0x01, 0x10, 0x00, 0x00
+	# FuncId (0x1003) {
+	#   TypeLeafKind: LF_FUNC_ID (0x1601)
+	#   ParentScope: 0x0
+	#   FunctionType: int (int, char**) (0x1002)
+	#   Name: main
+	# }
+	.byte	0x12, 0x00, 0x01, 0x16
+	.byte	0x00, 0x00, 0x00, 0x00
+	.byte	0x02, 0x10, 0x00, 0x00
+	.byte	0x6d, 0x61, 0x69, 0x6e
+	.byte	0x00, 0xf3, 0xf2, 0xf1
+	# FieldList (0x1004) {
+	#   TypeLeafKind: LF_FIELDLIST (0x1203)
+	#   Enumerator {
+	#     TypeLeafKind: LF_ENUMERATE (0x1502)
+	#     AccessSpecifier: Public (0x3)
+	#     EnumValue: 0
+	#     Name: LUE_A
+	#   }
+	#   Enumerator {
+	#     TypeLeafKind: LF_ENUMERATE (0x1502)
+	#     AccessSpecifier: Public (0x3)
+	#     EnumValue: 1000
+	#     Name: LUE_B
+	#   }
+	#   Enumerator {
+	#     TypeLeafKind: LF_ENUMERATE (0x1502)
+	#     AccessSpecifier: Public (0x3)
+	#     EnumValue: 18446744073709551600
+	#     Name: LUE_C
+	#   }
+	# }
+	.byte	0x2e, 0x00, 0x03, 0x12
+	.byte	0x02, 0x15, 0x03, 0x00
+	.byte	0x00, 0x00, 0x4c, 0x55
+	.byte	0x45, 0x5f, 0x41, 0x00
+	.byte	0x02, 0x15, 0x03, 0x00
+	.byte	0xe8, 0x03, 0x4c, 0x55
+	.byte	0x45, 0x5f, 0x42, 0x00
+	.byte	0x02, 0x15, 0x03, 0x00
+	.byte	0x0a, 0x80, 0xf0, 0xff
+	.byte	0xff, 0xff, 0xff, 0xff
+	.byte	0xff, 0xff, 0x4c, 0x55
+	.byte	0x45, 0x5f, 0x43, 0x00
+	# Enum (0x1005) {
+	#   TypeLeafKind: LF_ENUM (0x1507)
+	#   NumEnumerators: 3
+	#   Properties [ (0x200)
+	#     HasUniqueName (0x200)
+	#   ]
+	#   UnderlyingType: unsigned __int64 (0x23)
+	#   FieldListType: <field list> (0x1004)
+	#   Name: A::B::C::LargeUnsignedEnum
+	#   LinkageName: .?AW4LargeUnsignedEnum at C@B at A@@
+	# }
+	.byte	0x4a, 0x00, 0x07, 0x15
+	.byte	0x03, 0x00, 0x00, 0x02
+	.byte	0x23, 0x00, 0x00, 0x00
+	.byte	0x04, 0x10, 0x00, 0x00
+	.byte	0x41, 0x3a, 0x3a, 0x42
+	.byte	0x3a, 0x3a, 0x43, 0x3a
+	.byte	0x3a, 0x4c, 0x61, 0x72
+	.byte	0x67, 0x65, 0x55, 0x6e
+	.byte	0x73, 0x69, 0x67, 0x6e
+	.byte	0x65, 0x64, 0x45, 0x6e
+	.byte	0x75, 0x6d, 0x00, 0x2e
+	.byte	0x3f, 0x41, 0x57, 0x34
+	.byte	0x4c, 0x61, 0x72, 0x67
+	.byte	0x65, 0x55, 0x6e, 0x73
+	.byte	0x69, 0x67, 0x6e, 0x65
+	.byte	0x64, 0x45, 0x6e, 0x75
+	.byte	0x6d, 0x40, 0x43, 0x40
+	.byte	0x42, 0x40, 0x41, 0x40
+	.byte	0x40, 0x00, 0xf2, 0xf1
+	# StringId (0x1006) {
+	#   TypeLeafKind: LF_STRING_ID (0x1605)
+	#   Id: 0x0
+	#   StringData: D:\src\llvm-mono\lldb\lit\SymbolFile\NativePDB\s_constant.cpp
+	# }
+	.byte	0x46, 0x00, 0x05, 0x16
+	.byte	0x00, 0x00, 0x00, 0x00
+	.byte	0x44, 0x3a, 0x5c, 0x73
+	.byte	0x72, 0x63, 0x5c, 0x6c
+	.byte	0x6c, 0x76, 0x6d, 0x2d
+	.byte	0x6d, 0x6f, 0x6e, 0x6f
+	.byte	0x5c, 0x6c, 0x6c, 0x64
+	.byte	0x62, 0x5c, 0x6c, 0x69
+	.byte	0x74, 0x5c, 0x53, 0x79
+	.byte	0x6d, 0x62, 0x6f, 0x6c
+	.byte	0x46, 0x69, 0x6c, 0x65
+	.byte	0x5c, 0x4e, 0x61, 0x74
+	.byte	0x69, 0x76, 0x65, 0x50
+	.byte	0x44, 0x42, 0x5c, 0x73
+	.byte	0x5f, 0x63, 0x6f, 0x6e
+	.byte	0x73, 0x74, 0x61, 0x6e
+	.byte	0x74, 0x2e, 0x63, 0x70
+	.byte	0x70, 0x00, 0xf2, 0xf1
+	# UdtSourceLine (0x1007) {
+	#   TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
+	#   UDT: A::B::C::LargeUnsignedEnum (0x1005)
+	#   SourceFile: D:\src\llvm-mono\lldb\lit\SymbolFile\NativePDB\s_constant.cpp (0x1006)
+	#   LineNumber: 14
+	# }
+	.byte	0x0e, 0x00, 0x06, 0x16
+	.byte	0x05, 0x10, 0x00, 0x00
+	.byte	0x06, 0x10, 0x00, 0x00
+	.byte	0x0e, 0x00, 0x00, 0x00
+	# Modifier (0x1008) {
+	#   TypeLeafKind: LF_MODIFIER (0x1001)
+	#   ModifiedType: A::B::C::LargeUnsignedEnum (0x1005)
+	#   Modifiers [ (0x1)
+	#     Const (0x1)
+	#   ]
+	# }
+	.byte	0x0a, 0x00, 0x01, 0x10
+	.byte	0x05, 0x10, 0x00, 0x00
+	.byte	0x01, 0x00, 0xf2, 0xf1
+	# FieldList (0x1009) {
+	#   TypeLeafKind: LF_FIELDLIST (0x1203)
+	#   Enumerator {
+	#     TypeLeafKind: LF_ENUMERATE (0x1502)
+	#     AccessSpecifier: Public (0x3)
+	#     EnumValue: 0
+	#     Name: LSE_A
+	#   }
+	#   Enumerator {
+	#     TypeLeafKind: LF_ENUMERATE (0x1502)
+	#     AccessSpecifier: Public (0x3)
+	#     EnumValue: 9223372036854775000
+	#     Name: LSE_B
+	#   }
+	#   Enumerator {
+	#     TypeLeafKind: LF_ENUMERATE (0x1502)
+	#     AccessSpecifier: Public (0x3)
+	#     EnumValue: 9223372036854776616
+	#     Name: LSE_C
+	#   }
+	# }
+	.byte	0x36, 0x00, 0x03, 0x12
+	.byte	0x02, 0x15, 0x03, 0x00
+	.byte	0x00, 0x00, 0x4c, 0x53
+	.byte	0x45, 0x5f, 0x41, 0x00
+	.byte	0x02, 0x15, 0x03, 0x00
+	.byte	0x0a, 0x80, 0xd8, 0xfc
+	.byte	0xff, 0xff, 0xff, 0xff
+	.byte	0xff, 0x7f, 0x4c, 0x53
+	.byte	0x45, 0x5f, 0x42, 0x00
+	.byte	0x02, 0x15, 0x03, 0x00
+	.byte	0x0a, 0x80, 0x28, 0x03
+	.byte	0x00, 0x00, 0x00, 0x00
+	.byte	0x00, 0x80, 0x4c, 0x53
+	.byte	0x45, 0x5f, 0x43, 0x00
+	# Enum (0x100A) {
+	#   TypeLeafKind: LF_ENUM (0x1507)
+	#   NumEnumerators: 3
+	#   Properties [ (0x200)
+	#     HasUniqueName (0x200)
+	#   ]
+	#   UnderlyingType: __int64 (0x13)
+	#   FieldListType: <field list> (0x1009)
+	#   Name: A::B::C::LargeSignedEnum
+	#   LinkageName: .?AW4LargeSignedEnum at C@B at A@@
+	# }
+	.byte	0x46, 0x00, 0x07, 0x15
+	.byte	0x03, 0x00, 0x00, 0x02
+	.byte	0x13, 0x00, 0x00, 0x00
+	.byte	0x09, 0x10, 0x00, 0x00
+	.byte	0x41, 0x3a, 0x3a, 0x42
+	.byte	0x3a, 0x3a, 0x43, 0x3a
+	.byte	0x3a, 0x4c, 0x61, 0x72
+	.byte	0x67, 0x65, 0x53, 0x69
+	.byte	0x67, 0x6e, 0x65, 0x64
+	.byte	0x45, 0x6e, 0x75, 0x6d
+	.byte	0x00, 0x2e, 0x3f, 0x41
+	.byte	0x57, 0x34, 0x4c, 0x61
+	.byte	0x72, 0x67, 0x65, 0x53
+	.byte	0x69, 0x67, 0x6e, 0x65
+	.byte	0x64, 0x45, 0x6e, 0x75
+	.byte	0x6d, 0x40, 0x43, 0x40
+	.byte	0x42, 0x40, 0x41, 0x40
+	.byte	0x40, 0x00, 0xf2, 0xf1
+	# UdtSourceLine (0x100B) {
+	#   TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
+	#   UDT: A::B::C::LargeSignedEnum (0x100A)
+	#   SourceFile: D:\src\llvm-mono\lldb\lit\SymbolFile\NativePDB\s_constant.cpp (0x1006)
+	#   LineNumber: 20
+	# }
+	.byte	0x0e, 0x00, 0x06, 0x16
+	.byte	0x0a, 0x10, 0x00, 0x00
+	.byte	0x06, 0x10, 0x00, 0x00
+	.byte	0x14, 0x00, 0x00, 0x00
+	# Modifier (0x100C) {
+	#   TypeLeafKind: LF_MODIFIER (0x1001)
+	#   ModifiedType: A::B::C::LargeSignedEnum (0x100A)
+	#   Modifiers [ (0x1)
+	#     Const (0x1)
+	#   ]
+	# }
+	.byte	0x0a, 0x00, 0x01, 0x10
+	.byte	0x0a, 0x10, 0x00, 0x00
+	.byte	0x01, 0x00, 0xf2, 0xf1
+	# FieldList (0x100D) {
+	#   TypeLeafKind: LF_FIELDLIST (0x1203)
+	#   Enumerator {
+	#     TypeLeafKind: LF_ENUMERATE (0x1502)
+	#     AccessSpecifier: Public (0x3)
+	#     EnumValue: 0
+	#     Name: UE_A
+	#   }
+	#   Enumerator {
+	#     TypeLeafKind: LF_ENUMERATE (0x1502)
+	#     AccessSpecifier: Public (0x3)
+	#     EnumValue: 1000
+	#     Name: UE_B
+	#   }
+	#   Enumerator {
+	#     TypeLeafKind: LF_ENUMERATE (0x1502)
+	#     AccessSpecifier: Public (0x3)
+	#     EnumValue: 4294000000
+	#     Name: UE_C
+	#   }
+	# }
+	.byte	0x2a, 0x00, 0x03, 0x12
+	.byte	0x02, 0x15, 0x03, 0x00
+	.byte	0x00, 0x00, 0x55, 0x45
+	.byte	0x5f, 0x41, 0x00, 0xf1
+	.byte	0x02, 0x15, 0x03, 0x00
+	.byte	0xe8, 0x03, 0x55, 0x45
+	.byte	0x5f, 0x42, 0x00, 0xf1
+	.byte	0x02, 0x15, 0x03, 0x00
+	.byte	0x04, 0x80, 0x80, 0x3d
+	.byte	0xf1, 0xff, 0x55, 0x45
+	.byte	0x5f, 0x43, 0x00, 0xf1
+	# Enum (0x100E) {
+	#   TypeLeafKind: LF_ENUM (0x1507)
+	#   NumEnumerators: 3
+	#   Properties [ (0x200)
+	#     HasUniqueName (0x200)
+	#   ]
+	#   UnderlyingType: unsigned (0x75)
+	#   FieldListType: <field list> (0x100D)
+	#   Name: A::B::C::UnsignedEnum
+	#   LinkageName: .?AW4UnsignedEnum at C@B at A@@
+	# }
+	.byte	0x3e, 0x00, 0x07, 0x15
+	.byte	0x03, 0x00, 0x00, 0x02
+	.byte	0x75, 0x00, 0x00, 0x00
+	.byte	0x0d, 0x10, 0x00, 0x00
+	.byte	0x41, 0x3a, 0x3a, 0x42
+	.byte	0x3a, 0x3a, 0x43, 0x3a
+	.byte	0x3a, 0x55, 0x6e, 0x73
+	.byte	0x69, 0x67, 0x6e, 0x65
+	.byte	0x64, 0x45, 0x6e, 0x75
+	.byte	0x6d, 0x00, 0x2e, 0x3f
+	.byte	0x41, 0x57, 0x34, 0x55
+	.byte	0x6e, 0x73, 0x69, 0x67
+	.byte	0x6e, 0x65, 0x64, 0x45
+	.byte	0x6e, 0x75, 0x6d, 0x40
+	.byte	0x43, 0x40, 0x42, 0x40
+	.byte	0x41, 0x40, 0x40, 0x00
+	# UdtSourceLine (0x100F) {
+	#   TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
+	#   UDT: A::B::C::UnsignedEnum (0x100E)
+	#   SourceFile: D:\src\llvm-mono\lldb\lit\SymbolFile\NativePDB\s_constant.cpp (0x1006)
+	#   LineNumber: 26
+	# }
+	.byte	0x0e, 0x00, 0x06, 0x16
+	.byte	0x0e, 0x10, 0x00, 0x00
+	.byte	0x06, 0x10, 0x00, 0x00
+	.byte	0x1a, 0x00, 0x00, 0x00
+	# Modifier (0x1010) {
+	#   TypeLeafKind: LF_MODIFIER (0x1001)
+	#   ModifiedType: A::B::C::UnsignedEnum (0x100E)
+	#   Modifiers [ (0x1)
+	#     Const (0x1)
+	#   ]
+	# }
+	.byte	0x0a, 0x00, 0x01, 0x10
+	.byte	0x0e, 0x10, 0x00, 0x00
+	.byte	0x01, 0x00, 0xf2, 0xf1
+	# FieldList (0x1011) {
+	#   TypeLeafKind: LF_FIELDLIST (0x1203)
+	#   Enumerator {
+	#     TypeLeafKind: LF_ENUMERATE (0x1502)
+	#     AccessSpecifier: Public (0x3)
+	#     EnumValue: 0
+	#     Name: SE_A
+	#   }
+	#   Enumerator {
+	#     TypeLeafKind: LF_ENUMERATE (0x1502)
+	#     AccessSpecifier: Public (0x3)
+	#     EnumValue: 2147000000
+	#     Name: SE_B
+	#   }
+	#   Enumerator {
+	#     TypeLeafKind: LF_ENUMERATE (0x1502)
+	#     AccessSpecifier: Public (0x3)
+	#     EnumValue: 18446744071562551616
+	#     Name: SE_C
+	#   }
+	# }
+	.byte	0x32, 0x00, 0x03, 0x12
+	.byte	0x02, 0x15, 0x03, 0x00
+	.byte	0x00, 0x00, 0x53, 0x45
+	.byte	0x5f, 0x41, 0x00, 0xf1
+	.byte	0x02, 0x15, 0x03, 0x00
+	.byte	0x04, 0x80, 0xc0, 0x9e
+	.byte	0xf8, 0x7f, 0x53, 0x45
+	.byte	0x5f, 0x42, 0x00, 0xf1
+	.byte	0x02, 0x15, 0x03, 0x00
+	.byte	0x0a, 0x80, 0x40, 0x61
+	.byte	0x07, 0x80, 0xff, 0xff
+	.byte	0xff, 0xff, 0x53, 0x45
+	.byte	0x5f, 0x43, 0x00, 0xf1
+	# Enum (0x1012) {
+	#   TypeLeafKind: LF_ENUM (0x1507)
+	#   NumEnumerators: 3
+	#   Properties [ (0x200)
+	#     HasUniqueName (0x200)
+	#   ]
+	#   UnderlyingType: int (0x74)
+	#   FieldListType: <field list> (0x1011)
+	#   Name: A::B::C::SignedEnum
+	#   LinkageName: .?AW4SignedEnum at C@B at A@@
+	# }
+	.byte	0x3a, 0x00, 0x07, 0x15
+	.byte	0x03, 0x00, 0x00, 0x02
+	.byte	0x74, 0x00, 0x00, 0x00
+	.byte	0x11, 0x10, 0x00, 0x00
+	.byte	0x41, 0x3a, 0x3a, 0x42
+	.byte	0x3a, 0x3a, 0x43, 0x3a
+	.byte	0x3a, 0x53, 0x69, 0x67
+	.byte	0x6e, 0x65, 0x64, 0x45
+	.byte	0x6e, 0x75, 0x6d, 0x00
+	.byte	0x2e, 0x3f, 0x41, 0x57
+	.byte	0x34, 0x53, 0x69, 0x67
+	.byte	0x6e, 0x65, 0x64, 0x45
+	.byte	0x6e, 0x75, 0x6d, 0x40
+	.byte	0x43, 0x40, 0x42, 0x40
+	.byte	0x41, 0x40, 0x40, 0x00
+	# UdtSourceLine (0x1013) {
+	#   TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
+	#   UDT: A::B::C::SignedEnum (0x1012)
+	#   SourceFile: D:\src\llvm-mono\lldb\lit\SymbolFile\NativePDB\s_constant.cpp (0x1006)
+	#   LineNumber: 32
+	# }
+	.byte	0x0e, 0x00, 0x06, 0x16
+	.byte	0x12, 0x10, 0x00, 0x00
+	.byte	0x06, 0x10, 0x00, 0x00
+	.byte	0x20, 0x00, 0x00, 0x00
+	# Modifier (0x1014) {
+	#   TypeLeafKind: LF_MODIFIER (0x1001)
+	#   ModifiedType: A::B::C::SignedEnum (0x1012)
+	#   Modifiers [ (0x1)
+	#     Const (0x1)
+	#   ]
+	# }
+	.byte	0x0a, 0x00, 0x01, 0x10
+	.byte	0x12, 0x10, 0x00, 0x00
+	.byte	0x01, 0x00, 0xf2, 0xf1
+	# FieldList (0x1015) {
+	#   TypeLeafKind: LF_FIELDLIST (0x1203)
+	#   Enumerator {
+	#     TypeLeafKind: LF_ENUMERATE (0x1502)
+	#     AccessSpecifier: Public (0x3)
+	#     EnumValue: 0
+	#     Name: SUE_A
+	#   }
+	#   Enumerator {
+	#     TypeLeafKind: LF_ENUMERATE (0x1502)
+	#     AccessSpecifier: Public (0x3)
+	#     EnumValue: 100
+	#     Name: SUE_B
+	#   }
+	#   Enumerator {
+	#     TypeLeafKind: LF_ENUMERATE (0x1502)
+	#     AccessSpecifier: Public (0x3)
+	#     EnumValue: 200
+	#     Name: SUE_C
+	#   }
+	# }
+	.byte	0x26, 0x00, 0x03, 0x12
+	.byte	0x02, 0x15, 0x03, 0x00
+	.byte	0x00, 0x00, 0x53, 0x55
+	.byte	0x45, 0x5f, 0x41, 0x00
+	.byte	0x02, 0x15, 0x03, 0x00
+	.byte	0x64, 0x00, 0x53, 0x55
+	.byte	0x45, 0x5f, 0x42, 0x00
+	.byte	0x02, 0x15, 0x03, 0x00
+	.byte	0xc8, 0x00, 0x53, 0x55
+	.byte	0x45, 0x5f, 0x43, 0x00
+	# Enum (0x1016) {
+	#   TypeLeafKind: LF_ENUM (0x1507)
+	#   NumEnumerators: 3
+	#   Properties [ (0x200)
+	#     HasUniqueName (0x200)
+	#   ]
+	#   UnderlyingType: unsigned char (0x20)
+	#   FieldListType: <field list> (0x1015)
+	#   Name: A::B::C::SmallUnsignedEnum
+	#   LinkageName: .?AW4SmallUnsignedEnum at C@B at A@@
+	# }
+	.byte	0x4a, 0x00, 0x07, 0x15
+	.byte	0x03, 0x00, 0x00, 0x02
+	.byte	0x20, 0x00, 0x00, 0x00
+	.byte	0x15, 0x10, 0x00, 0x00
+	.byte	0x41, 0x3a, 0x3a, 0x42
+	.byte	0x3a, 0x3a, 0x43, 0x3a
+	.byte	0x3a, 0x53, 0x6d, 0x61
+	.byte	0x6c, 0x6c, 0x55, 0x6e
+	.byte	0x73, 0x69, 0x67, 0x6e
+	.byte	0x65, 0x64, 0x45, 0x6e
+	.byte	0x75, 0x6d, 0x00, 0x2e
+	.byte	0x3f, 0x41, 0x57, 0x34
+	.byte	0x53, 0x6d, 0x61, 0x6c
+	.byte	0x6c, 0x55, 0x6e, 0x73
+	.byte	0x69, 0x67, 0x6e, 0x65
+	.byte	0x64, 0x45, 0x6e, 0x75
+	.byte	0x6d, 0x40, 0x43, 0x40
+	.byte	0x42, 0x40, 0x41, 0x40
+	.byte	0x40, 0x00, 0xf2, 0xf1
+	# UdtSourceLine (0x1017) {
+	#   TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
+	#   UDT: A::B::C::SmallUnsignedEnum (0x1016)
+	#   SourceFile: D:\src\llvm-mono\lldb\lit\SymbolFile\NativePDB\s_constant.cpp (0x1006)
+	#   LineNumber: 38
+	# }
+	.byte	0x0e, 0x00, 0x06, 0x16
+	.byte	0x16, 0x10, 0x00, 0x00
+	.byte	0x06, 0x10, 0x00, 0x00
+	.byte	0x26, 0x00, 0x00, 0x00
+	# Modifier (0x1018) {
+	#   TypeLeafKind: LF_MODIFIER (0x1001)
+	#   ModifiedType: A::B::C::SmallUnsignedEnum (0x1016)
+	#   Modifiers [ (0x1)
+	#     Const (0x1)
+	#   ]
+	# }
+	.byte	0x0a, 0x00, 0x01, 0x10
+	.byte	0x16, 0x10, 0x00, 0x00
+	.byte	0x01, 0x00, 0xf2, 0xf1
+	# FieldList (0x1019) {
+	#   TypeLeafKind: LF_FIELDLIST (0x1203)
+	#   Enumerator {
+	#     TypeLeafKind: LF_ENUMERATE (0x1502)
+	#     AccessSpecifier: Public (0x3)
+	#     EnumValue: 0
+	#     Name: SSE_A
+	#   }
+	#   Enumerator {
+	#     TypeLeafKind: LF_ENUMERATE (0x1502)
+	#     AccessSpecifier: Public (0x3)
+	#     EnumValue: 100
+	#     Name: SSE_B
+	#   }
+	#   Enumerator {
+	#     TypeLeafKind: LF_ENUMERATE (0x1502)
+	#     AccessSpecifier: Public (0x3)
+	#     EnumValue: 18446744073709551516
+	#     Name: SSE_C
+	#   }
+	# }
+	.byte	0x2e, 0x00, 0x03, 0x12
+	.byte	0x02, 0x15, 0x03, 0x00
+	.byte	0x00, 0x00, 0x53, 0x53
+	.byte	0x45, 0x5f, 0x41, 0x00
+	.byte	0x02, 0x15, 0x03, 0x00
+	.byte	0x64, 0x00, 0x53, 0x53
+	.byte	0x45, 0x5f, 0x42, 0x00
+	.byte	0x02, 0x15, 0x03, 0x00
+	.byte	0x0a, 0x80, 0x9c, 0xff
+	.byte	0xff, 0xff, 0xff, 0xff
+	.byte	0xff, 0xff, 0x53, 0x53
+	.byte	0x45, 0x5f, 0x43, 0x00
+	# Enum (0x101A) {
+	#   TypeLeafKind: LF_ENUM (0x1507)
+	#   NumEnumerators: 3
+	#   Properties [ (0x200)
+	#     HasUniqueName (0x200)
+	#   ]
+	#   UnderlyingType: char (0x70)
+	#   FieldListType: <field list> (0x1019)
+	#   Name: A::B::C::SmallSignedEnum
+	#   LinkageName: .?AW4SmallSignedEnum at C@B at A@@
+	# }
+	.byte	0x46, 0x00, 0x07, 0x15
+	.byte	0x03, 0x00, 0x00, 0x02
+	.byte	0x70, 0x00, 0x00, 0x00
+	.byte	0x19, 0x10, 0x00, 0x00
+	.byte	0x41, 0x3a, 0x3a, 0x42
+	.byte	0x3a, 0x3a, 0x43, 0x3a
+	.byte	0x3a, 0x53, 0x6d, 0x61
+	.byte	0x6c, 0x6c, 0x53, 0x69
+	.byte	0x67, 0x6e, 0x65, 0x64
+	.byte	0x45, 0x6e, 0x75, 0x6d
+	.byte	0x00, 0x2e, 0x3f, 0x41
+	.byte	0x57, 0x34, 0x53, 0x6d
+	.byte	0x61, 0x6c, 0x6c, 0x53
+	.byte	0x69, 0x67, 0x6e, 0x65
+	.byte	0x64, 0x45, 0x6e, 0x75
+	.byte	0x6d, 0x40, 0x43, 0x40
+	.byte	0x42, 0x40, 0x41, 0x40
+	.byte	0x40, 0x00, 0xf2, 0xf1
+	# UdtSourceLine (0x101B) {
+	#   TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
+	#   UDT: A::B::C::SmallSignedEnum (0x101A)
+	#   SourceFile: D:\src\llvm-mono\lldb\lit\SymbolFile\NativePDB\s_constant.cpp (0x1006)
+	#   LineNumber: 44
+	# }
+	.byte	0x0e, 0x00, 0x06, 0x16
+	.byte	0x1a, 0x10, 0x00, 0x00
+	.byte	0x06, 0x10, 0x00, 0x00
+	.byte	0x2c, 0x00, 0x00, 0x00
+	# Modifier (0x101C) {
+	#   TypeLeafKind: LF_MODIFIER (0x1001)
+	#   ModifiedType: A::B::C::SmallSignedEnum (0x101A)
+	#   Modifiers [ (0x1)
+	#     Const (0x1)
+	#   ]
+	# }
+	.byte	0x0a, 0x00, 0x01, 0x10
+	.byte	0x1a, 0x10, 0x00, 0x00
+	.byte	0x01, 0x00, 0xf2, 0xf1
+	# StringId (0x101D) {
+	#   TypeLeafKind: LF_STRING_ID (0x1605)
+	#   Id: 0x0
+	#   StringData: D:\\src\\llvmbuild\\ninja-x64
+	# }
+	.byte	0x26, 0x00, 0x05, 0x16
+	.byte	0x00, 0x00, 0x00, 0x00
+	.byte	0x44, 0x3a, 0x5c, 0x5c
+	.byte	0x73, 0x72, 0x63, 0x5c
+	.byte	0x5c, 0x6c, 0x6c, 0x76
+	.byte	0x6d, 0x62, 0x75, 0x69
+	.byte	0x6c, 0x64, 0x5c, 0x5c
+	.byte	0x6e, 0x69, 0x6e, 0x6a
+	.byte	0x61, 0x2d, 0x78, 0x36
+	.byte	0x34, 0x00, 0xf2, 0xf1
+	# StringId (0x101E) {
+	#   TypeLeafKind: LF_STRING_ID (0x1605)
+	#   Id: 0x0
+	#   StringData: D:\src\llvm-mono\lldb\lit\SymbolFile\NativePDB\variable.cpp
+	# }
+	.byte	0x42, 0x00, 0x05, 0x16
+	.byte	0x00, 0x00, 0x00, 0x00
+	.byte	0x44, 0x3a, 0x5c, 0x73
+	.byte	0x72, 0x63, 0x5c, 0x6c
+	.byte	0x6c, 0x76, 0x6d, 0x2d
+	.byte	0x6d, 0x6f, 0x6e, 0x6f
+	.byte	0x5c, 0x6c, 0x6c, 0x64
+	.byte	0x62, 0x5c, 0x6c, 0x69
+	.byte	0x74, 0x5c, 0x53, 0x79
+	.byte	0x6d, 0x62, 0x6f, 0x6c
+	.byte	0x46, 0x69, 0x6c, 0x65
+	.byte	0x5c, 0x4e, 0x61, 0x74
+	.byte	0x69, 0x76, 0x65, 0x50
+	.byte	0x44, 0x42, 0x5c, 0x76
+	.byte	0x61, 0x72, 0x69, 0x61
+	.byte	0x62, 0x6c, 0x65, 0x2e
+	.byte	0x63, 0x70, 0x70, 0x00
+	# BuildInfo (0x101F) {
+	#   TypeLeafKind: LF_BUILDINFO (0x1603)
+	#   NumArgs: 5
+	#   Arguments [
+	#     ArgType: D:\\src\\llvmbuild\\ninja-x64 (0x101D)
+	#     ArgType: 0x0
+	#     ArgType: D:\src\llvm-mono\lldb\lit\SymbolFile\NativePDB\variable.cpp (0x101E)
+	#     ArgType: 0x0
+	#     ArgType: 0x0
+	#   ]
+	# }
+	.byte	0x1a, 0x00, 0x03, 0x16
+	.byte	0x05, 0x00, 0x1d, 0x10
+	.byte	0x00, 0x00, 0x00, 0x00
+	.byte	0x00, 0x00, 0x1e, 0x10
+	.byte	0x00, 0x00, 0x00, 0x00
+	.byte	0x00, 0x00, 0x00, 0x00
+	.byte	0x00, 0x00, 0xf2, 0xf1
+
+	.addrsig
+	.addrsig_sym GlobalLUEA
+	.addrsig_sym GlobalLUEB
+	.addrsig_sym GlobalLUEC
+	.addrsig_sym GlobalLSEA
+	.addrsig_sym GlobalLSEB
+	.addrsig_sym GlobalLSEC
+	.addrsig_sym GlobalUEA
+	.addrsig_sym GlobalUEB
+	.addrsig_sym GlobalUEC
+	.addrsig_sym GlobalSEA
+	.addrsig_sym GlobalSEB
+	.addrsig_sym GlobalSEC
+	.addrsig_sym GlobalSUEA
+	.addrsig_sym GlobalSUEB
+	.addrsig_sym GlobalSUEC
+	.addrsig_sym GlobalSSEA
+	.addrsig_sym GlobalSSEB
+	.addrsig_sym GlobalSSEC

Added: lldb/trunk/lit/SymbolFile/NativePDB/Inputs/source-list.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/Inputs/source-list.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/Inputs/source-list.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/Inputs/source-list.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,3 @@
+source list -n main
+source list -n OvlGlobalFn
+quit

Added: lldb/trunk/lit/SymbolFile/NativePDB/Inputs/stack_unwinding01.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/Inputs/stack_unwinding01.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/Inputs/stack_unwinding01.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/Inputs/stack_unwinding01.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,8 @@
+b stack_unwinding01.cpp:12
+run
+thread backtrace
+c
+thread backtrace
+c
+thread backtrace
+quit
\ No newline at end of file

Added: lldb/trunk/lit/SymbolFile/NativePDB/Inputs/tag-types.lldbinit
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/Inputs/tag-types.lldbinit?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/Inputs/tag-types.lldbinit (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/Inputs/tag-types.lldbinit Wed Oct  9 10:35:43 2019
@@ -0,0 +1,10 @@
+type lookup -- Struct
+type lookup -- Class
+type lookup -- Union
+type lookup -- Derived
+type lookup -- Derived2
+type lookup -- DerivedVirtual1
+type lookup -- DerivedVirtual2
+type lookup -- EnumInt
+type lookup -- EnumShort
+type lookup -- InvalidType

Added: lldb/trunk/lit/SymbolFile/NativePDB/ast-functions-msvc.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/ast-functions-msvc.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/ast-functions-msvc.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/ast-functions-msvc.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,7 @@
+// clang-format off
+// REQUIRES: msvc
+
+// RUN: %build --compiler=msvc --nodefaultlib -o %t.exe -- %S/ast-functions.cpp
+
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+// RUN:     %p/Inputs/ast-functions.lldbinit 2>&1 | FileCheck %S/ast-functions.cpp

Added: lldb/trunk/lit/SymbolFile/NativePDB/ast-functions.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/ast-functions.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/ast-functions.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/ast-functions.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,28 @@
+// clang-format off
+// REQUIRES: lld
+
+// RUN: %build --compiler=clang-cl --nodefaultlib -o %t.exe -- %s
+
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+// RUN:     %p/Inputs/ast-functions.lldbinit 2>&1 | FileCheck %s
+
+static int static_fn() {
+  return 42;
+}
+
+int varargs_fn(int x, int y, ...) {
+  return x + y;
+}
+
+int main(int argc, char **argv) {
+  return static_fn() + varargs_fn(argc, argc);
+}
+
+// CHECK:      TranslationUnitDecl
+// CHECK-NEXT: |-FunctionDecl {{.*}} main 'int (int, char **)'
+// CHECK-NEXT: | |-ParmVarDecl {{.*}} argc 'int'
+// CHECK-NEXT: | `-ParmVarDecl {{.*}} argv 'char **'
+// CHECK-NEXT: |-FunctionDecl {{.*}} static_fn 'int ()' static
+// CHECK-NEXT: `-FunctionDecl {{.*}} varargs_fn 'int (int, int, ...)'
+// CHECK-NEXT:   |-ParmVarDecl {{.*}} x 'int'
+// CHECK-NEXT:   `-ParmVarDecl {{.*}} y 'int'

Added: lldb/trunk/lit/SymbolFile/NativePDB/ast-methods.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/ast-methods.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/ast-methods.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/ast-methods.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,36 @@
+// clang-format off
+// REQUIRES: lld
+
+// RUN: %build --compiler=clang-cl --nodefaultlib -o %t.exe -- %s
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+// RUN:     %p/Inputs/ast-methods.lldbinit 2>&1 | FileCheck %s
+
+struct Struct {
+  void simple_method() {}
+
+  virtual void virtual_method() {}
+
+  static void static_method() {}
+
+  int overloaded_method() {}
+  int overloaded_method(char c) {}
+  int overloaded_method(char c, int i, ...) {}
+};
+
+Struct s;
+
+int main(int argc, char **argv) {
+  return 0;
+}
+
+// CHECK: TranslationUnitDecl
+// CHECK: |-CXXRecordDecl {{.*}} struct Struct definition
+// CHECK: | |-CXXMethodDecl {{.*}} simple_method 'void (){{.*}}'
+// CHECK: | |-CXXMethodDecl {{.*}} virtual_method 'void (){{.*}}' virtual
+// CHECK: | |-CXXMethodDecl {{.*}} static_method 'void ()' static
+// CHECK: | |-CXXMethodDecl {{.*}} overloaded_method 'int (){{.*}}'
+// CHECK: | |-CXXMethodDecl {{.*}} overloaded_method 'int (char){{.*}}'
+// CHECK: | | `-ParmVarDecl {{.*}} 'char'
+// CHECK: | `-CXXMethodDecl {{.*}} overloaded_method 'int (char, int, ...)'
+// CHECK: |   |-ParmVarDecl {{.*}} 'char'
+// CHECK: |   `-ParmVarDecl {{.*}} 'int'

Added: lldb/trunk/lit/SymbolFile/NativePDB/ast-types.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/ast-types.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/ast-types.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/ast-types.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,153 @@
+// clang-format off
+// REQUIRES: lld
+
+// Test various interesting cases for AST reconstruction.
+// RUN: %build --compiler=clang-cl --nodefaultlib -o %t.exe -- %s
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+// RUN:     %p/Inputs/ast-types.lldbinit 2>&1 | FileCheck %s
+
+// Test trivial versions of each tag type.
+class TrivialC {};
+struct TrivialS {};
+union TrivialU {};
+enum TrivialE {TE_A};
+
+// Test reconstruction of DeclContext hierarchies.
+namespace A {
+  namespace B {
+    template<typename T>
+    struct C {
+      T ABCMember;
+    };
+
+    // Let's try a template specialization with a different implementation
+    template<>
+    struct C<void> {
+      void *ABCSpecializationMember;
+    };
+  }
+
+  // Let's make sure we can distinguish classes and namespaces.  Also let's try
+  // a non-type template parameter.
+  template<int N>
+  struct C {
+    class D {
+      int ACDMember = 0;
+      C<N - 1> *CPtr = nullptr;
+    };
+  };
+
+  struct D {
+    // Let's make a nested class with the same name as another nested class
+    // elsewhere, and confirm that they appear in the right DeclContexts in
+    // the AST.
+    struct E {
+      int ADDMember;
+    };
+  };
+}
+
+
+// Let's try an anonymous namespace.
+namespace {
+  template<typename T>
+  struct Anonymous {
+    int AnonymousMember;
+    // And a nested class within an anonymous namespace
+    struct D {
+      int AnonymousDMember;
+    };
+  };
+}
+
+TrivialC TC;
+TrivialS TS;
+TrivialU TU;
+TrivialE TE;
+
+A::B::C<int> ABCInt;
+A::B::C<float> ABCFloat;
+A::B::C<void> ABCVoid;
+
+A::C<0> AC0;
+A::C<-1> ACNeg1;
+
+// FIXME: The type `D` is located now at the level of the translation unit.
+// FIXME: Should be located in the namespace `A`, in the struct `C<1>`.
+A::C<1>::D AC1D;
+
+A::C<0>::D AC0D;
+A::C<-1>::D ACNeg1D;
+A::D AD;
+A::D::E ADE;
+
+Anonymous<int> AnonInt;
+Anonymous<A::B::C<void>> AnonABCVoid;
+Anonymous<A::B::C<void>>::D AnonABCVoidD;
+
+// FIXME: Enum size isn't being correctly determined.
+// FIXME: Can't read memory for variable values.
+
+// CHECK: (TrivialC) TC = {}
+// CHECK: (TrivialS) TS = {}
+// CHECK: (TrivialU) TU = {}
+// CHECK: (TrivialE) TE = TE_A
+// CHECK: (A::B::C<int>) ABCInt = (ABCMember = 0)
+// CHECK: (A::B::C<float>) ABCFloat = (ABCMember = 0)
+// CHECK: (A::B::C<void>) ABCVoid = (ABCSpecializationMember = 0x{{0+}})
+// CHECK: (A::C<0>) AC0 = {}
+// CHECK: (A::C<-1>) ACNeg1 = {}
+// CHECK: (A::C<1>::D) AC1D = (ACDMember = 0, CPtr = 0x{{0+}})
+// CHECK: (A::C<0>::D) AC0D = (ACDMember = 0, CPtr = 0x{{0+}})
+// CHECK: (A::C<-1>::D) ACNeg1D = (ACDMember = 0, CPtr = 0x{{0+}})
+// CHECK: (A::D) AD = {}
+// CHECK: (A::D::E) ADE = (ADDMember = 0)
+// CHECK: ((anonymous namespace)::Anonymous<int>) AnonInt = (AnonymousMember = 0)
+// CHECK: ((anonymous namespace)::Anonymous<A::B::C<void>>) AnonABCVoid = (AnonymousMember = 0)
+// CHECK: ((anonymous namespace)::Anonymous<A::B::C<void>>::D) AnonABCVoidD = (AnonymousDMember = 0)
+// CHECK: Dumping clang ast for 1 modules.
+// CHECK: TranslationUnitDecl {{.*}}
+// CHECK: |-CXXRecordDecl {{.*}} class TrivialC definition
+// CHECK: |-CXXRecordDecl {{.*}} struct TrivialS definition
+// CHECK: |-CXXRecordDecl {{.*}} union TrivialU definition
+// CHECK: |-EnumDecl {{.*}} TrivialE
+// CHECK: | `-EnumConstantDecl {{.*}} TE_A 'TrivialE'
+// CHECK: |-NamespaceDecl {{.*}} A
+// CHECK: | |-NamespaceDecl {{.*}} B
+// CHECK: | | |-CXXRecordDecl {{.*}} struct C<int> definition
+// CHECK: | | | `-FieldDecl {{.*}} ABCMember 'int'
+// CHECK: | | |-CXXRecordDecl {{.*}} struct C<float> definition
+// CHECK: | | | `-FieldDecl {{.*}} ABCMember 'float'
+// CHECK: | | `-CXXRecordDecl {{.*}} struct C<void> definition
+// CHECK: | |   `-FieldDecl {{.*}} ABCSpecializationMember 'void *'
+// FIXME: | |-CXXRecordDecl {{.*}} struct C<1> definition
+// FIXME: | | `-CXXRecordDecl {{.*}} class D definition
+// FIXME: | |   |-FieldDecl {{.*}} ACDMember 'int'
+// FIXME: | |   `-FieldDecl {{.*}} CPtr 'A::C<1> *'
+// CHECK: | |-CXXRecordDecl {{.*}} struct C<0> definition
+// CHECK: | | `-CXXRecordDecl {{.*}} class D definition
+// CHECK: | |   |-FieldDecl {{.*}} ACDMember 'int'
+// CHECK: | |   `-FieldDecl {{.*}} CPtr 'A::C<-1> *'
+// CHECK: | |-CXXRecordDecl {{.*}} struct C<-1> definition
+// CHECK: | | `-CXXRecordDecl {{.*}} class D definition
+// CHECK: | |   |-FieldDecl {{.*}} ACDMember 'int'
+// CHECK: | |   `-FieldDecl {{.*}} CPtr 'A::C<-2> *'
+// CHECK: | |-CXXRecordDecl {{.*}} struct C<-2>
+// CHECK: | `-CXXRecordDecl {{.*}} struct D definition
+// CHECK: |   `-CXXRecordDecl {{.*}} struct E definition
+// CHECK: |     `-FieldDecl {{.*}} ADDMember 'int'
+// CHECK: |-NamespaceDecl
+// CHECK: | |-CXXRecordDecl {{.*}} struct Anonymous<int> definition
+// CHECK: | | `-FieldDecl {{.*}} AnonymousMember 'int'
+// CHECK: | `-CXXRecordDecl {{.*}} struct Anonymous<A::B::C<void>> definition
+// CHECK: |   |-FieldDecl {{.*}} AnonymousMember 'int'
+// CHECK: |   `-CXXRecordDecl {{.*}} struct D definition
+// CHECK: |     `-FieldDecl {{.*}} AnonymousDMember 'int'
+
+int main(int argc, char **argv) {
+  AnonInt.AnonymousMember = 1;
+  AnonABCVoid.AnonymousMember = 2;
+  AnonABCVoidD.AnonymousDMember = 3;
+
+  return 0;
+}

Added: lldb/trunk/lit/SymbolFile/NativePDB/bitfields.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/bitfields.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/bitfields.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/bitfields.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,60 @@
+// clang-format off
+// REQUIRES: lld
+
+// Test various interesting cases for AST reconstruction.
+// RUN: %build --compiler=clang-cl --nodefaultlib -o %t.exe -- %s 
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+// RUN:     %p/Inputs/bitfields.lldbinit 2>&1 | FileCheck %s
+
+// Test trivial versions of each tag type.
+struct Struct {
+  int A : 5 = 6;
+  int B : 7 = 8;
+  unsigned C : 3 = 2;
+  unsigned D : 15 = 12345;
+  char E : 1 = 0;
+  char F : 2 = 1;
+  char G : 3 = 2;
+  // H should be at offset 0 of a new byte.
+  char H : 3 = 3;
+};
+
+constexpr Struct TheStruct;
+
+
+int main(int argc, char **argv) {
+  return TheStruct.A;
+}
+
+// CHECK: (lldb) target variable -T TheStruct
+// CHECK: (const Struct) TheStruct = {
+// CHECK:   (int:5) A = 6
+// CHECK:   (int:7) B = 8
+// CHECK:   (unsigned int:3) C = 2
+// CHECK:   (unsigned int:15) D = 12345
+// CHECK:   (char:1) E = '\0'
+// CHECK:   (char:2) F = '\x01'
+// CHECK:   (char:3) G = '\x02'
+// CHECK:   (char:3) H = '\x03'
+// CHECK: }
+//
+// CHECK: target modules dump ast
+// CHECK: Dumping clang ast for 1 modules.
+// CHECK: TranslationUnitDecl {{.*}}
+// CHECK: |-CXXRecordDecl {{.*}} struct Struct definition
+// CHECK: | |-FieldDecl {{.*}} A 'int'
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 5
+// CHECK: | |-FieldDecl {{.*}} B 'int'
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 7
+// CHECK: | |-FieldDecl {{.*}} C 'unsigned int'
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 3
+// CHECK: | |-FieldDecl {{.*}} D 'unsigned int'
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 15
+// CHECK: | |-FieldDecl {{.*}} E 'char'
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 1
+// CHECK: | |-FieldDecl {{.*}} F 'char'
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 2
+// CHECK: | |-FieldDecl {{.*}} G 'char'
+// CHECK: | | `-IntegerLiteral {{.*}} 'int' 3
+// CHECK: | `-FieldDecl {{.*}} H 'char'
+// CHECK: |   `-IntegerLiteral {{.*}} 'int' 3

Added: lldb/trunk/lit/SymbolFile/NativePDB/break-by-function.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/break-by-function.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/break-by-function.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/break-by-function.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,57 @@
+// clang-format off
+// REQUIRES: lld
+
+// Test that we can set simple breakpoints using PDB on any platform.
+// RUN: %build --compiler=clang-cl --nodefaultlib -o %t.exe -- %s 
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+// RUN:     %p/Inputs/break-by-function.lldbinit | FileCheck %s
+
+// Use different indentation style for each overload so that the starting
+// line is in a different place.
+
+int OvlGlobalFn(int X) {
+  return X + 42;
+}
+
+int OvlGlobalFn(int X, int Y) { return X + Y + 42; }
+
+int OvlGlobalFn(int X, int Y, int Z)
+{
+  return X + Y + Z + 42;
+}
+
+static int StaticFn(int X) {
+  return X + 42;
+}
+
+int main(int argc, char **argv) {
+  // Make sure they don't get optimized out.
+  // Note the comments here, we want to make sure the line number reported
+  // for the breakpoint is the first actual line of code.
+  int Result = OvlGlobalFn(argc) + OvlGlobalFn(argc, argc)
+    + OvlGlobalFn(argc, argc, argc) + StaticFn(argc);
+  return Result;
+}
+
+
+// CHECK:      (lldb) target create "{{.*}}break-by-function.cpp.tmp.exe"
+// CHECK:      Current executable set to '{{.*}}break-by-function.cpp.tmp.exe'
+// CHECK:      (lldb) break set -n main
+// CHECK:      Breakpoint 1: where = break-by-function.cpp.tmp.exe`main + {{[0-9]+}}
+// CHECK:      (lldb) break set -n OvlGlobalFn
+// CHECK:      Breakpoint 2: 3 locations.
+// CHECK:      (lldb) break set -n StaticFn
+// CHECK:      Breakpoint 3: where = break-by-function.cpp.tmp.exe`StaticFn + {{[0-9]+}}
+// CHECK:      (lldb) break set -n DoesntExist
+// CHECK:      Breakpoint 4: no locations (pending).
+// CHECK:      (lldb) break list
+// CHECK:      Current breakpoints:
+// CHECK:      1: name = 'main', locations = 1
+// CHECK:        1.1: where = break-by-function.cpp.tmp.exe`main + {{[0-9]+}}
+// CHECK:      2: name = 'OvlGlobalFn', locations = 3
+// CHECK:        2.1: where = break-by-function.cpp.tmp.exe`OvlGlobalFn + {{[0-9]+}}
+// CHECK:        2.2: where = break-by-function.cpp.tmp.exe`OvlGlobalFn
+// CHECK:        2.3: where = break-by-function.cpp.tmp.exe`OvlGlobalFn + {{[0-9]+}}
+// CHECK:      3: name = 'StaticFn', locations = 1
+// CHECK:        3.1: where = break-by-function.cpp.tmp.exe`StaticFn + {{[0-9]+}}
+// CHECK:      4: name = 'DoesntExist', locations = 0 (pending)

Added: lldb/trunk/lit/SymbolFile/NativePDB/break-by-line.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/break-by-line.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/break-by-line.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/break-by-line.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,26 @@
+// clang-format off
+// REQUIRES: lld
+
+// Test that we can set simple breakpoints using PDB on any platform.
+// RUN: %build --compiler=clang-cl --nodefaultlib -o %t.exe -- %s
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+// RUN:     %p/Inputs/break-by-line.lldbinit | FileCheck %s
+
+// This is a separate test from break-by-function.cpp because this test is
+// sensitive to edits in the source file.
+
+namespace NS {
+  int NamespaceFn(int X) {
+    return X + 42;
+  }
+}
+
+int main(int argc, char **argv) {
+  return NS::NamespaceFn(argc);
+}
+
+
+// CHECK:      (lldb) target create "{{.*}}break-by-line.cpp.tmp.exe"
+// CHECK:      Current executable set to '{{.*}}break-by-line.cpp.tmp.exe'
+// CHECK:      (lldb) break set -f break-by-line.cpp -l 14
+// CHECK:      Breakpoint 1: where = break-by-line.cpp.tmp.exe`NS::NamespaceFn + {{[0-9]+}} at break-by-line.cpp:14

Added: lldb/trunk/lit/SymbolFile/NativePDB/disassembly.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/disassembly.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/disassembly.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/disassembly.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,38 @@
+// clang-format off
+// REQUIRES: lld
+
+// Test that we can show disassembly and source.
+// RUN: %build --compiler=clang-cl --nodefaultlib -o %t.exe -- %s 
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+// RUN:     %p/Inputs/disassembly.lldbinit | FileCheck %s
+
+// Some context lines before
+// the function.
+
+int foo() { return 42; }
+
+int main(int argc, char **argv) {
+  foo();
+  return 0;
+}
+
+
+// CHECK:      (lldb) disassemble --flavor=intel -m -n main
+// CHECK:         12   int foo() { return 42; }
+// CHECK-NEXT:    13
+// CHECK-NEXT: ** 14   int main(int argc, char **argv) {
+// CHECK:      disassembly.cpp.tmp.exe`main:
+// CHECK-NEXT: disassembly.cpp.tmp.exe[{{.*}}] <+0>:  sub    rsp, 0x38
+// CHECK-NEXT: disassembly.cpp.tmp.exe[{{.*}}] <+4>:  mov    dword ptr [rsp + 0x34], 0x0
+// CHECK-NEXT: disassembly.cpp.tmp.exe[{{.*}}] <+12>: mov    qword ptr [rsp + 0x28], rdx
+// CHECK-NEXT: disassembly.cpp.tmp.exe[{{.*}}] <+17>: mov    dword ptr [rsp + 0x24], ecx
+// CHECK:      ** 15     foo();
+// CHECK:      disassembly.cpp.tmp.exe[{{.*}}] <+21>: call   {{.*}}               ; foo at disassembly.cpp:12
+// CHECK-NEXT: disassembly.cpp.tmp.exe[{{.*}}] <+26>: xor    ecx, ecx
+// CHECK-NEXT: disassembly.cpp.tmp.exe[{{.*}}] <+28>: mov    dword ptr [rsp + 0x20], eax
+// CHECK:      ** 16     return 0;
+// CHECK-NEXT:    17   }
+// CHECK-NEXT:    18
+// CHECK:      disassembly.cpp.tmp.exe[{{.*}}] <+32>: mov    eax, ecx
+// CHECK-NEXT: disassembly.cpp.tmp.exe[{{.*}}] <+34>: add    rsp, 0x38
+// CHECK-NEXT: disassembly.cpp.tmp.exe[{{.*}}] <+38>: ret

Added: lldb/trunk/lit/SymbolFile/NativePDB/function-types-builtins.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/function-types-builtins.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/function-types-builtins.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/function-types-builtins.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,218 @@
+// clang-format off
+// REQUIRES: lld
+
+// RUN: %build --compiler=clang-cl --nodefaultlib -o %t.exe -- %s 
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+// RUN:     %p/Inputs/function-types-builtins.lldbinit | FileCheck %s
+
+// Test that we can display function signatures with simple builtin
+// and pointer types.  We do this by using `target variable` in lldb
+// with global variables of type ptr-to-function or reference-to-function.
+// This technique in general allows us to exercise most of LLDB's type
+// system without a running process.
+
+// Define _fltused, since we're not linking against the MS C runtime, but use
+// floats.
+extern "C" int _fltused = 0;
+
+template<typename T>
+struct MakeResult {
+  static T result() {
+    return T{};
+  }
+};
+
+template<typename T>
+struct MakeResult<T&> {
+  static T& result() {
+    static T t;
+    return t;
+  }
+};
+
+template<typename T>
+struct MakeResult<T&&> {
+  static T&& result() {
+    static T t;
+    return static_cast<T&&>(t);
+  }
+};
+
+
+void nullary() {}
+
+template<typename Arg>
+void unary(Arg) { }
+
+template<typename Ret, int N>
+Ret unaryret() { return MakeResult<Ret>::result(); }
+
+template<typename A1, typename A2>
+void binary(A1, A2) { }
+
+int varargs(int, int, ...) { return 0; }
+
+// Make sure to test every builtin type at least once for completeness.  We
+// test these in the globals-fundamentals.cpp when they are the types of
+// variables but it's possible to imagine a situation where things behave
+// differently as function arguments or return values than they do with
+// global variables.
+
+// some interesting cases with argument types.
+auto aa = &unary<bool>;
+// CHECK: (void (*)(bool)) aa = {{.*}}
+auto ab = &unary<char>;
+// CHECK: (void (*)(char)) ab = {{.*}}
+auto ac = &unary<signed char>;
+// CHECK: (void (*)(signed char)) ac = {{.*}}
+auto ad = &unary<unsigned char>;
+// CHECK: (void (*)(unsigned char)) ad = {{.*}}
+auto ae = &unary<char16_t>;
+// CHECK: (void (*)(char16_t)) ae = {{.*}}
+auto af = &unary<char32_t>;
+// CHECK: (void (*)(char32_t)) af = {{.*}}
+auto ag = &unary<wchar_t>;
+// CHECK: (void (*)(wchar_t)) ag = {{.*}}
+auto ah = &unary<short>;
+// CHECK: (void (*)(short)) ah = {{.*}}
+auto ai = &unary<unsigned short>;
+// CHECK: (void (*)(unsigned short)) ai = {{.*}}
+auto aj = &unary<int>;
+// CHECK: (void (*)(int)) aj = {{.*}}
+auto ak = &unary<unsigned int>;
+// CHECK: (void (*)(unsigned int)) ak = {{.*}}
+auto al = &unary<long>;
+// CHECK: (void (*)(long)) al = {{.*}}
+auto am = &unary<unsigned long>;
+// CHECK: (void (*)(unsigned long)) am = {{.*}}
+auto an = &unary<long long>;
+// CHECK: (void (*)(long long)) an = {{.*}}
+auto ao = &unary<unsigned long long>;
+// CHECK: (void (*)(unsigned long long)) ao = {{.*}}
+auto aq = &unary<float>;
+// CHECK: (void (*)(float)) aq = {{.*}}
+auto ar = &unary<double>;
+// CHECK: (void (*)(double)) ar = {{.*}}
+
+auto as = &unary<int*>;
+// CHECK: (void (*)(int *)) as = {{.*}}
+auto at = &unary<int**>;
+// CHECK: (void (*)(int **)) at = {{.*}}
+auto au = &unary<int&>;
+// CHECK: (void (*)(int &)) au = {{.*}}
+auto av = &unary<int&&>;
+// CHECK: (void (*)(int &&)) av = {{.*}}
+auto aw = &unary<const int*>;
+// CHECK: (void (*)(const int *)) aw = {{.*}}
+auto ax = &unary<volatile int*>;
+// CHECK: (void (*)(volatile int *)) ax = {{.*}}
+auto ay = &unary<const volatile int*>;
+// CHECK: (void (*)(const volatile int *)) ay = {{.*}}
+auto az = &unary<void*&>;
+// CHECK: (void (*)(void *&)) az = {{.*}}
+auto aaa = &unary<int(&)[5]>;
+// CHECK: (void (*)(int (&)[5])) aaa = {{.*}}
+auto aab = &unary<int(*)[5]>;
+// CHECK: (void (*)(int (*)[5])) aab = {{.*}}
+auto aac = &unary<int(&&)[5]>;
+// CHECK: (void (*)(int (&&)[5])) aac = {{.*}}
+auto aad = &unary<int(*const)[5]>;
+// CHECK: (void (*)(int (*)[5])) aad = {{.*}}
+
+
+// same test cases with return values, note we can't overload on return type
+// so we need to use a different instantiation each time.
+auto ra = &unaryret<bool, 0>;
+// CHECK: (bool (*)()) ra = {{.*}}
+auto rb = &unaryret<char, 1>;
+// CHECK: (char (*)()) rb = {{.*}}
+auto rc = &unaryret<signed char, 2>;
+// CHECK: (signed char (*)()) rc = {{.*}}
+auto rd = &unaryret<unsigned char, 3>;
+// CHECK: (unsigned char (*)()) rd = {{.*}}
+auto re = &unaryret<char16_t, 4>;
+// CHECK: (char16_t (*)()) re = {{.*}}
+auto rf = &unaryret<char32_t, 5>;
+// CHECK: (char32_t (*)()) rf = {{.*}}
+auto rg = &unaryret<wchar_t, 6>;
+// CHECK: (wchar_t (*)()) rg = {{.*}}
+auto rh = &unaryret<short, 7>;
+// CHECK: (short (*)()) rh = {{.*}}
+auto ri = &unaryret<unsigned short, 8>;
+// CHECK: (unsigned short (*)()) ri = {{.*}}
+auto rj = &unaryret<int, 9>;
+// CHECK: (int (*)()) rj = {{.*}}
+auto rk = &unaryret<unsigned int, 10>;
+// CHECK: (unsigned int (*)()) rk = {{.*}}
+auto rl = &unaryret<long, 11>;
+// CHECK: (long (*)()) rl = {{.*}}
+auto rm = &unaryret<unsigned long, 12>;
+// CHECK: (unsigned long (*)()) rm = {{.*}}
+auto rn = &unaryret<long long, 13>;
+// CHECK: (long long (*)()) rn = {{.*}}
+auto ro = &unaryret<unsigned long long, 14>;
+// CHECK: (unsigned long long (*)()) ro = {{.*}}
+auto rq = &unaryret<float, 15>;
+// CHECK: (float (*)()) rq = {{.*}}
+auto rr = &unaryret<double, 16>;
+// CHECK: (double (*)()) rr = {{.*}}
+
+auto rs = &unaryret<int*, 17>;
+// CHECK: (int *(*)()) rs = {{.*}}
+auto rt = &unaryret<int**, 18>;
+// CHECK: (int **(*)()) rt = {{.*}}
+auto ru = &unaryret<int&, 19>;
+// CHECK: (int &(*)()) ru = {{.*}}
+auto rv = &unaryret<int&&, 20>;
+// CHECK: (int &&(*)()) rv = {{.*}}
+auto rw = &unaryret<const int*, 21>;
+// CHECK: (const int *(*)()) rw = {{.*}}
+auto rx = &unaryret<volatile int*, 22>;
+// CHECK: (volatile int *(*)()) rx = {{.*}}
+auto ry = &unaryret<const volatile int*, 23>;
+// CHECK: (const volatile int *(*)()) ry = {{.*}}
+auto rz = &unaryret<void*&, 24>;
+// CHECK: (void *&(*)()) rz = {{.*}}
+
+// FIXME: This output doesn't really look correct.  It should probably be
+// formatting this as `int(&)[5] (*)()`.
+auto raa = &unaryret<int(&)[5], 25>;
+// CHECK: (int (&(*)())[5]) raa = {{.*}}
+auto rab = &unaryret<int(*)[5], 26>;
+// CHECK: (int (*(*)())[5]) rab = {{.*}}
+auto rac = &unaryret<int(&&)[5], 27>;
+// CHECK: (int (&&(*)())[5]) rac = {{.*}}
+auto rad = &unaryret<int(*const)[5], 28>;
+// CHECK: (int (*const (*)())[5]) rad = {{.*}}
+
+
+
+// Function references, we only need a couple of these since most of the
+// interesting cases are already tested.
+auto &ref = unary<bool>;
+// CHECK: (void (&)(bool)) ref = {{.*}} (&::ref = <no summary available>)
+auto &ref2 = unary<volatile int*>;
+// CHECK: (void (&)(volatile int *)) ref2 = {{.*}} (&::ref2 = <no summary available>)
+auto &ref3 = varargs;
+// CHECK: (int (&)(int, int, ...)) ref3 = {{.*}} (&::ref3 = <no summary available>)
+
+// Multiple arguments, as before, just something to make sure it works.
+auto binp = &binary<int*, const int*>;
+// CHECK: (void (*)(int *, const int *)) binp = {{.*}}
+auto &binr = binary<int*, const int*>;
+// CHECK: (void (&)(int *, const int *)) binr = {{.*}} (&::binr = <no summary available>)
+
+// And finally, a function with no arguments.
+auto null = &nullary;
+// CHECK: (void (*)()) null = {{.*}}
+
+// FIXME: These currently don't work because clang-cl emits incorrect debug info
+// for std::nullptr_t.  We should fix these in clang-cl.
+auto rae = &unaryret<decltype(nullptr), 29>;
+// CHECK: (nullptr_t (*)()) rae = {{.*}}
+auto aae = &unary<decltype(nullptr)>;
+// CHECK: (void (*)(nullptr_t)) aae = {{.*}}
+
+int main(int argc, char **argv) {
+  return 0;
+}

Added: lldb/trunk/lit/SymbolFile/NativePDB/function-types-calling-conv.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/function-types-calling-conv.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/function-types-calling-conv.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/function-types-calling-conv.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,32 @@
+// clang-format off
+// REQUIRES: lld
+
+// RUN: %build --compiler=clang-cl --arch=32 --nodefaultlib -o %t.exe -- %s 
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+// RUN:     %p/Inputs/function-types-calling-conv.lldbinit | FileCheck %s
+
+
+void __stdcall StdcallFn() {}
+void __fastcall FastcallFn() {}
+void __thiscall ThiscallFn() {}
+void __cdecl CdeclFn() {}
+void __vectorcall VectorcallFn() {}
+
+auto sfn = &StdcallFn;
+// CHECK: (void (*)() __attribute__((stdcall))) sfn = {{.*}}
+
+auto ffn = &FastcallFn;
+// CHECK: (void (*)() __attribute__((fastcall))) ffn = {{.*}}
+
+auto tfn = &ThiscallFn;
+// CHECK: (void (*)() __attribute__((thiscall))) tfn = {{.*}}
+
+auto cfn = &CdeclFn;
+// CHECK: (void (*)()) cfn = {{.*}}
+
+auto vfn = &VectorcallFn;
+// CHECK: (void (*)() __attribute__((vectorcall))) vfn = {{.*}}
+
+int main(int argc, char **argv) {
+  return 0;
+}

Added: lldb/trunk/lit/SymbolFile/NativePDB/function-types-classes.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/function-types-classes.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/function-types-classes.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/function-types-classes.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,141 @@
+// clang-format off
+// REQUIRES: lld
+
+// Test that we can display function signatures with class types.
+// RUN: %build --compiler=clang-cl --nodefaultlib -o %t.exe -- %s 
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+// RUN:     %p/Inputs/function-types-classes.lldbinit | FileCheck %s
+
+// This is just some unimportant helpers needed so that we can get reference and
+// rvalue-reference types into return values.
+template<typename T>
+struct MakeResult {
+  static T result() {
+    return T{};
+  }
+};
+
+template<typename T>
+struct MakeResult<T&> {
+  static T& result() {
+    static T t;
+    return t;
+  }
+};
+
+template<typename T>
+struct MakeResult<T&&> {
+  static T&& result() {
+    static T t;
+    return static_cast<T&&>(t);
+  }
+};
+
+
+template<typename R>
+R nullary() { return MakeResult<R>::result(); }
+
+template<typename R, typename A, typename B>
+R three(A a, B b) { return MakeResult<R>::result(); }
+
+template<typename R, typename A, typename B, typename C>
+R four(A a, B b, C c) { return MakeResult<R>::result(); }
+
+struct S {};
+class C {};
+union U {};
+enum E {};
+
+namespace A {
+  namespace B {
+    // NS::NS
+    struct S { };
+  }
+
+  struct C {
+    // NS::Struct
+    struct S {};
+  };
+}
+
+struct B {
+  struct A {
+    // Struct::Struct
+    struct S {};
+  };
+};
+
+// clang (incorrectly) doesn't emit debug information for outer classes
+// unless they are instantiated.  They should also be emitted if there
+// is an inner class which is instantiated.
+A::C ForceInstantiateAC;
+B ForceInstantiateB;
+B::A ForceInstantiateBA;
+
+template<typename T>
+struct TC {};
+
+// const and volatile modifiers
+auto a = &four<S, C*, U&, E&&>;
+// CHECK: (S (*)(C *, U &, E &&)) a = {{.*}}
+auto b = &four<E, const S*, const C&, const U&&>;
+// CHECK: (E (*)(const S *, const C &, const U &&)) b = {{.*}}
+auto c = &four<U, volatile E*, volatile S&, volatile C&&>;
+// CHECK: (U (*)(volatile E *, volatile S &, volatile C &&)) c = {{.*}}
+auto d = &four<C, const volatile U*, const volatile E&, const volatile S&&>;
+// CHECK: (C (*)(const volatile U *, const volatile E &, const volatile S &&)) d = {{.*}}
+
+// classes nested in namespaces and inner classes
+
+auto e = &three<A::B::S*, B::A::S*, A::C::S&>;
+// CHECK: (A::B::S *(*)(B::A::S *, A::C::S &)) e = {{.*}}
+auto f = &three<A::C::S&, A::B::S*, B::A::S*>;
+// CHECK: (A::C::S &(*)(A::B::S *, B::A::S *)) f = {{.*}}
+auto g = &three<B::A::S*, A::C::S&, A::B::S*>;
+// CHECK: (B::A::S *(*)(A::C::S &, A::B::S *)) g = {{.*}}
+
+// parameter types that are themselves template instantiations.
+auto h = &four<TC<void>, TC<int>, TC<TC<int>>, TC<A::B::S>>;
+// CHECK: (TC<void> (*)(TC<int>, TC<TC<int>>, TC<A::B::S>)) h = {{.*}}
+
+auto i = &nullary<A::B::S>;
+// CHECK: (A::B::S (*)()) i = {{.*}}
+
+
+// Make sure we can handle types that don't have complete debug info.
+struct Incomplete;
+auto incomplete = &three<Incomplete*, Incomplete**, const Incomplete*>;
+// CHECK: (Incomplete *(*)(Incomplete **, const Incomplete *)) incomplete = {{.*}}
+
+// CHECK: TranslationUnitDecl {{.*}}
+// CHECK: |-CXXRecordDecl {{.*}} class C
+// CHECK: |-CXXRecordDecl {{.*}} union U
+// CHECK: |-EnumDecl {{.*}} E
+// CHECK: |-CXXRecordDecl {{.*}} struct S
+// CHECK: |-VarDecl {{.*}} a 'S (*)(C *, U &, E &&)'
+// CHECK: |-VarDecl {{.*}} b 'E (*)(const S *, const C &, const U &&)'
+// CHECK: |-VarDecl {{.*}} c 'U (*)(volatile E *, volatile S &, volatile C &&)'
+// CHECK: |-VarDecl {{.*}} d 'C (*)(const volatile U *, const volatile E &, const volatile S &&)'
+// CHECK: |-CXXRecordDecl {{.*}} struct B
+// CHECK: | `-CXXRecordDecl {{.*}} struct A
+// CHECK: |   `-CXXRecordDecl {{.*}} struct S
+// CHECK: |-NamespaceDecl {{.*}} A
+// CHECK: | |-CXXRecordDecl {{.*}} struct C
+// CHECK: | | `-CXXRecordDecl {{.*}} struct S
+// CHECK: | `-NamespaceDecl {{.*}} B
+// CHECK: |   `-CXXRecordDecl {{.*}} struct S
+// CHECK: |-VarDecl {{.*}} e 'A::B::S *(*)(B::A::S *, A::C::S &)'
+// CHECK: |-VarDecl {{.*}} f 'A::C::S &(*)(A::B::S *, B::A::S *)'
+// CHECK: |-VarDecl {{.*}} g 'B::A::S *(*)(A::C::S &, A::B::S *)'
+// CHECK: |-CXXRecordDecl {{.*}} struct TC<int>
+// CHECK: |-CXXRecordDecl {{.*}} struct TC<TC<int>>
+// CHECK: |-CXXRecordDecl {{.*}} struct TC<A::B::S>
+// CHECK: |-CXXRecordDecl {{.*}} struct TC<void>
+// CHECK: |-VarDecl {{.*}} h 'TC<void> (*)(TC<int>, TC<TC<int>>, TC<A::B::S>)'
+// CHECK: |-VarDecl {{.*}} i 'A::B::S (*)()'
+// CHECK: |-CXXRecordDecl {{.*}} struct Incomplete
+// CHECK: `-VarDecl {{.*}} incomplete 'Incomplete *(*)(Incomplete **, const Incomplete *)'
+
+int main(int argc, char **argv) {
+  return 0;
+}

Added: lldb/trunk/lit/SymbolFile/NativePDB/global-classes.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/global-classes.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/global-classes.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/global-classes.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,385 @@
+// clang-format off
+// REQUIRES: lld
+
+// Test that we can display tag types.
+// RUN: %build --compiler=clang-cl --nodefaultlib -o %t.exe -- %s 
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+// RUN:     %p/Inputs/globals-classes.lldbinit | FileCheck %s
+
+enum class EnumType : unsigned {
+  A = 1,
+  B = 2
+};
+
+class ClassNoPadding {
+  /* [ 0] */ unsigned char a = 86;
+  /* [ 1] */ char b = 'a';
+  /* [ 2] */ bool c = false;
+  /* [ 3] */ bool d = true;
+  /* [ 4] */ short e = -1234;
+  /* [ 6] */ unsigned short f = 8123;
+  /* [ 8] */ unsigned int g = 123908;
+  /* [12] */ int h = -890234;
+  /* [16] */ unsigned long i = 2908234;
+  /* [20] */ long j = 7234890;
+  /* [24] */ float k = 908234.12392;
+  /* [28] */ EnumType l = EnumType::A;
+  /* [32] */ double m = 23890.897423;
+  /* [40] */ unsigned long long n = 23490782;
+  /* [48] */ long long o = -923409823;
+  /* [56] */ int p[5] = { 2, 3, 5, 8, 13 };
+};
+
+class ClassWithPadding {
+  /* [ 0] */ char a = '0';
+  //         char padding[1];
+  /* [ 2] */ short b = 50;
+  /* [ 4] */ char c[2] = { '0', '1' };
+  //         char padding[2];
+  /* [ 8] */ int d = 100;
+  /* [12] */ char e = '0';
+  //         char padding[3];
+  /* [16] */ int f = 200;
+  //         char padding[4];
+  /* [24] */ long long g = 300;
+  /* [32] */ char h[3] = { '0', '1', '2' };
+  //         char padding[5];
+  /* [40] */ long long i = 400;
+  /* [48] */ char j[2] = { '0', '1' };
+  //         char padding[6];
+  /* [56] */ long long k = 500;
+  /* [64] */ char l = '0';
+  //         char padding[7];
+  /* [72] */ long long m = 600;
+} ;
+
+struct EmptyBase {};
+
+template<typename T>
+struct BaseClass {
+  constexpr BaseClass(int N)
+    : BaseMember(N) {}
+
+  int BaseMember;
+};
+
+struct DerivedClass : public BaseClass<int> {
+  constexpr DerivedClass(int Base, int Derived)
+    : BaseClass(Base), DerivedMember(Derived) {}
+
+  int DerivedMember;
+};
+
+struct EBO : public EmptyBase {
+  constexpr EBO(int N) : Member(N) {}
+  int Member;
+};
+
+struct PaddedBases : public BaseClass<char>, public BaseClass<short>, BaseClass<int> {
+  constexpr PaddedBases(char CH, short S, int N, long long D)
+    : BaseClass<char>(CH), BaseClass<short>(S), BaseClass<int>(N), DerivedMember(D) {}
+  long long DerivedMember;
+};
+
+struct Statics {
+  static char a;
+  static bool b;
+  static short c;
+  static unsigned short d;
+  static unsigned int e;
+  static int f;
+  static unsigned long g;
+  static long h;
+  static float i;
+  static EnumType j;
+  static double k;
+  static unsigned long long l;
+  static long long m;
+};
+
+char Statics::a = 'a';
+bool Statics::b = true;
+short Statics::c = 1234;
+unsigned short Statics::d = 2345;
+unsigned int Statics::e = 3456;
+int Statics::f = 4567;
+unsigned long Statics::g = 5678;
+long Statics::h = 6789;
+float Statics::i = 7890.1234;
+EnumType Statics::j = EnumType::A;
+double Statics::k = 8901.2345;
+unsigned long long Statics::l = 9012345;
+long long Statics::m = 1234567;
+
+
+struct Pointers {
+  void *a = nullptr;
+  char *b = &Statics::a;
+  bool *c = &Statics::b;
+  short *e = &Statics::c;
+  unsigned short *f = &Statics::d;
+  unsigned int *g = &Statics::e;
+  int *h = &Statics::f;
+  unsigned long *i = &Statics::g;
+  long *j = &Statics::h;
+  float *k = &Statics::i;
+  EnumType *l = &Statics::j;
+  double *m = &Statics::k;
+  unsigned long long *n = &Statics::l;
+  long long *o = &Statics::m;
+};
+
+struct References {
+  char &a = Statics::a;
+  bool &b = Statics::b;
+  short &c = Statics::c;
+  unsigned short &d = Statics::d;
+  unsigned int &e = Statics::e;
+  int &f = Statics::f;
+  unsigned long &g = Statics::g;
+  long &h = Statics::h;
+  float &i = Statics::i;
+  EnumType &j = Statics::j;
+  double &k = Statics::k;
+  unsigned long long &l = Statics::l;
+  long long &m = Statics::m;
+};
+
+
+constexpr ClassWithPadding ClassWithPaddingInstance;
+// CHECK:      (lldb) target variable -T ClassWithPaddingInstance
+// CHECK-NEXT: (const ClassWithPadding) ClassWithPaddingInstance = {
+// CHECK-NEXT:   (char) a = '0'
+// CHECK-NEXT:   (short) b = 50
+// CHECK-NEXT:   (char [2]) c = "01"
+// CHECK-NEXT:   (int) d = 100
+// CHECK-NEXT:   (char) e = '0'
+// CHECK-NEXT:   (int) f = 200
+// CHECK-NEXT:   (long long) g = 300
+// CHECK-NEXT:   (char [3]) h = "012"
+// CHECK-NEXT:   (long long) i = 400
+// CHECK-NEXT:   (char [2]) j = "01"
+// CHECK-NEXT:   (long long) k = 500
+// CHECK-NEXT:   (char) l = '0'
+// CHECK-NEXT:   (long long) m = 600
+// CHECK-NEXT: }
+
+constexpr ClassNoPadding ClassNoPaddingInstance;
+// CHECK:      (lldb) target variable -T ClassNoPaddingInstance
+// CHECK-NEXT: (const ClassNoPadding) ClassNoPaddingInstance = {
+// CHECK-NEXT:   (unsigned char) a = 'V'
+// CHECK-NEXT:   (char) b = 'a'
+// CHECK-NEXT:   (bool) c = false
+// CHECK-NEXT:   (bool) d = true
+// CHECK-NEXT:   (short) e = -1234
+// CHECK-NEXT:   (unsigned short) f = 8123
+// CHECK-NEXT:   (unsigned int) g = 123908
+// CHECK-NEXT:   (int) h = -890234
+// CHECK-NEXT:   (unsigned long) i = 2908234
+// CHECK-NEXT:   (long) j = 7234890
+// CHECK-NEXT:   (float) k = 908234.125
+// CHECK-NEXT:   (EnumType) l = A
+// CHECK-NEXT:   (double) m = 23890.897422999999
+// CHECK-NEXT:   (unsigned long long) n = 23490782
+// CHECK-NEXT:     (long long) o = -923409823
+// CHECK-NEXT:     (int [5]) p = {
+// CHECK-NEXT:       (int) [0] = 2
+// CHECK-NEXT:       (int) [1] = 3
+// CHECK-NEXT:       (int) [2] = 5
+// CHECK-NEXT:       (int) [3] = 8
+// CHECK-NEXT:       (int) [4] = 13
+// CHECK-NEXT:     }
+// CHECK-NEXT:   }
+
+constexpr DerivedClass DC(10, 20);
+// CHECK:      (lldb) target variable -T DC
+// CHECK-NEXT: (const DerivedClass) DC = {
+// CHECK-NEXT:   (BaseClass<int>) BaseClass<int> = {
+// CHECK-NEXT:     (int) BaseMember = 10
+// CHECK-NEXT:   }
+// CHECK-NEXT:   (int) DerivedMember = 20
+// CHECK-NEXT: }
+
+constexpr EBO EBOC(20);
+// CHECK:      (lldb) target variable -T EBOC
+// CHECK-NEXT: (const EBO) EBOC = {
+// CHECK-NEXT:   (int) Member = 20
+// CHECK-NEXT: }
+
+constexpr PaddedBases PBC('a', 12, 120, 1200);
+// CHECK:      (lldb) target variable -T PBC
+// CHECK-NEXT: (const PaddedBases) PBC = {
+// CHECK-NEXT:   (BaseClass<char>) BaseClass<char> = {
+// CHECK-NEXT:     (int) BaseMember = 97
+// CHECK-NEXT:   }
+// CHECK-NEXT:   (BaseClass<short>) BaseClass<short> = {
+// CHECK-NEXT:     (int) BaseMember = 12
+// CHECK-NEXT:   }
+// CHECK-NEXT:   (BaseClass<int>) BaseClass<int> = {
+// CHECK-NEXT:     (int) BaseMember = 120
+// CHECK-NEXT:   }
+// CHECK-NEXT:   (long long) DerivedMember = 1200
+// CHECK-NEXT: }
+
+constexpr struct {
+  int x = 12;
+  EBO EBOC{ 42 };
+} UnnamedClassInstance;
+// CHECK:      (lldb) target variable -T UnnamedClassInstance
+// CHECK-NEXT: (const <unnamed-type-UnnamedClassInstance>) UnnamedClassInstance = {
+// CHECK-NEXT:   (int) x = 12
+// CHECK-NEXT:   (EBO) EBOC = {
+// CHECK-NEXT:     (int) Member = 42
+// CHECK-NEXT:   }
+// CHECK-NEXT: }
+
+constexpr Pointers PointersInstance;
+// CHECK:      (lldb) target variable -T PointersInstance
+// CHECK-NEXT: (const Pointers) PointersInstance = {
+// CHECK-NEXT:   (void *) a = {{.*}}
+// CHECK-NEXT:   (char *) b = {{.*}}
+// CHECK-NEXT:   (bool *) c = {{.*}}
+// CHECK-NEXT:   (short *) e = {{.*}}
+// CHECK-NEXT:   (unsigned short *) f = {{.*}}
+// CHECK-NEXT:   (unsigned int *) g = {{.*}}
+// CHECK-NEXT:   (int *) h = {{.*}}
+// CHECK-NEXT:   (unsigned long *) i = {{.*}}
+// CHECK-NEXT:   (long *) j = {{.*}}
+// CHECK-NEXT:   (float *) k = {{.*}}
+// CHECK-NEXT:   (EnumType *) l = {{.*}}
+// CHECK-NEXT:   (double *) m = {{.*}}
+// CHECK-NEXT:   (unsigned long long *) n = {{.*}}
+// CHECK-NEXT:   (long long *) o = {{.*}}
+// CHECK-NEXT: }
+constexpr References ReferencesInstance;
+// CHECK:      (lldb) target variable -T ReferencesInstance
+// CHECK-NEXT: (const References) ReferencesInstance = {
+// CHECK-NEXT:   (char &) a = {{.*}}
+// CHECK-NEXT:   (bool &) b = {{.*}}
+// CHECK-NEXT:   (short &) c = {{.*}}
+// CHECK-NEXT:   (unsigned short &) d = {{.*}}
+// CHECK-NEXT:   (unsigned int &) e = {{.*}}
+// CHECK-NEXT:   (int &) f = {{.*}}
+// CHECK-NEXT:   (unsigned long &) g = {{.*}}
+// CHECK-NEXT:   (long &) h = {{.*}}
+// CHECK-NEXT:   (float &) i = {{.*}}
+// CHECK-NEXT:   (EnumType &) j = {{.*}}
+// CHECK-NEXT:   (double &) k = {{.*}}
+// CHECK-NEXT:   (unsigned long long &) l = {{.*}}
+// CHECK-NEXT:   (long long &) m = {{.*}}
+// CHECK-NEXT: }
+
+// CHECK: Dumping clang ast for 1 modules.
+// CHECK: TranslationUnitDecl {{.*}}
+// CHECK: |-CXXRecordDecl {{.*}} class ClassWithPadding definition
+// CHECK: | |-FieldDecl {{.*}} a 'char'
+// CHECK: | |-FieldDecl {{.*}} b 'short'
+// CHECK: | |-FieldDecl {{.*}} c 'char [2]'
+// CHECK: | |-FieldDecl {{.*}} d 'int'
+// CHECK: | |-FieldDecl {{.*}} e 'char'
+// CHECK: | |-FieldDecl {{.*}} f 'int'
+// CHECK: | |-FieldDecl {{.*}} g 'long long'
+// CHECK: | |-FieldDecl {{.*}} h 'char [3]'
+// CHECK: | |-FieldDecl {{.*}} i 'long long'
+// CHECK: | |-FieldDecl {{.*}} j 'char [2]'
+// CHECK: | |-FieldDecl {{.*}} k 'long long'
+// CHECK: | |-FieldDecl {{.*}} l 'char'
+// CHECK: | `-FieldDecl {{.*}} m 'long long'
+// CHECK: |-VarDecl {{.*}} ClassWithPaddingInstance 'const ClassWithPadding'
+// CHECK: |-CXXRecordDecl {{.*}} class ClassNoPadding definition
+// CHECK: | |-FieldDecl {{.*}} a 'unsigned char'
+// CHECK: | |-FieldDecl {{.*}} b 'char'
+// CHECK: | |-FieldDecl {{.*}} c 'bool'
+// CHECK: | |-FieldDecl {{.*}} d 'bool'
+// CHECK: | |-FieldDecl {{.*}} e 'short'
+// CHECK: | |-FieldDecl {{.*}} f 'unsigned short'
+// CHECK: | |-FieldDecl {{.*}} g 'unsigned int'
+// CHECK: | |-FieldDecl {{.*}} h 'int'
+// CHECK: | |-FieldDecl {{.*}} i 'unsigned long'
+// CHECK: | |-FieldDecl {{.*}} j 'long'
+// CHECK: | |-FieldDecl {{.*}} k 'float'
+// CHECK: | |-FieldDecl {{.*}} l 'EnumType'
+// CHECK: | |-FieldDecl {{.*}} m 'double'
+// CHECK: | |-FieldDecl {{.*}} n 'unsigned long long'
+// CHECK: | |-FieldDecl {{.*}} o 'long long'
+// CHECK: | `-FieldDecl {{.*}} p 'int [5]'
+// CHECK: |-VarDecl {{.*}} ClassNoPaddingInstance 'const ClassNoPadding'
+// CHECK: |-EnumDecl {{.*}} EnumType
+// CHECK: | |-EnumConstantDecl {{.*}} A 'EnumType'
+// CHECK: | `-EnumConstantDecl {{.*}} B 'EnumType'
+// CHECK: |-CXXRecordDecl {{.*}} struct DerivedClass definition
+// CHECK: | |-public 'BaseClass<int>'
+// CHECK: | |-FieldDecl {{.*}} DerivedMember 'int'
+// CHECK: | `-CXXConstructorDecl {{.*}} DerivedClass 'void (int, int)'
+// CHECK: |   |-ParmVarDecl {{.*}} 'int'
+// CHECK: |   `-ParmVarDecl {{.*}} 'int'
+// CHECK: |-VarDecl {{.*}} DC 'const DerivedClass'
+// CHECK: |-CXXRecordDecl {{.*}} struct BaseClass<int> definition
+// CHECK: | |-FieldDecl {{.*}} BaseMember 'int'
+// CHECK: | `-CXXMethodDecl {{.*}} BaseClass 'void (int)'
+// CHECK: |   `-ParmVarDecl {{.*}} 'int'
+// CHECK: |-CXXRecordDecl {{.*}} struct EBO definition
+// CHECK: | |-public 'EmptyBase'
+// CHECK: | |-FieldDecl {{.*}} Member 'int'
+// CHECK: | `-CXXConstructorDecl {{.*}} EBO 'void (int)'
+// CHECK: |   `-ParmVarDecl {{.*}} 'int'
+// CHECK: |-VarDecl {{.*}} EBOC 'const EBO'
+// CHECK: |-CXXRecordDecl {{.*}} struct EmptyBase definition
+// CHECK: |-CXXRecordDecl {{.*}} struct PaddedBases definition
+// CHECK: | |-public 'BaseClass<char>'
+// CHECK: | |-public 'BaseClass<short>'
+// CHECK: | |-public 'BaseClass<int>'
+// CHECK: | |-FieldDecl {{.*}} DerivedMember 'long long'
+// CHECK: | `-CXXConstructorDecl {{.*}} PaddedBases 'void (char, short, int, long long)'
+// CHECK: |   |-ParmVarDecl {{.*}} 'char'
+// CHECK: |   |-ParmVarDecl {{.*}} 'short'
+// CHECK: |   |-ParmVarDecl {{.*}} 'int'
+// CHECK: |   `-ParmVarDecl {{.*}} 'long long'
+// CHECK: |-VarDecl {{.*}} PBC 'const PaddedBases'
+// CHECK: |-CXXRecordDecl {{.*}} struct BaseClass<char> definition
+// CHECK: | |-FieldDecl {{.*}} BaseMember 'int'
+// CHECK: | `-CXXMethodDecl {{.*}} BaseClass 'void (int)'
+// CHECK: |   `-ParmVarDecl {{.*}} 'int'
+// CHECK: |-CXXRecordDecl {{.*}} struct BaseClass<short> definition
+// CHECK: | |-FieldDecl {{.*}} BaseMember 'int'
+// CHECK: | `-CXXMethodDecl {{.*}} BaseClass 'void (int)'
+// CHECK: |   `-ParmVarDecl {{.*}} 'int'
+// CHECK: |-CXXRecordDecl {{.*}} struct <unnamed-type-UnnamedClassInstance> definition
+// CHECK: | |-FieldDecl {{.*}} x 'int'
+// CHECK: | `-FieldDecl {{.*}} EBOC 'EBO'
+// CHECK: |-VarDecl {{.*}} UnnamedClassInstance 'const <unnamed-type-UnnamedClassInstance>'
+// CHECK: |-CXXRecordDecl {{.*}} struct Pointers definition
+// CHECK: | |-FieldDecl {{.*}} a 'void *'
+// CHECK: | |-FieldDecl {{.*}} b 'char *'
+// CHECK: | |-FieldDecl {{.*}} c 'bool *'
+// CHECK: | |-FieldDecl {{.*}} e 'short *'
+// CHECK: | |-FieldDecl {{.*}} f 'unsigned short *'
+// CHECK: | |-FieldDecl {{.*}} g 'unsigned int *'
+// CHECK: | |-FieldDecl {{.*}} h 'int *'
+// CHECK: | |-FieldDecl {{.*}} i 'unsigned long *'
+// CHECK: | |-FieldDecl {{.*}} j 'long *'
+// CHECK: | |-FieldDecl {{.*}} k 'float *'
+// CHECK: | |-FieldDecl {{.*}} l 'EnumType *'
+// CHECK: | |-FieldDecl {{.*}} m 'double *'
+// CHECK: | |-FieldDecl {{.*}} n 'unsigned long long *'
+// CHECK: | `-FieldDecl {{.*}} o 'long long *'
+// CHECK: |-VarDecl {{.*}} PointersInstance 'const Pointers'
+// CHECK: |-CXXRecordDecl {{.*}} struct References definition
+// CHECK: | |-FieldDecl {{.*}} a 'char &'
+// CHECK: | |-FieldDecl {{.*}} b 'bool &'
+// CHECK: | |-FieldDecl {{.*}} c 'short &'
+// CHECK: | |-FieldDecl {{.*}} d 'unsigned short &'
+// CHECK: | |-FieldDecl {{.*}} e 'unsigned int &'
+// CHECK: | |-FieldDecl {{.*}} f 'int &'
+// CHECK: | |-FieldDecl {{.*}} g 'unsigned long &'
+// CHECK: | |-FieldDecl {{.*}} h 'long &'
+// CHECK: | |-FieldDecl {{.*}} i 'float &'
+// CHECK: | |-FieldDecl {{.*}} j 'EnumType &'
+// CHECK: | |-FieldDecl {{.*}} k 'double &'
+// CHECK: | |-FieldDecl {{.*}} l 'unsigned long long &'
+// CHECK: | `-FieldDecl {{.*}} m 'long long &'
+// CHECK: `-VarDecl {{.*}} ReferencesInstance 'const References'
+
+int main(int argc, char **argv) {
+  return 0;
+}

Added: lldb/trunk/lit/SymbolFile/NativePDB/globals-bss.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/globals-bss.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/globals-bss.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/globals-bss.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,34 @@
+// clang-format off
+// REQUIRES: lld
+
+// Make sure we can read variables from BSS
+// RUN: %build --compiler=clang-cl --nodefaultlib -o %t.exe -- %s 
+// RUN: llvm-readobj -s %t.exe | FileCheck --check-prefix=BSS %s
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+// RUN:     %p/Inputs/globals-bss.lldbinit 2>&1 | FileCheck %s
+
+int GlobalVariable = 0;
+
+int main(int argc, char **argv) {
+  return 0;
+}
+
+// BSS:       Section {
+// BSS:         Number: 3
+// BSS:         Name: .data
+// BSS-NEXT:    VirtualSize: 0x4
+// BSS-NEXT:    VirtualAddress:
+// BSS-NEXT:    RawDataSize: 0
+// BSS-NEXT:    PointerToRawData: 0x0
+// BSS-NEXT:    PointerToRelocations: 0x0
+// BSS-NEXT:    PointerToLineNumbers: 0x0
+// BSS-NEXT:    RelocationCount: 0
+// BSS-NEXT:    LineNumberCount: 0
+// BSS-NEXT:    Characteristics [ (0xC0000040)
+// BSS-NEXT:      IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
+// BSS-NEXT:      IMAGE_SCN_MEM_READ (0x40000000)
+// BSS-NEXT:      IMAGE_SCN_MEM_WRITE (0x80000000)
+// BSS-NEXT:    ]
+// BSS-NEXT:  }
+
+// CHECK: (int) GlobalVariable = 0

Added: lldb/trunk/lit/SymbolFile/NativePDB/globals-fundamental.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/globals-fundamental.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/globals-fundamental.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/globals-fundamental.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,879 @@
+// clang-format off
+// REQUIRES: lld
+
+// Test that we can display tag types.
+// RUN: %build --compiler=clang-cl --nodefaultlib -o %t.exe -- %s 
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+// RUN:     %p/Inputs/globals-fundamental.lldbinit | FileCheck %s
+
+
+// Fundamental data types
+bool BFalse = false;
+// CHECK: (lldb) target variable BFalse
+// CHECK-NEXT: (bool) BFalse = false
+bool BTrue = true;
+// CHECK-NEXT: (lldb) target variable BTrue
+// CHECK-NEXT: (bool) BTrue = true
+char CA = 'A';
+// CHECK-NEXT: (lldb) target variable CA
+// CHECK-NEXT: (char) CA = 'A'
+char CZ = 'Z';
+// CHECK-NEXT: (lldb) target variable CZ
+// CHECK-NEXT: (char) CZ = 'Z'
+signed char SCa = 'a';
+// CHECK-NEXT: (lldb) target variable SCa
+// CHECK-NEXT: (signed char) SCa = 'a'
+signed char SCz = 'z';
+// CHECK-NEXT: (lldb) target variable SCz
+// CHECK-NEXT: (signed char) SCz = 'z'
+unsigned char UC24 = 24;
+// CHECK-NEXT: (lldb) target variable UC24
+// CHECK-NEXT: (unsigned char) UC24 = '\x18'
+unsigned char UC42 = 42;
+// CHECK-NEXT: (lldb) target variable UC42
+// CHECK-NEXT: (unsigned char) UC42 = '*'
+char16_t C16_24 = u'\24';
+// CHECK-NEXT: (lldb) target variable C16_24
+// CHECK-NEXT: (char16_t) C16_24 = U+0014
+char32_t C32_42 = U'\42';
+// CHECK-NEXT: (lldb) target variable C32_42
+// CHECK-NEXT: (char32_t) C32_42 = U+0x00000022
+wchar_t WC1 = L'1';
+// CHECK-NEXT: (lldb) target variable WC1
+// CHECK-NEXT: (wchar_t) WC1 = L'1'
+wchar_t WCP = L'P';
+// CHECK-NEXT: (lldb) target variable WCP
+// CHECK-NEXT: (wchar_t) WCP = L'P'
+short SMax = 32767;
+// CHECK-NEXT: (lldb) target variable SMax
+// CHECK-NEXT: (short) SMax = 32767
+short SMin = -32768;
+// CHECK-NEXT: (lldb) target variable SMin
+// CHECK-NEXT: (short) SMin = -32768
+unsigned short USMax = 65535;
+// CHECK-NEXT: (lldb) target variable USMax
+// CHECK-NEXT: (unsigned short) USMax = 65535
+unsigned short USMin = 0;
+// CHECK-NEXT: (lldb) target variable USMin
+// CHECK-NEXT: (unsigned short) USMin = 0
+int IMax = 2147483647;
+// CHECK-NEXT: (lldb) target variable IMax
+// CHECK-NEXT: (int) IMax = 2147483647
+int IMin = -2147483648;
+// CHECK-NEXT: (lldb) target variable IMin
+// CHECK-NEXT: (int) IMin = -2147483648
+unsigned int UIMax = 4294967295;
+// CHECK-NEXT: (lldb) target variable UIMax
+// CHECK-NEXT: (unsigned int) UIMax = 4294967295
+unsigned int UIMin = 0;
+// CHECK-NEXT: (lldb) target variable UIMin
+// CHECK-NEXT: (unsigned int) UIMin = 0
+long LMax = 2147483647;
+// CHECK-NEXT: (lldb) target variable LMax
+// CHECK-NEXT: (long) LMax = 2147483647
+long LMin = -2147483648;
+// CHECK-NEXT: (lldb) target variable LMin
+// CHECK-NEXT: (long) LMin = -2147483648
+unsigned long ULMax = 4294967295;
+// CHECK-NEXT: (lldb) target variable ULMax
+// CHECK-NEXT: (unsigned long) ULMax = 4294967295
+unsigned long ULMin = 0;
+// CHECK-NEXT: (lldb) target variable ULMin
+// CHECK-NEXT: (unsigned long) ULMin = 0
+long long LLMax = 9223372036854775807LL;
+// CHECK-NEXT: (lldb) target variable LLMax
+// CHECK-NEXT: (long long) LLMax = 9223372036854775807
+long long LLMin = -9223372036854775807i64 - 1;
+// CHECK-NEXT: (lldb) target variable LLMin
+// CHECK-NEXT: (long long) LLMin = -9223372036854775808
+unsigned long long ULLMax = 18446744073709551615ULL;
+// CHECK-NEXT: (lldb) target variable ULLMax
+// CHECK-NEXT: (unsigned long long) ULLMax = 18446744073709551615
+unsigned long long ULLMin = 0;
+// CHECK-NEXT: (lldb) target variable ULLMin
+// CHECK-NEXT: (unsigned long long) ULLMin = 0
+float F = 3.1415f;
+// CHECK-NEXT: (lldb) target variable F
+// CHECK-NEXT: (float) F = 3.1415
+double D = 3.1415;
+// CHECK-NEXT: (lldb) target variable D
+// CHECK-NEXT: (double) D = 3.1415
+
+const bool CBFalse = false;
+// CHECK-NEXT: (lldb) target variable CBFalse
+// CHECK-NEXT: (const bool) CBFalse = false
+const bool CBTrue = true;
+// CHECK-NEXT: (lldb) target variable CBTrue
+// CHECK-NEXT: (const bool) CBTrue = true
+const char CCA = 'A';
+// CHECK-NEXT: (lldb) target variable CCA
+// CHECK-NEXT: (const char) CCA = 'A'
+const char CCZ = 'Z';
+// CHECK-NEXT: (lldb) target variable CCZ
+// CHECK-NEXT: (const char) CCZ = 'Z'
+const signed char CSCa = 'a';
+// CHECK-NEXT: (lldb) target variable CSCa
+// CHECK-NEXT: (const signed char) CSCa = 'a'
+const signed char CSCz = 'z';
+// CHECK-NEXT: (lldb) target variable CSCz
+// CHECK-NEXT: (const signed char) CSCz = 'z'
+const unsigned char CUC24 = 24;
+// CHECK-NEXT: (lldb) target variable CUC24
+// CHECK-NEXT: (const unsigned char) CUC24 = '\x18'
+const unsigned char CUC42 = 42;
+// CHECK-NEXT: (lldb) target variable CUC42
+// CHECK-NEXT: (const unsigned char) CUC42 = '*'
+const char16_t CC16_24 = u'\24';
+// CHECK-NEXT: (lldb) target variable CC16_24
+// CHECK-NEXT: (const char16_t) CC16_24 = U+0014
+const char32_t CC32_42 = U'\42';
+// CHECK-NEXT: (lldb) target variable CC32_42
+// CHECK-NEXT: (const char32_t) CC32_42 = U+0x00000022
+const wchar_t CWC1 = L'1';
+// CHECK-NEXT: (lldb) target variable CWC1
+// CHECK-NEXT: (const wchar_t) CWC1 = L'1'
+const wchar_t CWCP = L'P';
+// CHECK-NEXT: (lldb) target variable CWCP
+// CHECK-NEXT: (const wchar_t) CWCP = L'P'
+const short CSMax = 32767;
+// CHECK-NEXT: (lldb) target variable CSMax
+// CHECK-NEXT: (const short) CSMax = 32767
+const short CSMin = -32768;
+// CHECK-NEXT: (lldb) target variable CSMin
+// CHECK-NEXT: (const short) CSMin = -32768
+const unsigned short CUSMax = 65535;
+// CHECK-NEXT: (lldb) target variable CUSMax
+// CHECK-NEXT: (const unsigned short) CUSMax = 65535
+const unsigned short CUSMin = 0;
+// CHECK-NEXT: (lldb) target variable CUSMin
+// CHECK-NEXT: (const unsigned short) CUSMin = 0
+const int CIMax = 2147483647;
+// CHECK-NEXT: (lldb) target variable CIMax
+// CHECK-NEXT: (const int) CIMax = 2147483647
+const int CIMin = -2147483648;
+// CHECK-NEXT: (lldb) target variable CIMin
+// CHECK-NEXT: (const int) CIMin = -2147483648
+const unsigned int CUIMax = 4294967295;
+// CHECK-NEXT: (lldb) target variable CUIMax
+// CHECK-NEXT: (const unsigned int) CUIMax = 4294967295
+const unsigned int CUIMin = 0;
+// CHECK-NEXT: (lldb) target variable CUIMin
+// CHECK-NEXT: (const unsigned int) CUIMin = 0
+const long CLMax = 2147483647;
+// CHECK-NEXT: (lldb) target variable CLMax
+// CHECK-NEXT: (const long) CLMax = 2147483647
+const long CLMin = -2147483648;
+// CHECK-NEXT: (lldb) target variable CLMin
+// CHECK-NEXT: (const long) CLMin = -2147483648
+const unsigned long CULMax = 4294967295;
+// CHECK-NEXT: (lldb) target variable CULMax
+// CHECK-NEXT: (const unsigned long) CULMax = 4294967295
+const unsigned long CULMin = 0;
+// CHECK-NEXT: (lldb) target variable CULMin
+// CHECK-NEXT: (const unsigned long) CULMin = 0
+const long long CLLMax = 9223372036854775807i64;
+// CHECK-NEXT: (lldb) target variable CLLMax
+// CHECK-NEXT: (const long long) CLLMax = 9223372036854775807
+const long long CLLMin = -9223372036854775807i64 - 1;
+// CHECK-NEXT: (lldb) target variable CLLMin
+// CHECK-NEXT: (const long long) CLLMin = -9223372036854775808
+const unsigned long long CULLMax = 18446744073709551615ULL;
+// CHECK-NEXT: (lldb) target variable CULLMax
+// CHECK-NEXT: (const unsigned long long) CULLMax = 18446744073709551615
+const unsigned long long CULLMin = 0;
+// CHECK-NEXT: (lldb) target variable CULLMin
+// CHECK-NEXT: (const unsigned long long) CULLMin = 0
+const float CF = 3.1415f;
+// CHECK-NEXT: (lldb) target variable CF
+// CHECK-NEXT: (const float) CF = 3.1415
+const double CD = 3.1415;
+// CHECK-NEXT: (lldb) target variable CD
+// CHECK-NEXT: (const double) CD = 3.1415
+
+// constexpr fundamental data types.
+constexpr bool ConstexprBFalse = false;
+// CHECK-NEXT: (lldb) target variable ConstexprBFalse
+// CHECK-NEXT: (const bool) ConstexprBFalse = false
+constexpr bool ConstexprBTrue = true;
+// CHECK-NEXT: (lldb) target variable ConstexprBTrue
+// CHECK-NEXT: (const bool) ConstexprBTrue = true
+constexpr char ConstexprCA = 'A';
+// CHECK-NEXT: (lldb) target variable ConstexprCA
+// CHECK-NEXT: (const char) ConstexprCA = 'A'
+constexpr char ConstexprCZ = 'Z';
+// CHECK-NEXT: (lldb) target variable ConstexprCZ
+// CHECK-NEXT: (const char) ConstexprCZ = 'Z'
+constexpr signed char ConstexprSCa = 'a';
+// CHECK-NEXT: (lldb) target variable ConstexprSCa
+// CHECK-NEXT: (const signed char) ConstexprSCa = 'a'
+constexpr signed char ConstexprSCz = 'z';
+// CHECK-NEXT: (lldb) target variable ConstexprSCz
+// CHECK-NEXT: (const signed char) ConstexprSCz = 'z'
+constexpr unsigned char ConstexprUC24 = 24;
+// CHECK-NEXT: (lldb) target variable ConstexprUC24
+// CHECK-NEXT: (const unsigned char) ConstexprUC24 = '\x18'
+constexpr unsigned char ConstexprUC42 = 42;
+// CHECK-NEXT: (lldb) target variable ConstexprUC42
+// CHECK-NEXT: (const unsigned char) ConstexprUC42 = '*'
+constexpr char16_t ConstexprC16_24 = u'\24';
+// CHECK-NEXT: (lldb) target variable ConstexprC16_24
+// CHECK-NEXT: (const char16_t) ConstexprC16_24 = U+0014
+constexpr char32_t ConstexprC32_42 = U'\42';
+// CHECK-NEXT: (lldb) target variable ConstexprC32_42
+// CHECK-NEXT: (const char32_t) ConstexprC32_42 = U+0x00000022
+constexpr wchar_t ConstexprWC1 = L'1';
+// CHECK-NEXT: (lldb) target variable ConstexprWC1
+// CHECK-NEXT: (const wchar_t) ConstexprWC1 = L'1'
+constexpr wchar_t ConstexprWCP = L'P';
+// CHECK-NEXT: (lldb) target variable ConstexprWCP
+// CHECK-NEXT: (const wchar_t) ConstexprWCP = L'P'
+constexpr short ConstexprSMax = 32767;
+// CHECK-NEXT: (lldb) target variable ConstexprSMax
+// CHECK-NEXT: (const short) ConstexprSMax = 32767
+constexpr short ConstexprSMin = -32768;
+// CHECK-NEXT: (lldb) target variable ConstexprSMin
+// CHECK-NEXT: (const short) ConstexprSMin = -32768
+constexpr unsigned short ConstexprUSMax = 65535;
+// CHECK-NEXT: (lldb) target variable ConstexprUSMax
+// CHECK-NEXT: (const unsigned short) ConstexprUSMax = 65535
+constexpr unsigned short ConstexprUSMin = 0;
+// CHECK-NEXT: (lldb) target variable ConstexprUSMin
+// CHECK-NEXT: (const unsigned short) ConstexprUSMin = 0
+constexpr int ConstexprIMax = 2147483647;
+// CHECK-NEXT: (lldb) target variable ConstexprIMax
+// CHECK-NEXT: (const int) ConstexprIMax = 2147483647
+constexpr int ConstexprIMin = -2147483648;
+// CHECK-NEXT: (lldb) target variable ConstexprIMin
+// CHECK-NEXT: (const int) ConstexprIMin = -2147483648
+constexpr unsigned int ConstexprUIMax = 4294967295;
+// CHECK-NEXT: (lldb) target variable ConstexprUIMax
+// CHECK-NEXT: (const unsigned int) ConstexprUIMax = 4294967295
+constexpr unsigned int ConstexprUIMin = 0;
+// CHECK-NEXT: (lldb) target variable ConstexprUIMin
+// CHECK-NEXT: (const unsigned int) ConstexprUIMin = 0
+constexpr long ConstexprLMax = 2147483647;
+// CHECK-NEXT: (lldb) target variable ConstexprLMax
+// CHECK-NEXT: (const long) ConstexprLMax = 2147483647
+constexpr long ConstexprLMin = -2147483648;
+// CHECK-NEXT: (lldb) target variable ConstexprLMin
+// CHECK-NEXT: (const long) ConstexprLMin = -2147483648
+constexpr unsigned long ConstexprULMax = 4294967295;
+// CHECK-NEXT: (lldb) target variable ConstexprULMax
+// CHECK-NEXT: (const unsigned long) ConstexprULMax = 4294967295
+constexpr unsigned long ConstexprULMin = 0;
+// CHECK-NEXT: (lldb) target variable ConstexprULMin
+// CHECK-NEXT: (const unsigned long) ConstexprULMin = 0
+constexpr long long ConstexprLLMax = 9223372036854775807i64;
+// CHECK-NEXT: (lldb) target variable ConstexprLLMax
+// CHECK-NEXT: (const long long) ConstexprLLMax = 9223372036854775807
+constexpr long long ConstexprLLMin = -9223372036854775807i64 - 1;
+// CHECK-NEXT: (lldb) target variable ConstexprLLMin
+// CHECK-NEXT: (const long long) ConstexprLLMin = -9223372036854775808
+constexpr unsigned long long ConstexprULLMax = 18446744073709551615ULL;
+// CHECK-NEXT: (lldb) target variable ConstexprULLMax
+// CHECK-NEXT: (const unsigned long long) ConstexprULLMax = 18446744073709551615
+constexpr unsigned long long ConstexprULLMin = 0;
+// CHECK-NEXT: (lldb) target variable ConstexprULLMin
+// CHECK-NEXT: (const unsigned long long) ConstexprULLMin = 0
+constexpr float ConstexprF = 3.1415f;
+// CHECK-NEXT: (lldb) target variable ConstexprF
+// CHECK-NEXT: (const float) ConstexprF = 3.1415
+constexpr double ConstexprD = 3.1415;
+// CHECK-NEXT: (lldb) target variable ConstexprD
+// CHECK-NEXT: (const double) ConstexprD = 3.1415
+
+
+// FIXME: LLDB currently doesn't resolve pointers within the target without a
+// running process (I haven't checked whether or not it can with a running
+// process). So currently it will just print an address, which is unstable and
+// should not be relied upon for testing. So for now we're just checking that
+// the variable name and type is correct. We should fix this in LLDB and then
+// update the tests.
+bool *PBFalse = &BFalse;
+// CHECK-NEXT: (lldb) target variable PBFalse
+// CHECK-NEXT: (bool *) PBFalse = {{.*}}
+bool *PBTrue = &BTrue;
+// CHECK-NEXT: (lldb) target variable PBTrue
+// CHECK-NEXT: (bool *) PBTrue = {{.*}}
+char *PCA = &CA;
+// CHECK-NEXT: (lldb) target variable PCA
+// CHECK-NEXT: (char *) PCA = {{.*}}
+char *PCZ = &CZ;
+// CHECK-NEXT: (lldb) target variable PCZ
+// CHECK-NEXT: (char *) PCZ = {{.*}}
+signed char *PSCa = &SCa;
+// CHECK-NEXT: (lldb) target variable PSCa
+// CHECK-NEXT: (signed char *) PSCa = {{.*}}
+signed char *PSCz = &SCz;
+// CHECK-NEXT: (lldb) target variable PSCz
+// CHECK-NEXT: (signed char *) PSCz = {{.*}}
+unsigned char *PUC24 = &UC24;
+// CHECK-NEXT: (lldb) target variable PUC24
+// CHECK-NEXT: (unsigned char *) PUC24 = {{.*}}
+unsigned char *PUC42 = &UC42;
+// CHECK-NEXT: (lldb) target variable PUC42
+// CHECK-NEXT: (unsigned char *) PUC42 = {{.*}}
+char16_t *PC16_24 = &C16_24;
+// CHECK-NEXT: (lldb) target variable PC16_24
+// CHECK-NEXT: (char16_t *) PC16_24 = {{.*}}
+char32_t *PC32_42 = &C32_42;
+// CHECK-NEXT: (lldb) target variable PC32_42
+// CHECK-NEXT: (char32_t *) PC32_42 = {{.*}}
+wchar_t *PWC1 = &WC1;
+// CHECK-NEXT: (lldb) target variable PWC1
+// CHECK-NEXT: (wchar_t *) PWC1 = {{.*}}
+wchar_t *PWCP = &WCP;
+// CHECK-NEXT: (lldb) target variable PWCP
+// CHECK-NEXT: (wchar_t *) PWCP = {{.*}}
+short *PSMax = &SMax;
+// CHECK-NEXT: (lldb) target variable PSMax
+// CHECK-NEXT: (short *) PSMax = {{.*}}
+short *PSMin = &SMin;
+// CHECK-NEXT: (lldb) target variable PSMin
+// CHECK-NEXT: (short *) PSMin = {{.*}}
+unsigned short *PUSMax = &USMax;
+// CHECK-NEXT: (lldb) target variable PUSMax
+// CHECK-NEXT: (unsigned short *) PUSMax = {{.*}}
+unsigned short *PUSMin = &USMin;
+// CHECK-NEXT: (lldb) target variable PUSMin
+// CHECK-NEXT: (unsigned short *) PUSMin = {{.*}}
+int *PIMax = &IMax;
+// CHECK-NEXT: (lldb) target variable PIMax
+// CHECK-NEXT: (int *) PIMax = {{.*}}
+int *PIMin = &IMin;
+// CHECK-NEXT: (lldb) target variable PIMin
+// CHECK-NEXT: (int *) PIMin = {{.*}}
+unsigned int *PUIMax = &UIMax;
+// CHECK-NEXT: (lldb) target variable PUIMax
+// CHECK-NEXT: (unsigned int *) PUIMax = {{.*}}
+unsigned int *PUIMin = &UIMin;
+// CHECK-NEXT: (lldb) target variable PUIMin
+// CHECK-NEXT: (unsigned int *) PUIMin = {{.*}}
+long *PLMax = &LMax;
+// CHECK-NEXT: (lldb) target variable PLMax
+// CHECK-NEXT: (long *) PLMax = {{.*}}
+long *PLMin = &LMin;
+// CHECK-NEXT: (lldb) target variable PLMin
+// CHECK-NEXT: (long *) PLMin = {{.*}}
+unsigned long *PULMax = &ULMax;
+// CHECK-NEXT: (lldb) target variable PULMax
+// CHECK-NEXT: (unsigned long *) PULMax = {{.*}}
+unsigned long *PULMin = &ULMin;
+// CHECK-NEXT: (lldb) target variable PULMin
+// CHECK-NEXT: (unsigned long *) PULMin = {{.*}}
+long long *PLLMax = &LLMax;
+// CHECK-NEXT: (lldb) target variable PLLMax
+// CHECK-NEXT: (long long *) PLLMax = {{.*}}
+long long *PLLMin = &LLMin;
+// CHECK-NEXT: (lldb) target variable PLLMin
+// CHECK-NEXT: (long long *) PLLMin = {{.*}}
+unsigned long long *PULLMax = &ULLMax;
+// CHECK-NEXT: (lldb) target variable PULLMax
+// CHECK-NEXT: (unsigned long long *) PULLMax = {{.*}}
+unsigned long long *PULLMin = &ULLMin;
+// CHECK-NEXT: (lldb) target variable PULLMin
+// CHECK-NEXT: (unsigned long long *) PULLMin = {{.*}}
+float *PF = &F;
+// CHECK-NEXT: (lldb) target variable PF
+// CHECK-NEXT: (float *) PF = {{.*}}
+double *PD = &D;
+// CHECK-NEXT: (lldb) target variable PD
+// CHECK-NEXT: (double *) PD = {{.*}}
+
+// Const pointers to fundamental data types
+const bool *CPBFalse = &BFalse;
+// CHECK-NEXT: (lldb) target variable CPBFalse
+// CHECK-NEXT: (const bool *) CPBFalse = {{.*}}
+const bool *CPBTrue = &BTrue;
+// CHECK-NEXT: (lldb) target variable CPBTrue
+// CHECK-NEXT: (const bool *) CPBTrue = {{.*}}
+const char *CPCA = &CA;
+// CHECK-NEXT: (lldb) target variable CPCA
+// CHECK-NEXT: (const char *) CPCA = {{.*}}
+const char *CPCZ = &CZ;
+// CHECK-NEXT: (lldb) target variable CPCZ
+// CHECK-NEXT: (const char *) CPCZ = {{.*}}
+const signed char *CPSCa = &SCa;
+// CHECK-NEXT: (lldb) target variable CPSCa
+// CHECK-NEXT: (const signed char *) CPSCa = {{.*}}
+const signed char *CPSCz = &SCz;
+// CHECK-NEXT: (lldb) target variable CPSCz
+// CHECK-NEXT: (const signed char *) CPSCz = {{.*}}
+const unsigned char *CPUC24 = &UC24;
+// CHECK-NEXT: (lldb) target variable CPUC24
+// CHECK-NEXT: (const unsigned char *) CPUC24 = {{.*}}
+const unsigned char *CPUC42 = &UC42;
+// CHECK-NEXT: (lldb) target variable CPUC42
+// CHECK-NEXT: (const unsigned char *) CPUC42 = {{.*}}
+const char16_t *CPC16_24 = &C16_24;
+// CHECK-NEXT: (lldb) target variable CPC16_24
+// CHECK-NEXT: (const char16_t *) CPC16_24 = {{.*}}
+const char32_t *CPC32_42 = &C32_42;
+// CHECK-NEXT: (lldb) target variable CPC32_42
+// CHECK-NEXT: (const char32_t *) CPC32_42 = {{.*}}
+const wchar_t *CPWC1 = &WC1;
+// CHECK-NEXT: (lldb) target variable CPWC1
+// CHECK-NEXT: (const wchar_t *) CPWC1 = {{.*}}
+const wchar_t *CPWCP = &WCP;
+// CHECK-NEXT: (lldb) target variable CPWCP
+// CHECK-NEXT: (const wchar_t *) CPWCP = {{.*}}
+const short *CPSMax = &SMax;
+// CHECK-NEXT: (lldb) target variable CPSMax
+// CHECK-NEXT: (const short *) CPSMax = {{.*}}
+const short *CPSMin = &SMin;
+// CHECK-NEXT: (lldb) target variable CPSMin
+// CHECK-NEXT: (const short *) CPSMin = {{.*}}
+const unsigned short *CPUSMax = &USMax;
+// CHECK-NEXT: (lldb) target variable CPUSMax
+// CHECK-NEXT: (const unsigned short *) CPUSMax = {{.*}}
+const unsigned short *CPUSMin = &USMin;
+// CHECK-NEXT: (lldb) target variable CPUSMin
+// CHECK-NEXT: (const unsigned short *) CPUSMin = {{.*}}
+const int *CPIMax = &IMax;
+// CHECK-NEXT: (lldb) target variable CPIMax
+// CHECK-NEXT: (const int *) CPIMax = {{.*}}
+const int *CPIMin = &IMin;
+// CHECK-NEXT: (lldb) target variable CPIMin
+// CHECK-NEXT: (const int *) CPIMin = {{.*}}
+const unsigned int *CPUIMax = &UIMax;
+// CHECK-NEXT: (lldb) target variable CPUIMax
+// CHECK-NEXT: (const unsigned int *) CPUIMax = {{.*}}
+const unsigned int *CPUIMin = &UIMin;
+// CHECK-NEXT: (lldb) target variable CPUIMin
+// CHECK-NEXT: (const unsigned int *) CPUIMin = {{.*}}
+const long *CPLMax = &LMax;
+// CHECK-NEXT: (lldb) target variable CPLMax
+// CHECK-NEXT: (const long *) CPLMax = {{.*}}
+const long *CPLMin = &LMin;
+// CHECK-NEXT: (lldb) target variable CPLMin
+// CHECK-NEXT: (const long *) CPLMin = {{.*}}
+const unsigned long *CPULMax = &ULMax;
+// CHECK-NEXT: (lldb) target variable CPULMax
+// CHECK-NEXT: (const unsigned long *) CPULMax = {{.*}}
+const unsigned long *CPULMin = &ULMin;
+// CHECK-NEXT: (lldb) target variable CPULMin
+// CHECK-NEXT: (const unsigned long *) CPULMin = {{.*}}
+const long long *CPLLMax = &LLMax;
+// CHECK-NEXT: (lldb) target variable CPLLMax
+// CHECK-NEXT: (const long long *) CPLLMax = {{.*}}
+const long long *CPLLMin = &LLMin;
+// CHECK-NEXT: (lldb) target variable CPLLMin
+// CHECK-NEXT: (const long long *) CPLLMin = {{.*}}
+const unsigned long long *CPULLMax = &ULLMax;
+// CHECK-NEXT: (lldb) target variable CPULLMax
+// CHECK-NEXT: (const unsigned long long *) CPULLMax = {{.*}}
+const unsigned long long *CPULLMin = &ULLMin;
+// CHECK-NEXT: (lldb) target variable CPULLMin
+// CHECK-NEXT: (const unsigned long long *) CPULLMin = {{.*}}
+const float *CPF = &F;
+// CHECK-NEXT: (lldb) target variable CPF
+// CHECK-NEXT: (const float *) CPF = {{.*}}
+const double *CPD = &D;
+// CHECK-NEXT: (lldb) target variable CPD
+// CHECK-NEXT: (const double *) CPD = {{.*}}
+
+
+// References to fundamental data types
+
+bool &RBFalse = BFalse;
+// CHECK-NEXT: (lldb) target variable RBFalse
+// CHECK-NEXT: (bool &) RBFalse = {{.*}} (&::RBFalse = false)
+bool &RBTrue = BTrue;
+// CHECK-NEXT: (lldb) target variable RBTrue
+// CHECK-NEXT: (bool &) RBTrue = {{.*}} (&::RBTrue = true)
+char &RCA = CA;
+// CHECK-NEXT: (lldb) target variable RCA
+// CHECK-NEXT: (char &) RCA = {{.*}} (&::RCA = 'A')
+char &RCZ = CZ;
+// CHECK-NEXT: (lldb) target variable RCZ
+// CHECK-NEXT: (char &) RCZ = {{.*}} (&::RCZ = 'Z')
+signed char &RSCa = SCa;
+// CHECK-NEXT: (lldb) target variable RSCa
+// CHECK-NEXT: (signed char &) RSCa = {{.*}} (&::RSCa = 'a')
+signed char &RSCz = SCz;
+// CHECK-NEXT: (lldb) target variable RSCz
+// CHECK-NEXT: (signed char &) RSCz = {{.*}} (&::RSCz = 'z')
+unsigned char &RUC24 = UC24;
+// CHECK-NEXT: (lldb) target variable RUC24
+// CHECK-NEXT: (unsigned char &) RUC24 = {{.*}} (&::RUC24 = '\x18')
+unsigned char &RUC42 = UC42;
+// CHECK-NEXT: (lldb) target variable RUC42
+// CHECK-NEXT: (unsigned char &) RUC42 = {{.*}} (&::RUC42 = '*')
+short &RSMax = SMax;
+// CHECK-NEXT: (lldb) target variable RSMax
+// CHECK-NEXT: (short &) RSMax = {{.*}} (&::RSMax = 32767)
+short &RSMin = SMin;
+// CHECK-NEXT: (lldb) target variable RSMin
+// CHECK-NEXT: (short &) RSMin = {{.*}} (&::RSMin = -32768)
+unsigned short &RUSMax = USMax;
+// CHECK-NEXT: (lldb) target variable RUSMax
+// CHECK-NEXT: (unsigned short &) RUSMax = {{.*}} (&::RUSMax = 65535)
+unsigned short &RUSMin = USMin;
+// CHECK-NEXT: (lldb) target variable RUSMin
+// CHECK-NEXT: (unsigned short &) RUSMin = {{.*}} (&::RUSMin = 0)
+int &RIMax = IMax;
+// CHECK-NEXT: (lldb) target variable RIMax
+// CHECK-NEXT: (int &) RIMax = {{.*}} (&::RIMax = 2147483647)
+int &RIMin = IMin;
+// CHECK-NEXT: (lldb) target variable RIMin
+// CHECK-NEXT: (int &) RIMin = {{.*}} (&::RIMin = -2147483648)
+unsigned int &RUIMax = UIMax;
+// CHECK-NEXT: (lldb) target variable RUIMax
+// CHECK-NEXT: (unsigned int &) RUIMax = {{.*}} (&::RUIMax = 4294967295)
+unsigned int &RUIMin = UIMin;
+// CHECK-NEXT: (lldb) target variable RUIMin
+// CHECK-NEXT: (unsigned int &) RUIMin = {{.*}} (&::RUIMin = 0)
+long &RLMax = LMax;
+// CHECK-NEXT: (lldb) target variable RLMax
+// CHECK-NEXT: (long &) RLMax = {{.*}} (&::RLMax = 2147483647)
+long &RLMin = LMin;
+// CHECK-NEXT: (lldb) target variable RLMin
+// CHECK-NEXT: (long &) RLMin = {{.*}} (&::RLMin = -2147483648)
+unsigned long &RULMax = ULMax;
+// CHECK-NEXT: (lldb) target variable RULMax
+// CHECK-NEXT: (unsigned long &) RULMax = {{.*}} (&::RULMax = 4294967295)
+unsigned long &RULMin = ULMin;
+// CHECK-NEXT: (lldb) target variable RULMin
+// CHECK-NEXT: (unsigned long &) RULMin = {{.*}} (&::RULMin = 0)
+long long &RLLMax = LLMax;
+// CHECK-NEXT: (lldb) target variable RLLMax
+// CHECK-NEXT: (long long &) RLLMax = {{.*}} (&::RLLMax = 9223372036854775807)
+long long &RLLMin = LLMin;
+// CHECK-NEXT: (lldb) target variable RLLMin
+// CHECK-NEXT: (long long &) RLLMin = {{.*}} (&::RLLMin = -9223372036854775808)
+unsigned long long &RULLMax = ULLMax;
+// CHECK-NEXT: (lldb) target variable RULLMax
+// CHECK-NEXT: (unsigned long long &) RULLMax = {{.*}} (&::RULLMax = 18446744073709551615)
+unsigned long long &RULLMin = ULLMin;
+// CHECK-NEXT: (lldb) target variable RULLMin
+// CHECK-NEXT: (unsigned long long &) RULLMin = {{.*}} (&::RULLMin = 0)
+float &RF = F;
+// CHECK-NEXT: (lldb) target variable RF
+// CHECK-NEXT: (float &) RF = {{.*}} (&::RF = 3.1415)
+double &RD = D;
+// CHECK-NEXT: (lldb) target variable RD
+// CHECK-NEXT: (double &) RD = {{.*}} (&::RD = 3.1415000000000002)
+
+// const references to fundamental data types
+const bool &CRBFalse = BFalse;
+// CHECK-NEXT: (lldb) target variable CRBFalse
+// CHECK-NEXT: (const bool &) CRBFalse = {{.*}} (&::CRBFalse = false)
+const bool &CRBTrue = BTrue;
+// CHECK-NEXT: (lldb) target variable CRBTrue
+// CHECK-NEXT: (const bool &) CRBTrue = {{.*}} (&::CRBTrue = true)
+const char &CRCA = CA;
+// CHECK-NEXT: (lldb) target variable CRCA
+// CHECK-NEXT: (const char &) CRCA = {{.*}} (&::CRCA = 'A')
+const char &CRCZ = CZ;
+// CHECK-NEXT: (lldb) target variable CRCZ
+// CHECK-NEXT: (const char &) CRCZ = {{.*}} (&::CRCZ = 'Z')
+const signed char &CRSCa = SCa;
+// CHECK-NEXT: (lldb) target variable CRSCa
+// CHECK-NEXT: (const signed char &) CRSCa = {{.*}} (&::CRSCa = 'a')
+const signed char &CRSCz = SCz;
+// CHECK-NEXT: (lldb) target variable CRSCz
+// CHECK-NEXT: (const signed char &) CRSCz = {{.*}} (&::CRSCz = 'z')
+const unsigned char &CRUC24 = UC24;
+// CHECK-NEXT: (lldb) target variable CRUC24
+// CHECK-NEXT: (const unsigned char &) CRUC24 = {{.*}} (&::CRUC24 = '\x18')
+const unsigned char &CRUC42 = UC42;
+// CHECK-NEXT: (lldb) target variable CRUC42
+// CHECK-NEXT: (const unsigned char &) CRUC42 = {{.*}} (&::CRUC42 = '*')
+const short &CRSMax = SMax;
+// CHECK-NEXT: (lldb) target variable CRSMax
+// CHECK-NEXT: (const short &) CRSMax = {{.*}} (&::CRSMax = 32767)
+const short &CRSMin = SMin;
+// CHECK-NEXT: (lldb) target variable CRSMin
+// CHECK-NEXT: (const short &) CRSMin = {{.*}} (&::CRSMin = -32768)
+const unsigned short &CRUSMax = USMax;
+// CHECK-NEXT: (lldb) target variable CRUSMax
+// CHECK-NEXT: (const unsigned short &) CRUSMax = {{.*}} (&::CRUSMax = 65535)
+const unsigned short &CRUSMin = USMin;
+// CHECK-NEXT: (lldb) target variable CRUSMin
+// CHECK-NEXT: (const unsigned short &) CRUSMin = {{.*}} (&::CRUSMin = 0)
+const int &CRIMax = IMax;
+// CHECK-NEXT: (lldb) target variable CRIMax
+// CHECK-NEXT: (const int &) CRIMax = {{.*}} (&::CRIMax = 2147483647)
+const int &CRIMin = IMin;
+// CHECK-NEXT: (lldb) target variable CRIMin
+// CHECK-NEXT: (const int &) CRIMin = {{.*}} (&::CRIMin = -2147483648)
+const unsigned int &CRUIMax = UIMax;
+// CHECK-NEXT: (lldb) target variable CRUIMax
+// CHECK-NEXT: (const unsigned int &) CRUIMax = {{.*}} (&::CRUIMax = 4294967295)
+const unsigned int &CRUIMin = UIMin;
+// CHECK-NEXT: (lldb) target variable CRUIMin
+// CHECK-NEXT: (const unsigned int &) CRUIMin = {{.*}} (&::CRUIMin = 0)
+const long &CRLMax = LMax;
+// CHECK-NEXT: (lldb) target variable CRLMax
+// CHECK-NEXT: (const long &) CRLMax = {{.*}} (&::CRLMax = 2147483647)
+const long &CRLMin = LMin;
+// CHECK-NEXT: (lldb) target variable CRLMin
+// CHECK-NEXT: (const long &) CRLMin = {{.*}} (&::CRLMin = -2147483648)
+const unsigned long &CRULMax = ULMax;
+// CHECK-NEXT: (lldb) target variable CRULMax
+// CHECK-NEXT: (const unsigned long &) CRULMax = {{.*}} (&::CRULMax = 4294967295)
+const unsigned long &CRULMin = ULMin;
+// CHECK-NEXT: (lldb) target variable CRULMin
+// CHECK-NEXT: (const unsigned long &) CRULMin = {{.*}} (&::CRULMin = 0)
+const long long &CRLLMax = LLMax;
+// CHECK-NEXT: (lldb) target variable CRLLMax
+// CHECK-NEXT: (const long long &) CRLLMax = {{.*}} (&::CRLLMax = 9223372036854775807)
+const long long &CRLLMin = LLMin;
+// CHECK-NEXT: (lldb) target variable CRLLMin
+// CHECK-NEXT: (const long long &) CRLLMin = {{.*}} (&::CRLLMin = -9223372036854775808)
+const unsigned long long &CRULLMax = ULLMax;
+// CHECK-NEXT: (lldb) target variable CRULLMax
+// CHECK-NEXT: (const unsigned long long &) CRULLMax = {{.*}} (&::CRULLMax = 18446744073709551615)
+const unsigned long long &CRULLMin = ULLMin;
+// CHECK-NEXT: (lldb) target variable CRULLMin
+// CHECK-NEXT: (const unsigned long long &) CRULLMin = {{.*}} (&::CRULLMin = 0)
+const float &CRF = F;
+// CHECK-NEXT: (lldb) target variable CRF
+// CHECK-NEXT: (const float &) CRF = {{.*}} (&::CRF = 3.1415)
+const double &CRD = D;
+// CHECK-NEXT: (lldb) target variable CRD
+// CHECK-NEXT: (const double &) CRD = {{.*}} (&::CRD = 3.1415000000000002)
+
+char16_t &RC16_24 = C16_24;
+// CHECK: (lldb) target variable RC16_24
+// FIXME: (char16_t &) RC16_24 = {{.*}} (&::RC16_24 = U+0014)
+char32_t &RC32_42 = C32_42;
+// CHECK: (lldb) target variable RC32_42
+// FIXME: (char32_t &) RC32_42 = {{.*}} (&::RC32_42 = U+0x00000022)
+wchar_t &RWC1 = WC1;
+// CHECK: (lldb) target variable RWC1
+// FIXME: (wchar_t &) RWC1 = {{.*}} (&::RWC1 = L'1')
+wchar_t &RWCP = WCP;
+// CHECK: (lldb) target variable RWCP
+// FIXME: (wchar_t &) RWCP = {{.*}} (&::RWCP = L'P')
+const char16_t &CRC16_24 = C16_24;
+// CHECK: (lldb) target variable CRC16_24
+// FIXME: (const char16_t &) CRC16_24 = {{.*}} (&::CRC16_24 = U+0014)
+const char32_t &CRC32_42 = C32_42;
+// CHECK: (lldb) target variable CRC32_42
+// FIXME: (const char32_t &) CRC32_42 = {{.*}} (&::CRC32_42 = U+0x00000022)
+const wchar_t &CRWC1 = WC1;
+// CHECK: (lldb) target variable CRWC1
+// FIXME: (const wchar_t &) CRWC1 = {{.*}} (&::CRWC1 = L'1')
+const wchar_t &CRWCP = WCP;
+// CHECK: (lldb) target variable CRWCP
+// FIXME: (const wchar_t &) CRWCP = {{.*}} (&::CRWCP = L'P')
+
+
+// CHECK:      TranslationUnitDecl {{.*}}
+// CHECK-NEXT: |-VarDecl {{.*}} BFalse 'bool'
+// CHECK-NEXT: |-VarDecl {{.*}} BTrue 'bool'
+// CHECK-NEXT: |-VarDecl {{.*}} CA 'char'
+// CHECK-NEXT: |-VarDecl {{.*}} CZ 'char'
+// CHECK-NEXT: |-VarDecl {{.*}} SCa 'signed char'
+// CHECK-NEXT: |-VarDecl {{.*}} SCz 'signed char'
+// CHECK-NEXT: |-VarDecl {{.*}} UC24 'unsigned char'
+// CHECK-NEXT: |-VarDecl {{.*}} UC42 'unsigned char'
+// CHECK-NEXT: |-VarDecl {{.*}} C16_24 'char16_t'
+// CHECK-NEXT: |-VarDecl {{.*}} C32_42 'char32_t'
+// CHECK-NEXT: |-VarDecl {{.*}} WC1 'wchar_t'
+// CHECK-NEXT: |-VarDecl {{.*}} WCP 'wchar_t'
+// CHECK-NEXT: |-VarDecl {{.*}} SMax 'short'
+// CHECK-NEXT: |-VarDecl {{.*}} SMin 'short'
+// CHECK-NEXT: |-VarDecl {{.*}} USMax 'unsigned short'
+// CHECK-NEXT: |-VarDecl {{.*}} USMin 'unsigned short'
+// CHECK-NEXT: |-VarDecl {{.*}} IMax 'int'
+// CHECK-NEXT: |-VarDecl {{.*}} IMin 'int'
+// CHECK-NEXT: |-VarDecl {{.*}} UIMax 'unsigned int'
+// CHECK-NEXT: |-VarDecl {{.*}} UIMin 'unsigned int'
+// CHECK-NEXT: |-VarDecl {{.*}} LMax 'long'
+// CHECK-NEXT: |-VarDecl {{.*}} LMin 'long'
+// CHECK-NEXT: |-VarDecl {{.*}} ULMax 'unsigned long'
+// CHECK-NEXT: |-VarDecl {{.*}} ULMin 'unsigned long'
+// CHECK-NEXT: |-VarDecl {{.*}} LLMax 'long long'
+// CHECK-NEXT: |-VarDecl {{.*}} LLMin 'long long'
+// CHECK-NEXT: |-VarDecl {{.*}} ULLMax 'unsigned long long'
+// CHECK-NEXT: |-VarDecl {{.*}} ULLMin 'unsigned long long'
+// CHECK-NEXT: |-VarDecl {{.*}} F 'float'
+// CHECK-NEXT: |-VarDecl {{.*}} D 'double'
+// CHECK-NEXT: |-VarDecl {{.*}} CBFalse 'const bool'
+// CHECK-NEXT: |-VarDecl {{.*}} CBTrue 'const bool'
+// CHECK-NEXT: |-VarDecl {{.*}} CCA 'const char'
+// CHECK-NEXT: |-VarDecl {{.*}} CCZ 'const char'
+// CHECK-NEXT: |-VarDecl {{.*}} CSCa 'const signed char'
+// CHECK-NEXT: |-VarDecl {{.*}} CSCz 'const signed char'
+// CHECK-NEXT: |-VarDecl {{.*}} CUC24 'const unsigned char'
+// CHECK-NEXT: |-VarDecl {{.*}} CUC42 'const unsigned char'
+// CHECK-NEXT: |-VarDecl {{.*}} CC16_24 'const char16_t'
+// CHECK-NEXT: |-VarDecl {{.*}} CC32_42 'const char32_t'
+// CHECK-NEXT: |-VarDecl {{.*}} CWC1 'const wchar_t'
+// CHECK-NEXT: |-VarDecl {{.*}} CWCP 'const wchar_t'
+// CHECK-NEXT: |-VarDecl {{.*}} CSMax 'const short'
+// CHECK-NEXT: |-VarDecl {{.*}} CSMin 'const short'
+// CHECK-NEXT: |-VarDecl {{.*}} CUSMax 'const unsigned short'
+// CHECK-NEXT: |-VarDecl {{.*}} CUSMin 'const unsigned short'
+// CHECK-NEXT: |-VarDecl {{.*}} CIMax 'const int'
+// CHECK-NEXT: |-VarDecl {{.*}} CIMin 'const int'
+// CHECK-NEXT: |-VarDecl {{.*}} CUIMax 'const unsigned int'
+// CHECK-NEXT: |-VarDecl {{.*}} CUIMin 'const unsigned int'
+// CHECK-NEXT: |-VarDecl {{.*}} CLMax 'const long'
+// CHECK-NEXT: |-VarDecl {{.*}} CLMin 'const long'
+// CHECK-NEXT: |-VarDecl {{.*}} CULMax 'const unsigned long'
+// CHECK-NEXT: |-VarDecl {{.*}} CULMin 'const unsigned long'
+// CHECK-NEXT: |-VarDecl {{.*}} CLLMax 'const long long'
+// CHECK-NEXT: |-VarDecl {{.*}} CLLMin 'const long long'
+// CHECK-NEXT: |-VarDecl {{.*}} CULLMax 'const unsigned long long'
+// CHECK-NEXT: |-VarDecl {{.*}} CULLMin 'const unsigned long long'
+// CHECK-NEXT: |-VarDecl {{.*}} CF 'const float'
+// CHECK-NEXT: |-VarDecl {{.*}} CD 'const double'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprBFalse 'const bool'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprBTrue 'const bool'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprCA 'const char'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprCZ 'const char'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprSCa 'const signed char'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprSCz 'const signed char'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprUC24 'const unsigned char'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprUC42 'const unsigned char'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprC16_24 'const char16_t'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprC32_42 'const char32_t'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprWC1 'const wchar_t'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprWCP 'const wchar_t'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprSMax 'const short'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprSMin 'const short'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprUSMax 'const unsigned short'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprUSMin 'const unsigned short'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprIMax 'const int'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprIMin 'const int'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprUIMax 'const unsigned int'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprUIMin 'const unsigned int'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprLMax 'const long'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprLMin 'const long'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprULMax 'const unsigned long'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprULMin 'const unsigned long'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprLLMax 'const long long'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprLLMin 'const long long'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprULLMax 'const unsigned long long'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprULLMin 'const unsigned long long'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprF 'const float'
+// CHECK-NEXT: |-VarDecl {{.*}} ConstexprD 'const double'
+// CHECK-NEXT: |-VarDecl {{.*}} PBFalse 'bool *'
+// CHECK-NEXT: |-VarDecl {{.*}} PBTrue 'bool *'
+// CHECK-NEXT: |-VarDecl {{.*}} PCA 'char *'
+// CHECK-NEXT: |-VarDecl {{.*}} PCZ 'char *'
+// CHECK-NEXT: |-VarDecl {{.*}} PSCa 'signed char *'
+// CHECK-NEXT: |-VarDecl {{.*}} PSCz 'signed char *'
+// CHECK-NEXT: |-VarDecl {{.*}} PUC24 'unsigned char *'
+// CHECK-NEXT: |-VarDecl {{.*}} PUC42 'unsigned char *'
+// CHECK-NEXT: |-VarDecl {{.*}} PC16_24 'char16_t *'
+// CHECK-NEXT: |-VarDecl {{.*}} PC32_42 'char32_t *'
+// CHECK-NEXT: |-VarDecl {{.*}} PWC1 'wchar_t *'
+// CHECK-NEXT: |-VarDecl {{.*}} PWCP 'wchar_t *'
+// CHECK-NEXT: |-VarDecl {{.*}} PSMax 'short *'
+// CHECK-NEXT: |-VarDecl {{.*}} PSMin 'short *'
+// CHECK-NEXT: |-VarDecl {{.*}} PUSMax 'unsigned short *'
+// CHECK-NEXT: |-VarDecl {{.*}} PUSMin 'unsigned short *'
+// CHECK-NEXT: |-VarDecl {{.*}} PIMax 'int *'
+// CHECK-NEXT: |-VarDecl {{.*}} PIMin 'int *'
+// CHECK-NEXT: |-VarDecl {{.*}} PUIMax 'unsigned int *'
+// CHECK-NEXT: |-VarDecl {{.*}} PUIMin 'unsigned int *'
+// CHECK-NEXT: |-VarDecl {{.*}} PLMax 'long *'
+// CHECK-NEXT: |-VarDecl {{.*}} PLMin 'long *'
+// CHECK-NEXT: |-VarDecl {{.*}} PULMax 'unsigned long *'
+// CHECK-NEXT: |-VarDecl {{.*}} PULMin 'unsigned long *'
+// CHECK-NEXT: |-VarDecl {{.*}} PLLMax 'long long *'
+// CHECK-NEXT: |-VarDecl {{.*}} PLLMin 'long long *'
+// CHECK-NEXT: |-VarDecl {{.*}} PULLMax 'unsigned long long *'
+// CHECK-NEXT: |-VarDecl {{.*}} PULLMin 'unsigned long long *'
+// CHECK-NEXT: |-VarDecl {{.*}} PF 'float *'
+// CHECK-NEXT: |-VarDecl {{.*}} PD 'double *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPBFalse 'const bool *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPBTrue 'const bool *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPCA 'const char *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPCZ 'const char *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPSCa 'const signed char *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPSCz 'const signed char *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPUC24 'const unsigned char *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPUC42 'const unsigned char *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPC16_24 'const char16_t *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPC32_42 'const char32_t *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPWC1 'const wchar_t *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPWCP 'const wchar_t *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPSMax 'const short *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPSMin 'const short *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPUSMax 'const unsigned short *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPUSMin 'const unsigned short *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPIMax 'const int *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPIMin 'const int *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPUIMax 'const unsigned int *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPUIMin 'const unsigned int *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPLMax 'const long *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPLMin 'const long *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPULMax 'const unsigned long *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPULMin 'const unsigned long *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPLLMax 'const long long *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPLLMin 'const long long *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPULLMax 'const unsigned long long *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPULLMin 'const unsigned long long *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPF 'const float *'
+// CHECK-NEXT: |-VarDecl {{.*}} CPD 'const double *'
+// CHECK-NEXT: |-VarDecl {{.*}} RBFalse 'bool &'
+// CHECK-NEXT: |-VarDecl {{.*}} RBTrue 'bool &'
+// CHECK-NEXT: |-VarDecl {{.*}} RCA 'char &'
+// CHECK-NEXT: |-VarDecl {{.*}} RCZ 'char &'
+// CHECK-NEXT: |-VarDecl {{.*}} RSCa 'signed char &'
+// CHECK-NEXT: |-VarDecl {{.*}} RSCz 'signed char &'
+// CHECK-NEXT: |-VarDecl {{.*}} RUC24 'unsigned char &'
+// CHECK-NEXT: |-VarDecl {{.*}} RUC42 'unsigned char &'
+// CHECK-NEXT: |-VarDecl {{.*}} RSMax 'short &'
+// CHECK-NEXT: |-VarDecl {{.*}} RSMin 'short &'
+// CHECK-NEXT: |-VarDecl {{.*}} RUSMax 'unsigned short &'
+// CHECK-NEXT: |-VarDecl {{.*}} RUSMin 'unsigned short &'
+// CHECK-NEXT: |-VarDecl {{.*}} RIMax 'int &'
+// CHECK-NEXT: |-VarDecl {{.*}} RIMin 'int &'
+// CHECK-NEXT: |-VarDecl {{.*}} RUIMax 'unsigned int &'
+// CHECK-NEXT: |-VarDecl {{.*}} RUIMin 'unsigned int &'
+// CHECK-NEXT: |-VarDecl {{.*}} RLMax 'long &'
+// CHECK-NEXT: |-VarDecl {{.*}} RLMin 'long &'
+// CHECK-NEXT: |-VarDecl {{.*}} RULMax 'unsigned long &'
+// CHECK-NEXT: |-VarDecl {{.*}} RULMin 'unsigned long &'
+// CHECK-NEXT: |-VarDecl {{.*}} RLLMax 'long long &'
+// CHECK-NEXT: |-VarDecl {{.*}} RLLMin 'long long &'
+// CHECK-NEXT: |-VarDecl {{.*}} RULLMax 'unsigned long long &'
+// CHECK-NEXT: |-VarDecl {{.*}} RULLMin 'unsigned long long &'
+// CHECK-NEXT: |-VarDecl {{.*}} RF 'float &'
+// CHECK-NEXT: |-VarDecl {{.*}} RD 'double &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRBFalse 'const bool &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRBTrue 'const bool &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRCA 'const char &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRCZ 'const char &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRSCa 'const signed char &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRSCz 'const signed char &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRUC24 'const unsigned char &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRUC42 'const unsigned char &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRSMax 'const short &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRSMin 'const short &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRUSMax 'const unsigned short &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRUSMin 'const unsigned short &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRIMax 'const int &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRIMin 'const int &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRUIMax 'const unsigned int &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRUIMin 'const unsigned int &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRLMax 'const long &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRLMin 'const long &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRULMax 'const unsigned long &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRULMin 'const unsigned long &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRLLMax 'const long long &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRLLMin 'const long long &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRULLMax 'const unsigned long long &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRULLMin 'const unsigned long long &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRF 'const float &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRD 'const double &'
+// CHECK-NEXT: |-VarDecl {{.*}} RC16_24 'char16_t &'
+// CHECK-NEXT: |-VarDecl {{.*}} RC32_42 'char32_t &'
+// CHECK-NEXT: |-VarDecl {{.*}} RWC1 'wchar_t &'
+// CHECK-NEXT: |-VarDecl {{.*}} RWCP 'wchar_t &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRC16_24 'const char16_t &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRC32_42 'const char32_t &'
+// CHECK-NEXT: |-VarDecl {{.*}} CRWC1 'const wchar_t &'
+// CHECK-NEXT: `-VarDecl {{.*}} CRWCP 'const wchar_t &'
+
+// CHECK: (lldb) quit
+
+int main(int argc, char **argv) {
+  return CIMax;
+}

Added: lldb/trunk/lit/SymbolFile/NativePDB/local-variables.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/local-variables.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/local-variables.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/local-variables.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,161 @@
+// clang-format off
+
+// REQUIRES: system-windows
+// RUN: %build -o %t.exe -- %s
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+// RUN:     %p/Inputs/local-variables.lldbinit 2>&1 | FileCheck %s
+
+int Function(int Param1, char Param2) {
+  unsigned Local1 = Param1 + 1;
+  char Local2 = Param2 + 1;
+  ++Local1;
+  ++Local2;
+  return Local1;
+}
+
+int main(int argc, char **argv) {
+  int SomeLocal = argc * 2;
+  return Function(SomeLocal, 'a');
+}
+
+// CHECK:      (lldb) target create "{{.*}}local-variables.cpp.tmp.exe"
+// CHECK-NEXT: Current executable set to '{{.*}}local-variables.cpp.tmp.exe'
+// CHECK-NEXT: (lldb) command source -s 0 '{{.*}}local-variables.lldbinit'
+// CHECK-NEXT: Executing commands in '{{.*}}local-variables.lldbinit'.
+// CHECK-NEXT: (lldb) break set -n main
+// CHECK-NEXT: Breakpoint 1: where = local-variables.cpp.tmp.exe`main + {{.*}} at local-variables.cpp:{{.*}}, address = {{.*}}
+// CHECK-NEXT: (lldb) run a b c d e f g
+// CHECK-NEXT: Process {{.*}} stopped
+// CHECK-NEXT: * thread #1, stop reason = breakpoint 1.1
+// CHECK-NEXT:     frame #0: {{.*}} local-variables.cpp.tmp.exe`main(argc=8, argv={{.*}}) at local-variables.cpp:{{.*}}
+// CHECK-NEXT:    14   }
+// CHECK-NEXT:    15
+// CHECK-NEXT:    16   int main(int argc, char **argv) {
+// CHECK-NEXT: -> 17     int SomeLocal = argc * 2;
+// CHECK-NEXT:    18     return Function(SomeLocal, 'a');
+// CHECK-NEXT:    19   }
+// CHECK-NEXT:    20
+
+// CHECK:      Process {{.*}} launched: '{{.*}}local-variables.cpp.tmp.exe'
+// CHECK-NEXT: (lldb) p argc
+// CHECK-NEXT: (int) $0 = 8
+// CHECK-NEXT: (lldb) step
+// CHECK-NEXT: Process {{.*}} stopped
+// CHECK-NEXT: * thread #1, stop reason = step in
+// CHECK-NEXT:     frame #0: {{.*}} local-variables.cpp.tmp.exe`main(argc=8, argv={{.*}}) at local-variables.cpp:{{.*}}
+// CHECK-NEXT:    15
+// CHECK-NEXT:    16 int main(int argc, char **argv) {
+// CHECK-NEXT:    17     int SomeLocal = argc * 2;
+// CHECK-NEXT: -> 18     return Function(SomeLocal, 'a');
+// CHECK-NEXT:    19 }
+// CHECK-NEXT:    20
+
+// CHECK:      (lldb) p SomeLocal
+// CHECK-NEXT: (int) $1 = 16
+// CHECK-NEXT: (lldb) step
+// CHECK-NEXT: Process {{.*}} stopped
+// CHECK-NEXT: * thread #1, stop reason = step in
+// CHECK-NEXT:     frame #0: {{.*}} local-variables.cpp.tmp.exe`Function(Param1=16, Param2='a') at local-variables.cpp:{{.*}}
+// CHECK-NEXT:    6
+// CHECK-NEXT:    7
+// CHECK-NEXT:    8 int Function(int Param1, char Param2) {
+// CHECK-NEXT: -> 9      unsigned Local1 = Param1 + 1;
+// CHECK-NEXT:    10     char Local2 = Param2 + 1;
+// CHECK-NEXT:    11     ++Local1;
+// CHECK-NEXT:    12     ++Local2;
+
+// CHECK:      (lldb) p Param1
+// CHECK-NEXT: (int) $2 = 16
+// CHECK-NEXT: (lldb) p Param2
+// CHECK-NEXT: (char) $3 = 'a'
+// CHECK-NEXT: (lldb) step
+// CHECK-NEXT: Process {{.*}} stopped
+// CHECK-NEXT: * thread #1, stop reason = step in
+// CHECK-NEXT:     frame #0: {{.*}} local-variables.cpp.tmp.exe`Function(Param1=16, Param2='a') at local-variables.cpp:{{.*}}
+// CHECK-NEXT:    7
+// CHECK-NEXT:    8    int Function(int Param1, char Param2) {
+// CHECK-NEXT:    9      unsigned Local1 = Param1 + 1;
+// CHECK-NEXT: -> 10     char Local2 = Param2 + 1;
+// CHECK-NEXT:    11     ++Local1;
+// CHECK-NEXT:    12     ++Local2;
+// CHECK-NEXT:    13     return Local1;
+
+// CHECK:      (lldb) p Param1
+// CHECK-NEXT: (int) $4 = 16
+// CHECK-NEXT: (lldb) p Param2
+// CHECK-NEXT: (char) $5 = 'a'
+// CHECK-NEXT: (lldb) p Local1
+// CHECK-NEXT: (unsigned int) $6 = 17
+// CHECK-NEXT: (lldb) step
+// CHECK-NEXT: Process {{.*}} stopped
+// CHECK-NEXT: * thread #1, stop reason = step in
+// CHECK-NEXT:     frame #0: {{.*}} local-variables.cpp.tmp.exe`Function(Param1=16, Param2='a') at local-variables.cpp:{{.*}}
+// CHECK-NEXT:    8    int Function(int Param1, char Param2) {
+// CHECK-NEXT:    9      unsigned Local1 = Param1 + 1;
+// CHECK-NEXT:    10     char Local2 = Param2 + 1;
+// CHECK-NEXT: -> 11     ++Local1;
+// CHECK-NEXT:    12     ++Local2;
+// CHECK-NEXT:    13     return Local1;
+// CHECK-NEXT:    14   }
+
+// CHECK:      (lldb) p Param1
+// CHECK-NEXT: (int) $7 = 16
+// CHECK-NEXT: (lldb) p Param2
+// CHECK-NEXT: (char) $8 = 'a'
+// CHECK-NEXT: (lldb) p Local1
+// CHECK-NEXT: (unsigned int) $9 = 17
+// CHECK-NEXT: (lldb) p Local2
+// CHECK-NEXT: (char) $10 = 'b'
+// CHECK-NEXT: (lldb) step
+// CHECK-NEXT: Process {{.*}} stopped
+// CHECK-NEXT: * thread #1, stop reason = step in
+// CHECK-NEXT:     frame #0: {{.*}} local-variables.cpp.tmp.exe`Function(Param1=16, Param2='a') at local-variables.cpp:{{.*}}
+// CHECK-NEXT:    9      unsigned Local1 = Param1 + 1;
+// CHECK-NEXT:    10     char Local2 = Param2 + 1;
+// CHECK-NEXT:    11     ++Local1;
+// CHECK-NEXT: -> 12     ++Local2;
+// CHECK-NEXT:    13     return Local1;
+// CHECK-NEXT:    14   }
+// CHECK-NEXT:    15
+
+// CHECK:      (lldb) p Param1
+// CHECK-NEXT: (int) $11 = 16
+// CHECK-NEXT: (lldb) p Param2
+// CHECK-NEXT: (char) $12 = 'a'
+// CHECK-NEXT: (lldb) p Local1
+// CHECK-NEXT: (unsigned int) $13 = 18
+// CHECK-NEXT: (lldb) p Local2
+// CHECK-NEXT: (char) $14 = 'b'
+// CHECK-NEXT: (lldb) step
+// CHECK-NEXT: Process {{.*}} stopped
+// CHECK-NEXT: * thread #1, stop reason = step in
+// CHECK-NEXT:     frame #0: {{.*}} local-variables.cpp.tmp.exe`Function(Param1=16, Param2='a') at local-variables.cpp:{{.*}}
+// CHECK-NEXT:    10      char Local2 = Param2 + 1;
+// CHECK-NEXT:    11     ++Local1;
+// CHECK-NEXT:    12     ++Local2;
+// CHECK-NEXT: -> 13     return Local1;
+// CHECK-NEXT:    14   }
+// CHECK-NEXT:    15
+// CHECK-NEXT:    16   int main(int argc, char **argv) {
+
+// CHECK:      (lldb) p Param1
+// CHECK-NEXT: (int) $15 = 16
+// CHECK-NEXT: (lldb) p Param2
+// CHECK-NEXT: (char) $16 = 'a'
+// CHECK-NEXT: (lldb) p Local1
+// CHECK-NEXT: (unsigned int) $17 = 18
+// CHECK-NEXT: (lldb) p Local2
+// CHECK-NEXT: (char) $18 = 'c'
+// CHECK-NEXT: (lldb) continue
+// CHECK-NEXT: Process {{.*}} resuming
+// CHECK-NEXT: Process {{.*}} exited with status = 18 (0x00000012)
+
+// CHECK:      (lldb) target modules dump ast
+// CHECK-NEXT: Dumping clang ast for {{.*}} modules.
+// CHECK-NEXT: TranslationUnitDecl
+// CHECK-NEXT: |-FunctionDecl {{.*}} main 'int (int, char **)'
+// CHECK-NEXT: | |-ParmVarDecl {{.*}} argc 'int'
+// CHECK-NEXT: | `-ParmVarDecl {{.*}} argv 'char **'
+// CHECK-NEXT: `-FunctionDecl {{.*}} Function 'int (int, char)'
+// CHECK-NEXT:   |-ParmVarDecl {{.*}} Param1 'int'
+// CHECK-NEXT:   `-ParmVarDecl {{.*}} Param2 'char'

Added: lldb/trunk/lit/SymbolFile/NativePDB/nested-types.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/nested-types.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/nested-types.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/nested-types.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,153 @@
+// clang-format off
+// REQUIRES: lld
+
+// Test various interesting cases for AST reconstruction.
+// RUN: %build --compiler=clang-cl --nodefaultlib -o %t.exe -- %s 
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+// RUN:     %p/Inputs/nested-types.lldbinit 2>&1 | FileCheck %s
+
+struct S {
+  struct NestedStruct {
+    int A = 0;
+    int B = 1;
+  };
+
+  enum class NestedEnum {
+    EnumValue1 = 0,
+    EnumValue2 = 1,
+  };
+  int C = 2;
+  int D = 3;
+  using VoidPtrT = void *;
+  VoidPtrT DD = nullptr;
+};
+struct T {
+  using NestedTypedef = int;
+  using NestedTypedef2 = S;
+
+  struct NestedStruct {
+    int E = 4;
+    int F = 5;
+  };
+
+  using NestedStructAlias = NestedStruct;
+  using NST = S::NestedStruct;
+
+  NestedTypedef NT = 4;
+
+  using U = struct {
+    int G = 6;
+    int H = 7;
+  };
+};
+
+template<typename Param>
+class U {
+public:
+  // See llvm.org/pr39607.  clang-cl currently doesn't emit an important debug
+  // info record for nested template instantiations, so we can't reconstruct
+  // a proper DeclContext hierarchy for these.  As such, U<X>::V<Y> will show up
+  // in the global namespace.
+  template<typename Param>
+  struct V {
+    Param I = 8;
+    Param J = 9;
+
+    using W = T::NestedTypedef;
+    using X = U<int>;
+  };
+
+  struct W {
+    Param M = 12;
+    Param N = 13;
+  };
+  Param K = 10;
+  Param L = 11;
+  using Y = V<int>;
+  using Z = V<T>;
+};
+
+constexpr S GlobalA;
+constexpr S::NestedStruct GlobalB;
+constexpr T GlobalC;
+constexpr T::NestedStruct GlobalD;
+constexpr T::U GlobalE;
+constexpr U<int> GlobalF;
+constexpr U<int>::V<int> GlobalG;
+constexpr U<int>::W GlobalH;
+constexpr S::NestedEnum GlobalEnum = S::NestedEnum::EnumValue1;
+
+
+int main(int argc, char **argv) {
+  return 0;
+}
+
+
+
+// CHECK: (lldb) target variable -T GlobalA
+// CHECK: (const S) GlobalA = {
+// CHECK:   (int) C = 2
+// CHECK:   (int) D = 3
+// CHECK:   (void *) DD = 0x00000000
+// CHECK: }
+// CHECK: (lldb) target variable -T GlobalB
+// CHECK: (const S::NestedStruct) GlobalB = {
+// CHECK:   (int) A = 0
+// CHECK:   (int) B = 1
+// CHECK: }
+// CHECK: (lldb) target variable -T GlobalC
+// CHECK: (const T) GlobalC = {
+// CHECK:   (int) NT = 4
+// CHECK: }
+// CHECK: (lldb) target variable -T GlobalD
+// CHECK: (const T::NestedStruct) GlobalD = {
+// CHECK:   (int) E = 4
+// CHECK:   (int) F = 5
+// CHECK: }
+// CHECK: (lldb) target variable -T GlobalE
+// CHECK: (const T::U) GlobalE = {
+// CHECK:   (int) G = 6
+// CHECK:   (int) H = 7
+// CHECK: }
+// CHECK: (lldb) target variable -T GlobalF
+// CHECK: (const U<int>) GlobalF = {
+// CHECK:   (int) K = 10
+// CHECK:   (int) L = 11
+// CHECK: }
+// CHECK: (lldb) target variable -T GlobalG
+// CHECK: (const U<int>::V<int>) GlobalG = {
+// CHECK:   (int) I = 8
+// CHECK:   (int) J = 9
+// CHECK: }
+// CHECK: (lldb) target variable -T GlobalEnum
+// CHECK: (const S::NestedEnum) GlobalEnum = EnumValue1
+// CHECK: (lldb) target modules dump ast
+// CHECK: Dumping clang ast for 1 modules.
+// CHECK: TranslationUnitDecl {{.*}}
+// CHECK: |-CXXRecordDecl {{.*}} struct S definition
+// CHECK: | |-FieldDecl {{.*}} C 'int'
+// CHECK: | |-FieldDecl {{.*}} D 'int'
+// CHECK: | |-FieldDecl {{.*}} DD 'void *'
+// CHECK: | |-CXXRecordDecl {{.*}} struct NestedStruct definition
+// CHECK: | | |-FieldDecl {{.*}} A 'int'
+// CHECK: | | `-FieldDecl {{.*}} B 'int'
+// CHECK: | `-EnumDecl {{.*}} NestedEnum
+// CHECK: |   |-EnumConstantDecl {{.*}} EnumValue1 'S::NestedEnum'
+// CHECK: |   `-EnumConstantDecl {{.*}} EnumValue2 'S::NestedEnum'
+// CHECK: |-CXXRecordDecl {{.*}} struct T definition
+// CHECK: | |-FieldDecl {{.*}} NT 'int'
+// CHECK: | |-CXXRecordDecl {{.*}} struct NestedStruct definition
+// CHECK: | | |-FieldDecl {{.*}} E 'int'
+// CHECK: | | `-FieldDecl {{.*}} F 'int'
+// CHECK: | `-CXXRecordDecl {{.*}} struct U definition
+// CHECK: |   |-FieldDecl {{.*}} G 'int'
+// CHECK: |   `-FieldDecl {{.*}} H 'int'
+// CHECK: |-CXXRecordDecl {{.*}} class U<int> definition
+// CHECK: | |-FieldDecl {{.*}} K 'int'
+// CHECK: | |-FieldDecl {{.*}} L 'int'
+// CHECK: | `-CXXRecordDecl {{.*}} struct W definition
+// CHECK: |   |-FieldDecl {{.*}} M 'int'
+// CHECK: |   `-FieldDecl {{.*}} N 'int'
+// CHECK: |-CXXRecordDecl {{.*}} struct U<int>::V<int> definition
+// CHECK: | |-FieldDecl {{.*}} I 'int'
+// CHECK: | `-FieldDecl {{.*}} J 'int'

Added: lldb/trunk/lit/SymbolFile/NativePDB/s_constant.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/s_constant.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/s_constant.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/s_constant.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,115 @@
+// clang-format off
+// REQUIRES: lld
+
+// Test that we can display S_CONSTANT records.
+
+// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-win32 %p/Inputs/s_constant.s > %t.obj
+// RUN: %build --compiler=clang-cl --nodefaultlib --mode=link -o %t.exe -- %t.obj
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+// RUN:     %p/Inputs/s_constant.lldbinit | FileCheck %s
+
+// clang-cl cannot generate S_CONSTANT records, but we need to test that we can
+// handle them for compatibility with MSVC, which does emit them.  This test
+// case was generated by compiling this file with MSVC and copying the bytes
+// that they emit for S_CONSTANT records.  Then we compile the same code with
+// clang to get a .s file, and replace all S_LDATA32 records with the bytes from
+// the S_CONSTANT records.  This way we end up with a .s file that contains
+// symbol records that clang-cl won't generate.
+
+namespace A {
+namespace B {
+namespace C {
+  enum LargeUnsignedEnum : unsigned long long {
+    LUE_A = 0ULL,
+    LUE_B = 1000ULL,
+    LUE_C = 18446744073709551600ULL,
+  };
+
+  enum LargeSignedEnum : long long {
+    LSE_A = 0LL,
+    LSE_B = 9223372036854775000LL,
+    LSE_C = -9223372036854775000LL,
+  };
+
+  enum UnsignedEnum : unsigned int {
+    UE_A = 0,
+    UE_B = 1000,
+    UE_C = 4294000000,
+  };
+
+  enum SignedEnum : int {
+    SE_A = 0,
+    SE_B = 2147000000,
+    SE_C = -2147000000,
+  };
+
+  enum SmallUnsignedEnum : unsigned char {
+    SUE_A = 0,
+    SUE_B = 100,
+    SUE_C = 200,
+  };
+
+  enum SmallSignedEnum : char {
+    SSE_A = 0,
+    SSE_B = 100,
+    SSE_C = -100,
+  };
+}
+}
+}
+
+using namespace A::B::C;
+
+constexpr LargeUnsignedEnum GlobalLUEA = LUE_A;
+constexpr LargeUnsignedEnum GlobalLUEB = LUE_B;
+constexpr LargeUnsignedEnum GlobalLUEC = LUE_C;
+
+constexpr LargeSignedEnum GlobalLSEA = LSE_A;
+constexpr LargeSignedEnum GlobalLSEB = LSE_B;
+constexpr LargeSignedEnum GlobalLSEC = LSE_C;
+
+constexpr UnsignedEnum GlobalUEA = UE_A;
+constexpr UnsignedEnum GlobalUEB = UE_B;
+constexpr UnsignedEnum GlobalUEC = UE_C;
+
+constexpr SignedEnum GlobalSEA = SE_A;
+constexpr SignedEnum GlobalSEB = SE_B;
+constexpr SignedEnum GlobalSEC = SE_C;
+
+constexpr SmallUnsignedEnum GlobalSUEA = SUE_A;
+constexpr SmallUnsignedEnum GlobalSUEB = SUE_B;
+constexpr SmallUnsignedEnum GlobalSUEC = SUE_C;
+
+constexpr SmallSignedEnum GlobalSSEA = SSE_A;
+constexpr SmallSignedEnum GlobalSSEB = SSE_B;
+constexpr SmallSignedEnum GlobalSSEC = SSE_C;
+
+int main(int argc, char **argv) {
+  return 0;
+}
+
+// CHECK: (const A::B::C::LargeUnsignedEnum) GlobalLUEA = LUE_A
+// CHECK: (const A::B::C::LargeUnsignedEnum) GlobalLUEB = LUE_B
+
+// X-FAIL: Something is outputting bad debug info here, maybe cl.
+// CHECK: (const A::B::C::LargeUnsignedEnum) GlobalLUEC = {{.*}}
+
+// CHECK: (const A::B::C::LargeSignedEnum) GlobalLSEA = LSE_A
+// CHECK: (const A::B::C::LargeSignedEnum) GlobalLSEB = LSE_B
+// CHECK: (const A::B::C::LargeSignedEnum) GlobalLSEC = LSE_C
+
+// CHECK: (const A::B::C::UnsignedEnum) GlobalUEA = UE_A
+// CHECK: (const A::B::C::UnsignedEnum) GlobalUEB = UE_B
+// CHECK: (const A::B::C::UnsignedEnum) GlobalUEC = UE_C
+
+// CHECK: (const A::B::C::SignedEnum) GlobalSEA = SE_A
+// CHECK: (const A::B::C::SignedEnum) GlobalSEB = SE_B
+// CHECK: (const A::B::C::SignedEnum) GlobalSEC = SE_C
+
+// CHECK: (const A::B::C::SmallUnsignedEnum) GlobalSUEA = SUE_A
+// CHECK: (const A::B::C::SmallUnsignedEnum) GlobalSUEB = SUE_B
+// CHECK: (const A::B::C::SmallUnsignedEnum) GlobalSUEC = SUE_C
+
+// CHECK: (const A::B::C::SmallSignedEnum) GlobalSSEA = SSE_A
+// CHECK: (const A::B::C::SmallSignedEnum) GlobalSSEB = SSE_B
+// CHECK: (const A::B::C::SmallSignedEnum) GlobalSSEC = SSE_C

Added: lldb/trunk/lit/SymbolFile/NativePDB/source-list.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/source-list.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/source-list.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/source-list.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,42 @@
+// clang-format off
+// REQUIRES: lld
+
+// Test that we can set display source of functions.
+// RUN: %build --compiler=clang-cl --nodefaultlib -o %t.exe -- %s 
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+// RUN:     %p/Inputs/source-list.lldbinit | FileCheck %s
+
+
+
+// Some context lines before
+// the function.
+
+
+int main(int argc, char **argv) {
+  // Here are some comments.
+  // That we should print when listing source.
+  return 0;
+}
+
+// Some context lines after
+// the function.
+
+// check lines go at the end so that line numbers stay stable when
+// changing this file.
+
+// CHECK: (lldb) source list -n main
+// CHECK: File: {{.*}}source-list.cpp
+// CHECK:    10
+// CHECK:    11    // Some context lines before
+// CHECK:    12   // the function.
+// CHECK:    13
+// CHECK:    14
+// CHECK:    15   int main(int argc, char **argv) {
+// CHECK:    16     // Here are some comments.
+// CHECK:    17     // That we should print when listing source.
+// CHECK:    18     return 0;
+// CHECK:    19   }
+// CHECK:    20
+// CHECK:    21   // Some context lines after
+// CHECK:    22   // the function.
+// CHECK:    23

Added: lldb/trunk/lit/SymbolFile/NativePDB/stack_unwinding01.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/stack_unwinding01.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/stack_unwinding01.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/stack_unwinding01.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,42 @@
+// clang-format off
+// REQUIRES: lld, system-windows
+
+// RUN: %build --compiler=clang-cl --nodefaultlib -o %t.exe -- %s
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+// RUN:     %p/Inputs/stack_unwinding01.lldbinit 2>&1 | FileCheck %s
+
+
+struct Struct {
+  void simple_method(int a, int b) {
+     a += 1;
+     simple_method(a, b);
+  }
+};
+
+
+
+int main(int argc, char **argv) {
+  Struct s;
+  s.simple_method(1,2);
+  return 0;
+}
+
+
+// CHECK: (lldb) thread backtrace
+// CHECK-NEXT: * thread #1, stop reason = breakpoint 1.1
+// CHECK-NEXT:   * frame #0: {{.*}} stack_unwinding01.cpp.tmp.exe`Struct::simple_method at stack_unwinding01.cpp:12
+// CHECK-NEXT:     frame #1: {{.*}} stack_unwinding01.cpp.tmp.exe`main(argc={{.*}}, argv={{.*}}) at stack_unwinding01.cpp:20
+
+
+// CHECK: (lldb) thread backtrace
+// CHECK-NEXT: * thread #1, stop reason = breakpoint 1.1
+// CHECK-NEXT:   * frame #0: {{.*}} stack_unwinding01.cpp.tmp.exe`Struct::simple_method at stack_unwinding01.cpp:12
+// CHECK-NEXT:     frame #1: {{.*}} stack_unwinding01.cpp.tmp.exe`Struct::simple_method at stack_unwinding01.cpp:12
+// CHECK-NEXT:     frame #2: {{.*}} stack_unwinding01.cpp.tmp.exe`main(argc={{.*}}, argv={{.*}}) at stack_unwinding01.cpp:20
+
+// CHECK: (lldb) thread backtrace
+// CHECK-NEXT: * thread #1, stop reason = breakpoint 1.1
+// CHECK-NEXT:   * frame #0: {{.*}} stack_unwinding01.cpp.tmp.exe`Struct::simple_method at stack_unwinding01.cpp:12
+// CHECK-NEXT:     frame #1: {{.*}} stack_unwinding01.cpp.tmp.exe`Struct::simple_method at stack_unwinding01.cpp:12
+// CHECK-NEXT:     frame #2: {{.*}} stack_unwinding01.cpp.tmp.exe`Struct::simple_method at stack_unwinding01.cpp:12
+// CHECK-NEXT:     frame #3: {{.*}} stack_unwinding01.cpp.tmp.exe`main(argc={{.*}}, argv={{.*}}) at stack_unwinding01.cpp:20

Added: lldb/trunk/lit/SymbolFile/NativePDB/tag-types.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/tag-types.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/tag-types.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/tag-types.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,249 @@
+// clang-format off
+// REQUIRES: lld
+
+// Test that we can display tag types.
+// RUN: %build --compiler=clang-cl --nodefaultlib -o %t.exe -- %s
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -f %t.exe -s \
+// RUN:     %p/Inputs/tag-types.lldbinit | FileCheck %s
+
+// Test struct
+struct Struct {
+  // Test builtin types, which are represented by special CodeView type indices.
+  bool                B;
+  char                C;
+  signed char         SC;
+  unsigned char       UC;
+  char16_t            C16;
+  char32_t            C32;
+  wchar_t             WC;
+  short               S;
+  unsigned short      US;
+  int                 I;
+  unsigned int        UI;
+  long                L;
+  unsigned long       UL;
+  long long           LL;
+  unsigned long long  ULL;
+  float               F;
+  double              D;
+  long double         LD;
+};
+
+// Test class
+class Class {
+public:
+  // Test pointers to builtin types, which are represented by different special
+  // CodeView type indices.
+  bool                *PB;
+  char                *PC;
+  signed char         *PSC;
+  unsigned char       *PUC;
+  char16_t            *PC16;
+  char32_t            *PC32;
+  wchar_t             *PWC;
+  short               *PS;
+  unsigned short      *PUS;
+  int                 *PI;
+  unsigned int        *PUI;
+  long                *PL;
+  unsigned long       *PUL;
+  long long           *PLL;
+  unsigned long long  *PULL;
+  float               *PF;
+  double              *PD;
+  long double         *PLD;
+};
+
+// Test union
+union Union {
+  // Test modified types.
+  const bool                *PB;
+  const char                *PC;
+  const signed char         *PSC;
+  const unsigned char       *PUC;
+  const char16_t            *PC16;
+  const char32_t            *PC32;
+  const wchar_t             *PWC;
+  const short               *PS;
+  const unsigned short      *PUS;
+  const int                 *PI;
+  const unsigned int        *PUI;
+  const long                *PL;
+  const unsigned long       *PUL;
+  const long long           *PLL;
+  const unsigned long long  *PULL;
+  const float               *PF;
+  const double              *PD;
+  const long double         *PLD;
+};
+
+struct OneMember {
+  int N = 0;
+};
+
+
+// Test single inheritance.
+class Derived : public Class {
+public:
+  explicit Derived()
+    : Reference(*this), RefMember(Member), RValueRefMember((OneMember&&)Member) {}
+
+  // Test reference to self, to make sure we don't end up in an
+  // infinite cycle.
+  Derived &Reference;
+
+  // Test aggregate class member.
+  OneMember Member;
+
+  // And modified aggregate class member.
+  const OneMember ConstMember;
+  volatile OneMember VolatileMember;
+  const volatile OneMember CVMember;
+
+  // And all types of pointers to class members
+  OneMember *PtrMember;
+  OneMember &RefMember;
+  OneMember &&RValueRefMember;
+};
+
+// Test multiple inheritance, as well as protected and private inheritance.
+class Derived2 : protected Class, private Struct {
+public:
+  // Test static data members
+  static unsigned StaticDataMember;
+};
+
+unsigned Derived2::StaticDataMember = 0;
+
+// Test virtual inheritance.
+class DerivedVirtual1 : public virtual Class {};
+
+// Test the correctness of the virtual bases order.
+class DerivedVirtual2 : public DerivedVirtual1, public virtual OneMember {};
+
+// Test scoped enums and unscoped enums.
+enum class EnumInt {
+  A = 1,
+  B = 2
+};
+
+// Test explicit underlying types
+enum EnumShort : short {
+  ES_A = 2,
+  ES_B = 3
+};
+
+int main(int argc, char **argv) {
+  Struct S;
+  Class C;
+  Union U;
+  Derived D;
+  Derived2 D2;
+  DerivedVirtual1 DV1;
+  DerivedVirtual2 DV2;
+  EnumInt EI;
+  EnumShort ES;
+  
+  return 0;
+}
+
+// CHECK:      (lldb) target create "{{.*}}tag-types.cpp.tmp.exe"
+// CHECK-NEXT: Current executable set to '{{.*}}tag-types.cpp.tmp.exe'
+// CHECK-NEXT: (lldb) command source -s 0 '{{.*}}tag-types.lldbinit'
+// CHECK-NEXT: Executing commands in '{{.*}}tag-types.lldbinit'.
+// CHECK-NEXT: (lldb) type lookup -- Struct
+// CHECK-NEXT: struct Struct {
+// CHECK-NEXT:     bool B;
+// CHECK-NEXT:     char C;
+// CHECK-NEXT:     signed char SC;
+// CHECK-NEXT:     unsigned char UC;
+// CHECK-NEXT:     char16_t C16;
+// CHECK-NEXT:     char32_t C32;
+// CHECK-NEXT:     wchar_t WC;
+// CHECK-NEXT:     short S;
+// CHECK-NEXT:     unsigned short US;
+// CHECK-NEXT:     int I;
+// CHECK-NEXT:     unsigned int UI;
+// CHECK-NEXT:     long L;
+// CHECK-NEXT:     unsigned long UL;
+// CHECK-NEXT:     long long LL;
+// CHECK-NEXT:     unsigned long long ULL;
+// CHECK-NEXT:     float F;
+// CHECK-NEXT:     double D;
+// CHECK-NEXT:     double LD;
+// CHECK-NEXT: }
+// CHECK-NEXT: (lldb) type lookup -- Class
+// CHECK-NEXT: class Class {
+// CHECK-NEXT:     bool *PB;
+// CHECK-NEXT:     char *PC;
+// CHECK-NEXT:     signed char *PSC;
+// CHECK-NEXT:     unsigned char *PUC;
+// CHECK-NEXT:     char16_t *PC16;
+// CHECK-NEXT:     char32_t *PC32;
+// CHECK-NEXT:     wchar_t *PWC;
+// CHECK-NEXT:     short *PS;
+// CHECK-NEXT:     unsigned short *PUS;
+// CHECK-NEXT:     int *PI;
+// CHECK-NEXT:     unsigned int *PUI;
+// CHECK-NEXT:     long *PL;
+// CHECK-NEXT:     unsigned long *PUL;
+// CHECK-NEXT:     long long *PLL;
+// CHECK-NEXT:     unsigned long long *PULL;
+// CHECK-NEXT:     float *PF;
+// CHECK-NEXT:     double *PD;
+// CHECK-NEXT:     double *PLD;
+// CHECK-NEXT: }
+// CHECK-NEXT: (lldb) type lookup -- Union
+// CHECK-NEXT: union Union {
+// CHECK-NEXT:     const bool *PB;
+// CHECK-NEXT:     const char *PC;
+// CHECK-NEXT:     const signed char *PSC;
+// CHECK-NEXT:     const unsigned char *PUC;
+// CHECK-NEXT:     const char16_t *PC16;
+// CHECK-NEXT:     const char32_t *PC32;
+// CHECK-NEXT:     const wchar_t *PWC;
+// CHECK-NEXT:     const short *PS;
+// CHECK-NEXT:     const unsigned short *PUS;
+// CHECK-NEXT:     const int *PI;
+// CHECK-NEXT:     const unsigned int *PUI;
+// CHECK-NEXT:     const long *PL;
+// CHECK-NEXT:     const unsigned long *PUL;
+// CHECK-NEXT:     const long long *PLL;
+// CHECK-NEXT:     const unsigned long long *PULL;
+// CHECK-NEXT:     const float *PF;
+// CHECK-NEXT:     const double *PD;
+// CHECK-NEXT:     const double *PLD;
+// CHECK-NEXT: }
+// CHECK-NEXT: (lldb) type lookup -- Derived
+// CHECK-NEXT: class Derived : public Class {
+// CHECK:          Derived &Reference;
+// CHECK-NEXT:     OneMember Member;
+// CHECK-NEXT:     const OneMember ConstMember;
+// CHECK-NEXT:     volatile OneMember VolatileMember;
+// CHECK-NEXT:     const volatile OneMember CVMember;
+// CHECK-NEXT:     OneMember *PtrMember;
+// CHECK-NEXT:     OneMember &RefMember;
+// CHECK-NEXT:     OneMember &&RValueRefMember;
+// CHECK:      }
+// CHECK-NEXT: (lldb) type lookup -- Derived2
+// CHECK-NEXT: class Derived2 : protected Class, private Struct {
+// CHECK-NEXT:     static unsigned int StaticDataMember;
+// CHECK-NEXT: }
+// CHECK-NEXT: (lldb) type lookup -- DerivedVirtual1
+// CHECK-NEXT: class DerivedVirtual1 : virtual public Class {
+// CHECK-NEXT: }
+// CHECK-NEXT: (lldb) type lookup -- DerivedVirtual2
+// CHECK-NEXT: class DerivedVirtual2 : public DerivedVirtual1, virtual public Class, virtual public OneMember {
+// CHECK-NEXT: }
+// CHECK-NEXT: (lldb) type lookup -- EnumInt
+// CHECK-NEXT: enum EnumInt {
+// CHECK-NEXT:     A,
+// CHECK-NEXT:     B
+// CHECK-NEXT: }
+// CHECK-NEXT: (lldb) type lookup -- EnumShort
+// CHECK-NEXT: enum EnumShort {
+// CHECK-NEXT:     ES_A,
+// CHECK-NEXT:     ES_B
+// CHECK-NEXT: }
+// CHECK-NEXT: (lldb) type lookup -- InvalidType
+// CHECK-NEXT: no type was found matching 'InvalidType'

Added: lldb/trunk/lit/SymbolFile/NativePDB/typedefs.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/NativePDB/typedefs.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/NativePDB/typedefs.cpp (added)
+++ lldb/trunk/lit/SymbolFile/NativePDB/typedefs.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,71 @@
+// clang-format off
+
+// REQUIRES: system-windows
+// RUN: %build --compiler=clang-cl --nodefaultlib -o %t.exe -- %s
+// RUN: env LLDB_USE_NATIVE_PDB_READER=1 lldb-test symbols -dump-ast %t.exe | FileCheck %s
+
+namespace A {
+  namespace B {
+    using NamespaceTypedef = double;
+  }
+  template<typename T>
+  class C {
+  public:
+    using ClassTypedef = T;
+  };
+  using ClassTypedef = C<char>::ClassTypedef;
+  using ClassTypedef2 = C<wchar_t>::ClassTypedef;
+  
+  template<typename T>
+  using AliasTemplate = typename C<T>::ClassTypedef;
+}
+
+namespace {
+  using AnonNamespaceTypedef = bool;
+}
+
+using IntTypedef = int;
+
+using ULongArrayTypedef = unsigned long[10];
+
+using RefTypedef = long double*&;
+
+using FuncPtrTypedef = long long(*)(int&, unsigned char**, short[], const double, volatile bool);
+
+using VarArgsFuncTypedef = char(*)(void*, long, unsigned short, unsigned int, ...);
+
+using VarArgsFuncTypedefA = float(*)(...);
+
+int main(int argc, char **argv) {
+  long double *Ptr;
+  
+  A::B::NamespaceTypedef *X0;
+  A::C<char>::ClassTypedef *X1;
+  A::C<wchar_t>::ClassTypedef *X2;
+  AnonNamespaceTypedef *X3;
+  IntTypedef *X4;
+  ULongArrayTypedef *X5;
+  RefTypedef X6 = Ptr;
+  FuncPtrTypedef X7;
+  VarArgsFuncTypedef X8;
+  VarArgsFuncTypedefA X9;
+  A::AliasTemplate<float> X10;
+  return 0;
+}
+
+
+// CHECK:      namespace  {
+// CHECK-NEXT:     typedef bool AnonNamespaceTypedef;
+// CHECK-NEXT: }
+// CHECK-NEXT: typedef unsigned long ULongArrayTypedef[10];
+// CHECK-NEXT: typedef double *&RefTypedef;
+// CHECK-NEXT: namespace A {
+// CHECK-NEXT:     namespace B {
+// CHECK-NEXT:         typedef double NamespaceTypedef;
+// CHECK-NEXT:     }
+// CHECK-NEXT:     typedef float AliasTemplate<float>;
+// CHECK-NEXT: }
+// CHECK-NEXT: typedef long long (*FuncPtrTypedef)(int &, unsigned char **, short *, const double, volatile bool);
+// CHECK-NEXT: typedef char (*VarArgsFuncTypedef)(void *, long, unsigned short, unsigned int, ...);
+// CHECK-NEXT: typedef float (*VarArgsFuncTypedefA)(...);
+// CHECK-NEXT: typedef int IntTypedef;

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/AstRestoreTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/AstRestoreTest.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/AstRestoreTest.cpp (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/AstRestoreTest.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,55 @@
+namespace N0 {
+namespace N1 {
+
+namespace {
+enum Enum { Enum_0 = 1, Enum_1 = 2, Enum_2 = 4, Enum_3 = 8 };
+}
+
+Enum Global = Enum_3;
+
+struct Base {
+  Enum m_e = Enum_1;
+};
+
+class Class : public Base {
+public:
+  Class(Enum e) : m_ce(e) {}
+
+  static int StaticFunc(const Class &c) {
+    return c.PrivateFunc(c.m_inner) + Global + ClassStatic;
+  }
+
+  const Enum m_ce;
+
+  static int ClassStatic;
+
+private:
+  struct Inner {
+    char x;
+    short y;
+    int z;
+  };
+
+  int PrivateFunc(const Inner &i) const { return i.z; }
+
+  Inner m_inner{};
+};
+int Class::ClassStatic = 7;
+
+template<typename T>
+struct Template {
+  template<Enum E>
+  void TemplateFunc() {
+    T::StaticFunc(T(E));
+  }
+};
+
+void foo() { Template<Class>().TemplateFunc<Enum_0>(); }
+
+} // namespace N1
+} // namespace N0
+
+int main() {
+  N0::N1::foo();
+  return 0;
+}

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/CallingConventionsTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/CallingConventionsTest.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/CallingConventionsTest.cpp (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/CallingConventionsTest.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,20 @@
+int FuncCCall() { return 0; }
+auto FuncCCallPtr = &FuncCCall;
+
+int __stdcall FuncStdCall() { return 0; }
+auto FuncStdCallPtr = &FuncStdCall;
+
+int __fastcall FuncFastCall() { return 0; }
+auto FuncFastCallPtr = &FuncFastCall;
+
+int __vectorcall FuncVectorCall() { return 0; }
+auto FuncVectorCallPtr = &FuncVectorCall;
+
+struct S {
+  int FuncThisCall() { return 0; }
+};
+auto FuncThisCallPtr = &S::FuncThisCall;
+
+int main() {
+  return 0;
+}

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/ClassLayoutTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/ClassLayoutTest.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/ClassLayoutTest.cpp (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/ClassLayoutTest.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,111 @@
+// To avoid linking MSVC specific libs, we don't test virtual/override methods
+// that needs vftable support in this file.
+
+// Enum.
+enum Enum { RED, GREEN, BLUE };
+Enum EnumVar;
+
+// Union.
+union Union {
+  short Row;
+  unsigned short Col;
+  int Line : 16; // Test named bitfield.
+  short : 8;     // Unnamed bitfield symbol won't be generated in PDB.
+  long Table;
+};
+Union UnionVar;
+
+// Struct.
+struct Struct;
+typedef Struct StructTypedef;
+
+struct Struct {
+  bool A;
+  unsigned char UCharVar;
+  unsigned int UIntVar;
+  long long LongLongVar;
+  Enum EnumVar; // Test struct has UDT member.
+  int array[10];
+};
+struct Struct StructVar;
+
+struct _List; // Forward declaration.
+struct Complex {
+  struct _List *array[90];
+  struct { // Test unnamed struct. MSVC treats it as `int x`
+    int x;
+  };
+  union { // Test unnamed union. MSVC treats it as `int a; float b;`
+    int a;
+    float b;
+  };
+};
+struct Complex c;
+
+struct _List { // Test doubly linked list.
+  struct _List *current;
+  struct _List *previous;
+  struct _List *next;
+};
+struct _List ListVar;
+
+typedef struct {
+  int a;
+} UnnamedStruct; // Test unnamed typedef-ed struct.
+UnnamedStruct UnnanmedVar;
+
+// Class.
+namespace MemberTest {
+class Base {
+public:
+  Base() {}
+  ~Base() {}
+
+public:
+  int Get() { return 0; }
+
+protected:
+  int a;
+};
+class Friend {
+public:
+  int f() { return 3; }
+};
+class Class : public Base { // Test base class.
+  friend Friend;
+  static int m_static; // Test static member variable.
+public:
+  Class() : m_public(), m_private(), m_protected() {}
+  explicit Class(int a) { m_public = a; } // Test first reference of m_public.
+  ~Class() {}
+
+  static int StaticMemberFunc(int a, ...) {
+    return 1;
+  } // Test static member function.
+  int Get() { return 1; }
+  int f(Friend c) { return c.f(); }
+  inline bool operator==(const Class &rhs) const // Test operator.
+  {
+    return (m_public == rhs.m_public);
+  }
+
+public:
+  int m_public;
+  struct Struct m_struct;
+
+private:
+  Union m_union;
+  int m_private;
+
+protected:
+  friend class Friend;
+  int m_protected;
+};
+} // namespace MemberTest
+
+int main() {
+  MemberTest::Base B1;
+  B1.Get();
+  MemberTest::Class::StaticMemberFunc(1, 10, 2);
+  return 0;
+}

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/CompilandsTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/CompilandsTest.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/CompilandsTest.cpp (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/CompilandsTest.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,3 @@
+int main() {
+  return 0;
+}

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/ExpressionsTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/ExpressionsTest.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/ExpressionsTest.cpp (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/ExpressionsTest.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,20 @@
+namespace N0 {
+namespace N1 {
+
+char *buf0 = nullptr;
+char buf1[] = {0, 1, 2, 3, 4, 5, 6, 7};
+
+char sum(char *buf, int size) {
+  char result = 0;
+  for (int i = 0; i < size; i++)
+    result += buf[i];
+  return result;
+}
+
+} // namespace N1
+} // namespace N0
+
+int main() {
+  char result = N0::N1::sum(N0::N1::buf1, sizeof(N0::N1::buf1));
+  return 0;
+}

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/ExpressionsTest0.script
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/ExpressionsTest0.script?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/ExpressionsTest0.script (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/ExpressionsTest0.script Wed Oct  9 10:35:43 2019
@@ -0,0 +1,7 @@
+breakpoint set --file ExpressionsTest.cpp --line 19
+run
+print result
+print N0::N1::sum(N0::N1::buf1, sizeof(N0::N1::buf1))
+print N1::sum(N1::buf1, sizeof(N1::buf1))
+print sum(buf1, sizeof(buf1))
+print sum(buf1, 1000000000)

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/ExpressionsTest1.script
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/ExpressionsTest1.script?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/ExpressionsTest1.script (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/ExpressionsTest1.script Wed Oct  9 10:35:43 2019
@@ -0,0 +1 @@
+print sum(buf0, 1)

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/ExpressionsTest2.script
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/ExpressionsTest2.script?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/ExpressionsTest2.script (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/ExpressionsTest2.script Wed Oct  9 10:35:43 2019
@@ -0,0 +1,2 @@
+print sum(buf0, result - 28)
+print sum(buf1 + 3, 3)

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/FuncSymbols.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/FuncSymbols.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/FuncSymbols.cpp (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/FuncSymbols.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,16 @@
+// Static function
+namespace {
+static long StaticFunction(int a)
+{
+  return 2;
+}
+}
+
+// Inlined function
+static inline int InlinedFunction(long a) { return 10; }
+
+void FunctionCall()
+{
+  StaticFunction(1);
+  InlinedFunction(1);
+}

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/FuncSymbolsTestMain.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/FuncSymbolsTestMain.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/FuncSymbolsTestMain.cpp (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/FuncSymbolsTestMain.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,59 @@
+ 
+// Global functions
+int Func_arg_array(int array[]) { return 1; }
+void Func_arg_void(void) { return; }
+void Func_arg_none(void) { return; }
+void Func_varargs(...) { return; }
+
+// Class
+namespace MemberTest {
+  class A {
+  public:
+    int Func(int a, ...) { return 1; }
+  };
+}
+
+// Template
+template <int N=1, class ...T>
+void TemplateFunc(T ...Arg) {
+  return;
+}
+
+// namespace
+namespace {
+  void Func(int a, const long b, volatile bool c, ...) { return; }
+}
+
+namespace NS {
+  void Func(char a, int b) {
+    return;
+  }
+}
+
+// Static function
+static long StaticFunction(int a)
+{
+  return 2;
+}
+
+// Inlined function
+inline void InlinedFunction(long a) { return; }
+
+extern void FunctionCall();
+
+int main() {
+  MemberTest::A v1;
+  v1.Func('a',10);
+
+  Func(1, 5, true, 10, 8);
+  NS::Func('c', 2);
+
+  TemplateFunc(10);
+  TemplateFunc(10,11,88);
+
+  StaticFunction(2);
+  InlinedFunction(1);
+
+  FunctionCall();
+  return 0;
+}

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/FunctionLevelLinkingTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/FunctionLevelLinkingTest.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/FunctionLevelLinkingTest.cpp (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/FunctionLevelLinkingTest.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,9 @@
+#include "FunctionLevelLinkingTest.h"
+
+int foo() {
+  return 0;
+}
+
+int main() {
+  return foo() + bar() + baz();
+}

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/FunctionLevelLinkingTest.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/FunctionLevelLinkingTest.h?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/FunctionLevelLinkingTest.h (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/FunctionLevelLinkingTest.h Wed Oct  9 10:35:43 2019
@@ -0,0 +1,12 @@
+#ifndef FUNCTION_LEVEL_LINKING_TEST_H
+#define FUNCTION_LEVEL_LINKING_TEST_H
+
+int bar() {
+  return 0;
+}
+
+int baz() {
+  return 0;
+}
+
+#endif

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/FunctionLevelLinkingTest.ord
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/FunctionLevelLinkingTest.ord?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/FunctionLevelLinkingTest.ord (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/FunctionLevelLinkingTest.ord Wed Oct  9 10:35:43 2019
@@ -0,0 +1,4 @@
+?foo@@YAHXZ
+?bar@@YAHXZ
+main
+?baz@@YAHXZ

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/FunctionNestedBlockTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/FunctionNestedBlockTest.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/FunctionNestedBlockTest.cpp (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/FunctionNestedBlockTest.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,8 @@
+int main() {
+  auto r = 0;
+  for (auto i = 1; i <= 10; i++) {
+    r += i & 1 + (i - 1) & 1 - 1;
+  }
+
+  return r;
+}

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/PointerTypeTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/PointerTypeTest.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/PointerTypeTest.cpp (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/PointerTypeTest.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,23 @@
+int main() {
+  // Test pointer to array.
+  int array[2][4];
+  int(*array_pointer)[2][4] = &array;
+
+  struct ST {
+    int a;
+    int f(int x) { return 1; }
+  };
+
+  ST s = {10};
+
+  // Test pointer to a local.
+  int *p_int = &s.a;
+
+  // Test pointer to data member.
+  int ST::*p_member_field = &ST::a;
+
+  // Test pointer to member function.
+  int (ST::*p_member_method)(int) = &ST::f;
+
+  return 0;
+}

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/SimpleTypesTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/SimpleTypesTest.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/SimpleTypesTest.cpp (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/SimpleTypesTest.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,52 @@
+// typedef
+typedef unsigned long ULongArrayTypedef[10];
+ULongArrayTypedef ULongArrayVar;
+
+typedef long double*& RefTypedef;
+long double* LongDoublePtrVar = 0;
+RefTypedef RefVar = LongDoublePtrVar;
+
+typedef long long (*FuncPtrTypedef)(int&, unsigned char**, short[], const double, volatile bool);
+FuncPtrTypedef FuncVar;
+
+typedef char (*VarArgsFuncTypedef)(void*, long, unsigned short, unsigned int, ...);
+VarArgsFuncTypedef VarArgsFuncVar;
+
+typedef float (*VarArgsFuncTypedefA)(...);
+VarArgsFuncTypedefA VarArgsFuncVarA;
+
+// unscoped enum
+enum Enum { RED, GREEN, BLUE };
+Enum EnumVar;
+
+enum EnumConst { LOW, NORMAL = 10, HIGH };
+EnumConst EnumConstVar;
+
+enum EnumEmpty {};
+EnumEmpty EnumEmptyVar;
+
+enum EnumUChar : unsigned char { ON, OFF, AUTO };
+EnumUChar EnumCharVar;
+
+// scoped enum
+enum class EnumClass { YES, NO, DEFAULT };
+EnumClass EnumClassVar;
+
+enum struct EnumStruct { red, blue, black };
+EnumStruct EnumStructVar;
+
+typedef signed char SCharTypedef;
+SCharTypedef SCVar;
+
+typedef char16_t WChar16Typedef;
+WChar16Typedef WC16Var;
+
+typedef char32_t WChar32Typedef;
+WChar32Typedef WC32Var;
+
+typedef wchar_t WCharTypedef;
+WCharTypedef WCVar;
+
+int main() {
+  return 0;
+}

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/TypeQualsTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/TypeQualsTest.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/TypeQualsTest.cpp (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/TypeQualsTest.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,46 @@
+// Rank > 0 array
+typedef volatile int* RankNArray[10][100];
+RankNArray ArrayVar;
+
+typedef int __unaligned *UnalignedTypedef;
+UnalignedTypedef UnVar;
+
+typedef long* __restrict RestrictTypedef;
+RestrictTypedef RestrictVar;
+
+void Func1(const int* a, int const* b, const int ** const c, const int* const* d) {
+  return;
+}
+
+void Func2(volatile int* a, int volatile* b) {
+ return;
+}
+
+void Func3(int*& a, int& b, const int&c, int&& d) {
+  return;
+}
+
+void Func4(int* __unaligned a, __unaligned int* b) {
+  return;
+}
+
+void Func5(int a, int* __restrict b, int& __restrict c) {
+  return;
+}
+
+void Func6(const volatile int* __restrict b) {
+  return;
+}
+
+// LValue
+typedef int& IntRef;
+int x = 0;
+IntRef IVar = x;
+
+// RValue
+typedef int&& IIRef;
+IIRef IIVar = int(1);
+
+int main() {
+  return 0;
+}

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/UdtLayoutTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/UdtLayoutTest.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/UdtLayoutTest.cpp (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/UdtLayoutTest.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,61 @@
+struct A {
+  explicit A(int u) { _u._u3 = u; }
+  A(const A &) = default;
+  virtual ~A() = default;
+
+private:
+  union U {
+    char _u1;
+    short _u2;
+    int _u3;
+  };
+
+  A::U _u;
+};
+
+#pragma pack(push, 1)
+template <int I> struct B : public virtual A {
+  B(char a, unsigned short b, int c) : A(a + b + c), _a(a), _b(b), _c(c) {}
+
+private:
+  char _a;
+  unsigned short : 3;
+  unsigned short _b : 6;
+  unsigned short : 4;
+  int _c;
+};
+#pragma pack(pop)
+
+#pragma pack(push, 16)
+class C : private virtual B<0>, public virtual B<1>, private B<2>, public B<3> {
+public:
+  C(char x, char y, char z)
+      : A(x - y + z), B<0>(x, y, z), B<1>(x * 2, y * 2, z * 2),
+        B<2>(x * 3, y * 3, z * 3), B<3>(x * 4, y * 4, z * 4), _x(x * 5),
+        _y(y * 5), _z(z * 5) {}
+
+  static int abc;
+
+private:
+  int _x;
+  short _y;
+  char _z;
+};
+int C::abc = 123;
+#pragma pack(pop)
+
+class List {
+public:
+  List() = default;
+  List(List *p, List *n, C v) : Prev(p), Next(n), Value(v) {}
+
+private:
+  List *Prev = nullptr;
+  List *Next = nullptr;
+  C Value{1, 2, 3};
+};
+
+int main() {
+  List ls[16];
+  return 0;
+}

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/UdtLayoutTest.script
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/UdtLayoutTest.script?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/UdtLayoutTest.script (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/UdtLayoutTest.script Wed Oct  9 10:35:43 2019
@@ -0,0 +1,4 @@
+breakpoint set --file UdtLayoutTest.cpp --line 60
+run
+target variable
+frame variable

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/VBases.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/VBases.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/VBases.cpp (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/VBases.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,16 @@
+struct A {
+  char a = 1;
+};
+
+struct B {
+  int b = 2;
+};
+
+struct C : virtual A, virtual B {
+  short c = 3;
+};
+
+int main() {
+  C c{};
+  return 0;
+}

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/VBases.script
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/VBases.script?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/VBases.script (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/VBases.script Wed Oct  9 10:35:43 2019
@@ -0,0 +1,7 @@
+breakpoint set --file VBases.cpp --line 15
+
+run
+
+print c
+
+frame variable c
\ No newline at end of file

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/VariablesLocationsTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/VariablesLocationsTest.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/VariablesLocationsTest.cpp (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/VariablesLocationsTest.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,26 @@
+int g_var = 2222;
+
+void __fastcall foo(short arg_0, float arg_1) {
+  char loc_0 = 'x';
+  double loc_1 = 0.5678;
+}
+
+__declspec(align(128)) struct S {
+  int a = 1234;
+};
+
+void bar(int arg_0) {
+ S loc_0;
+ int loc_1 = 5678;
+}
+
+
+int main(int argc, char *argv[]) {
+  bool loc_0 = true;
+  int loc_1 = 3333;
+
+  foo(1111, 0.1234);
+  bar(22);
+
+  return 0;
+}

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/VariablesLocationsTest.script
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/VariablesLocationsTest.script?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/VariablesLocationsTest.script (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/VariablesLocationsTest.script Wed Oct  9 10:35:43 2019
@@ -0,0 +1,25 @@
+breakpoint set --file VariablesLocationsTest.cpp --line 6
+breakpoint set --file VariablesLocationsTest.cpp --line 15
+
+run
+
+target variable g_var
+
+frame variable arg_0
+frame variable arg_1
+
+frame variable loc_0
+frame variable loc_1
+
+frame select 1
+
+frame variable loc_0
+frame variable loc_1
+
+continue
+
+frame variable arg_0
+
+frame variable loc_0
+frame variable loc_1
+

Added: lldb/trunk/lit/SymbolFile/PDB/Inputs/VariablesTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/Inputs/VariablesTest.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/Inputs/VariablesTest.cpp (added)
+++ lldb/trunk/lit/SymbolFile/PDB/Inputs/VariablesTest.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,50 @@
+typedef int IntTypedef;
+IntTypedef g_IntVar;  // Testing globals.
+
+typedef enum Enum { // Testing constants.
+  RED,
+  GREEN,
+  BLUE
+} EnumTypedef;
+EnumTypedef g_EnumVar;  // Testing members.
+
+// FIXME: `sg_IntVar` appears both in global scope's children and compiland's
+// children but with different symbol's id.
+static int sg_IntVar = -1;  // Testing file statics.
+
+// FIXME: `g_Const` appears both in global scope's children and compiland's
+// children but with different symbol's id.
+const int g_Const = 0x88;  // Testing constant data.
+const int *g_pConst = &g_Const; // Avoid optimizing the const away
+
+thread_local int g_tls = 0;  // Testing thread-local storage.
+
+class Class {
+  static int m_StaticClassMember;
+public:
+  explicit Class(int a) {}
+  void Func() {}
+};
+int Class::m_StaticClassMember = 10; // Testing static class members.
+Class ClassVar(1);
+
+int f(int var_arg1, int var_arg2) {  // Testing parameters.
+  long same_name_var = -1;
+  return 1;
+}
+
+int same_name_var = 100;
+int main() {
+  int same_name_var = 0;  // Testing locals.
+  const char local_const = 0x1;
+
+  // FIXME: 'local_CString` is not found through compiland's children.
+  const char local_CString[] = "abc";  // Testing constant string.
+  const char *local_pCString = local_CString; // Avoid optimizing the const away
+
+  int a = 10;
+  a++;
+
+  ClassVar.Func();
+  return 0;
+}

Added: lldb/trunk/lit/SymbolFile/PDB/ast-restore.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/ast-restore.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/ast-restore.test (added)
+++ lldb/trunk/lit/SymbolFile/PDB/ast-restore.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,83 @@
+REQUIRES: system-windows, msvc
+RUN: %build --compiler=msvc --nodefaultlib --output=%t.exe %S/Inputs/AstRestoreTest.cpp
+RUN: env LLDB_USE_NATIVE_PDB_READER=0 lldb-test symbols -dump-ast %t.exe | FileCheck --check-prefix=ENUM %s
+RUN: env LLDB_USE_NATIVE_PDB_READER=1 lldb-test symbols -dump-ast %t.exe | FileCheck --check-prefix=ENUM %s
+RUN: lldb-test symbols -dump-ast %t.exe | FileCheck --check-prefix=GLOBAL %s
+RUN: lldb-test symbols -dump-ast %t.exe | FileCheck --check-prefix=BASE %s
+RUN: lldb-test symbols -dump-ast %t.exe | FileCheck --check-prefix=CLASS %s
+RUN: lldb-test symbols -dump-ast %t.exe | FileCheck --check-prefix=INNER %s
+RUN: lldb-test symbols -dump-ast %t.exe | FileCheck --check-prefix=TEMPLATE %s
+RUN: lldb-test symbols -dump-ast %t.exe | FileCheck --check-prefix=FOO %s
+RUN: lldb-test symbols -dump-ast %t.exe | FileCheck --check-prefix=MAIN %s
+
+ENUM: Module: {{.*}}
+ENUM: namespace N0 {
+ENUM:     namespace N1 {
+ENUM:         namespace  {
+ENUM:             enum Enum {
+ENUM:                 Enum_0,
+ENUM:                 Enum_1,
+ENUM:                 Enum_2,
+ENUM:                 Enum_3
+ENUM:             };
+ENUM:         }
+ENUM:     }
+ENUM: }
+
+GLOBAL: Module: {{.*}}
+GLOBAL: namespace N0 {
+GLOBAL:     namespace N1 {
+GLOBAL:         N0::N1::(anonymous namespace)::Enum Global;
+GLOBAL:     }
+GLOBAL: }
+
+BASE: Module: {{.*}}
+BASE: namespace N0 {
+BASE:     namespace N1 {
+BASE:         struct Base {
+BASE:             N0::N1::(anonymous namespace)::Enum m_e;
+BASE:         };
+BASE:     }
+BASE: }
+
+CLASS: Module: {{.*}}
+CLASS: namespace N0 {
+CLASS:     namespace N1 {
+CLASS:         class Class : public N0::N1::Base {
+CLASS-DAG:             const N0::N1::(anonymous namespace)::Enum m_ce;
+CLASS-DAG:             static int ClassStatic;
+CLASS-DAG:             N0::N1::Class::Inner m_inner;
+CLASS-DAG:             {{(inline )?}}Class(N0::N1::(anonymous namespace)::Enum);
+CLASS-DAG:             static {{(inline )?}}int StaticFunc(const N0::N1::Class &);
+CLASS-DAG:             {{(inline )?}}int PrivateFunc(const N0::N1::Class::Inner &);
+CLASS:         };
+CLASS:     }
+CLASS: }
+
+INNER: Module: {{.*}}
+INNER: namespace N0 {
+INNER:     namespace N1 {
+INNER:         class Class : public N0::N1::Base {
+INNER:             struct Inner {
+INNER:                 char x;
+INNER:                 short y;
+INNER:                 int z;
+INNER:             };
+INNER:         };
+INNER:     }
+INNER: }
+
+TEMPLATE: Module: {{.*}}
+TEMPLATE: struct Template<N0::N1::Class> {
+TEMPLATE:     inline void TemplateFunc<1>();
+TEMPLATE: };
+
+FOO: Module: {{.*}}
+FOO: namespace N0 {
+FOO:     namespace N1 {
+FOO:         void foo();
+FOO:     }
+FOO: }
+
+MAIN: Module: {{.*}}
+MAIN: int main();

Added: lldb/trunk/lit/SymbolFile/PDB/calling-conventions.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/calling-conventions.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/calling-conventions.test (added)
+++ lldb/trunk/lit/SymbolFile/PDB/calling-conventions.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,10 @@
+REQUIRES: system-windows, lld
+RUN: %build --compiler=clang-cl --arch=32 --nodefaultlib --output=%t.exe %S/Inputs/CallingConventionsTest.cpp
+RUN: lldb-test symbols -dump-ast %t.exe | FileCheck %s
+
+CHECK: Module: {{.*}}
+CHECK-DAG: int (*FuncCCallPtr)();
+CHECK-DAG: int (*FuncStdCallPtr)() __attribute__((stdcall));
+CHECK-DAG: int (*FuncFastCallPtr)() __attribute__((fastcall));
+CHECK-DAG: int (*FuncVectorCallPtr)() __attribute__((vectorcall));
+CHECK-DAG: int (S::*FuncThisCallPtr)() __attribute__((thiscall));

Added: lldb/trunk/lit/SymbolFile/PDB/class-layout.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/class-layout.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/class-layout.test (added)
+++ lldb/trunk/lit/SymbolFile/PDB/class-layout.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,92 @@
+REQUIRES: system-windows, msvc
+RUN: %build --compiler=clang-cl --mode=compile --arch=32 --nodefaultlib --output=%T/ClassLayoutTest.cpp.obj %S/Inputs/ClassLayoutTest.cpp
+RUN: %build --compiler=msvc --mode=link --arch=32 --nodefaultlib --output=%T/ClassLayoutTest.cpp.exe %T/ClassLayoutTest.cpp.obj
+RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck %s
+RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=ENUM %s
+RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=UNION %s
+RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=STRUCT %s
+RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=COMPLEX %s
+RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=LIST %s
+RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=UNNAMED-STRUCT %s
+RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=BASE %s
+RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=FRIEND %s
+RUN: lldb-test symbols %T/ClassLayoutTest.cpp.exe | FileCheck --check-prefix=CLASS %s
+
+CHECK: Module [[MOD:.*]]
+CHECK: SymbolFile pdb ([[MOD]])
+CHECK: {{^[0-9A-F]+}}:   CompileUnit{{[{]0x[0-9a-f]+[}]}}, language = "c++", file = '{{.*}}\ClassLayoutTest.cpp'
+
+ENUM:  name = "Enum", size = 4,  decl = ClassLayoutTest.cpp:5
+ENUM-SAME: enum Enum {
+ENUM:    RED,
+ENUM:    GREEN,
+ENUM:    BLUE
+ENUM:}
+
+UNION:  name = "Union", size = 4, decl = ClassLayoutTest.cpp:9
+UNION-SAME: union Union {
+UNION:    short Row;
+UNION:    unsigned short Col;
+UNION:    int Line : 16;
+UNION:    long Table;
+UNION:}
+
+STRUCT:  name = "Struct", size = 64, decl = ClassLayoutTest.cpp:22
+STRUCT-SAME: struct Struct {
+STRUCT:    bool A;
+STRUCT:    unsigned char UCharVar;
+STRUCT:    unsigned int UIntVar;
+STRUCT:    long long LongLongVar;
+STRUCT:    Enum EnumVar;
+STRUCT:    int array[10];
+STRUCT:}
+
+COMPLEX:  name = "Complex", size = 368, decl = ClassLayoutTest.cpp:33
+COMPLEX-SAME: struct Complex {
+COMPLEX:    _List *array[90];
+COMPLEX:    int x;
+COMPLEX:    int a;
+COMPLEX:    float b;
+COMPLEX:}
+
+LIST:  name = "_List", size = 12, decl = ClassLayoutTest.cpp:45
+LIST-SAME: struct _List {
+LIST:    _List *current;
+LIST:    _List *previous;
+LIST:    _List *next;
+LIST:}
+
+UNNAMED-STRUCT:  name = "UnnamedStruct", size = 4, decl = ClassLayoutTest.cpp:52
+UNNAMED-STRUCT-SAME: struct UnnamedStruct {
+UNNAMED-STRUCT:   int a;
+UNNAMED-STRUCT:}
+
+BASE:  name = "Base", size = 4,  decl = ClassLayoutTest.cpp:59
+BASE-SAME: class Base {
+BASE:    int a;
+BASE:    Base();
+BASE:    ~Base();
+BASE:    int Get();
+BASE:}
+
+FRIEND:  name = "Friend", size = 1, decl = ClassLayoutTest.cpp:70
+FRIEND-SAME: class Friend {
+FRIEND:    int f();
+FRIEND: }
+
+CLASS:  name = "Class", size = 88, decl = ClassLayoutTest.cpp:74
+CLASS-SAME: class Class : public MemberTest::Base {
+CLASS:    static int m_static;
+CLASS:    int m_public;
+CLASS:    Struct m_struct;
+CLASS:    Union m_union;
+CLASS:    int m_private;
+CLASS:    int m_protected;
+CLASS:    Class();
+CLASS:    Class(int);
+CLASS:    ~Class();
+CLASS:    static int {{.*}}StaticMemberFunc(int, ...);
+CLASS:    int Get();
+CLASS:    int f(MemberTest::Friend);
+CLASS:    bool operator==(const MemberTest::Class &)
+CLASS:}

Added: lldb/trunk/lit/SymbolFile/PDB/compilands.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/compilands.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/compilands.test (added)
+++ lldb/trunk/lit/SymbolFile/PDB/compilands.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,11 @@
+REQUIRES: system-windows, msvc
+RUN: %build --compiler=clang-cl --mode=compile --arch=32 --nodefaultlib --output=%T/CompilandsTest.cpp.obj %S/Inputs/CompilandsTest.cpp
+RUN: %build --compiler=msvc --mode=link --arch=32 --nodefaultlib --output=%T/CompilandsTest.cpp.exe %T/CompilandsTest.cpp.obj
+RUN: env LLDB_USE_NATIVE_PDB_READER=1 lldb-test symbols %T/CompilandsTest.cpp.exe | FileCheck %s
+RUN: env LLDB_USE_NATIVE_PDB_READER=0 lldb-test symbols %T/CompilandsTest.cpp.exe | FileCheck %s
+
+; Link default libraries
+
+CHECK: Module [[CU:.*]]
+CHECK: SymbolFile pdb ([[CU]])
+CHECK: {{^[0-9A-F]+}}:   CompileUnit{{[{]0x[0-9a-f]+[}]}}, language = "c++", file = '{{.*}}\CompilandsTest.cpp'

Added: lldb/trunk/lit/SymbolFile/PDB/enums-layout.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/enums-layout.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/enums-layout.test (added)
+++ lldb/trunk/lit/SymbolFile/PDB/enums-layout.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,45 @@
+REQUIRES: system-windows, msvc
+RUN: %build --compiler=msvc --arch=32 --nodefaultlib --output=%T/SimpleTypesTest.cpp.enums.exe %S/Inputs/SimpleTypesTest.cpp
+RUN: lldb-test symbols %T/SimpleTypesTest.cpp.enums.exe | FileCheck --check-prefix=ENUM %s
+RUN: lldb-test symbols %T/SimpleTypesTest.cpp.enums.exe | FileCheck --check-prefix=ENUM_CONST %s
+RUN: lldb-test symbols %T/SimpleTypesTest.cpp.enums.exe | FileCheck --check-prefix=ENUM_EMPTY %s
+RUN: lldb-test symbols %T/SimpleTypesTest.cpp.enums.exe | FileCheck --check-prefix=ENUM_UCHAR %s
+RUN: lldb-test symbols %T/SimpleTypesTest.cpp.enums.exe | FileCheck --check-prefix=ENUM_CLASS %s
+RUN: lldb-test symbols %T/SimpleTypesTest.cpp.enums.exe | FileCheck --check-prefix=ENUM_STRUCT %s
+
+; FIXME: PDB does not have information about scoped enumeration (Enum class) so the  
+; compiler type used is the same as the one for unscoped enumeration.
+
+ENUM:      Type{{.*}} , name = "Enum", size = 4, decl = simpletypestest.cpp:19, compiler_type = {{.*}} enum Enum {
+ENUM_NEXT:    RED,
+ENUM_NEXT:    GREEN,
+ENUM_NEXT:    BLUE
+ENUM_NEXT:}
+
+ENUM_CONST:      Type{{.*}} , name = "EnumConst", size = 4,  decl = simpletypestest.cpp:22, compiler_type = {{.*}} enum EnumConst {
+ENUM_CONST-NEXT:    LOW,
+ENUM_CONST-NEXT:    NORMAL,
+ENUM_CONST-NEXT:    HIGH
+ENUM_CONST-NEXT:}
+
+ENUM_EMPTY:      Type{{.*}} , name = "EnumEmpty", size = 4,  decl = simpletypestest.cpp:25, compiler_type = {{.*}} enum EnumEmpty {
+ENUM_EMPTY-NEXT:}
+
+ENUM_UCHAR:      Type{{.*}} , name = "EnumUChar", size = 1,  decl = simpletypestest.cpp:28, compiler_type = {{.*}} enum EnumUChar {
+ENUM_UCHAR-NEXT:    ON,
+ENUM_UCHAR-NEXT:    OFF,
+ENUM_UCHAR-NEXT:    AUTO
+ENUM_UCHAR-NEXT:}
+
+; Note that `enum EnumClass` is tested instead of `enum class EnumClass`
+ENUM_CLASS:      Type{{.*}} , name = "EnumClass", size = 4,  decl = simpletypestest.cpp:32, compiler_type = {{.*}} enum EnumClass {
+ENUM_CLASS-NEXT:    YES,
+ENUM_CLASS-NEXT:    NO,
+ENUM_CLASS-NEXT:    DEFAULT
+ENUM_CLASS-NEXT:}
+
+ENUM_STRUCT:      Type{{.*}} , name = "EnumStruct", size = 4,  decl = simpletypestest.cpp:35, compiler_type = {{.*}} enum EnumStruct {
+ENUM_STRUCT-NEXT:    red,
+ENUM_STRUCT-NEXT:    blue,
+ENUM_STRUCT-NEXT:    black
+ENUM_STRUCT-NEXT:}

Added: lldb/trunk/lit/SymbolFile/PDB/expressions.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/expressions.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/expressions.test (added)
+++ lldb/trunk/lit/SymbolFile/PDB/expressions.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,35 @@
+REQUIRES: system-windows, msvc
+RUN: %build --compiler=msvc --nodefaultlib --output=%t.exe %S/Inputs/ExpressionsTest.cpp
+RUN: %lldb -b -s %S/Inputs/ExpressionsTest0.script -s %S/Inputs/ExpressionsTest1.script -s %S/Inputs/ExpressionsTest2.script -- %t.exe 2>&1 | FileCheck %s
+
+// Check the variable value through `print`
+CHECK: (lldb) print result
+CHECK: (char) $0 = '\x1c'
+
+// Call the function just like in the code
+CHECK: (lldb) print N0::N1::sum(N0::N1::buf1, sizeof(N0::N1::buf1))
+CHECK: (char) $1 = '\x1c'
+
+// Try the relaxed namespaces search
+CHECK: (lldb) print N1::sum(N1::buf1, sizeof(N1::buf1))
+CHECK: (char) $2 = '\x1c'
+
+// Try the relaxed variables and functions search
+CHECK: (lldb) print sum(buf1, sizeof(buf1))
+CHECK: (char) $3 = '\x1c'
+
+// Make a crash during expression calculation
+CHECK: (lldb) print sum(buf1, 1000000000)
+CHECK: The process has been returned to the state before expression evaluation.
+
+// Make one more crash
+CHECK: (lldb) print sum(buf0, 1)
+CHECK: The process has been returned to the state before expression evaluation.
+
+// Check if the process state was restored succesfully
+CHECK: (lldb) print sum(buf0, result - 28)
+CHECK: (char) $4 = '\0'
+
+// Call the function with arbitrary parameters
+CHECK: (lldb) print sum(buf1 + 3, 3)
+CHECK: (char) $5 = '\f'

Added: lldb/trunk/lit/SymbolFile/PDB/func-symbols.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/func-symbols.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/func-symbols.test (added)
+++ lldb/trunk/lit/SymbolFile/PDB/func-symbols.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,46 @@
+REQUIRES: system-windows, lld
+RUN: %build --compiler=clang-cl --arch=32 --nodefaultlib --output=%T/FuncSymbolsTest.exe %S/Inputs/FuncSymbolsTestMain.cpp %S/Inputs/FuncSymbols.cpp
+RUN: lldb-test symbols %T/FuncSymbolsTest.exe | FileCheck --check-prefix=CHECK-ONE %s
+RUN: lldb-test symbols %T/FuncSymbolsTest.exe | FileCheck --check-prefix=CHECK-TWO %s
+
+; Link multiple objects
+; In this test, We don't check demangled name of a mangled function.
+
+CHECK-ONE: Module [[MD:.*]]
+CHECK-ONE-DAG: SymbolFile pdb ([[MD]])
+CHECK-ONE-DAG: [[TY0:.*]]:   Type{[[UID0:.*]]} , name = "Func_arg_array", decl = FuncSymbolsTestMain.cpp:3, compiler_type = {{.*}} int (int *)
+CHECK-ONE-DAG: [[TY1:.*]]:   Type{[[UID1:.*]]} , name = "Func_arg_void", decl = FuncSymbolsTestMain.cpp:4, compiler_type = {{.*}} void (void)
+CHECK-ONE-DAG: [[TY2:.*]]:   Type{[[UID2:.*]]} , name = "Func_arg_none", decl = FuncSymbolsTestMain.cpp:5, compiler_type = {{.*}} void (void)
+CHECK-ONE-DAG: [[TY3:.*]]:   Type{[[UID3:.*]]} , name = "Func_varargs", decl = FuncSymbolsTestMain.cpp:6, compiler_type = {{.*}} void (...)
+CHECK-ONE-DAG: [[TY4:.*]]:   Type{[[UID4:.*]]} , name = "Func", decl = FuncSymbolsTestMain.cpp:28, compiler_type = {{.*}} void (char, int)
+CHECK-ONE-DAG: [[TY5:.*]]:   Type{[[UID5:.*]]} , name = "main", decl = FuncSymbolsTestMain.cpp:44, compiler_type = {{.*}} int (void)
+CHECK-ONE-DAG: [[TY6:.*]]:   Type{[[UID6:.*]]} , name = "Func", decl = FuncSymbolsTestMain.cpp:24, compiler_type = {{.*}} void (int, const long, volatile _Bool, ...)
+CHECK-ONE-DAG: [[TY7:.*]]:   Type{[[UID7:.*]]} , name = "StaticFunction", decl = FuncSymbolsTestMain.cpp:35, compiler_type = {{.*}} long (int)
+CHECK-ONE-DAG: [[TY8:.*]]:   Type{[[UID8:.*]]} , name = "Func", decl = FuncSymbolsTestMain.cpp:12, compiler_type = {{.*}} int (int, ...)
+CHECK-ONE-DAG: [[TY9:.*]]:   Type{[[UID9:.*]]} , name = "TemplateFunc<1,int>", decl = FuncSymbolsTestMain.cpp:18, compiler_type = {{.*}} void (int)
+CHECK-ONE-DAG: [[TY10:.*]]:   Type{[[UID10:.*]]} , name = "TemplateFunc<1,int,int,int>", decl = FuncSymbolsTestMain.cpp:18, compiler_type = {{.*}} void (int, int, int)
+CHECK-ONE-DAG: [[TY11:.*]]:   Type{[[UID11:.*]]} , name = "InlinedFunction", decl = FuncSymbolsTestMain.cpp:40, compiler_type = {{.*}} void (long)
+
+CHECK-ONE: {{.*}}:   CompileUnit{{.*}}, language = "c++", file = '{{.*}}\FuncSymbolsTestMain.cpp'
+CHECK-ONE-DAG: Function{[[UID0]]}, mangled = ?Func_arg_array@@YAHQAH at Z, demangled = {{.*}}, type = [[TY0]]
+CHECK-ONE-DAG: Function{[[UID1]]}, mangled = ?Func_arg_void@@YAXXZ, demangled = {{.*}}, type = [[TY1]]
+CHECK-ONE-DAG: Function{[[UID2]]}, mangled = ?Func_arg_none@@YAXXZ, demangled = {{.*}}, type = [[TY2]]
+CHECK-ONE-DAG: Function{[[UID3]]}, mangled = ?Func_varargs@@YAXZZ, demangled = {{.*}}, type = [[TY3]]
+CHECK-ONE-DAG: Function{[[UID4]]}, mangled = ?Func at NS@@YAXDH at Z, demangled = {{.*}}, type = [[TY4]]
+CHECK-ONE-DAG: Function{[[UID5]]}, mangled = _main, demangled = {{.*}}, type = [[TY5]]
+CHECK-ONE-DAG: Function{[[UID6]]}, demangled = {{.*}}`anonymous namespace'::Func{{.*}}, type = [[TY6]]
+CHECK-ONE-DAG: Function{[[UID7]]}, demangled = {{.*}}StaticFunction{{.*}}, type = [[TY7]]
+CHECK-ONE-DAG: Function{[[UID8]]}, mangled = ?Func at A@MemberTest@@QAAHHZZ, demangled = {{.*}}, type = [[TY8]]
+CHECK-ONE-DAG: Function{[[UID9]]}, mangled = ??$TemplateFunc@$00H@@YAXH at Z, demangled = {{.*}}, type = [[TY9]]
+CHECK-ONE-DAG: Function{[[UID10]]}, mangled = ??$TemplateFunc@$00HHH@@YAXHHH at Z, demangled = {{.*}}, type = [[TY10]]
+CHECK-ONE-DAG: Function{[[UID11]]}, mangled = ?InlinedFunction@@YAXJ at Z, demangled = {{.*}}, type = [[TY11]]
+
+; We expect new types observed in another compile unit
+CHECK-TWO-DAG: [[TY30:.*]]:   Type{[[UID30:.*]]} , name = "FunctionCall", decl = FuncSymbols.cpp:13, compiler_type = {{.*}} void (void)
+CHECK-TWO-DAG: [[TY31:.*]]:   Type{[[UID31:.*]]} , name = "StaticFunction", decl = FuncSymbols.cpp:4, compiler_type = {{.*}} long (int)
+CHECK-TWO-DAG: [[TY32:.*]]:   Type{[[UID32:.*]]} , name = "InlinedFunction", decl = FuncSymbols.cpp:10, compiler_type = {{.*}} int (long)
+
+CHECK-TWO: {{.*}}:   CompileUnit{{.*}}, language = "c++", file = '{{.*}}\FuncSymbols.cpp'
+CHECK-TWO-DAG: Function{[[UID30]]}, mangled = ?FunctionCall@@YAXXZ, demangled = {{.*}}, type = [[TY30]]
+CHECK-TWO-DAG: Function{[[UID31]]}, demangled = {{.*}}`anonymous namespace'::StaticFunction{{.*}}, type = [[TY31]]
+CHECK-TWO-DAG: Function{[[UID32]]}, demangled = {{.*}}InlinedFunction{{.*}}, type = [[TY32]]

Added: lldb/trunk/lit/SymbolFile/PDB/function-level-linking.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/function-level-linking.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/function-level-linking.test (added)
+++ lldb/trunk/lit/SymbolFile/PDB/function-level-linking.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,5 @@
+REQUIRES: system-windows, lld
+RUN: %clang_cl /c /Zi /Gy %S/Inputs/FunctionLevelLinkingTest.cpp /o %t.obj
+RUN: lld-link /debug:full /nodefaultlib /entry:main /order:@%S/Inputs/FunctionLevelLinkingTest.ord %t.obj /out:%t.exe
+RUN: env LLDB_USE_NATIVE_PDB_READER=1 lldb-test symbols -verify %t.exe
+RUN: env LLDB_USE_NATIVE_PDB_READER=0 lldb-test symbols -verify %t.exe

Added: lldb/trunk/lit/SymbolFile/PDB/function-nested-block.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/function-nested-block.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/function-nested-block.test (added)
+++ lldb/trunk/lit/SymbolFile/PDB/function-nested-block.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,11 @@
+REQUIRES: system-windows, lld
+RUN: %build --compiler=clang-cl --nodefaultlib --output=%t.exe %S/Inputs/FunctionNestedBlockTest.cpp
+RUN: lldb-test symbols -find=function -file FunctionNestedBlockTest.cpp -line 4 %t.exe | FileCheck --check-prefix=CHECK-FUNCTION %s
+RUN: lldb-test symbols -find=block -file FunctionNestedBlockTest.cpp -line 4 %t.exe | FileCheck --check-prefix=CHECK-BLOCK %s
+
+CHECK-FUNCTION: Found 1 functions:
+CHECK-FUNCTION: name = "{{.*}}", mangled = "{{_?}}main"
+
+CHECK-BLOCK: Found 1 blocks:
+CHECK-BLOCK: Blocks: id = {{.*}}, range = {{.*}}
+CHECK-BLOCK:         id = {{.*}}, range = {{.*}}

Added: lldb/trunk/lit/SymbolFile/PDB/pointers.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/pointers.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/pointers.test (added)
+++ lldb/trunk/lit/SymbolFile/PDB/pointers.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,38 @@
+REQUIRES: system-windows, msvc
+RUN: %build --compiler=clang-cl --mode=compile --arch=32 --nodefaultlib --output=%T/PointerTypeTest.cpp.obj %S/Inputs/PointerTypeTest.cpp
+RUN: %build --compiler=msvc --mode=link --arch=32 --nodefaultlib --output=%T/PointerTypeTest.cpp.exe %T/PointerTypeTest.cpp.obj
+RUN: lldb-test symbols %T/PointerTypeTest.cpp.exe | FileCheck %s
+RUN: lldb-test symbols %T/PointerTypeTest.cpp.exe | FileCheck --check-prefix=MAIN-ST-F %s
+RUN: lldb-test symbols %T/PointerTypeTest.cpp.exe | FileCheck --check-prefix=MAIN-ST %s
+RUN: lldb-test symbols %T/PointerTypeTest.cpp.exe | FileCheck --check-prefix=MAIN %s
+RUN: lldb-test symbols %T/PointerTypeTest.cpp.exe | FileCheck --check-prefix=F %s
+
+CHECK: Module [[MOD:.*]]
+CHECK: {{^[0-9A-F]+}}:   CompileUnit{{[{]0x[0-9a-f]+[}]}}, language = "c++", file = '{{.*}}\PointerTypeTest.cpp'
+
+MAIN-ST-F:  name = "f"
+MAIN-ST-F-SAME: decl = PointerTypeTest.cpp:8
+MAIN-ST-F-SAME: compiler_type = {{.*}} int (int)
+
+MAIN-ST:  name = "ST", size = 4, decl = PointerTypeTest.cpp:6, compiler_type = {{.*}} struct ST {
+MAIN-ST-NEXT: int a;
+MAIN-ST-NEXT: int {{.*}}f(int);
+MAIN-ST-NEXT:}
+
+MAIN:   Function{[[FID1:.*]]}, mangled = _main
+MAIN-NEXT:  Block{[[FID1]]}
+MAIN:     Variable{{.*}}, name = "array_pointer"
+MAIN-SAME:    (int (*)[2][4]), scope = local
+MAIN:     Variable{{.*}}, name = "p_int"
+MAIN-SAME:    (int *), scope = local
+MAIN:     Variable{{.*}}, name = "p_member_field"
+MAIN-SAME:    (int ST::*), scope = local
+MAIN:     Variable{{.*}}, name = "p_member_method"
+MAIN-SAME:    (int (ST::*)(int) __attribute__((thiscall))), scope = local
+
+F:   Function{[[FID2:.*]]}, demangled = {{.*}}f(int)
+F-NEXT:  Block{[[FID2]]}
+F:     Variable{{.*}}, name = "this"
+F-SAME:    (ST *), scope = parameter, location = {{.*}}, artificial
+F:     Variable{{.*}}, name = "x"
+F-SAME:    (int), scope = parameter, decl = PointerTypeTest.cpp:8

Added: lldb/trunk/lit/SymbolFile/PDB/type-quals.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/type-quals.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/type-quals.test (added)
+++ lldb/trunk/lit/SymbolFile/PDB/type-quals.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,39 @@
+REQUIRES: system-windows, msvc
+RUN: %build --compiler=clang-cl --mode=compile --arch=32 --nodefaultlib --output=%T/TypeQualsTest.cpp.obj %S/Inputs/TypeQualsTest.cpp
+RUN: %build --compiler=msvc --mode=link --arch=32 --nodefaultlib --output=%T/TypeQualsTest.cpp.exe %T/TypeQualsTest.cpp.obj
+RUN: lldb-test symbols %T/TypeQualsTest.cpp.exe | FileCheck %s
+
+CHECK: Module [[MOD:.*]]
+CHECK-DAG: SymbolFile pdb ([[MOD]])
+CHECK-DAG:      Type{{.*}} , name = "const int", size = 4, compiler_type = {{.*}} const int
+CHECK-DAG:      Type{{.*}} , size = 4, compiler_type = {{.*}} const int *
+CHECK-DAG:      Type{{.*}} , size = 4, compiler_type = {{.*}} const int **const
+CHECK-DAG:      Type{{.*}} , size = 4, compiler_type = {{.*}} const int *const
+CHECK-DAG:      Type{{.*}} , size = 4, compiler_type = {{.*}} const int *const *
+CHECK-DAG:      Type{{.*}} , name = "Func1", {{.*}}, compiler_type = {{.*}} void (const int *, const int *, const int **const, const int *const *)
+
+CHECK-DAG:      Type{{.*}} , size = 4, compiler_type = {{.*}} volatile int *
+CHECK-DAG:      Type{{.*}} , name = "Func2", {{.*}}, compiler_type = {{.*}} void (volatile int *, volatile int *)
+
+CHECK-DAG:      Type{{.*}} , size = 4, compiler_type = {{.*}} int *
+CHECK-DAG:      Type{{.*}} , size = 4, compiler_type = {{.*}} int *&
+CHECK-DAG:      Type{{.*}} , size = 4, compiler_type = {{.*}} int &&
+CHECK-DAG:      Type{{.*}} , size = 4, compiler_type = {{.*}} int &
+CHECK-DAG:      Type{{.*}} , size = 4, compiler_type = {{.*}} const int &
+CHECK-DAG:      Type{{.*}} , name = "Func3", {{.*}}, compiler_type = {{.*}} void (int *&, int &, const int &, int &&)
+
+// FIXME: __unaligned is not supported.
+CHECK-DAG:      Type{{.*}} , name = "Func4", {{.*}}, compiler_type = {{.*}} void (int *, int *)
+
+CHECK-DAG:      Type{{.*}} , size = 4, compiler_type = {{.*}} int *__restrict
+CHECK-DAG:      Type{{.*}} , size = 4, compiler_type = {{.*}} int &__restrict
+CHECK-DAG:      Type{{.*}} , name = "Func5", {{.*}}, compiler_type = {{.*}} void (int, int *__restrict, int &__restrict)
+
+CHECK-DAG:      Type{{.*}} , name = "Func6", {{.*}}, compiler_type = {{.*}} void (const volatile int *__restrict)
+
+CHECK-DAG:      Type{{.*}} , size = 400, compiler_type = {{.*}} volatile int *[100]
+CHECK-DAG:      Type{{.*}} , size = 4000, compiler_type = {{.*}} volatile int *[10][100]
+
+CHECK-DAG:      Type{{.*}} , size = 4, compiler_type = {{.*}} long *__restrict
+
+CHECK-DAG: {{^[0-9A-F]+}}:   CompileUnit{{[{]0x[0-9a-f]+[}]}}, language = "c++", file = '{{.*}}\TypeQualsTest.cpp'

Added: lldb/trunk/lit/SymbolFile/PDB/typedefs.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/typedefs.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/typedefs.test (added)
+++ lldb/trunk/lit/SymbolFile/PDB/typedefs.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,59 @@
+REQUIRES: system-windows, msvc
+RUN: %build --compiler=msvc --arch=32 --nodefaultlib --output=%T/SimpleTypesTest.cpp.typedefs.exe %S/Inputs/SimpleTypesTest.cpp
+RUN: lldb-test symbols %T/SimpleTypesTest.cpp.typedefs.exe | FileCheck %s
+
+; Generate 32-bit target
+
+; FIXME: PDB does not have line information for typedef statements so source
+; and line information for them is not tested.
+
+; Note, types `long double` and `double` have same bit size in MSVC and there
+; is no information in the PDB to distinguish them. So the compiler type for
+; both of them is the same.
+
+CHECK: Module [[MOD:.*]]
+CHECK: SymbolFile pdb ([[MOD]])
+CHECK-DAG: name = "char32_t", size = 4, compiler_type = {{.*}} char32_t
+CHECK-DAG: name = "char16_t", size = 2, compiler_type = {{.*}} char16_t
+CHECK-DAG: Type{{.*}} , name = "unsigned long", size = 4, compiler_type = {{.*}} unsigned long
+CHECK-DAG: Type{{.*}} , size = 40, compiler_type = {{.*}} unsigned long [10]
+CHECK-DAG: Type{{.*}} , name = "ULongArrayTypedef", compiler_type = {{.*}} typedef ULongArrayTypedef
+
+; Note: compiler_type of `long double` is represented by the one for `double`
+CHECK-DAG: Type{{.*}} , name = "double", size = 8, compiler_type = {{.*}} double
+CHECK-DAG: Type{{.*}} , size = 4, compiler_type = {{.*}} double *
+CHECK-DAG: Type{{.*}} , size = 4, compiler_type = {{.*}} double *&
+CHECK-DAG: Type{{.*}} , name = "RefTypedef", compiler_type = {{.*}} typedef RefTypedef
+
+CHECK-DAG: Type{{.*}} , name = "wchar_t", size = 2, compiler_type = {{.*}} wchar_t
+
+CHECK-DAG: Type{{.*}} , name = "int", size = 4, compiler_type = {{.*}} int
+CHECK-DAG: Type{{.*}} , size = 4, compiler_type = {{.*}} int &
+CHECK-DAG: Type{{.*}} , name = "unsigned char", size = 1, compiler_type = {{.*}} unsigned char
+CHECK-DAG: Type{{.*}} , size = 4, compiler_type = {{.*}} unsigned char *
+CHECK-DAG: Type{{.*}} , size = 4, compiler_type = {{.*}} unsigned char **
+CHECK-DAG: Type{{.*}} , name = "short", size = 2, compiler_type = {{.*}} short
+CHECK-DAG: Type{{.*}} , size = 4, compiler_type = {{.*}} short *
+CHECK-DAG: Type{{.*}} , name = "const double", size = 8, compiler_type = {{.*}} const double
+CHECK-DAG: Type{{.*}} , name = "volatile bool", size = 1, compiler_type = {{.*}} volatile _Bool
+CHECK-DAG: Type{{.*}} , name = "long long", size = 8, compiler_type = {{.*}} long long
+CHECK-DAG: Type{{.*}} , compiler_type = {{.*}} long long (int &, unsigned char **, short *, const double, volatile _Bool)
+CHECK-DAG: Type{{.*}} , name = "FuncPtrTypedef", compiler_type = {{.*}} typedef FuncPtrTypedef
+
+CHECK-DAG: Type{{.*}} , name = "void", compiler_type = {{.*}} void
+CHECK-DAG: Type{{.*}} , size = 4, compiler_type = {{.*}} void *
+CHECK-DAG: Type{{.*}} , name = "long", size = 4, compiler_type = {{.*}} long
+CHECK-DAG: Type{{.*}} , name = "unsigned short", size = 2, compiler_type = {{.*}} unsigned short
+CHECK-DAG: Type{{.*}} , name = "unsigned int", size = 4, compiler_type = {{.*}} unsigned int
+CHECK-DAG: Type{{.*}} , name = "char", size = 1, compiler_type = {{.*}} char
+CHECK-DAG: Type{{.*}} , name = "signed char", size = 1, compiler_type = {{.*}} signed char
+CHECK-DAG: Type{{.*}} , compiler_type = {{.*}} char (void *, long, unsigned short, unsigned int, ...)
+CHECK-DAG: Type{{.*}} , size = 4, compiler_type = {{.*}} char (*)(void *, long, unsigned short, unsigned int, ...)
+CHECK-DAG: Type{{.*}} , name = "VarArgsFuncTypedef", compiler_type = {{.*}} typedef VarArgsFuncTypedef
+
+CHECK-DAG: Type{{.*}} , name = "float", size = 4, compiler_type = {{.*}} float
+CHECK-DAG: Type{{.*}} , compiler_type = {{.*}} float (...)
+CHECK-DAG: Type{{.*}} , size = 4, compiler_type = {{.*}} float (*)(...)
+CHECK-DAG: Type{{.*}} , name = "VarArgsFuncTypedefA", compiler_type = {{.*}} typedef VarArgsFuncTypedefA
+
+CHECK-DAG: {{^[0-9A-F]+}}:   CompileUnit{{[{]0x[0-9a-f]+[}]}}, language = "c++", file = '{{.*}}\SimpleTypesTest.cpp'

Added: lldb/trunk/lit/SymbolFile/PDB/udt-layout.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/udt-layout.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/udt-layout.test (added)
+++ lldb/trunk/lit/SymbolFile/PDB/udt-layout.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,51 @@
+REQUIRES: system-windows, lld
+RUN: %build --compiler=clang-cl --output=%t.exe %S/Inputs/UdtLayoutTest.cpp
+RUN: %lldb -b -s %S/Inputs/UdtLayoutTest.script -- %t.exe | FileCheck %s
+
+CHECK:(int) int C::abc = 123
+CHECK:(List [16]) ls = {
+CHECK:  [15] = {
+CHECK:    Prev = 0x00000000
+CHECK:    Next = 0x00000000
+CHECK:    Value = {
+CHECK:      B<0> = {
+CHECK:        A = {
+CHECK:          _u = (_u1 = '\x02', _u2 = 2, _u3 = 2)
+CHECK:        }
+CHECK:        _a = '\x01'
+CHECK:        _b = 2
+CHECK:        _c = 3
+CHECK:      }
+CHECK:      B<1> = {
+CHECK:        A = {
+CHECK:          _u = (_u1 = '\x02', _u2 = 2, _u3 = 2)
+CHECK:        }
+CHECK:        _a = '\x02'
+CHECK:        _b = 4
+CHECK:        _c = 6
+CHECK:      }
+CHECK:      B<2> = {
+CHECK:        A = {
+CHECK:          _u = (_u1 = '\x02', _u2 = 2, _u3 = 2)
+CHECK:        }
+CHECK:        _a = '\x03'
+CHECK:        _b = 6
+CHECK:        _c = 9
+CHECK:      }
+CHECK:      B<3> = {
+CHECK:        A = {
+CHECK:          _u = (_u1 = '\x02', _u2 = 2, _u3 = 2)
+CHECK:        }
+CHECK:        _a = '\x04'
+CHECK:        _b = 8
+CHECK:        _c = 12
+CHECK:      }
+CHECK:      A = {
+CHECK:        _u = (_u1 = '\x02', _u2 = 2, _u3 = 2)
+CHECK:      }
+CHECK:      _x = 5
+CHECK:      _y = 10
+CHECK:      _z = '\x0f'
+CHECK:    }
+CHECK:  }
+CHECK:}

Added: lldb/trunk/lit/SymbolFile/PDB/variables-locations.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/variables-locations.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/variables-locations.test (added)
+++ lldb/trunk/lit/SymbolFile/PDB/variables-locations.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,20 @@
+REQUIRES: system-windows, lld
+RUN: %build --compiler=clang-cl --output=%t.exe %S/Inputs/VariablesLocationsTest.cpp
+RUN: env LLDB_USE_NATIVE_PDB_READER=0 %lldb -b -s %S/Inputs/VariablesLocationsTest.script -- %t.exe | FileCheck %s
+RUN: env LLDB_USE_NATIVE_PDB_READER=1 %lldb -b -s %S/Inputs/VariablesLocationsTest.script -- %t.exe | FileCheck %s
+
+CHECK: g_var = 2222
+
+CHECK: arg_0 = 1111
+CHECK: arg_1 = 0.123
+
+CHECK: loc_0 = 'x'
+CHECK: loc_1 = 0.567
+
+CHECK: loc_0 = true
+CHECK: loc_1 = 3333
+
+CHECK: arg_0 = 22
+
+CHECK: loc_0 = (a = 1234)
+CHECK: loc_1 = 5678

Added: lldb/trunk/lit/SymbolFile/PDB/variables.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/variables.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/variables.test (added)
+++ lldb/trunk/lit/SymbolFile/PDB/variables.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,66 @@
+REQUIRES: system-windows, msvc
+RUN: %build --compiler=clang-cl --mode=compile --arch=64 --nodefaultlib --output=%T/VariablesTest.cpp.obj %S/Inputs/VariablesTest.cpp
+RUN: %build --compiler=msvc --mode=link --arch=64 --nodefaultlib --output=%T/VariablesTest.cpp.exe %T/VariablesTest.cpp.obj
+RUN: lldb-test symbols %T/VariablesTest.cpp.exe > %T/VariablesTest.out
+RUN: FileCheck --check-prefix=GLOBALS --input-file=%T/VariablesTest.out %s
+RUN: FileCheck --check-prefix=FUNC-F --input-file=%T/VariablesTest.out %s
+RUN: FileCheck --check-prefix=FUNC-MAIN --input-file=%T/VariablesTest.out %s
+RUN: FileCheck --check-prefix=FUNC-CONSTRUCTOR --input-file=%T/VariablesTest.out %s
+RUN: FileCheck --check-prefix=FUNC-MEMBER --input-file=%T/VariablesTest.out %s
+
+GLOBALS: Module [[MOD:.*]]
+GLOBALS: SymbolFile pdb ([[MOD]])
+GLOBALS:     CompileUnit{{.*}}, language = "c++", file = '{{.*}}\VariablesTest.cpp'
+GLOBALS-DAG:   Variable{{.*}}, name = "g_IntVar"
+GLOBALS-SAME:  scope = global, location = {{.*}}, external
+GLOBALS-DAG:   Variable{{.*}}, name = "m_StaticClassMember"
+GLOBALS-SAME:  scope = global, location = {{.*}}, external
+GLOBALS-DAG:   Variable{{.*}}, name = "g_pConst"
+GLOBALS-SAME:  scope = global, location = {{.*}}, external
+GLOBALS-DAG:   Variable{{.*}}, name = "same_name_var"
+GLOBALS-SAME:  scope = global, location = {{.*}}, external
+GLOBALS-DAG:   Variable{{.*}}, name = "g_EnumVar"
+GLOBALS-SAME:  scope = global, location = {{.*}}, external
+GLOBALS-DAG:   Variable{{.*}}, name = "g_tls"
+GLOBALS-SAME:  scope = thread local, location = {{.*}}, external
+GLOBALS-DAG:   Variable{{.*}}, name = "ClassVar"
+GLOBALS-SAME:  scope = global, location = {{.*}}, external
+GLOBALS-DAG:   Variable{{.*}}, name = "g_Const"
+GLOBALS-SAME:  scope = ??? (2)
+GLOBALS:     Function
+
+FUNC-F:      Function{{.*}}, mangled = ?f@@YAHHH at Z
+FUNC-F-NEXT:   Block
+FUNC-F-NEXT:     Variable{{.*}}, name = "var_arg1"
+FUNC-F-SAME:                     scope = parameter
+FUNC-F-NEXT:     Variable{{.*}}, name = "var_arg2"
+FUNC-F-SAME:                     scope = parameter
+FUNC-F-NEXT:     Variable{{.*}}, name = "same_name_var"
+FUNC-F-SAME:                     scope = local
+
+FUNC-MAIN:      Function{{.*}}, mangled = main
+FUNC-MAIN-NEXT:   Block
+FUNC-MAIN-NEXT:     Variable{{.*}}, name = "same_name_var"
+FUNC-MAIN-SAME:                     scope = local
+FUNC-MAIN-NEXT:     Variable{{.*}}, name = "local_const"
+FUNC-MAIN-SAME:                     scope = local
+FUNC-MAIN-NEXT:     Variable{{.*}}, name = "local_CString"
+FUNC-MAIN-SAME:                     scope = local
+FUNC-MAIN-NEXT:     Variable{{.*}}, name = "local_pCString"
+FUNC-MAIN-SAME:                     scope = local
+FUNC-MAIN-NEXT:     Variable{{.*}}, name = "a"
+FUNC-MAIN-SAME:                     scope = local
+
+FUNC-CONSTRUCTOR:      Function{{.*}}, mangled = ??0Class@@QEAA at H@Z
+FUNC-CONSTRUCTOR-NEXT:   Block
+FUNC-CONSTRUCTOR-NEXT:     Variable{{.*}}, name = "this"
+FUNC-CONSTRUCTOR-SAME:                     scope = parameter
+FUNC-CONSTRUCTOR-SAME:                     artificial
+FUNC-CONSTRUCTOR-NEXT:     Variable{{.*}}, name = "a"
+FUNC-CONSTRUCTOR-SAME:                     scope = parameter
+
+FUNC-MEMBER:      Function{{.*}}, mangled = ?Func at Class@@QEAAXXZ
+FUNC-MEMBER-NEXT:   Block
+FUNC-MEMBER-NEXT:     Variable{{.*}}, name = "this"
+FUNC-MEMBER-SAME:                     scope = parameter
+FUNC-MEMBER-SAME:                     artificial

Added: lldb/trunk/lit/SymbolFile/PDB/vbases.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/PDB/vbases.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/PDB/vbases.test (added)
+++ lldb/trunk/lit/SymbolFile/PDB/vbases.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,15 @@
+REQUIRES: system-windows, lld
+RUN: %build --compiler=clang-cl --output=%t.exe %S/Inputs/VBases.cpp
+RUN: %lldb -b -s %S/Inputs/VBases.script -- %t.exe | FileCheck %s
+
+CHECK: {
+CHECK:   A = (a = '\x01')
+CHECK:   B = (b = 2)
+CHECK:   c = 3
+CHECK: }
+
+CHECK: {
+CHECK:   A = (a = '\x01')
+CHECK:   B = (b = 2)
+CHECK:   c = 3
+CHECK: }

Added: lldb/trunk/lit/SymbolFile/dissassemble-entry-point.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/dissassemble-entry-point.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/dissassemble-entry-point.s (added)
+++ lldb/trunk/lit/SymbolFile/dissassemble-entry-point.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,13 @@
+# REQUIRES: lld, arm
+
+# RUN: llvm-mc -triple=thumbv7-eabi %s -filetype=obj -o %t.o
+# RUN: ld.lld %t.o -o %t --section-start=.text=0x8074 -e 0x8075 -s
+# RUN: %lldb -x -b -o 'dis -s 0x8074 -e 0x8080' -- %t | FileCheck %s
+# CHECK:      {{.*}}[0x8074] <+0>: movs   r0, #0x2a
+# CHECK-NEXT: {{.*}}[0x8076] <+2>: movs   r7, #0x1
+# CHECK-NEXT: {{.*}}[0x8078] <+4>: svc    #0x0
+
+_start:
+    movs r0, #0x2a
+    movs r7, #0x1
+    svc #0x0
\ No newline at end of file

Added: lldb/trunk/lit/SymbolFile/sizeless-symbol.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/sizeless-symbol.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/sizeless-symbol.test (added)
+++ lldb/trunk/lit/SymbolFile/sizeless-symbol.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,14 @@
+# Some targets do not have the .size directive.
+# RUN: %clang -target x86_64-unknown-unknown-elf %S/Inputs/sizeless-symbol.s -c -o %t.o
+# RUN: %lldb %t.o -s %s -o quit | FileCheck %s
+
+image lookup --address 1
+# CHECK: Summary: sizeless-symbol.test.tmp.o`sizeful
+image lookup --address 2
+# CHECK: Summary: sizeless-symbol.test.tmp.o`sizeful + 1
+image dump symtab
+# CHECK:     Index   UserID DSX Type            File Address/Value Load Address       Size               Flags      Name
+# CHECK-NEXT:------- ------ --- --------------- ------------------ ------------------ ------------------ ---------- ----------------------------------
+# CHECK-NEXT:[    0]      1     Code            0x0000000000000003                    0x0000000000000000 0x00000000 sizeend
+# CHECK-NEXT:[    1]      2     Code            0x0000000000000001                    0x0000000000000002 0x00000000 sizeful
+# CHECK-NEXT:[    2]      3     Code            0x0000000000000001                    0x0000000000000000 0x00000000 sizeless

Added: lldb/trunk/lit/SymbolFile/target-symbols-add-unwind.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/SymbolFile/target-symbols-add-unwind.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/SymbolFile/target-symbols-add-unwind.test (added)
+++ lldb/trunk/lit/SymbolFile/target-symbols-add-unwind.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,26 @@
+# TODO: When it's possible to run "image show-unwind" without a running
+# process, we can remove the unsupported line below, and hard-code an ELF
+# triple in the test.
+# UNSUPPORTED: system-windows, system-darwin
+
+# RUN: cd %T
+# RUN: %clang %S/Inputs/target-symbols-add-unwind.c -g \
+# RUN:   -fno-unwind-tables -o target-symbols-add-unwind.debug
+# RUN: llvm-objcopy --strip-debug target-symbols-add-unwind.debug \
+# RUN:   target-symbols-add-unwind.stripped
+# RUN: %lldb target-symbols-add-unwind.stripped -s %s -o quit | FileCheck %s
+
+process launch --stop-at-entry
+image show-unwind -n main
+# CHECK-LABEL: image show-unwind -n main
+# CHECK-NOT: debug_frame UnwindPlan:
+
+target symbols add -s target-symbols-add-unwind.stripped target-symbols-add-unwind.debug
+# CHECK-LABEL: target symbols add
+# CHECK: symbol file {{.*}} has been added to {{.*}}
+
+image show-unwind -n main
+# CHECK-LABEL: image show-unwind -n main
+# CHECK: debug_frame UnwindPlan:
+# CHECK-NEXT: This UnwindPlan originally sourced from DWARF CFI
+# CHECK-NEXT: This UnwindPlan is sourced from the compiler: yes.

Added: lldb/trunk/lit/Unit/lit.cfg.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Unit/lit.cfg.py?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Unit/lit.cfg.py (added)
+++ lldb/trunk/lit/Unit/lit.cfg.py Wed Oct  9 10:35:43 2019
@@ -0,0 +1,30 @@
+# -*- Python -*-
+
+# Configuration file for the 'lit' test runner.
+
+import os
+import sys
+
+import lit.formats
+from lit.llvm import llvm_config
+
+# name: The name of this test suite.
+config.name = 'lldb-Unit'
+
+# suffixes: A list of file extensions to treat as test files.
+config.suffixes =  []
+
+# test_source_root: The root path where unit test binaries are located.
+# test_exec_root: The root path where tests should be run.
+config.test_source_root = os.path.join(config.lldb_obj_root, 'unittests')
+config.test_exec_root = config.test_source_root
+
+# One of our unit tests dynamically links against python.dll, and on Windows
+# it needs to be able to find it at runtime.  This is fine if Python is on your
+# system PATH, but if it's not, then this unit test executable will fail to run.
+# We can solve this by forcing the Python directory onto the system path here.
+llvm_config.with_system_environment('PATH')
+llvm_config.with_environment('PATH', os.path.dirname(sys.executable), append_path=True)
+
+# testFormat: The test format to use to interpret tests.
+config.test_format = lit.formats.GoogleTest(config.llvm_build_mode, 'Tests')

Added: lldb/trunk/lit/Unit/lit.site.cfg.py.in
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Unit/lit.site.cfg.py.in?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Unit/lit.site.cfg.py.in (added)
+++ lldb/trunk/lit/Unit/lit.site.cfg.py.in Wed Oct  9 10:35:43 2019
@@ -0,0 +1,29 @@
+ at LIT_SITE_CFG_IN_HEADER@
+
+config.test_exec_root = "@LLDB_BINARY_DIR@"
+config.llvm_src_root = "@LLVM_SOURCE_DIR@"
+config.llvm_obj_root = "@LLVM_BINARY_DIR@"
+config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
+config.llvm_libs_dir = "@LLVM_LIBS_DIR@"
+config.llvm_build_mode = "@LLVM_BUILD_MODE@"
+config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
+config.lldb_obj_root = "@LLDB_BINARY_DIR@"
+config.lldb_src_root = "@LLDB_SOURCE_DIR@"
+config.target_triple = "@TARGET_TRIPLE@"
+config.python_executable = "@PYTHON_EXECUTABLE@"
+
+# Support substitution of the tools and libs dirs with user parameters. This is
+# used when we can't determine the tool dir at configuration time.
+try:
+    config.llvm_tools_dir = config.llvm_tools_dir % lit_config.params
+    config.llvm_libs_dir = config.llvm_libs_dir % lit_config.params
+    config.llvm_build_mode = config.llvm_build_mode % lit_config.params
+except KeyError as e:
+    key, = e.args
+    lit_config.fatal("unable to find %r parameter, use '--param=%s=VALUE'" % (key,key))
+
+import lit.llvm
+lit.llvm.initialize(lit_config, config)
+
+# Let the main config do the real work.
+lit_config.load_config(config, "@LLDB_SOURCE_DIR@/lit/Unit/lit.cfg.py")

Added: lldb/trunk/lit/Unwind/Inputs/call-asm.c
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Unwind/Inputs/call-asm.c?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Unwind/Inputs/call-asm.c (added)
+++ lldb/trunk/lit/Unwind/Inputs/call-asm.c Wed Oct  9 10:35:43 2019
@@ -0,0 +1,3 @@
+int asm_main() asm("asm_main");
+
+int main() { return asm_main(); }

Added: lldb/trunk/lit/Unwind/Inputs/eh-frame-dwarf-unwind.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Unwind/Inputs/eh-frame-dwarf-unwind.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Unwind/Inputs/eh-frame-dwarf-unwind.s (added)
+++ lldb/trunk/lit/Unwind/Inputs/eh-frame-dwarf-unwind.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,39 @@
+        .text
+        .globl  bar
+bar:
+        .cfi_startproc
+        leal    (%edi, %edi), %eax
+        ret
+        .cfi_endproc
+
+        .globl  foo
+foo:
+        .cfi_startproc
+        .cfi_escape 0x16, 0x10, 0x06, 0x38, 0x1c, 0x06, 0x08, 0x47, 0x1c
+        call    bar
+        addl    $1, %eax
+        popq    %rdi
+        subq    $0x47, %rdi
+        jmp     *%rdi # Return
+        .cfi_endproc
+
+        .globl  asm_main
+asm_main:
+        .cfi_startproc
+        pushq   %rbp
+        .cfi_def_cfa_offset 16
+        .cfi_offset 6, -16
+        movq    %rsp, %rbp
+        .cfi_def_cfa_register 6
+        movl    $47, %edi
+
+        # Non-standard calling convention. The real return address must be
+        # decremented by 0x47.
+        leaq    0x47+1f(%rip), %rax
+        pushq   %rax
+        jmp     foo # call
+1:
+        popq    %rbp
+        .cfi_def_cfa 7, 8
+        ret
+        .cfi_endproc

Added: lldb/trunk/lit/Unwind/Inputs/eh-frame-small-fde.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Unwind/Inputs/eh-frame-small-fde.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Unwind/Inputs/eh-frame-small-fde.s (added)
+++ lldb/trunk/lit/Unwind/Inputs/eh-frame-small-fde.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,48 @@
+        .text
+        .globl  bar
+        .type   bar, @function
+bar:
+.LFB0:
+        .cfi_startproc
+        leal    (%edi, %edi), %eax
+        ret
+        .cfi_endproc
+.LFE0:
+        .size   bar, .-bar
+        .globl  foo
+        .type   foo, @function
+foo:
+.LFB1:
+        nop # Make the FDE entry start one byte later than the actual function.
+        .cfi_startproc
+        .cfi_register %rip, %r13
+        call    bar
+        addl    $1, %eax
+        jmp     *%r13 # Return
+        .cfi_endproc
+.LFE1:
+        .size   foo, .-foo
+        .globl  main
+        .type   main, @function
+main:
+.LFB2:
+        .cfi_startproc
+        pushq   %rbp
+        .cfi_def_cfa_offset 16
+        .cfi_offset 6, -16
+        movq    %rsp, %rbp
+        .cfi_def_cfa_register 6
+        movl    $47, %edi
+
+        # Non-standard calling convention. Put return address in r13.
+        pushq   %r13
+        leaq    1f(%rip), %r13
+        jmp     foo # call
+1:
+        popq    %r13
+        popq    %rbp
+        .cfi_def_cfa 7, 8
+        ret
+        .cfi_endproc
+.LFE2:
+        .size   main, .-main

Added: lldb/trunk/lit/Unwind/Inputs/prefer-debug-over-eh-frame.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Unwind/Inputs/prefer-debug-over-eh-frame.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Unwind/Inputs/prefer-debug-over-eh-frame.s (added)
+++ lldb/trunk/lit/Unwind/Inputs/prefer-debug-over-eh-frame.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,38 @@
+        .cfi_sections .eh_frame, .debug_frame
+        .text
+        .globl  bar
+bar:
+        .cfi_startproc
+        leal    (%edi, %edi), %eax
+        ret
+        .cfi_endproc
+
+        .globl  foo
+foo:
+        .cfi_startproc
+        pushq   %rbp
+        .cfi_def_cfa_offset 16
+        .cfi_offset %rbp, -16
+        movq    %rsp, %rbp
+        .cfi_def_cfa_register %rbp
+        call    bar
+        addl    $1, %eax
+        popq    %rbp
+        ret
+        .cfi_endproc
+
+        .globl  asm_main
+asm_main:
+        .cfi_startproc
+        pushq   %rbp
+        .cfi_def_cfa_offset 16
+        .cfi_offset 6, -16
+        movq    %rsp, %rbp
+        .cfi_def_cfa_register 6
+        movl    $47, %edi
+
+        call foo
+        popq    %rbp
+        .cfi_def_cfa 7, 8
+        ret
+        .cfi_endproc

Added: lldb/trunk/lit/Unwind/Inputs/trap_frame_sym_ctx.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Unwind/Inputs/trap_frame_sym_ctx.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Unwind/Inputs/trap_frame_sym_ctx.s (added)
+++ lldb/trunk/lit/Unwind/Inputs/trap_frame_sym_ctx.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,42 @@
+        .text
+        .globl  bar
+bar:
+        .cfi_startproc
+        leal    (%edi, %edi), %eax
+        ret
+        .cfi_endproc
+
+        .globl  asm_main
+asm_main:
+        .cfi_startproc
+        pushq   %rbp
+        .cfi_def_cfa_offset 16
+        .cfi_offset %rbp, -16
+        movq    %rsp, %rbp
+        .cfi_def_cfa_register %rbp
+        movl    $47, %edi
+
+        # install tramp as return address
+        # (similar to signal return trampolines on some platforms)
+        leaq    tramp(%rip), %rax
+        pushq   %rax
+        jmp     bar # call, with return address pointing to tramp
+
+        popq    %rbp
+        .cfi_def_cfa %rsp, 8
+        ret
+        .cfi_endproc
+
+        .globl  tramp
+tramp:
+        .cfi_startproc
+        .cfi_signal_frame
+        # Emit cfi to line up with the frame created by asm_main
+        .cfi_def_cfa_offset 16
+        .cfi_offset %rbp, -16
+        .cfi_def_cfa_register %rbp
+        # copy asm_main's epilog to clean up the frame
+        popq    %rbp
+        .cfi_def_cfa %rsp, 8
+        ret
+        .cfi_endproc

Added: lldb/trunk/lit/Unwind/Inputs/unwind-plan-dwarf-dump.s
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Unwind/Inputs/unwind-plan-dwarf-dump.s?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Unwind/Inputs/unwind-plan-dwarf-dump.s (added)
+++ lldb/trunk/lit/Unwind/Inputs/unwind-plan-dwarf-dump.s Wed Oct  9 10:35:43 2019
@@ -0,0 +1,13 @@
+        .text
+        .globl  main
+        .type   main, @function
+main:
+.LFB0:
+        .cfi_startproc
+        .cfi_escape 0x0f, 0x05, 0x77, 0x00, 0x08, 0x00, 0x22
+        .cfi_escape 0x16, 0x10, 0x04, 0x09, 0xf8, 0x22, 0x06
+        movl    $47, %eax
+        ret
+        .cfi_endproc
+.LFE0:
+        .size   main, .-main

Added: lldb/trunk/lit/Unwind/eh-frame-dwarf-unwind.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Unwind/eh-frame-dwarf-unwind.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Unwind/eh-frame-dwarf-unwind.test (added)
+++ lldb/trunk/lit/Unwind/eh-frame-dwarf-unwind.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,23 @@
+# Test handing of dwarf expressions specifying the location of registers, if
+# those expressions refer to the frame's CFA value.
+
+# UNSUPPORTED: system-windows
+# REQUIRES: target-x86_64, native
+
+# RUN: %clang %p/Inputs/call-asm.c %p/Inputs/eh-frame-dwarf-unwind.s -o %t
+# RUN: %lldb %t -s %s -o exit | FileCheck %s
+
+breakpoint set -n bar
+# CHECK: Breakpoint 1: where = {{.*}}`bar
+
+process launch
+# CHECK: stop reason = breakpoint 1.1
+
+thread backtrace
+# CHECK: frame #0: {{.*}}`bar
+# CHECK: frame #1: {{.*}}`foo + 5
+# CHECK: frame #2: {{.*}}`asm_main + 22
+
+target modules show-unwind -n foo
+# CHECK: eh_frame UnwindPlan:
+# CHECK: row[0]: 0: CFA=rsp +8 => rip=DW_OP_lit8 , DW_OP_minus , DW_OP_deref , DW_OP_const1u 0x47, DW_OP_minus

Added: lldb/trunk/lit/Unwind/eh-frame-small-fde.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Unwind/eh-frame-small-fde.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Unwind/eh-frame-small-fde.test (added)
+++ lldb/trunk/lit/Unwind/eh-frame-small-fde.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,22 @@
+# This test that we are able to unwind using eh_frame in case an FDE entry does
+# not cover the entire range of a function we are unwinding through.
+
+# REQUIRES: target-x86_64, system-linux, native
+
+# RUN: %clang %p/Inputs/eh-frame-small-fde.s -o %t
+# RUN: %lldb %t -s %s -o exit | FileCheck %s
+
+breakpoint set -n bar
+# CHECK: Breakpoint 1: where = {{.*}}`bar
+
+process launch
+# CHECK: stop reason = breakpoint 1.1
+
+thread backtrace
+# CHECK: frame #0: {{.*}}`bar
+# CHECK: frame #1: {{.*}}`foo + 6
+# CHECK: frame #2: {{.*}}`main + 20
+
+target modules show-unwind -n foo
+# CHECK: eh_frame UnwindPlan:
+# CHECK: row[0]: 0: CFA=rsp +8 => rip=r13

Added: lldb/trunk/lit/Unwind/prefer-debug-over-eh-frame.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Unwind/prefer-debug-over-eh-frame.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Unwind/prefer-debug-over-eh-frame.test (added)
+++ lldb/trunk/lit/Unwind/prefer-debug-over-eh-frame.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,24 @@
+# Test that we prefer debug_frame over eh_frame unwind plans. They usually
+# contain the same information, and we rarely have both kinds of entries for a
+# single function. However, in theory the debug_frame plan can be more complete,
+# whereas eh_frame is only required to be correct at places where exceptions can
+# be thrown.
+
+# UNSUPPORTED: system-windows
+# XFAIL: system-darwin
+# REQUIRES: target-x86_64, native
+
+# RUN: %clang -g %p/Inputs/call-asm.c %p/Inputs/prefer-debug-over-eh-frame.s -o %t
+# RUN: %lldb %t -s %s -o exit | FileCheck %s
+
+breakpoint set -n bar
+# CHECK: Breakpoint 1: where = {{.*}}`bar
+
+process launch
+# CHECK: stop reason = breakpoint 1.1
+
+target modules show-unwind -n foo
+# CHECK: Asynchronous (not restricted to call-sites) UnwindPlan is 'DWARF CFI plus augmentation from assembly parsing'
+# CHECK: Synchronous (restricted to call-sites) UnwindPlan is 'DWARF CFI'
+# CHECK: eh_frame UnwindPlan:
+# CHECK: debug_frame UnwindPlan:

Added: lldb/trunk/lit/Unwind/trap_frame_sym_ctx.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Unwind/trap_frame_sym_ctx.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Unwind/trap_frame_sym_ctx.test (added)
+++ lldb/trunk/lit/Unwind/trap_frame_sym_ctx.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,21 @@
+# Test that symbol contexts for trap handler frames are set correctly even when
+# the pc is at the start of the function.
+
+# UNSUPPORTED: system-windows
+# REQUIRES: target-x86_64, native
+
+# RUN: %clang %p/Inputs/call-asm.c %p/Inputs/trap_frame_sym_ctx.s -o %t
+# RUN: %lldb %t -s %s -o exit | FileCheck %s
+
+settings append target.trap-handler-names tramp
+
+breakpoint set -n bar
+# CHECK: Breakpoint 1: where = {{.*}}`bar
+
+process launch
+# CHECK: stop reason = breakpoint 1.1
+
+thread backtrace
+# CHECK: frame #0: {{.*}}`bar
+# CHECK: frame #1: {{.*}}`tramp
+# CHECK: frame #2: {{.*}}`main

Added: lldb/trunk/lit/Unwind/unwind-plan-dwarf-dump.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Unwind/unwind-plan-dwarf-dump.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Unwind/unwind-plan-dwarf-dump.test (added)
+++ lldb/trunk/lit/Unwind/unwind-plan-dwarf-dump.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,14 @@
+# REQUIRES: target-x86_64, system-linux, native
+
+# RUN: %clang %p/Inputs/unwind-plan-dwarf-dump.s -o %t
+# RUN: %lldb %t -s %s -o exit | FileCheck %s
+
+breakpoint set -n main
+# CHECK: Breakpoint 1:
+
+process launch
+# CHECK: stop reason = breakpoint 1.1
+
+target modules show-unwind -n main
+# CHECK: eh_frame UnwindPlan:
+# CHECK: row[0]:    0: CFA=DW_OP_breg7 +0, DW_OP_const1u 0x00, DW_OP_plus  => rip=DW_OP_const1s -8, DW_OP_plus , DW_OP_deref

Added: lldb/trunk/lit/Watchpoint/Inputs/main.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Watchpoint/Inputs/main.cpp?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Watchpoint/Inputs/main.cpp (added)
+++ lldb/trunk/lit/Watchpoint/Inputs/main.cpp Wed Oct  9 10:35:43 2019
@@ -0,0 +1,13 @@
+#include <stdio.h>
+
+int main (int argc, char const *argv[])
+{
+    struct {
+        int a;
+        int b;
+        int c;
+    } MyAggregateDataType;
+
+    printf ("Set break point at this line.\n");
+    return 0;
+}

Added: lldb/trunk/lit/Watchpoint/SetErrorCases.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Watchpoint/SetErrorCases.test?rev=374187&view=auto
==============================================================================
--- lldb/trunk/lit/Watchpoint/SetErrorCases.test (added)
+++ lldb/trunk/lit/Watchpoint/SetErrorCases.test Wed Oct  9 10:35:43 2019
@@ -0,0 +1,28 @@
+# RUN: %clangxx %p/Inputs/main.cpp -g -o %t.out
+# RUN: %lldb -b -o 'settings set interpreter.stop-command-source-on-error false' -s %s %t.out 2>&1 | FileCheck %s
+
+settings show interpreter.stop-command-source-on-error
+# CHECK: interpreter.stop-command-source-on-error (boolean) = false
+
+b main.cpp:11
+run
+# CHECK: stopped
+# CHECK-NEXT: stop reason = breakpoint
+
+watchpoint set
+# CHECK: Commands for setting a watchpoint.
+# CHECK: The following subcommands are supported:
+# CHECK: Set a watchpoint on an address by supplying an expression.
+# CHECK: Set a watchpoint on a variable.
+
+watchpoint set variable -w read_write
+# CHECK: error: required argument missing
+
+watchpoint set expression -w write --
+# CHECK: error: expression evaluation of address to watch failed
+
+watchpoint set expression MyAggregateDataType
+# CHECK: error: expression did not evaluate to an address
+
+watchpoint set variable -s -128
+# CHECK: error: invalid enumeration value




More information about the lldb-commits mailing list