Import Dexter to debuginfo-tests

Dexter (Debug Experience Tester) is a test-driver for our debug info
integration tests, reading a set of debug experience expectations and
comparing them with the actual behaviour of a program under a debugger.
More about Dexter can be found in the RFC:

  http://lists.llvm.org/pipermail/llvm-dev/2019-October/135773.html

and the phab review in D68708. Not all the debuginfo tests have been
transformed into Dexter tests, and we look forwards to doing that
incrementally.

This commit mostly aims to flush out buildbots that are running
debuginfo-tests but don't have python 3 installed, possibly
green-dragon and some windows bots.
diff --git a/debuginfo-tests/lit.cfg.py b/debuginfo-tests/lit.cfg.py
index 126f6a0..dd0b0f7 100644
--- a/debuginfo-tests/lit.cfg.py
+++ b/debuginfo-tests/lit.cfg.py
@@ -4,6 +4,7 @@
 import platform
 import re
 import subprocess
+import sys
 import tempfile
 
 import lit.formats
@@ -38,9 +39,11 @@
 # test_exec_root: The root path where tests should be run.
 config.test_exec_root = config.debuginfo_tests_obj_root
 
+llvm_config.use_default_substitutions()
+
 tools = [
     ToolSubst('%test_debuginfo', command=os.path.join(
-        config.debuginfo_tests_src_root, 'test_debuginfo.pl')),
+        config.debuginfo_tests_src_root, 'llgdb-tests', 'test_debuginfo.pl')),
 ]
 
 def get_required_attr(config, attr_name):
@@ -56,11 +59,11 @@
 # unsupported. The local win_cdb test suite, however, is supported.
 is_msvc = get_required_attr(config, "is_msvc")
 if is_msvc:
+    config.available_features.add('msvc')
     # FIXME: We should add some llvm lit utility code to find the Windows SDK
     # and set up the environment appopriately.
     win_sdk = 'C:/Program Files (x86)/Windows Kits/10/'
     arch = 'x64'
-    config.unsupported = True
     llvm_config.with_system_environment(['LIB', 'LIBPATH', 'INCLUDE'])
     # Clear _NT_SYMBOL_PATH to prevent cdb from attempting to load symbols from
     # the network.
@@ -68,8 +71,6 @@
     tools.append(ToolSubst('%cdb', '"%s"' % os.path.join(win_sdk, 'Debuggers',
                                                          arch, 'cdb.exe')))
 
-llvm_config.use_default_substitutions()
-
 # clang_src_dir is not used by these tests, but is required by
 # use_clang(), so set it to "".
 if not hasattr(config, 'clang_src_dir'):
@@ -80,6 +81,28 @@
     # Propagate path to symbolizer for ASan/MSan.
     llvm_config.with_system_environment(
         ['ASAN_SYMBOLIZER_PATH', 'MSAN_SYMBOLIZER_PATH'])
+llvm_config.with_environment('PATHTOCLANG', llvm_config.config.clang)
+llvm_config.with_environment('PATHTOCLANGPP', llvm_config.use_llvm_tool('clang++'))
+llvm_config.with_environment('PATHTOCLANGCL', llvm_config.use_llvm_tool('clang-cl'))
+
+# Check which debuggers are available:
+built_lldb = llvm_config.use_llvm_tool('lldb', search_env='CLANG')
+if built_lldb is not None:
+    lldb_path = built_lldb
+elif lit.util.which('lldb') is not None:
+    lldb_path = lit.util.which('lldb')
+
+if lldb_path is not None:
+    config.available_features.add('lldb')
+
+# Produce dexter path, lldb path, and combine into the %dexter substitution
+dexter_path = os.path.join(config.debuginfo_tests_src_root,
+                           'dexter', 'dexter.py')
+dexter_cmd = '{} {} test'.format(config.python3_executable, dexter_path)
+if lldb_path is not None:
+  dexter_cmd += ' --lldb-executable {}'.format(lldb_path)
+
+tools.append(ToolSubst('%dexter', dexter_cmd))
 
 tool_dirs = [config.llvm_tools_dir]
 
@@ -87,6 +110,7 @@
 
 lit.util.usePlatformSdkOnDarwin(config, lit_config)
 
+# available_features: REQUIRES/UNSUPPORTED lit commands look at this list.
 if platform.system() == 'Darwin':
     import subprocess
     xcode_lldb_vers = subprocess.check_output(['xcrun', 'lldb', '--version']).decode("utf-8")
@@ -95,3 +119,4 @@
         apple_lldb_vers = int(match.group(1))
         if apple_lldb_vers < 1000:
             config.available_features.add('apple-lldb-pre-1000')
+