diff options
Diffstat (limited to 'lldb/packages/Python/lldbsuite')
7 files changed, 35 insertions, 6 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/decorators.py b/lldb/packages/Python/lldbsuite/test/decorators.py index 2458a6f8745..140c0ef617e 100644 --- a/lldb/packages/Python/lldbsuite/test/decorators.py +++ b/lldb/packages/Python/lldbsuite/test/decorators.py @@ -162,7 +162,7 @@ def _decorateTest(mode, debug_info=None, swig_version=None, py_version=None, macos_version=None, - remote=None): + remote=None, dwarf_version=None): def fn(self): skip_for_os = _match_decorator_property( lldbplatform.translate(oslist), self.getPlatform()) @@ -197,6 +197,9 @@ def _decorateTest(mode, macos_version[0], macos_version[1], platform.mac_ver()[0]))) + skip_for_dwarf_version = ( + dwarf_version is None) or _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. # An unspecified parameter means "any", so those are marked skip by default. And we skip @@ -210,7 +213,8 @@ def _decorateTest(mode, (swig_version, skip_for_swig_version, "swig version"), (py_version, skip_for_py_version, "python version"), (macos_version, skip_for_macos_version, "macOS version"), - (remote, skip_for_remote, "platform locality (remote/local)")] + (remote, skip_for_remote, "platform locality (remote/local)"), + (dwarf_version, skip_for_dwarf_version, "dwarf version")] reasons = [] final_skip_result = True for this_condition in conditions: @@ -254,7 +258,7 @@ def expectedFailureAll(bugnumber=None, debug_info=None, swig_version=None, py_version=None, macos_version=None, - remote=None): + remote=None, dwarf_version=None): return _decorateTest(DecorateMode.Xfail, bugnumber=bugnumber, oslist=oslist, hostoslist=hostoslist, @@ -263,7 +267,7 @@ def expectedFailureAll(bugnumber=None, debug_info=debug_info, swig_version=swig_version, py_version=py_version, macos_version=None, - remote=remote) + remote=remote,dwarf_version=dwarf_version) # provide a function to skip on defined oslist, compiler version, and archs @@ -279,7 +283,7 @@ def skipIf(bugnumber=None, debug_info=None, swig_version=None, py_version=None, macos_version=None, - remote=None): + remote=None, dwarf_version=None): return _decorateTest(DecorateMode.Skip, bugnumber=bugnumber, oslist=oslist, hostoslist=hostoslist, @@ -288,7 +292,7 @@ def skipIf(bugnumber=None, debug_info=debug_info, swig_version=swig_version, py_version=py_version, macos_version=macos_version, - remote=remote) + remote=remote, dwarf_version=dwarf_version) def _skip_for_android(reason, api_levels, archs): diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/radar_43822994/TestScopedEnumType.py b/lldb/packages/Python/lldbsuite/test/expression_command/radar_43822994/TestScopedEnumType.py index 028047fc46b..e7bc79d8e7c 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/radar_43822994/TestScopedEnumType.py +++ b/lldb/packages/Python/lldbsuite/test/expression_command/radar_43822994/TestScopedEnumType.py @@ -11,6 +11,7 @@ class ScopedEnumType(TestBase): mydir = TestBase.compute_mydir(__file__) + @skipIf(dwarf_version=['<', '4']) def test(self): self.build() diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/sbapi_support/TestTailCallFrameSBAPI.py b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/sbapi_support/TestTailCallFrameSBAPI.py index 22c0772a6e9..a981f2bfda9 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/sbapi_support/TestTailCallFrameSBAPI.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/tail_call_frames/sbapi_support/TestTailCallFrameSBAPI.py @@ -16,6 +16,7 @@ class TestTailCallFrameSBAPI(TestBase): NO_DEBUG_INFO_TESTCASE = True @skipIf(compiler="clang", compiler_version=['<', '8.0']) + @skipIf(dwarf_version=['<', '4']) @expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr26265") def test_tail_call_frame_sbapi(self): self.build() diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/enum_types/TestCPP11EnumTypes.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/enum_types/TestCPP11EnumTypes.py index b6bb2e8f309..d0913872416 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/enum_types/TestCPP11EnumTypes.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/enum_types/TestCPP11EnumTypes.py @@ -16,6 +16,7 @@ class CPP11EnumTypesTestCase(TestBase): mydir = TestBase.compute_mydir(__file__) @expectedFailureAll(oslist=['freebsd'], bugnumber='llvm.org/pr36527') + @skipIf(dwarf_version=['<', '4']) def test_int8_t(self): """Test C++11 enumeration class types as int8_t types.""" self.build( @@ -24,6 +25,7 @@ class CPP11EnumTypesTestCase(TestBase): self.image_lookup_for_enum_type() @expectedFailureAll(oslist=['freebsd'], bugnumber='llvm.org/pr36527') + @skipIf(dwarf_version=['<', '4']) def test_int16_t(self): """Test C++11 enumeration class types as int16_t types.""" self.build( @@ -32,6 +34,7 @@ class CPP11EnumTypesTestCase(TestBase): self.image_lookup_for_enum_type() @expectedFailureAll(oslist=['freebsd'], bugnumber='llvm.org/pr36527') + @skipIf(dwarf_version=['<', '4']) def test_int32_t(self): """Test C++11 enumeration class types as int32_t types.""" self.build( @@ -40,6 +43,7 @@ class CPP11EnumTypesTestCase(TestBase): self.image_lookup_for_enum_type() @expectedFailureAll(oslist=['freebsd'], bugnumber='llvm.org/pr36527') + @skipIf(dwarf_version=['<', '4']) def test_int64_t(self): """Test C++11 enumeration class types as int64_t types.""" self.build( @@ -48,6 +52,7 @@ class CPP11EnumTypesTestCase(TestBase): self.image_lookup_for_enum_type() @expectedFailureAll(oslist=['freebsd'], bugnumber='llvm.org/pr36527') + @skipIf(dwarf_version=['<', '4']) def test_uint8_t(self): """Test C++11 enumeration class types as uint8_t types.""" self.build( @@ -56,6 +61,7 @@ class CPP11EnumTypesTestCase(TestBase): self.image_lookup_for_enum_type() @expectedFailureAll(oslist=['freebsd'], bugnumber='llvm.org/pr36527') + @skipIf(dwarf_version=['<', '4']) def test_uint16_t(self): """Test C++11 enumeration class types as uint16_t types.""" self.build( @@ -64,6 +70,7 @@ class CPP11EnumTypesTestCase(TestBase): self.image_lookup_for_enum_type() @expectedFailureAll(oslist=['freebsd'], bugnumber='llvm.org/pr36527') + @skipIf(dwarf_version=['<', '4']) def test_uint32_t(self): """Test C++11 enumeration class types as uint32_t types.""" self.build( @@ -72,6 +79,7 @@ class CPP11EnumTypesTestCase(TestBase): self.image_lookup_for_enum_type() @expectedFailureAll(oslist=['freebsd'], bugnumber='llvm.org/pr36527') + @skipIf(dwarf_version=['<', '4']) def test_uint64_t(self): """Test C++11 enumeration class types as uint64_t types.""" self.build( diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/template/TestTemplateArgs.py b/lldb/packages/Python/lldbsuite/test/lang/cpp/template/TestTemplateArgs.py index 8f2ab56488f..08132702b8d 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/template/TestTemplateArgs.py +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/template/TestTemplateArgs.py @@ -113,6 +113,7 @@ class TemplateArgsTestCase(TestBase): # Gcc does not generate the necessary DWARF attribute for enum template # parameters. @expectedFailureAll(bugnumber="llvm.org/pr28354", compiler="gcc") + @skipIf(dwarf_version=['<', '4']) def test_enum_args(self): frame = self.prepareProcess() diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/blocks/TestObjCIvarsInBlocks.py b/lldb/packages/Python/lldbsuite/test/lang/objc/blocks/TestObjCIvarsInBlocks.py index d69a171bc7b..d2798d601f7 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/objc/blocks/TestObjCIvarsInBlocks.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/blocks/TestObjCIvarsInBlocks.py @@ -25,6 +25,7 @@ class TestObjCIvarsInBlocks(TestBase): @skipUnlessDarwin @add_test_categories(['pyapi']) + @skipIf(dwarf_version=['<', '4']) @expectedFailureAll( archs=["i[3-6]86"], bugnumber="This test requires the 2.0 runtime, so it will fail on i386") diff --git a/lldb/packages/Python/lldbsuite/test/lldbtest.py b/lldb/packages/Python/lldbsuite/test/lldbtest.py index 161e8c61349..f9c21d322da 100644 --- a/lldb/packages/Python/lldbsuite/test/lldbtest.py +++ b/lldb/packages/Python/lldbsuite/test/lldbtest.py @@ -1309,6 +1309,19 @@ class Base(unittest2.TestCase): version = m.group(1) return version + def getDwarfVersion(self): + """ Returns the dwarf version generated by clang or 'unknown'. """ + if 'clang' not in self.getCompiler(): + return 'unknown' + driver_output = check_output( + [self.getCompiler()] + '-g -c -x c - -o - -###'.split(), + stderr=STDOUT) + for line in driver_output.split(os.linesep): + m = re.search('dwarf-version=([0-9])', line) + if m: + return m.group(1) + return 'unknown' + def platformIsDarwin(self): """Returns true if the OS triple for the selected platform is any valid apple OS""" return lldbplatformutil.platformIsDarwin() |