https://github.com/medismailben updated https://github.com/llvm/llvm-project/pull/201275
>From e2191969bc0dd8d98bf162cb26ddc27099f944cc Mon Sep 17 00:00:00 2001 From: Med Ismail Bennani <[email protected]> Date: Wed, 3 Jun 2026 00:09:42 -0700 Subject: [PATCH] [lldb/test] Fix TestExpeditedThreadPCs on remote-darwin targets Two distinct bugs were preventing TestExpeditedThreadPCs from running on remote-darwin: the test wasn't deploying libfoo.dylib to the device, and the post-load assertion was guarded by an uninitialized local that raised UnboundLocalError instead of a clean assertion failure when the dylib was missing. 1. main.cpp does dlopen("libfoo.dylib", RTLD_LAZY) at runtime, but run_to_source_breakpoint was called without extra_images=['foo'], so libfoo.dylib (linked with install_name @executable_path/libfoo.dylib) was never deployed to the device. dlopen returned NULL on the device and libfoo never showed up in target.modules; the post-step assertTrue(found_libfoo) then failed with "False is not true". Add extra_images=['foo'] so registerSharedLibrariesWithTarget deploys libfoo.dylib next to a.out on the remote target. 2. found_libfoo was only assigned inside the if-branch of the for loop, so when libfoo.dylib was not present in target.modules (the bug above) the assertTrue(found_libfoo) raised UnboundLocalError instead of producing the intended assertion failure message. Initialize the flag to False up front so the original assertion fires cleanly when something else does go wrong. Signed-off-by: Med Ismail Bennani <[email protected]> --- .../macosx/expedited-thread-pcs/TestExpeditedThreadPCs.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lldb/test/API/macosx/expedited-thread-pcs/TestExpeditedThreadPCs.py b/lldb/test/API/macosx/expedited-thread-pcs/TestExpeditedThreadPCs.py index 0611907a34b0d..7416268805460 100644 --- a/lldb/test/API/macosx/expedited-thread-pcs/TestExpeditedThreadPCs.py +++ b/lldb/test/API/macosx/expedited-thread-pcs/TestExpeditedThreadPCs.py @@ -34,7 +34,10 @@ def cleanup(): self.source = "main.cpp" self.build() (target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint( - self, "break here", lldb.SBFileSpec(self.source, False) + self, + "break here", + lldb.SBFileSpec(self.source, False), + extra_images=["foo"], ) # verify that libfoo.dylib hasn't loaded yet @@ -49,6 +52,7 @@ def cleanup(): thread.StepInto() # verify that libfoo.dylib has loaded + found_libfoo = False for m in target.modules: if m.GetFileSpec().GetFilename() == "libfoo.dylib": found_libfoo = True _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
