[Lldb-commits] [PATCH] D136650: Make CompilerType safe [Was: Add a check for TypeSystem use-after-free problems]
Pavel Labath via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Tue Nov 15 00:52:25 PST 2022
labath added inline comments.
================
Comment at: lldb/include/lldb/Symbol/CompilerType.h:58
+ template <class TypeSystemType> TypeSystemType *dyn_cast_or_null() {
+ return llvm::dyn_cast_or_null<TypeSystemType>(m_typesystem_sp.get());
+ }
----------------
Maybe do something like this instead:
```
template <class TypeSystemType> std::shared_ptr<TypeSystemType> dyn_cast_or_null() {
if (llvm::isa<TypeSystemType>(m_typesystem_sp.get()))
return std::shared_ptr<TypeSystemType>(m_typesystem_sp, llvm::cast<TypeSystemType>(m_typesystem_sp.get()));
return nullptr;
}
```
That said, `llvm::dyn_cast` supports custom casts for smart pointers (it already has them for std::unique_ptr), so it should be possible to completely avoid this wrapper class by implementing this logic inside llvm.
Although, then we'd have to answer awkward questions like "why are you using a shared_ptr in the first place".
================
Comment at: lldb/include/lldb/Symbol/CompilerType.h:60
+ }
+ operator bool() const { return static_cast<bool>(m_typesystem_sp); }
+ bool operator==(const TypeSystemSPWrapper &other) const;
----------------
add `explicit`
================
Comment at: lldb/include/lldb/Symbol/TypeSystem.h:517-520
+ /// Only to be used by TypeSystemMap and various unit tests.
+ void SetCanonicalWeakPtr(lldb::TypeSystemWP wp) { m_canonical_wp = wp; }
protected:
+ lldb::TypeSystemWP m_canonical_wp;
----------------
Can this be replaced by inheriting from `std::enable_shared_from_this`?
================
Comment at: lldb/source/Core/DumpDataExtractor.cpp:322
size_t byte_size) {
- if (target_sp) {
- if (auto type_system_or_err =
- target_sp->GetScratchTypeSystemForLanguage(eLanguageTypeC))
- return type_system_or_err->GetFloatTypeSemantics(byte_size);
- else
+ while (target_sp) {
+ auto type_system_or_err =
----------------
why?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D136650/new/
https://reviews.llvm.org/D136650
More information about the lldb-commits
mailing list