| """ |
| 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) |