llvm-project/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime
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
..
AppleObjCClassDescriptorV2.cpp [lldb] Use value_or instead of getValueOr (NFC) 2022-06-19 09:12:01 -07:00
AppleObjCClassDescriptorV2.h [LLDB][NFC][Reliability] Fix uninitialized variables from Coverity scan 2022-07-20 14:50:48 -07:00
AppleObjCDeclVendor.cpp Make CompilerType safe 2022-11-16 15:51:26 -08:00
AppleObjCDeclVendor.h Make CompilerType safe 2022-11-16 15:51:26 -08:00
AppleObjCRuntime.cpp LLVM_NODISCARD => [[nodiscard]]. NFC 2022-08-09 07:16:34 +00:00
AppleObjCRuntime.h
AppleObjCRuntimeV1.cpp [lldb] Refactor DataBuffer so we can map files as read-only 2022-04-05 13:46:37 -07:00
AppleObjCRuntimeV1.h Remove ConstString from Language, LanguageRuntime, SystemRuntime and SymbolFile plugin names 2021-10-27 08:25:44 +02:00
AppleObjCRuntimeV2.cpp [lldb] Fix up Objective-C ISA pointers 2022-06-23 14:16:29 -07:00
AppleObjCRuntimeV2.h [lldb] Add a setting to specify the preferred dynamic class info extractor o 2022-06-21 18:51:39 -07:00
AppleObjCTrampolineHandler.cpp [lldb] Use std::size instead of llvm::array_lengthof 2022-09-08 14:21:55 -06:00
AppleObjCTrampolineHandler.h Adapt the ObjC stepping algorithm to deal with "selector-stubs" in clang. 2022-04-08 17:45:16 -07:00
AppleObjCTypeEncodingParser.cpp Make CompilerType safe 2022-11-16 15:51:26 -08:00
AppleObjCTypeEncodingParser.h [lldb] Move Objective-C constants into ObjCConstants.h 2021-08-07 16:04:52 -07:00
AppleThreadPlanStepThroughObjCTrampoline.cpp Adapt the ObjC stepping algorithm to deal with "selector-stubs" in clang. 2022-04-08 17:45:16 -07:00
AppleThreadPlanStepThroughObjCTrampoline.h Adapt the ObjC stepping algorithm to deal with "selector-stubs" in clang. 2022-04-08 17:45:16 -07:00
CMakeLists.txt