blob: 9cb166e3d0dc197d6cd310b304bb9c492b6565f4 [file] [log] [blame]
"""
Make sure 'frame var' using DIL parser/evaultor works for local variables.
"""
import lldb
from lldbsuite.test.lldbtest import *
from lldbsuite.test.decorators import *
from lldbsuite.test import lldbutil
import os
import shutil
import time
class TestFrameVarDILGlobalVariableLookup(TestBase):
# If your test case doesn't stress debug info, then
# set this to true. That way it won't be run once for
# each debug info format.
NO_DEBUG_INFO_TESTCASE = True
@skipIf(macos_version=["<", "15.0"], archs=["arm64", "arm64e"])
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("globalVar", type="int", value="-559038737") # 0xDEADBEEF
self.expect_var_path("globalPtr", type="int *")
self.expect_var_path("globalRef", type="int &")
self.expect_var_path("::globalVar", value="-559038737")
self.expect_var_path("::globalPtr", type="int *")
self.expect_var_path("::globalRef", type="int &")
self.expect_var_path("ns::globalVar", value="13")
self.expect_var_path("ns::globalPtr", type="int *")
self.expect_var_path("ns::globalRef", type="int &")
self.expect_var_path("::ns::globalVar", value="13")
self.expect_var_path("::ns::globalPtr", type="int *")
self.expect_var_path("::ns::globalRef", type="int &")
self.expect_var_path("externGlobalVar", value="2")
self.expect_var_path("::externGlobalVar", value="2")
self.expect_var_path("ext::externGlobalVar", value="4")
self.expect_var_path("::ext::externGlobalVar", value="4")
self.expect_var_path("ExtStruct::static_inline", value="16")
# Test local variable priority over global
self.expect_var_path("foo", value="1")
self.expect_var_path("::foo", value="2")