From 042c7526917a275cb7241a67b8b54fdef096b343 Mon Sep 17 00:00:00 2001 From: Pavel Labath Date: Wed, 8 Nov 2017 10:48:50 +0000 Subject: Make TestTopLevelExprs more robust in face of linker GC Summary: This test was failing in various configurations on linux in a fairly unpredictible way. The success depended on whether the c++ abi library was linked in statically or not and how well was the linker able to strip parts of it. This introduces additional code to the "dummmy" test executable, which ensures that all parts of the library needed to evaluate the expressions are always present. Reviewers: clayborg Subscribers: srhines, tatyana-krasnukha, davide, lldb-commits Differential Revision: https://reviews.llvm.org/D39727 llvm-svn: 317678 --- .../expression_command/top-level/TestTopLevelExprs.py | 17 ----------------- .../test/expression_command/top-level/dummy.cpp | 16 ++++++++++++---- 2 files changed, 12 insertions(+), 21 deletions(-) (limited to 'lldb/packages/Python/lldbsuite/test/expression_command/top-level') diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/top-level/TestTopLevelExprs.py b/lldb/packages/Python/lldbsuite/test/expression_command/top-level/TestTopLevelExprs.py index 19f32e2760b..dfe95a1a9fa 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/top-level/TestTopLevelExprs.py +++ b/lldb/packages/Python/lldbsuite/test/expression_command/top-level/TestTopLevelExprs.py @@ -57,23 +57,6 @@ class TopLevelExpressionsTestCase(TestBase): self.runCmd("run", RUN_SUCCEEDED) @add_test_categories(['pyapi']) - @expectedFailureAndroid(api_levels=list(range(22+1)), bugnumber="llvm.org/pr27787") - @expectedFailureAll( - oslist=["linux"], - archs=[ - "arm", - "aarch64"], - bugnumber="llvm.org/pr27787") - @expectedFailureAll( - bugnumber="llvm.org/pr28353", - oslist=["linux"], - archs=[ - "i386", - "x86_64"], - compiler="gcc", - compiler_version=[ - "<", - "4.9"]) @skipIf(debug_info="gmodules") # not relevant @skipIf(oslist=["windows"]) # Error in record layout on Windows def test_top_level_expressions(self): diff --git a/lldb/packages/Python/lldbsuite/test/expression_command/top-level/dummy.cpp b/lldb/packages/Python/lldbsuite/test/expression_command/top-level/dummy.cpp index 31204b21d97..fa49bd4bda7 100644 --- a/lldb/packages/Python/lldbsuite/test/expression_command/top-level/dummy.cpp +++ b/lldb/packages/Python/lldbsuite/test/expression_command/top-level/dummy.cpp @@ -1,7 +1,15 @@ #include -int main() -{ - printf("This is a dummy\n"); // Set breakpoint here - return 0; +// These are needed to make sure that the linker does not strip the parts of the +// C++ abi library that are necessary to execute the expressions in the +// debugger. It would be great if we did not need to do this, but the fact that +// LLDB cannot conjure up the abi library on demand is not relevant for testing +// top level expressions. +struct DummyA {}; +struct DummyB : public virtual DummyA {}; + +int main() { + DummyB b; + printf("This is a dummy\n"); // Set breakpoint here + return 0; } -- cgit v1.2.3