10feedebfSJonas Devlieghere //===-- InstrumentationRuntimeASan.h ----------------------------*- C++ -*-===// 20feedebfSJonas Devlieghere // 30feedebfSJonas Devlieghere // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40feedebfSJonas Devlieghere // See https://llvm.org/LICENSE.txt for license information. 50feedebfSJonas Devlieghere // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60feedebfSJonas Devlieghere // 70feedebfSJonas Devlieghere //===----------------------------------------------------------------------===// 80feedebfSJonas Devlieghere 9cdc514e4SJonas Devlieghere #ifndef LLDB_SOURCE_PLUGINS_INSTRUMENTATIONRUNTIME_ASAN_INSTRUMENTATIONRUNTIMEASAN_H 10cdc514e4SJonas Devlieghere #define LLDB_SOURCE_PLUGINS_INSTRUMENTATIONRUNTIME_ASAN_INSTRUMENTATIONRUNTIMEASAN_H 110feedebfSJonas Devlieghere 120feedebfSJonas Devlieghere #include "lldb/Target/InstrumentationRuntime.h" 130feedebfSJonas Devlieghere 140feedebfSJonas Devlieghere namespace lldb_private { 150feedebfSJonas Devlieghere 160feedebfSJonas Devlieghere class InstrumentationRuntimeASan : public lldb_private::InstrumentationRuntime { 170feedebfSJonas Devlieghere public: 180feedebfSJonas Devlieghere ~InstrumentationRuntimeASan() override; 190feedebfSJonas Devlieghere 200feedebfSJonas Devlieghere static lldb::InstrumentationRuntimeSP 210feedebfSJonas Devlieghere CreateInstance(const lldb::ProcessSP &process_sp); 220feedebfSJonas Devlieghere 230feedebfSJonas Devlieghere static void Initialize(); 240feedebfSJonas Devlieghere 250feedebfSJonas Devlieghere static void Terminate(); 260feedebfSJonas Devlieghere GetPluginNameStatic()27*a3942318SPavel Labath static llvm::StringRef GetPluginNameStatic() { return "AddressSanitizer"; } 280feedebfSJonas Devlieghere 290feedebfSJonas Devlieghere static lldb::InstrumentationRuntimeType GetTypeStatic(); 300feedebfSJonas Devlieghere GetPluginName()31*a3942318SPavel Labath llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); } 320feedebfSJonas Devlieghere GetType()330feedebfSJonas Devlieghere virtual lldb::InstrumentationRuntimeType GetType() { return GetTypeStatic(); } 340feedebfSJonas Devlieghere 350feedebfSJonas Devlieghere private: InstrumentationRuntimeASan(const lldb::ProcessSP & process_sp)360feedebfSJonas Devlieghere InstrumentationRuntimeASan(const lldb::ProcessSP &process_sp) 370feedebfSJonas Devlieghere : lldb_private::InstrumentationRuntime(process_sp) {} 380feedebfSJonas Devlieghere 390feedebfSJonas Devlieghere const RegularExpression &GetPatternForRuntimeLibrary() override; 400feedebfSJonas Devlieghere 410feedebfSJonas Devlieghere bool CheckIfRuntimeIsValid(const lldb::ModuleSP module_sp) override; 420feedebfSJonas Devlieghere 430feedebfSJonas Devlieghere void Activate() override; 440feedebfSJonas Devlieghere 450feedebfSJonas Devlieghere void Deactivate(); 460feedebfSJonas Devlieghere 470feedebfSJonas Devlieghere static bool NotifyBreakpointHit(void *baton, 480feedebfSJonas Devlieghere StoppointCallbackContext *context, 490feedebfSJonas Devlieghere lldb::user_id_t break_id, 500feedebfSJonas Devlieghere lldb::user_id_t break_loc_id); 510feedebfSJonas Devlieghere }; 520feedebfSJonas Devlieghere 530feedebfSJonas Devlieghere } // namespace lldb_private 540feedebfSJonas Devlieghere 55cdc514e4SJonas Devlieghere #endif // LLDB_SOURCE_PLUGINS_INSTRUMENTATIONRUNTIME_ASAN_INSTRUMENTATIONRUNTIMEASAN_H 56