Reapply "Import Dexter to debuginfo-tests""

This reverts commit cb935f345683194e42e6e883d79c5a16479acd74.

Discussion in D68708 advises that green dragon is being briskly
refurbished, and it's good to have this patch up testing it.
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')
+