1//===- llvm/MC/MCRelocationInfo.h -------------------------------*- C++ -*-===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8// 9// This file declares the MCRelocationInfo class, which provides methods to 10// create MCExprs from relocations, either found in an object::ObjectFile 11// (object::RelocationRef), or provided through the C API. 12// 13//===----------------------------------------------------------------------===// 14 15#ifndef LLVM_MC_MCDISASSEMBLER_MCRELOCATIONINFO_H 16#define LLVM_MC_MCDISASSEMBLER_MCRELOCATIONINFO_H 17 18namespace llvm { 19 20class MCContext; 21class MCExpr; 22 23/// Create MCExprs from relocations found in an object file. 24class MCRelocationInfo { 25protected: 26 MCContext &Ctx; 27 28public: 29 MCRelocationInfo(MCContext &Ctx); 30 MCRelocationInfo(const MCRelocationInfo &) = delete; 31 MCRelocationInfo &operator=(const MCRelocationInfo &) = delete; 32 virtual ~MCRelocationInfo(); 33 34 /// Create an MCExpr for the target-specific \p VariantKind. 35 /// The VariantKinds are defined in llvm-c/Disassembler.h. 36 /// Used by MCExternalSymbolizer. 37 /// \returns If possible, an MCExpr corresponding to VariantKind, else 0. 38 virtual const MCExpr *createExprForCAPIVariantKind(const MCExpr *SubExpr, 39 unsigned VariantKind); 40}; 41 42} // end namespace llvm 43 44#endif // LLVM_MC_MCDISASSEMBLER_MCRELOCATIONINFO_H 45