[Lldb-commits] [lldb] r317678 - Make TestTopLevelExprs more robust in face of linker GC

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Wed Nov 8 02:48:51 PST 2017


Author: labath
Date: Wed Nov  8 02:48:50 2017
New Revision: 317678

URL: http://llvm.org/viewvc/llvm-project?rev=317678&view=rev
Log:
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

Modified:
    lldb/trunk/packages/Python/lldbsuite/test/expression_command/top-level/TestTopLevelExprs.py
    lldb/trunk/packages/Python/lldbsuite/test/expression_command/top-level/dummy.cpp

Modified: lldb/trunk/packages/Python/lldbsuite/test/expression_command/top-level/TestTopLevelExprs.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/expression_command/top-level/TestTopLevelExprs.py?rev=317678&r1=317677&r2=317678&view=diff
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/expression_command/top-level/TestTopLevelExprs.py (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/expression_command/top-level/TestTopLevelExprs.py Wed Nov  8 02:48:50 2017
@@ -57,23 +57,6 @@ class TopLevelExpressionsTestCase(TestBa
         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):

Modified: lldb/trunk/packages/Python/lldbsuite/test/expression_command/top-level/dummy.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/expression_command/top-level/dummy.cpp?rev=317678&r1=317677&r2=317678&view=diff
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/expression_command/top-level/dummy.cpp (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/expression_command/top-level/dummy.cpp Wed Nov  8 02:48:50 2017
@@ -1,7 +1,15 @@
 #include <stdio.h>
 
-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;
 }




More information about the lldb-commits mailing list