1*5f757f3fSDimitry Andric //===-- InstrumentationRuntimeASanLibsanitizers.h ---------------*- C++ -*-===// 2*5f757f3fSDimitry Andric // 3*5f757f3fSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*5f757f3fSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5*5f757f3fSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*5f757f3fSDimitry Andric // 7*5f757f3fSDimitry Andric //===----------------------------------------------------------------------===// 8*5f757f3fSDimitry Andric 9*5f757f3fSDimitry Andric #ifndef LLDB_SOURCE_PLUGINS_INSTRUMENTATIONRUNTIME_ASANLIBSANITIZERS_INSTRUMENTATIONRUNTIMEASANLIBSANITIZERS_H 10*5f757f3fSDimitry Andric #define LLDB_SOURCE_PLUGINS_INSTRUMENTATIONRUNTIME_ASANLIBSANITIZERS_INSTRUMENTATIONRUNTIMEASANLIBSANITIZERS_H 11*5f757f3fSDimitry Andric 12*5f757f3fSDimitry Andric #include "lldb/Target/InstrumentationRuntime.h" 13*5f757f3fSDimitry Andric 14*5f757f3fSDimitry Andric class InstrumentationRuntimeASanLibsanitizers 15*5f757f3fSDimitry Andric : public lldb_private::InstrumentationRuntime { 16*5f757f3fSDimitry Andric public: 17*5f757f3fSDimitry Andric ~InstrumentationRuntimeASanLibsanitizers() override; 18*5f757f3fSDimitry Andric 19*5f757f3fSDimitry Andric static lldb::InstrumentationRuntimeSP 20*5f757f3fSDimitry Andric CreateInstance(const lldb::ProcessSP &process_sp); 21*5f757f3fSDimitry Andric 22*5f757f3fSDimitry Andric static void Initialize(); 23*5f757f3fSDimitry Andric 24*5f757f3fSDimitry Andric static void Terminate(); 25*5f757f3fSDimitry Andric GetPluginNameStatic()26*5f757f3fSDimitry Andric static llvm::StringRef GetPluginNameStatic() { return "Libsanitizers-ASan"; } 27*5f757f3fSDimitry Andric 28*5f757f3fSDimitry Andric static lldb::InstrumentationRuntimeType GetTypeStatic(); 29*5f757f3fSDimitry Andric GetPluginName()30*5f757f3fSDimitry Andric llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); } 31*5f757f3fSDimitry Andric GetType()32*5f757f3fSDimitry Andric virtual lldb::InstrumentationRuntimeType GetType() { return GetTypeStatic(); } 33*5f757f3fSDimitry Andric 34*5f757f3fSDimitry Andric private: InstrumentationRuntimeASanLibsanitizers(const lldb::ProcessSP & process_sp)35*5f757f3fSDimitry Andric InstrumentationRuntimeASanLibsanitizers(const lldb::ProcessSP &process_sp) 36*5f757f3fSDimitry Andric : lldb_private::InstrumentationRuntime(process_sp) {} 37*5f757f3fSDimitry Andric 38*5f757f3fSDimitry Andric const lldb_private::RegularExpression &GetPatternForRuntimeLibrary() override; 39*5f757f3fSDimitry Andric 40*5f757f3fSDimitry Andric bool CheckIfRuntimeIsValid(const lldb::ModuleSP module_sp) override; 41*5f757f3fSDimitry Andric 42*5f757f3fSDimitry Andric void Activate() override; 43*5f757f3fSDimitry Andric 44*5f757f3fSDimitry Andric void Deactivate(); 45*5f757f3fSDimitry Andric 46*5f757f3fSDimitry Andric static bool 47*5f757f3fSDimitry Andric NotifyBreakpointHit(void *baton, 48*5f757f3fSDimitry Andric lldb_private::StoppointCallbackContext *context, 49*5f757f3fSDimitry Andric lldb::user_id_t break_id, lldb::user_id_t break_loc_id); 50*5f757f3fSDimitry Andric }; 51*5f757f3fSDimitry Andric 52*5f757f3fSDimitry Andric #endif // LLDB_SOURCE_PLUGINS_INSTRUMENTATIONRUNTIME_ASANLIBSANITIZERS_INSTRUMENTATIONRUNTIMEASANLIBSANITIZERS_H 53