We have a handful of tests that build a driver which links against LLDB. When running those binaries, we overwrite the dynamic loader library path to point to the build directory's libs dir, presumably to make sure we load LLDB from there. This above becomes an issue when you have libc++ enabled and the driver is linked against the system's libc++, but the dynamic loader flag forces it to pick up libc++ from the libs dir. We could try to make the logic for building the driver smarter and have it pick up the just-built libc++ like we do for our test binaries, but I don't think we need to overwrite the library path in the first place. The build logic to build these drivers already takes care to set the correct RPATH in the linker. This patch removes the logic and simplifies the tests.
56 lines
1.8 KiB
Python
56 lines
1.8 KiB
Python
"""Test the integrity of the lldb public api directory containing SB*.h headers.
|
|
|
|
There should be nothing unwanted there and a simpe main.cpp which includes SB*.h
|
|
should compile and link with the LLDB framework."""
|
|
|
|
from lldbsuite.test.decorators import *
|
|
from lldbsuite.test.lldbtest import *
|
|
from lldbsuite.test import lldbutil
|
|
|
|
|
|
@skipIfNoSBHeaders
|
|
@skipIfRemote
|
|
@skipUnlessDarwin
|
|
class SBDirCheckerCase(TestBase):
|
|
NO_DEBUG_INFO_TESTCASE = True
|
|
|
|
def setUp(self):
|
|
TestBase.setUp(self)
|
|
self.source = "main.cpp"
|
|
self.generateSource(self.source)
|
|
|
|
def test_sb_api_directory(self):
|
|
"""Test the SB API directory and make sure there's no unwanted stuff."""
|
|
|
|
if not self.isAArch64() and self.getArchitecture() != "x86_64":
|
|
self.skipTest("This test is only for LLDB.framework built 64-bit")
|
|
|
|
exe_name = self.getBuildArtifact("a.out")
|
|
self.buildDriver(self.source, exe_name)
|
|
self.sanity_check_executable(exe_name)
|
|
|
|
def sanity_check_executable(self, exe_name):
|
|
"""Sanity check executable compiled from the auto-generated program."""
|
|
exe = self.getBuildArtifact(exe_name)
|
|
self.runCmd("file %s" % exe, CURRENT_EXECUTABLE_SET)
|
|
|
|
# This test uses a generated source file, so it's in the build directory.
|
|
self.line_to_break = line_number(
|
|
self.getBuildArtifact(self.source), "// Set breakpoint here."
|
|
)
|
|
|
|
lldbutil.run_break_set_by_file_and_line(
|
|
self, self.source, self.line_to_break, num_expected_locations=-1
|
|
)
|
|
|
|
self.runCmd("run", RUN_SUCCEEDED)
|
|
|
|
# The stop reason of the thread should be breakpoint.
|
|
self.expect(
|
|
"thread list",
|
|
STOPPED_DUE_TO_BREAKPOINT,
|
|
substrs=["stopped", "stop reason = breakpoint"],
|
|
)
|
|
|
|
self.runCmd("frame variable")
|