//===-- ObjectFile.h --------------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLDB_SYMBOL_OBJECTFILE_H #define LLDB_SYMBOL_OBJECTFILE_H #include "lldb/Core/ModuleChild.h" #include "lldb/Core/PluginInterface.h" #include "lldb/Symbol/Symtab.h" #include "lldb/Symbol/UnwindTable.h" #include "lldb/Utility/AddressableBits.h" #include "lldb/Utility/DataExtractor.h" #include "lldb/Utility/Endian.h" #include "lldb/Utility/FileSpec.h" #include "lldb/Utility/FileSpecList.h" #include "lldb/Utility/UUID.h" #include "lldb/lldb-private.h" #include "llvm/Support/Threading.h" #include "llvm/Support/VersionTuple.h" #include <optional> namespace lldb_private { /// \class ObjectFile ObjectFile.h "lldb/Symbol/ObjectFile.h" /// A plug-in interface definition class for object file parsers. /// /// Object files belong to Module objects and know how to extract information /// from executable, shared library, and object (.o) files used by operating /// system runtime. The symbol table and section list for an object file. /// /// Object files can be represented by the entire file, or by part of a file. /// An example of a partial file ObjectFile is one that contains information /// for one of multiple architectures in the same file. /// /// Once an architecture is selected the object file information can be /// extracted from this abstract class. class ObjectFile : public std::enable_shared_from_this<ObjectFile>, public PluginInterface, public ModuleChild { … }; } // namespace lldb_private namespace llvm { template <> struct format_provider<lldb_private::ObjectFile::Type> { … }; template <> struct format_provider<lldb_private::ObjectFile::Strata> { … }; namespace json { bool fromJSON(const llvm::json::Value &value, lldb_private::ObjectFile::Type &, llvm::json::Path path); } // namespace json } // namespace llvm #endif // LLDB_SYMBOL_OBJECTFILE_H