| """ |
| Test DIL address calculation. |
| """ |
| |
| import lldb |
| from lldbsuite.test.lldbtest import * |
| from lldbsuite.test.decorators import * |
| from lldbsuite.test import lldbutil |
| |
| |
| class TestFrameVarDILGlobalVariableLookup(TestBase): |
| NO_DEBUG_INFO_TESTCASE = True |
| |
| def expect_var_path(self, expr, compare_to_framevar=False, value=None, type=None): |
| value_dil = super().expect_var_path(expr, value=value, type=type) |
| if compare_to_framevar: |
| self.runCmd("settings set target.experimental.use-DIL false") |
| value_frv = super().expect_var_path(expr, value=value, type=type) |
| self.runCmd("settings set target.experimental.use-DIL true") |
| self.assertEqual(value_dil.GetValue(), value_frv.GetValue()) |
| |
| def test_frame_var(self): |
| self.build() |
| lldbutil.run_to_source_breakpoint( |
| self, "Set a breakpoint here", lldb.SBFileSpec("main.cpp") |
| ) |
| |
| self.runCmd("settings set target.experimental.use-DIL true") |
| self.expect_var_path("&x", True, type="int *") |
| self.expect_var_path("r", True, type="int &") |
| self.expect_var_path("&r", True, type="int &*") |
| self.expect_var_path("pr", True, type="int *&") |
| self.expect_var_path("&pr", True, type="int *&*") |
| self.expect_var_path("my_pr", True) |
| self.expect_var_path("&my_pr", True, type="mypr *") |
| self.expect_var_path("&globalVar", True, type="int *") |
| self.expect_var_path("&s_str", True, type="const char **") |
| self.expect_var_path("&argc", True, type="int *") |