| """ | |
| Test that target var can resolve complex DWARF expressions. | |
| """ | |
| import lldb | |
| from lldbsuite.test.decorators import * | |
| from lldbsuite.test.lldbtest import * | |
| from lldbsuite.test import lldbutil | |
| class targetCommandTestCase(TestBase): | |
| @skipIfDarwinEmbedded # needs x86_64 | |
| @skipIf(debug_info="gmodules") # not relevant | |
| @skipIf(compiler="clang", compiler_version=["<", "7.0"]) | |
| def testTargetVarExpr(self): | |
| self.build() | |
| lldbutil.run_to_name_breakpoint(self, "main") | |
| self.expect( | |
| "help target variable", | |
| substrs=[ | |
| "--no-args", | |
| "--no-recognized-args", | |
| "--no-locals", | |
| "--show-globals", | |
| ], | |
| matching=False, | |
| ) | |
| self.expect("target variable i", substrs=["i", "42"]) | |
| self.expect( | |
| "target variable var", patterns=[r"\(incomplete \*\) var = 0[xX](0)*dead"] | |
| ) | |
| self.expect( | |
| "target variable var[0]", | |
| error=True, | |
| substrs=["can't find global variable 'var[0]'"], | |
| ) | |
| command_result = lldb.SBCommandReturnObject() | |
| result = self.ci.HandleCommand("target var", command_result) | |
| value_list = command_result.GetValues(lldb.eNoDynamicValues) | |
| self.assertGreaterEqual(value_list.GetSize(), 2) | |
| value_names = [] | |
| for value in value_list: | |
| value_names.append(value.GetName()) | |
| self.assertIn("i", value_names) |