diff --git a/packages/Python/lldbsuite/test/expression_command/test/TestExprs2.py b/packages/Python/lldbsuite/test/expression_command/test/TestExprs2.py
index 8a949bc..db7c2ed 100644
--- a/packages/Python/lldbsuite/test/expression_command/test/TestExprs2.py
+++ b/packages/Python/lldbsuite/test/expression_command/test/TestExprs2.py
@@ -43,23 +43,38 @@
                     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"
diff --git a/packages/Python/lldbsuite/test/functionalities/thread/jump/TestThreadJump.py b/packages/Python/lldbsuite/test/functionalities/thread/jump/TestThreadJump.py
index 2a66c6c..7194daf 100644
--- a/packages/Python/lldbsuite/test/functionalities/thread/jump/TestThreadJump.py
+++ b/packages/Python/lldbsuite/test/functionalities/thread/jump/TestThreadJump.py
@@ -50,8 +50,10 @@
         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(
diff --git a/packages/Python/lldbsuite/test/lldbtest.py b/packages/Python/lldbsuite/test/lldbtest.py
index 4f80399..b3283e4 100644
--- a/packages/Python/lldbsuite/test/lldbtest.py
+++ b/packages/Python/lldbsuite/test/lldbtest.py
@@ -1236,6 +1236,13 @@
             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()
diff --git a/packages/Python/lldbsuite/test/tools/lldb-mi/data/TestMiData.py b/packages/Python/lldbsuite/test/tools/lldb-mi/data/TestMiData.py
index de15343..5e1ceb8 100644
--- a/packages/Python/lldbsuite/test/tools/lldb-mi/data/TestMiData.py
+++ b/packages/Python/lldbsuite/test/tools/lldb-mi/data/TestMiData.py
@@ -80,8 +80,8 @@
         # 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:
