brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 9d438cc Raw
46 lines · python
1"""Test that types defined in shared libraries work correctly."""2 3 4import lldb5from lldbsuite.test.decorators import *6from lldbsuite.test.lldbtest import *7from lldbsuite.test import lldbutil8 9 10class TestRealDefinition(TestBase):11    def test_frame_var_after_stop_at_implementation(self):12        """Test that we can find the implementation for an objective C type"""13        if self.getArchitecture() == "i386":14            self.skipTest("requires modern objc runtime")15        self.build()16        self.shlib_names = ["libTestExt.dylib", "libTest.dylib"]17        self.common_setup()18 19        line = line_number("TestExt/TestExt.m", "// break here")20        lldbutil.run_break_set_by_file_and_line(21            self, "TestExt.m", line, num_expected_locations=1, loc_exact=True22        )23 24        self.runCmd("run", RUN_SUCCEEDED)25 26        # The stop reason of the thread should be breakpoint.27        self.expect(28            "thread list",29            STOPPED_DUE_TO_BREAKPOINT,30            substrs=["stopped", "stop reason = breakpoint"],31        )32 33        lldbutil.check_breakpoint(self, bpno=1, expected_hit_count=1)34 35        # This should display correctly.36        self.expect(37            "expr 42", "A simple expression should execute correctly", substrs=["42"]38        )39 40    def common_setup(self):41        exe = self.getBuildArtifact("a.out")42        target = self.dbg.CreateTarget(exe)43        self.registerSharedLibrariesWithTarget(target, self.shlib_names)44 45        self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)46