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,18 +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. They are to allow arm64
1034
- // code to branch further than the size of the address slot allows. We
1035
- // just need to single-instruction step in that case.
1036
- if (!thread_plan_sp && current_name.GetStringRef ().ends_with (" .island" )) {
1037
- thread_plan_sp = std::make_shared<ThreadPlanStepInstruction>(
1038
- thread,
1039
- /* step_over= */ false , /* stop_others */ false , eVoteNoOpinion,
1040
- eVoteNoOpinion);
1041
- LLDB_LOG (log, " Stepping one instruction over branch island: '{0}'." ,
1042
- current_name);
1043
- }
1044
1031
} else {
1045
1032
LLDB_LOGF (log, " Could not find symbol for step through." );
1046
1033
}
0 commit comments