Files
clang-p2996/lldb/test/API/api/check_public_api_headers/TestPublicAPIHeaders.py
Jonas Devlieghere 0da0966da4 [lldb] Don't overwrite the dynamic loader library path for "driver tests"
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.
2024-02-16 08:47:38 -08:00

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