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"
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(
# 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: