37
37
38
38
#include " LogChannelDWARF.h"
39
39
#include " SymbolFileDWARF.h"
40
+ #include " lldb/lldb-enumerations.h"
40
41
41
42
#include < memory>
42
43
#include < optional>
@@ -803,13 +804,13 @@ SymbolFileDWARFDebugMap::GetDynamicArrayInfoForUID(
803
804
bool SymbolFileDWARFDebugMap::CompleteType (CompilerType &compiler_type) {
804
805
bool success = false ;
805
806
if (compiler_type) {
806
- ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) -> bool {
807
+ ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) {
807
808
if (oso_dwarf->HasForwardDeclForCompilerType (compiler_type)) {
808
809
oso_dwarf->CompleteType (compiler_type);
809
810
success = true ;
810
- return true ;
811
+ return IterationMarker::eStop ;
811
812
}
812
- return false ;
813
+ return IterationMarker::eContinue ;
813
814
});
814
815
}
815
816
return success;
@@ -915,7 +916,7 @@ void SymbolFileDWARFDebugMap::FindGlobalVariables(
915
916
std::lock_guard<std::recursive_mutex> guard (GetModuleMutex ());
916
917
uint32_t total_matches = 0 ;
917
918
918
- ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) -> bool {
919
+ ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) {
919
920
const uint32_t old_size = variables.GetSize ();
920
921
oso_dwarf->FindGlobalVariables (name, parent_decl_ctx, max_matches,
921
922
variables);
@@ -925,18 +926,18 @@ void SymbolFileDWARFDebugMap::FindGlobalVariables(
925
926
926
927
// Are we getting all matches?
927
928
if (max_matches == UINT32_MAX)
928
- return false ; // Yep, continue getting everything
929
+ return IterationMarker::eContinue ; // Yep, continue getting everything
929
930
930
931
// If we have found enough matches, lets get out
931
932
if (max_matches >= total_matches)
932
- return true ;
933
+ return IterationMarker::eStop ;
933
934
934
935
// Update the max matches for any subsequent calls to find globals in any
935
936
// other object files with DWARF
936
937
max_matches -= oso_matches;
937
938
}
938
939
939
- return false ;
940
+ return IterationMarker::eContinue ;
940
941
});
941
942
}
942
943
@@ -945,7 +946,7 @@ void SymbolFileDWARFDebugMap::FindGlobalVariables(
945
946
VariableList &variables) {
946
947
std::lock_guard<std::recursive_mutex> guard (GetModuleMutex ());
947
948
uint32_t total_matches = 0 ;
948
- ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) -> bool {
949
+ ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) {
949
950
const uint32_t old_size = variables.GetSize ();
950
951
oso_dwarf->FindGlobalVariables (regex, max_matches, variables);
951
952
@@ -955,18 +956,18 @@ void SymbolFileDWARFDebugMap::FindGlobalVariables(
955
956
956
957
// Are we getting all matches?
957
958
if (max_matches == UINT32_MAX)
958
- return false ; // Yep, continue getting everything
959
+ return IterationMarker::eContinue ; // Yep, continue getting everything
959
960
960
961
// If we have found enough matches, lets get out
961
962
if (max_matches >= total_matches)
962
- return true ;
963
+ return IterationMarker::eStop ;
963
964
964
965
// Update the max matches for any subsequent calls to find globals in any
965
966
// other object files with DWARF
966
967
max_matches -= oso_matches;
967
968
}
968
969
969
- return false ;
970
+ return IterationMarker::eContinue ;
970
971
});
971
972
}
972
973
@@ -1071,15 +1072,15 @@ void SymbolFileDWARFDebugMap::FindFunctions(
1071
1072
LLDB_SCOPED_TIMERF (" SymbolFileDWARFDebugMap::FindFunctions (name = %s)" ,
1072
1073
lookup_info.GetLookupName ().GetCString ());
1073
1074
1074
- ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) -> bool {
1075
+ ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) {
1075
1076
uint32_t sc_idx = sc_list.GetSize ();
1076
1077
oso_dwarf->FindFunctions (lookup_info, parent_decl_ctx, include_inlines,
1077
1078
sc_list);
1078
1079
if (!sc_list.IsEmpty ()) {
1079
1080
RemoveFunctionsWithModuleNotEqualTo (m_objfile_sp->GetModule (), sc_list,
1080
1081
sc_idx);
1081
1082
}
1082
- return false ;
1083
+ return IterationMarker::eContinue ;
1083
1084
});
1084
1085
}
1085
1086
@@ -1090,15 +1091,15 @@ void SymbolFileDWARFDebugMap::FindFunctions(const RegularExpression ®ex,
1090
1091
LLDB_SCOPED_TIMERF (" SymbolFileDWARFDebugMap::FindFunctions (regex = '%s')" ,
1091
1092
regex.GetText ().str ().c_str ());
1092
1093
1093
- ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) -> bool {
1094
+ ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) {
1094
1095
uint32_t sc_idx = sc_list.GetSize ();
1095
1096
1096
1097
oso_dwarf->FindFunctions (regex, include_inlines, sc_list);
1097
1098
if (!sc_list.IsEmpty ()) {
1098
1099
RemoveFunctionsWithModuleNotEqualTo (m_objfile_sp->GetModule (), sc_list,
1099
1100
sc_idx);
1100
1101
}
1101
- return false ;
1102
+ return IterationMarker::eContinue ;
1102
1103
});
1103
1104
}
1104
1105
@@ -1121,9 +1122,9 @@ void SymbolFileDWARFDebugMap::GetTypes(SymbolContextScope *sc_scope,
1121
1122
oso_dwarf->GetTypes (sc_scope, type_mask, type_list);
1122
1123
}
1123
1124
} else {
1124
- ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) -> bool {
1125
+ ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) {
1125
1126
oso_dwarf->GetTypes (sc_scope, type_mask, type_list);
1126
- return false ;
1127
+ return IterationMarker::eContinue ;
1127
1128
});
1128
1129
}
1129
1130
}
@@ -1141,9 +1142,9 @@ SymbolFileDWARFDebugMap::ParseCallEdgesInFunction(
1141
1142
TypeSP SymbolFileDWARFDebugMap::FindDefinitionTypeForDWARFDeclContext (
1142
1143
const DWARFDIE &die) {
1143
1144
TypeSP type_sp;
1144
- ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) -> bool {
1145
+ ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) {
1145
1146
type_sp = oso_dwarf->FindDefinitionTypeForDWARFDeclContext (die);
1146
- return (( bool ) type_sp) ;
1147
+ return type_sp ? IterationMarker::eStop : IterationMarker::eContinue ;
1147
1148
});
1148
1149
return type_sp;
1149
1150
}
@@ -1152,13 +1153,13 @@ bool SymbolFileDWARFDebugMap::Supports_DW_AT_APPLE_objc_complete_type(
1152
1153
SymbolFileDWARF *skip_dwarf_oso) {
1153
1154
if (m_supports_DW_AT_APPLE_objc_complete_type == eLazyBoolCalculate) {
1154
1155
m_supports_DW_AT_APPLE_objc_complete_type = eLazyBoolNo;
1155
- ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) -> bool {
1156
+ ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) {
1156
1157
if (skip_dwarf_oso != oso_dwarf &&
1157
1158
oso_dwarf->Supports_DW_AT_APPLE_objc_complete_type (nullptr )) {
1158
1159
m_supports_DW_AT_APPLE_objc_complete_type = eLazyBoolYes;
1159
- return true ;
1160
+ return IterationMarker::eStop ;
1160
1161
}
1161
- return false ;
1162
+ return IterationMarker::eContinue ;
1162
1163
});
1163
1164
}
1164
1165
return m_supports_DW_AT_APPLE_objc_complete_type == eLazyBoolYes;
@@ -1217,10 +1218,10 @@ TypeSP SymbolFileDWARFDebugMap::FindCompleteObjCDefinitionTypeForDIE(
1217
1218
if (!must_be_implementation) {
1218
1219
TypeSP type_sp;
1219
1220
1220
- ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) -> bool {
1221
+ ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) {
1221
1222
type_sp = oso_dwarf->FindCompleteObjCDefinitionTypeForDIE (
1222
1223
die, type_name, must_be_implementation);
1223
- return ( bool ) type_sp;
1224
+ return type_sp ? IterationMarker::eStop : IterationMarker::eContinue ;
1224
1225
});
1225
1226
1226
1227
return type_sp;
@@ -1231,9 +1232,10 @@ TypeSP SymbolFileDWARFDebugMap::FindCompleteObjCDefinitionTypeForDIE(
1231
1232
void SymbolFileDWARFDebugMap::FindTypes (const TypeQuery &query,
1232
1233
TypeResults &results) {
1233
1234
std::lock_guard<std::recursive_mutex> guard (GetModuleMutex ());
1234
- ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) -> bool {
1235
+ ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) {
1235
1236
oso_dwarf->FindTypes (query, results);
1236
- return results.Done (query); // Keep iterating if we aren't done.
1237
+ return results.Done (query) ? IterationMarker::eStop
1238
+ : IterationMarker::eContinue;
1237
1239
});
1238
1240
}
1239
1241
@@ -1243,23 +1245,24 @@ CompilerDeclContext SymbolFileDWARFDebugMap::FindNamespace(
1243
1245
std::lock_guard<std::recursive_mutex> guard (GetModuleMutex ());
1244
1246
CompilerDeclContext matching_namespace;
1245
1247
1246
- ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) -> bool {
1248
+ ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) {
1247
1249
matching_namespace =
1248
1250
oso_dwarf->FindNamespace (name, parent_decl_ctx, only_root_namespaces);
1249
1251
1250
- return (bool )matching_namespace;
1252
+ return matching_namespace ? IterationMarker::eStop
1253
+ : IterationMarker::eContinue;
1251
1254
});
1252
1255
1253
1256
return matching_namespace;
1254
1257
}
1255
1258
1256
1259
void SymbolFileDWARFDebugMap::DumpClangAST (Stream &s) {
1257
- ForEachSymbolFile ([&s](SymbolFileDWARF *oso_dwarf) -> bool {
1260
+ ForEachSymbolFile ([&s](SymbolFileDWARF *oso_dwarf) {
1258
1261
oso_dwarf->DumpClangAST (s);
1259
1262
// The underlying assumption is that DumpClangAST(...) will obtain the
1260
1263
// AST from the underlying TypeSystem and therefore we only need to do
1261
1264
// this once and can stop after the first iteration hence we return true.
1262
- return true ;
1265
+ return IterationMarker::eStop ;
1263
1266
});
1264
1267
}
1265
1268
@@ -1391,7 +1394,7 @@ void SymbolFileDWARFDebugMap::ParseDeclsForContext(
1391
1394
lldb_private::CompilerDeclContext decl_ctx) {
1392
1395
ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) -> bool {
1393
1396
oso_dwarf->ParseDeclsForContext (decl_ctx);
1394
- return false ; // Keep iterating
1397
+ return IterationMarker::eContinue;
1395
1398
});
1396
1399
}
1397
1400
@@ -1519,14 +1522,14 @@ SymbolFileDWARFDebugMap::AddOSOARanges(SymbolFileDWARF *dwarf2Data,
1519
1522
1520
1523
ModuleList SymbolFileDWARFDebugMap::GetDebugInfoModules () {
1521
1524
ModuleList oso_modules;
1522
- ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) -> bool {
1525
+ ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) {
1523
1526
ObjectFile *oso_objfile = oso_dwarf->GetObjectFile ();
1524
1527
if (oso_objfile) {
1525
1528
ModuleSP module_sp = oso_objfile->GetModule ();
1526
1529
if (module_sp)
1527
1530
oso_modules.Append (module_sp);
1528
1531
}
1529
- return false ; // Keep iterating
1532
+ return IterationMarker::eContinue;
1530
1533
});
1531
1534
return oso_modules;
1532
1535
}
@@ -1579,8 +1582,8 @@ Status SymbolFileDWARFDebugMap::CalculateFrameVariableError(StackFrame &frame) {
1579
1582
void SymbolFileDWARFDebugMap::GetCompileOptions (
1580
1583
std::unordered_map<lldb::CompUnitSP, lldb_private::Args> &args) {
1581
1584
1582
- ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) -> bool {
1585
+ ForEachSymbolFile ([&](SymbolFileDWARF *oso_dwarf) {
1583
1586
oso_dwarf->GetCompileOptions (args);
1584
- return false ;
1587
+ return IterationMarker::eContinue ;
1585
1588
});
1586
1589
}
0 commit comments