[Lldb-commits] [lldb] r327977 - Fix some tests for PPC64le architecture

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Tue Mar 20 05:46:33 PDT 2018


Author: labath
Date: Tue Mar 20 05:46:33 2018
New Revision: 327977

URL: http://llvm.org/viewvc/llvm-project?rev=327977&view=rev
Log:
Fix some tests for PPC64le architecture

Summary:
- Fix test jump for powerpc64le
  Jumping directly to the return line on power architecture dos not means
  returning the value that is seen on the code. The last test fails, because
  it needs the execution of some assembly in the beginning of the function.
  Avoiding this test for this architecture.

- Avoid evaluate environ variable name on Linux
  On Linux the Symbol environ conflicts with another variable, then in
  order to avoid it, this test was moved into a specific test, which is not
  supported if the OS is Linux.

- Added PPC64le as MIPS behavior
  Checking the disassembler output, on PPC64le machines behaves as MPIS.
  Added method to identify PPC64le architecture and checking it when
  disassembling instructions in the test case.

Reviewers: labath

Reviewed By: labath

Subscribers: clayborg, labath, luporl, alexandreyy, sdardis, ki.stfu, arichardson

Differential Revision: https://reviews.llvm.org/D44101
Patch by Leonardo Bianconi <leonardo.bianconi at eldorado.org.br>.

Modified:
    lldb/trunk/packages/Python/lldbsuite/test/expression_command/test/TestExprs2.py
    lldb/trunk/packages/Python/lldbsuite/test/functionalities/thread/jump/TestThreadJump.py
    lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py
    lldb/trunk/packages/Python/lldbsuite/test/tools/lldb-mi/data/TestMiData.py

Modified: lldb/trunk/packages/Python/lldbsuite/test/expression_command/test/TestExprs2.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/expression_command/test/TestExprs2.py?rev=327977&r1=327976&r2=327977&view=diff
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/expression_command/test/TestExprs2.py (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/expression_command/test/TestExprs2.py Tue Mar 20 05:46:33 2018
@@ -43,23 +43,38 @@ class ExprCommands2TestCase(TestBase):
                     startstr="(int *) $0 = 0x")
         # (int *) $0 = 0x00007fff5fbff258
 
-        # Do anonymous symbols work?
-        self.expect("expression ((char**)environ)[0]",
-                    startstr="(char *) $1 = 0x")
-        # (char *) $1 = 0x00007fff5fbff298 "Apple_PubSub_Socket_Render=/tmp/launch-7AEsUD/Render"
-
         # Do return values containing the contents of expression locals work?
         self.expect("expression int i = 5; i",
-                    startstr="(int) $2 = 5")
+                    startstr="(int) $1 = 5")
         # (int) $2 = 5
-        self.expect("expression $2 + 1",
-                    startstr="(int) $3 = 6")
+        self.expect("expression $1 + 1",
+                    startstr="(int) $2 = 6")
         # (int) $3 = 6
 
         # Do return values containing the results of static expressions work?
         self.expect("expression 20 + 3",
-                    startstr="(int) $4 = 23")
+                    startstr="(int) $3 = 23")
         # (int) $4 = 5
-        self.expect("expression $4 + 1",
-                    startstr="(int) $5 = 24")
+        self.expect("expression $3 + 1",
+                    startstr="(int) $4 = 24")
         # (int) $5 = 6
+
+    @skipIfLinux
+    @expectedFailureAll(
+            oslist=["windows"],
+            bugnumber="llvm.org/pr24489: Name lookup not working correctly on Windows")
+    def test_expr_symbols(self):
+        """Test symbols."""
+        self.build()
+
+        self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET)
+
+        lldbutil.run_break_set_by_file_and_line(
+                self, "main.cpp", self.line, num_expected_locations=1, loc_exact=False)
+
+        self.runCmd("run", RUN_SUCCEEDED)
+
+        # Do anonymous symbols work?
+        self.expect("expression ((char**)environ)[0]",
+                startstr="(char *) $1 = 0x")
+        # (char *) $1 = 0x00007fff5fbff298 "Apple_PubSub_Socket_Render=/tmp/launch-7AEsUD/Render"

Modified: lldb/trunk/packages/Python/lldbsuite/test/functionalities/thread/jump/TestThreadJump.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/thread/jump/TestThreadJump.py?rev=327977&r1=327976&r2=327977&view=diff
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/thread/jump/TestThreadJump.py (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/thread/jump/TestThreadJump.py Tue Mar 20 05:46:33 2018
@@ -50,8 +50,10 @@ class ThreadJumpTestCase(TestBase):
         self.do_min_test(self.mark3, self.mark2, "i", "5")
         # Try the double path, force it to return 'a'
         self.do_min_test(self.mark4, self.mark1, "j", "7")
-        # Try the double path, force it to return 'b'
-        self.do_min_test(self.mark4, self.mark2, "j", "8")
+        # Expected to fail on powerpc64le architecture
+        if not self.isPPC64le():
+            # Try the double path, force it to return 'b'
+            self.do_min_test(self.mark4, self.mark2, "j", "8")
 
         # Try jumping to another function in a different file.
         self.runCmd(

Modified: lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py?rev=327977&r1=327976&r2=327977&view=diff
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py Tue Mar 20 05:46:33 2018
@@ -1236,6 +1236,13 @@ class Base(unittest2.TestCase):
             return True
         return False
 
+    def isPPC64le(self):
+        """Returns true if the architecture is PPC64LE."""
+        arch = self.getArchitecture()
+        if re.match("powerpc64le", arch):
+            return True
+        return False
+
     def getArchitecture(self):
         """Returns the architecture in effect the test suite is running with."""
         module = builder_module()

Modified: lldb/trunk/packages/Python/lldbsuite/test/tools/lldb-mi/data/TestMiData.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/tools/lldb-mi/data/TestMiData.py?rev=327977&r1=327976&r2=327977&view=diff
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/tools/lldb-mi/data/TestMiData.py (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/tools/lldb-mi/data/TestMiData.py Tue Mar 20 05:46:33 2018
@@ -80,8 +80,8 @@ class MiDataTestCase(lldbmi_testcase.MiT
         # To match the escaped characters in the ouptut, we must use four backslashes per matches backslash
         # See https://docs.python.org/2/howto/regex.html#the-backslash-plague
 
-        # The MIPS disassembler never prints stub name 
-        if self.isMIPS():
+        # The MIPS and PPC64le disassemblers never print stub name
+        if self.isMIPS() or self.isPPC64le():
             self.expect(["{address=\"0x[0-9a-f]+\",func-name=\"hello_world\(\)\",offset=\"[0-9]+\",size=\"[0-9]+\",inst=\".+?; \\\\\"Hello, World!\\\\\\\\n\\\\\"\"}",
                      "{address=\"0x[0-9a-f]+\",func-name=\"hello_world\(\)\",offset=\"[0-9]+\",size=\"[0-9]+\",inst=\".+?\"}"])
         else:




More information about the lldb-commits mailing list