MCRelocationInfo.h revision 263508
1//==-- llvm/MC/MCRelocationInfo.h --------------------------------*- C++ -*-==// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file declares the MCRelocationInfo class, which provides methods to 11// create MCExprs from relocations, either found in an object::ObjectFile 12// (object::RelocationRef), or provided through the C API. 13// 14//===----------------------------------------------------------------------===// 15 16#ifndef LLVM_MC_MCRELOCATIONINFO_H 17#define LLVM_MC_MCRELOCATIONINFO_H 18 19#include "llvm/Support/Compiler.h" 20 21namespace llvm { 22 23namespace object { 24class RelocationRef; 25} 26class MCExpr; 27class MCContext; 28 29/// \brief Create MCExprs from relocations found in an object file. 30class MCRelocationInfo { 31 MCRelocationInfo(const MCRelocationInfo &) LLVM_DELETED_FUNCTION; 32 void operator=(const MCRelocationInfo &) LLVM_DELETED_FUNCTION; 33 34protected: 35 MCContext &Ctx; 36 37public: 38 MCRelocationInfo(MCContext &Ctx); 39 virtual ~MCRelocationInfo(); 40 41 /// \brief Create an MCExpr for the relocation \p Rel. 42 /// \returns If possible, an MCExpr corresponding to Rel, else 0. 43 virtual const MCExpr *createExprForRelocation(object::RelocationRef Rel); 44 45 /// \brief Create an MCExpr for the target-specific \p VariantKind. 46 /// The VariantKinds are defined in llvm-c/Disassembler.h. 47 /// Used by MCExternalSymbolizer. 48 /// \returns If possible, an MCExpr corresponding to VariantKind, else 0. 49 virtual const MCExpr *createExprForCAPIVariantKind(const MCExpr *SubExpr, 50 unsigned VariantKind); 51}; 52 53} 54 55#endif 56