[dotest] Add --dwarf-version to override the tested DWARF version.

On the matrix bot on GreenDragon [1] we want to run the test suite
against different DWARF versions. The idea here is not to replace
targeted tests for certain DWARF features, but rather to provide an easy
way to support this configuration.

[1] http://green.lab.llvm.org/green/view/LLDB/job/lldb-cmake-matrix/

Differential revision: https://reviews.llvm.org/D66370

llvm-svn: 369272
This commit is contained in:
Jonas Devlieghere 2019-08-19 16:04:21 +00:00
parent ec4540d8a6
commit 8880ac648c
5 changed files with 22 additions and 7 deletions

View File

@ -43,6 +43,9 @@ count = 1
arch = None # Must be initialized after option parsing arch = None # Must be initialized after option parsing
compiler = None # Must be initialized after option parsing compiler = None # Must be initialized after option parsing
# The overriden dwarf verison.
dwarf_version = 0
# Path to the FileCheck testing tool. Not optional. # Path to the FileCheck testing tool. Not optional.
filecheck = None filecheck = None

View File

@ -194,11 +194,9 @@ def _decorateTest(mode,
macos_version[0], macos_version[0],
macos_version[1], macos_version[1],
platform.mac_ver()[0]))) platform.mac_ver()[0])))
skip_for_dwarf_version = ( skip_for_dwarf_version = (dwarf_version is None) or (
dwarf_version is None) or ( _check_expected_version(dwarf_version[0], dwarf_version[1],
(self.getDebugInfo() is 'dwarf') and self.getDwarfVersion()))
_check_expected_version(
dwarf_version[0], dwarf_version[1], self.getDwarfVersion()))
# For the test to be skipped, all specified (e.g. not None) parameters must be True. # For the test to be skipped, all specified (e.g. not None) parameters must be True.
# An unspecified parameter means "any", so those are marked skip by default. And we skip # An unspecified parameter means "any", so those are marked skip by default. And we skip

View File

@ -342,9 +342,15 @@ def parseOptionsAndInitTestdirs():
configuration.skipCategories += test_categories.validate( configuration.skipCategories += test_categories.validate(
args.skipCategories, False) args.skipCategories, False)
cflags_extras = ""
if args.E: if args.E:
cflags_extras = args.E cflags_extras += args.E
os.environ['CFLAGS_EXTRAS'] = cflags_extras
if args.dwarf_version:
configuration.dwarf_version = args.dwarf_version
cflags_extras += '-gdwarf-{}'.format(args.dwarf_version)
os.environ['CFLAGS_EXTRAS'] = cflags_extras
if args.d: if args.d:
sys.stdout.write( sys.stdout.write(

View File

@ -125,6 +125,12 @@ def create_parser():
dest='out_of_tree_debugserver', dest='out_of_tree_debugserver',
action='store_true', action='store_true',
help='A flag to indicate an out-of-tree debug server is being used') help='A flag to indicate an out-of-tree debug server is being used')
group.add_argument(
'--dwarf-version',
metavar='dwarf_version',
dest='dwarf_version',
type=int,
help='Override the DWARF version.')
group.add_argument( group.add_argument(
'-s', '-s',
metavar='name', metavar='name',

View File

@ -1290,6 +1290,8 @@ class Base(unittest2.TestCase):
def getDwarfVersion(self): def getDwarfVersion(self):
""" Returns the dwarf version generated by clang or '0'. """ """ Returns the dwarf version generated by clang or '0'. """
if configuration.dwarf_version:
return str(configuration.dwarf_version)
if 'clang' in self.getCompiler(): if 'clang' in self.getCompiler():
try: try:
driver_output = check_output( driver_output = check_output(