Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:44:11

0001 //===- llvm/MC/MCRelocationInfo.h -------------------------------*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 //
0009 // This file declares the MCRelocationInfo class, which provides methods to
0010 // create MCExprs from relocations, either found in an object::ObjectFile
0011 // (object::RelocationRef), or provided through the C API.
0012 //
0013 //===----------------------------------------------------------------------===//
0014 
0015 #ifndef LLVM_MC_MCDISASSEMBLER_MCRELOCATIONINFO_H
0016 #define LLVM_MC_MCDISASSEMBLER_MCRELOCATIONINFO_H
0017 
0018 namespace llvm {
0019 
0020 class MCContext;
0021 class MCExpr;
0022 
0023 /// Create MCExprs from relocations found in an object file.
0024 class MCRelocationInfo {
0025 protected:
0026   MCContext &Ctx;
0027 
0028 public:
0029   MCRelocationInfo(MCContext &Ctx);
0030   MCRelocationInfo(const MCRelocationInfo &) = delete;
0031   MCRelocationInfo &operator=(const MCRelocationInfo &) = delete;
0032   virtual ~MCRelocationInfo();
0033 
0034   /// Create an MCExpr for the target-specific \p VariantKind.
0035   /// The VariantKinds are defined in llvm-c/Disassembler.h.
0036   /// Used by MCExternalSymbolizer.
0037   /// \returns If possible, an MCExpr corresponding to VariantKind, else 0.
0038   virtual const MCExpr *createExprForCAPIVariantKind(const MCExpr *SubExpr,
0039                                                      unsigned VariantKind);
0040 };
0041 
0042 } // end namespace llvm
0043 
0044 #endif // LLVM_MC_MCDISASSEMBLER_MCRELOCATIONINFO_H