Path: blob/main/contrib/llvm-project/lldb/source/Plugins/JITLoader/GDB/JITLoaderGDB.h
39642 views
//===-- JITLoaderGDB.h ------------------------------------------*- C++ -*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#ifndef LLDB_SOURCE_PLUGINS_JITLOADER_GDB_JITLOADERGDB_H9#define LLDB_SOURCE_PLUGINS_JITLOADER_GDB_JITLOADERGDB_H1011#include <map>1213#include "lldb/Target/JITLoader.h"14#include "lldb/Target/Process.h"1516class JITLoaderGDB : public lldb_private::JITLoader {17public:18JITLoaderGDB(lldb_private::Process *process);1920~JITLoaderGDB() override;2122// Static Functions23static void Initialize();2425static void Terminate();2627static llvm::StringRef GetPluginNameStatic() { return "gdb"; }2829static llvm::StringRef GetPluginDescriptionStatic();3031static lldb::JITLoaderSP CreateInstance(lldb_private::Process *process,32bool force);3334static void DebuggerInitialize(lldb_private::Debugger &debugger);3536// PluginInterface protocol37llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }3839// JITLoader interface40void DidAttach() override;4142void DidLaunch() override;4344void ModulesDidLoad(lldb_private::ModuleList &module_list) override;4546private:47lldb::addr_t GetSymbolAddress(lldb_private::ModuleList &module_list,48lldb_private::ConstString name,49lldb::SymbolType symbol_type) const;5051void SetJITBreakpoint(lldb_private::ModuleList &module_list);5253bool DidSetJITBreakpoint() const;5455bool ReadJITDescriptor(bool all_entries);5657template <typename ptr_t> bool ReadJITDescriptorImpl(bool all_entries);5859static bool60JITDebugBreakpointHit(void *baton,61lldb_private::StoppointCallbackContext *context,62lldb::user_id_t break_id, lldb::user_id_t break_loc_id);6364static void ProcessStateChangedCallback(void *baton,65lldb_private::Process *process,66lldb::StateType state);6768// A collection of in-memory jitted object addresses and their corresponding69// modules70typedef std::map<lldb::addr_t, const lldb::ModuleSP> JITObjectMap;71JITObjectMap m_jit_objects;7273lldb::user_id_t m_jit_break_id;74lldb::addr_t m_jit_descriptor_addr;75};7677#endif // LLDB_SOURCE_PLUGINS_JITLOADER_GDB_JITLOADERGDB_H787980