26
26
#include " lldb/Target/Thread.h"
27
27
#include " lldb/Target/ThreadPlanCallFunction.h"
28
28
#include " lldb/Target/ThreadPlanRunToAddress.h"
29
- #include " lldb/Target/ThreadPlanStepInstruction.h"
30
29
#include " lldb/Utility/DataBuffer.h"
31
30
#include " lldb/Utility/DataBufferHeap.h"
32
31
#include " lldb/Utility/LLDBLog.h"
@@ -924,15 +923,15 @@ DynamicLoaderDarwin::GetStepThroughTrampolinePlan(Thread &thread,
924
923
if (current_symbol != nullptr ) {
925
924
std::vector<Address> addresses;
926
925
927
- ConstString current_name =
928
- current_symbol->GetMangled ().GetName (Mangled::ePreferMangled);
929
926
if (current_symbol->IsTrampoline ()) {
927
+ ConstString trampoline_name =
928
+ current_symbol->GetMangled ().GetName (Mangled::ePreferMangled);
930
929
931
- if (current_name ) {
930
+ if (trampoline_name ) {
932
931
const ModuleList &images = target_sp->GetImages ();
933
932
934
933
SymbolContextList code_symbols;
935
- images.FindSymbolsWithNameAndType (current_name , eSymbolTypeCode,
934
+ images.FindSymbolsWithNameAndType (trampoline_name , eSymbolTypeCode,
936
935
code_symbols);
937
936
for (const SymbolContext &context : code_symbols) {
938
937
Address addr = context.GetFunctionOrSymbolAddress ();
@@ -946,8 +945,8 @@ DynamicLoaderDarwin::GetStepThroughTrampolinePlan(Thread &thread,
946
945
}
947
946
948
947
SymbolContextList reexported_symbols;
949
- images.FindSymbolsWithNameAndType (current_name, eSymbolTypeReExported,
950
- reexported_symbols);
948
+ images.FindSymbolsWithNameAndType (
949
+ trampoline_name, eSymbolTypeReExported, reexported_symbols);
951
950
for (const SymbolContext &context : reexported_symbols) {
952
951
if (context.symbol ) {
953
952
Symbol *actual_symbol =
@@ -969,7 +968,7 @@ DynamicLoaderDarwin::GetStepThroughTrampolinePlan(Thread &thread,
969
968
}
970
969
971
970
SymbolContextList indirect_symbols;
972
- images.FindSymbolsWithNameAndType (current_name , eSymbolTypeResolver,
971
+ images.FindSymbolsWithNameAndType (trampoline_name , eSymbolTypeResolver,
973
972
indirect_symbols);
974
973
975
974
for (const SymbolContext &context : indirect_symbols) {
@@ -1029,32 +1028,6 @@ DynamicLoaderDarwin::GetStepThroughTrampolinePlan(Thread &thread,
1029
1028
thread_plan_sp = std::make_shared<ThreadPlanRunToAddress>(
1030
1029
thread, load_addrs, stop_others);
1031
1030
}
1032
- // One more case we have to consider is "branch islands". These are regular
1033
- // TEXT symbols but their names end in .island plus maybe a .digit suffix.
1034
- // They are to allow arm64 code to branch further than the size of the
1035
- // address slot allows. We just need to single-instruction step in that
1036
- // case.
1037
- static const char *g_branch_island_pattern = " \\ .island\\ .?[0-9]*$" ;
1038
- static RegularExpression g_branch_island_regex (g_branch_island_pattern);
1039
-
1040
- bool is_branch_island = g_branch_island_regex.Execute (current_name);
1041
- // FIXME: this is extra logging so I can figure out why this test is failing
1042
- // on the bot but not locally with all the same tools, etc...
1043
- if (thread_plan_sp && is_branch_island) {
1044
- if (log ) {
1045
- StreamString s;
1046
- thread_plan_sp->GetDescription (&s, eDescriptionLevelVerbose);
1047
- LLDB_LOGF (log , " Am at a branch island, but already had plan: \n\t %s" , s.GetData ());
1048
- }
1049
- }
1050
- if (!thread_plan_sp && is_branch_island) {
1051
- thread_plan_sp = std::make_shared<ThreadPlanStepInstruction>(
1052
- thread,
1053
- /* step_over= */ false , /* stop_others */ false , eVoteNoOpinion,
1054
- eVoteNoOpinion);
1055
- LLDB_LOG (log , " Stepping one instruction over branch island: '{0}'." ,
1056
- current_name);
1057
- }
1058
1031
} else {
1059
1032
LLDB_LOGF (log , " Could not find symbol for step through." );
1060
1033
}
0 commit comments