================
@@ -2758,6 +2758,15 @@ void SymbolFileDWARF::FindTypes(const TypeQuery &query,
TypeResults &results) {
return true; // Keep iterating over index types, language mismatch.
}
+ // Since mangled names are unique, we only need to check if the names are
+ // the same.
+ if (query.GetSearchByMangledName()) {
+ if (die.GetMangledName() == query.GetTypeBasename().GetStringRef())
+ if (Type *matching_type = ResolveType(die, true, true))
+ results.InsertUnique(matching_type->shared_from_this());
+ return !results.Done(query); // Keep iterating if we aren't done.
+ }
----------------
clayborg wrote:
This logic needs doesn't need to check if results are done if we didn't add
anything to the results. Maybe this would be more clear?:
```
if (query.GetSearchByMangledName()) {
if (die.GetMangledName() != query.GetTypeBasename().GetStringRef())
return true; // Keep iterating over index types, mangled name mismatch.
if (Type *matching_type = ResolveType(die, true, true)) {
results.InsertUnique(matching_type->shared_from_this());
return !results.Done(query); // Keep iterating if we aren't done.
}
return true; // Keep iterating over index types, weren't able to resolve
this type
}
```
One other issue is that `DWARFDie::GetMangledName()` will return the
`DW_AT_name` if there is no mangled name:
```
const char *DWARFDIE::GetMangledName() const {
if (IsValid())
return m_die->GetMangledName(m_cu);
else
return nullptr;
}
```
But `const char *DWARFDebugInfoEntry::GetMangledName(const DWARFUnit *cu, bool
substitute_name_allowed)` has a boolean option `substitute_name_allowed` that
defaults to true. So we should probably also change:
```
const char *DWARFDIE::GetMangledName() const;
```
To have that same option with a default value:
```
const char *DWARFDIE::GetMangledName(bool substitute_name_allowed = true) const
```
And then change your code to pass in `false` for the `substitute_name_allowed`
https://github.com/llvm/llvm-project/pull/113007
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits