//==-- llvm/MC/MCRelocationInfo.h --------------------------------*- C++ -*-==// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // This file declares the MCRelocationInfo class, which provides methods to // create MCExprs from relocations, either found in an object::ObjectFile // (object::RelocationRef), or provided through the C API. // //===----------------------------------------------------------------------===// #ifndef LLVM_MC_MCRELOCATIONINFO_H #define LLVM_MC_MCRELOCATIONINFO_H #include "llvm/Support/Compiler.h" namespace llvm { namespace object { class RelocationRef; } class MCExpr; class MCContext; /// \brief Create MCExprs from relocations found in an object file. class MCRelocationInfo { MCRelocationInfo(const MCRelocationInfo &) LLVM_DELETED_FUNCTION; void operator=(const MCRelocationInfo &) LLVM_DELETED_FUNCTION; protected: MCContext &Ctx; public: MCRelocationInfo(MCContext &Ctx); virtual ~MCRelocationInfo(); /// \brief Create an MCExpr for the relocation \p Rel. /// \returns If possible, an MCExpr corresponding to Rel, else 0. virtual const MCExpr *createExprForRelocation(object::RelocationRef Rel); /// \brief Create an MCExpr for the target-specific \p VariantKind. /// The VariantKinds are defined in llvm-c/Disassembler.h. /// Used by MCExternalSymbolizer. /// \returns If possible, an MCExpr corresponding to VariantKind, else 0. virtual const MCExpr *createExprForCAPIVariantKind(const MCExpr *SubExpr, unsigned VariantKind); }; } #endif