Path: blob/main/contrib/llvm-project/lldb/source/Plugins/ObjectFile/Breakpad/ObjectFileBreakpad.h
39644 views
//===-- ObjectFileBreakpad.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_OBJECTFILE_BREAKPAD_OBJECTFILEBREAKPAD_H9#define LLDB_SOURCE_PLUGINS_OBJECTFILE_BREAKPAD_OBJECTFILEBREAKPAD_H1011#include "lldb/Symbol/ObjectFile.h"12#include "lldb/Utility/ArchSpec.h"1314namespace lldb_private {15namespace breakpad {1617class ObjectFileBreakpad : public ObjectFile {18public:19// Static Functions20static void Initialize();21static void Terminate();2223static llvm::StringRef GetPluginNameStatic() { return "breakpad"; }24static const char *GetPluginDescriptionStatic() {25return "Breakpad object file reader.";26}2728static ObjectFile *29CreateInstance(const lldb::ModuleSP &module_sp, lldb::DataBufferSP data_sp,30lldb::offset_t data_offset, const FileSpec *file,31lldb::offset_t file_offset, lldb::offset_t length);3233static ObjectFile *CreateMemoryInstance(const lldb::ModuleSP &module_sp,34lldb::WritableDataBufferSP data_sp,35const lldb::ProcessSP &process_sp,36lldb::addr_t header_addr);3738static size_t GetModuleSpecifications(const FileSpec &file,39lldb::DataBufferSP &data_sp,40lldb::offset_t data_offset,41lldb::offset_t file_offset,42lldb::offset_t length,43ModuleSpecList &specs);4445// PluginInterface protocol46llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }4748// LLVM RTTI support49static char ID;50bool isA(const void *ClassID) const override {51return ClassID == &ID || ObjectFile::isA(ClassID);52}53static bool classof(const ObjectFile *obj) { return obj->isA(&ID); }5455// ObjectFile Protocol.5657bool ParseHeader() override;5859lldb::ByteOrder GetByteOrder() const override {60return m_arch.GetByteOrder();61}6263bool IsExecutable() const override { return false; }6465uint32_t GetAddressByteSize() const override {66return m_arch.GetAddressByteSize();67}6869AddressClass GetAddressClass(lldb::addr_t file_addr) override {70return AddressClass::eInvalid;71}7273void ParseSymtab(lldb_private::Symtab &symtab) override;7475bool IsStripped() override { return false; }7677void CreateSections(SectionList &unified_section_list) override;7879void Dump(Stream *s) override {}8081ArchSpec GetArchitecture() override { return m_arch; }8283UUID GetUUID() override { return m_uuid; }8485uint32_t GetDependentModules(FileSpecList &files) override { return 0; }8687Type CalculateType() override { return eTypeDebugInfo; }8889Strata CalculateStrata() override { return eStrataUser; }9091private:92ArchSpec m_arch;93UUID m_uuid;9495ObjectFileBreakpad(const lldb::ModuleSP &module_sp,96lldb::DataBufferSP &data_sp, lldb::offset_t data_offset,97const FileSpec *file, lldb::offset_t offset,98lldb::offset_t length, ArchSpec arch, UUID uuid);99};100101} // namespace breakpad102} // namespace lldb_private103#endif // LLDB_SOURCE_PLUGINS_OBJECTFILE_BREAKPAD_OBJECTFILEBREAKPAD_H104105106