[Lldb-commits] [lldb] Branch no lld (PR #139187)
via lldb-commits
lldb-commits at lists.llvm.org
Thu May 8 18:01:20 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lldb
Author: None (jimingham)
<details>
<summary>Changes</summary>
I suspect the test may be failing because lld doesn't behave the same way the native Darwin linker does. Trying that theory here...
---
Full diff: https://github.com/llvm/llvm-project/pull/139187.diff
3 Files Affected:
- (modified) lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp (+9)
- (modified) lldb/test/API/macosx/branch-islands/Makefile (+1-1)
- (modified) lldb/test/API/macosx/branch-islands/TestBranchIslands.py (+8-1)
``````````diff
diff --git a/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp b/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp
index 578ab12268ea3..6c3040ef1a1da 100644
--- a/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp
+++ b/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp
@@ -1038,6 +1038,15 @@ DynamicLoaderDarwin::GetStepThroughTrampolinePlan(Thread &thread,
static RegularExpression g_branch_island_regex(g_branch_island_pattern);
bool is_branch_island = g_branch_island_regex.Execute(current_name);
+ // FIXME: this is extra logging so I can figure out why this test is failing
+ // on the bot but not locally with all the same tools, etc...
+ if (thread_plan_sp && is_branch_island) {
+ if (log) {
+ StreamString s;
+ thread_plan_sp->GetDescription(&s, eDescriptionLevelVerbose);
+ LLDB_LOGF(log, "Am at a branch island, but already had plan: \n\t%s", s.GetData());
+ }
+ }
if (!thread_plan_sp && is_branch_island) {
thread_plan_sp = std::make_shared<ThreadPlanStepInstruction>(
thread,
diff --git a/lldb/test/API/macosx/branch-islands/Makefile b/lldb/test/API/macosx/branch-islands/Makefile
index 062e947f6d6ee..ff341522e15de 100644
--- a/lldb/test/API/macosx/branch-islands/Makefile
+++ b/lldb/test/API/macosx/branch-islands/Makefile
@@ -4,7 +4,7 @@ CFLAGS_EXTRAS := -std=c99
include Makefile.rules
a.out: main.o padding1.o padding2.o padding3.o padding4.o foo.o
- ${CC} ${LDFLAGS} foo.o padding1.o padding2.o padding3.o padding4.o main.o -o a.out
+ ${CC} ${LDFLAGS} -fuse-ld=/usr/bin/ld foo.o padding1.o padding2.o padding3.o padding4.o main.o -o a.out
%.o: $(SRCDIR)/%.s
${CC} -c $<
diff --git a/lldb/test/API/macosx/branch-islands/TestBranchIslands.py b/lldb/test/API/macosx/branch-islands/TestBranchIslands.py
index c79840b400432..a8dd1886d5568 100644
--- a/lldb/test/API/macosx/branch-islands/TestBranchIslands.py
+++ b/lldb/test/API/macosx/branch-islands/TestBranchIslands.py
@@ -2,7 +2,7 @@
Make sure that we can step in across an arm64 branch island
"""
-
+import os
import lldb
import lldbsuite.test.lldbutil as lldbutil
from lldbsuite.test.lldbtest import *
@@ -32,6 +32,9 @@ def do_test(self):
trace_before = lldbutil.print_stacktrace(thread, True)
func_before = thread.frames[0].function
+ log_file_path = os.path.join(self.getBuildDir(), "step-log.txt")
+ self.runCmd(f"log enable -f {log_file_path} lldb step")
+
thread.StepInto()
stop_frame = thread.frames[0]
# This is failing on the bot, but I can't reproduce the failure
@@ -59,6 +62,10 @@ def do_test(self):
print(
f"\nStop disassembly:\n {lldbutil.disassemble(target, stop_frame.function)}"
)
+ with open(log_file_path, "r") as f:
+ data = f.read()
+ print("Step Log:")
+ print(data)
self.assertIn("foo", stop_frame.name, "Stepped into foo")
var = stop_frame.FindVariable("a_variable_in_foo")
``````````
</details>
https://github.com/llvm/llvm-project/pull/139187
More information about the lldb-commits
mailing list