llvm-project/lldb/source/Plugins/ABI
Adrian Prantl 6eaedbb52f Make CompilerType safe
When a process gets restarted TypeSystem objects associated with it
may get deleted, and any CompilerType objects holding on to a
reference to that type system are a use-after-free in waiting. Because
of the SBAPI, we don't have tight control over where CompilerTypes go
and when they are used. This is particularly a problem in the Swift
plugin, where the scratch TypeSystem can be restarted while the
process is still running. The Swift plugin has a lock to prevent
abuse, but where there's a lock there can be bugs.

This patch changes CompilerType to store a std::weak_ptr<TypeSystem>.
Most of the std::weak_ptr<TypeSystem>* uglyness is hidden by
introducing a wrapper class CompilerType::WrappedTypeSystem that has a
dyn_cast_or_null() method. The only sites that need to know about the
weak pointer implementation detail are the ones that deal with
creating TypeSystems.

rdar://101505232

Differential Revision: https://reviews.llvm.org/D136650
2022-11-16 15:51:26 -08:00
..
AArch64 [LLDB] Pass const RegisterInfo& to RegisterValue::SetValueFromData 2022-10-12 08:19:30 +00:00
ARC [lldb][ARC] Fix -Wtautological-bitwise-compare warning 2022-08-13 00:18:37 -07:00
ARM [LLDB] Change RegisterValue::GetAsMemoryData to const RegisterInfo& 2022-10-11 13:59:05 +00:00
Hexagon [lldb] Remove ConstString from ABI, Architecture and Disassembler plugin names 2021-10-22 10:29:19 +02:00
Mips [LLDB] Change RegisterValue::GetAsMemoryData to const RegisterInfo& 2022-10-11 13:59:05 +00:00
PowerPC Make CompilerType safe 2022-11-16 15:51:26 -08:00
SystemZ [lldb] Use std::size instead of llvm::array_lengthof 2022-09-08 14:21:55 -06:00
X86 Make CompilerType safe 2022-11-16 15:51:26 -08:00
CMakeLists.txt