[Lldb-commits] [lldb] a123891 - Revert "Branch island with numbers (#138781)"

Felipe de Azevedo Piovezan via lldb-commits lldb-commits at lists.llvm.org
Tue May 6 18:21:30 PDT 2025


Author: Felipe de Azevedo Piovezan
Date: 2025-05-06T18:20:25-07:00
New Revision: a1238911f43c1d46cc7d4e72e2a16c3c9a157d9a

URL: https://github.com/llvm/llvm-project/commit/a1238911f43c1d46cc7d4e72e2a16c3c9a157d9a
DIFF: https://github.com/llvm/llvm-project/commit/a1238911f43c1d46cc7d4e72e2a16c3c9a157d9a.diff

LOG: Revert "Branch island with numbers (#138781)"

This reverts commit 11f33ab3850886510a831122078a155be7dc1167.

This is failing on CI.

Added: 
    

Modified: 
    lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp

Removed: 
    lldb/test/API/macosx/branch-islands/Makefile
    lldb/test/API/macosx/branch-islands/TestBranchIslands.py
    lldb/test/API/macosx/branch-islands/foo.c
    lldb/test/API/macosx/branch-islands/main.c
    lldb/test/API/macosx/branch-islands/padding1.s
    lldb/test/API/macosx/branch-islands/padding2.s
    lldb/test/API/macosx/branch-islands/padding3.s
    lldb/test/API/macosx/branch-islands/padding4.s


################################################################################
diff  --git a/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp b/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp
index 578ab12268ea3..e25c4ff55e408 100644
--- a/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp
+++ b/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp
@@ -26,7 +26,6 @@
 #include "lldb/Target/Thread.h"
 #include "lldb/Target/ThreadPlanCallFunction.h"
 #include "lldb/Target/ThreadPlanRunToAddress.h"
-#include "lldb/Target/ThreadPlanStepInstruction.h"
 #include "lldb/Utility/DataBuffer.h"
 #include "lldb/Utility/DataBufferHeap.h"
 #include "lldb/Utility/LLDBLog.h"
@@ -924,15 +923,15 @@ DynamicLoaderDarwin::GetStepThroughTrampolinePlan(Thread &thread,
   if (current_symbol != nullptr) {
     std::vector<Address> addresses;
 
-    ConstString current_name =
-        current_symbol->GetMangled().GetName(Mangled::ePreferMangled);
     if (current_symbol->IsTrampoline()) {
+      ConstString trampoline_name =
+          current_symbol->GetMangled().GetName(Mangled::ePreferMangled);
 
-      if (current_name) {
+      if (trampoline_name) {
         const ModuleList &images = target_sp->GetImages();
 
         SymbolContextList code_symbols;
-        images.FindSymbolsWithNameAndType(current_name, eSymbolTypeCode,
+        images.FindSymbolsWithNameAndType(trampoline_name, eSymbolTypeCode,
                                           code_symbols);
         for (const SymbolContext &context : code_symbols) {
           Address addr = context.GetFunctionOrSymbolAddress();
@@ -946,8 +945,8 @@ DynamicLoaderDarwin::GetStepThroughTrampolinePlan(Thread &thread,
         }
 
         SymbolContextList reexported_symbols;
-        images.FindSymbolsWithNameAndType(current_name, eSymbolTypeReExported,
-                                          reexported_symbols);
+        images.FindSymbolsWithNameAndType(
+            trampoline_name, eSymbolTypeReExported, reexported_symbols);
         for (const SymbolContext &context : reexported_symbols) {
           if (context.symbol) {
             Symbol *actual_symbol =
@@ -969,7 +968,7 @@ DynamicLoaderDarwin::GetStepThroughTrampolinePlan(Thread &thread,
         }
 
         SymbolContextList indirect_symbols;
-        images.FindSymbolsWithNameAndType(current_name, eSymbolTypeResolver,
+        images.FindSymbolsWithNameAndType(trampoline_name, eSymbolTypeResolver,
                                           indirect_symbols);
 
         for (const SymbolContext &context : indirect_symbols) {
@@ -1029,23 +1028,6 @@ DynamicLoaderDarwin::GetStepThroughTrampolinePlan(Thread &thread,
       thread_plan_sp = std::make_shared<ThreadPlanRunToAddress>(
           thread, load_addrs, stop_others);
     }
-    // One more case we have to consider is "branch islands".  These are regular
-    // TEXT symbols but their names end in .island plus maybe a .digit suffix.
-    // They are to allow arm64 code to branch further than the size of the
-    // address slot allows.  We just need to single-instruction step in that
-    // case.
-    static const char *g_branch_island_pattern = "\\.island\\.?[0-9]*$";
-    static RegularExpression g_branch_island_regex(g_branch_island_pattern);
-
-    bool is_branch_island = g_branch_island_regex.Execute(current_name);
-    if (!thread_plan_sp && is_branch_island) {
-      thread_plan_sp = std::make_shared<ThreadPlanStepInstruction>(
-          thread,
-          /* step_over= */ false, /* stop_others */ false, eVoteNoOpinion,
-          eVoteNoOpinion);
-      LLDB_LOG(log, "Stepping one instruction over branch island: '{0}'.",
-               current_name);
-    }
   } else {
     LLDB_LOGF(log, "Could not find symbol for step through.");
   }

diff  --git a/lldb/test/API/macosx/branch-islands/Makefile b/lldb/test/API/macosx/branch-islands/Makefile
deleted file mode 100644
index 062e947f6d6ee..0000000000000
--- a/lldb/test/API/macosx/branch-islands/Makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-C_SOURCES := main.c foo.c
-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
-
-%.o: $(SRCDIR)/%.s
-	${CC} -c $<
-
-#padding1.o: padding1.s
-#	${CC} -c $(SRCDIR)/padding1.s
-
-#padding2.o: padding2.s
-#	${CC} -c $(SRCDIR)/padding2.s

diff  --git a/lldb/test/API/macosx/branch-islands/TestBranchIslands.py b/lldb/test/API/macosx/branch-islands/TestBranchIslands.py
deleted file mode 100644
index b397e0c229b08..0000000000000
--- a/lldb/test/API/macosx/branch-islands/TestBranchIslands.py
+++ /dev/null
@@ -1,35 +0,0 @@
-"""
-Make sure that we can step in across an arm64 branch island
-"""
-
-
-import lldb
-import lldbsuite.test.lldbutil as lldbutil
-from lldbsuite.test.lldbtest import *
-from lldbsuite.test.decorators import *
-
-
-class TestBranchIslandStepping(TestBase):
-    NO_DEBUG_INFO_TESTCASE = True
-
-    @skipUnlessDarwin
-    def test_step_in_branch_island(self):
-        """Make sure we can step in across a branch island"""
-        self.build()
-        self.main_source_file = lldb.SBFileSpec("main.c")
-        self.do_test()
-
-    def do_test(self):
-        (target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint(
-            self, "Set a breakpoint here", self.main_source_file
-        )
-
-        # Make sure that we did manage to generate a branch island for foo:
-        syms = target.FindSymbols("foo.island", lldb.eSymbolTypeCode)
-        self.assertEqual(len(syms), 1, "We did generate an island for foo")
-
-        thread.StepInto()
-        stop_frame = thread.frames[0]
-        self.assertIn("foo", stop_frame.name, "Stepped into foo")
-        var = stop_frame.FindVariable("a_variable_in_foo")
-        self.assertTrue(var.IsValid(), "Found the variable in foo")

diff  --git a/lldb/test/API/macosx/branch-islands/foo.c b/lldb/test/API/macosx/branch-islands/foo.c
deleted file mode 100644
index a5dd2e59e1d82..0000000000000
--- a/lldb/test/API/macosx/branch-islands/foo.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include <stdio.h>
-
-void foo() {
-  int a_variable_in_foo = 10;
-  printf("I am foo: %d.\n", a_variable_in_foo);
-}

diff  --git a/lldb/test/API/macosx/branch-islands/main.c b/lldb/test/API/macosx/branch-islands/main.c
deleted file mode 100644
index b5578bdd715df..0000000000000
--- a/lldb/test/API/macosx/branch-islands/main.c
+++ /dev/null
@@ -1,6 +0,0 @@
-extern void foo();
-
-int main() {
-  foo(); // Set a breakpoint here
-  return 0;
-}

diff  --git a/lldb/test/API/macosx/branch-islands/padding1.s b/lldb/test/API/macosx/branch-islands/padding1.s
deleted file mode 100644
index 4911e53b0240d..0000000000000
--- a/lldb/test/API/macosx/branch-islands/padding1.s
+++ /dev/null
@@ -1,3 +0,0 @@
-.text
-_padding1:
-.space 120*1024*1024

diff  --git a/lldb/test/API/macosx/branch-islands/padding2.s b/lldb/test/API/macosx/branch-islands/padding2.s
deleted file mode 100644
index 5ad1bad11263b..0000000000000
--- a/lldb/test/API/macosx/branch-islands/padding2.s
+++ /dev/null
@@ -1,3 +0,0 @@
-.text
-_padding2:
-.space 120*1024*1024

diff  --git a/lldb/test/API/macosx/branch-islands/padding3.s b/lldb/test/API/macosx/branch-islands/padding3.s
deleted file mode 100644
index 9f614eecf56d9..0000000000000
--- a/lldb/test/API/macosx/branch-islands/padding3.s
+++ /dev/null
@@ -1,3 +0,0 @@
-.text
-_padding3:
-.space 120*1024*1024

diff  --git a/lldb/test/API/macosx/branch-islands/padding4.s b/lldb/test/API/macosx/branch-islands/padding4.s
deleted file mode 100644
index 12896cf5e5b8e..0000000000000
--- a/lldb/test/API/macosx/branch-islands/padding4.s
+++ /dev/null
@@ -1,3 +0,0 @@
-.text
-_padding4:
-.space 120*1024*1024


        


More information about the lldb-commits mailing list