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.
30 lines
1.0 KiB
Python
30 lines
1.0 KiB
Python
"""Test the lldb public C++ api when creating multiple targets simultaneously."""
|
|
|
|
import os
|
|
|
|
import lldb
|
|
from lldbsuite.test.decorators import *
|
|
from lldbsuite.test.lldbtest import *
|
|
from lldbsuite.test import lldbutil
|
|
|
|
|
|
class TestMultipleTargets(TestBase):
|
|
NO_DEBUG_INFO_TESTCASE = True
|
|
|
|
@skipIf(oslist=["linux"], archs=["arm", "aarch64"])
|
|
@skipIfNoSBHeaders
|
|
@expectedFailureAll(
|
|
oslist=["windows"], archs=["i[3-6]86", "x86_64"], bugnumber="llvm.org/pr20282"
|
|
)
|
|
@expectedFlakeyNetBSD
|
|
@skipIfHostIncompatibleWithTarget
|
|
def test_multiple_targets(self):
|
|
self.driver_exe = self.getBuildArtifact("multi-target")
|
|
self.buildDriver("main.cpp", self.driver_exe)
|
|
self.addTearDownHook(lambda: os.remove(self.driver_exe))
|
|
|
|
# check_call will raise a CalledProcessError if the executable doesn't
|
|
# return exit code 0 to indicate success. We can let this exception go
|
|
# - the test harness will recognize it as a test failure.
|
|
subprocess.check_call([self.driver_exe, self.driver_exe])
|