//===-- llvm/MC/MCFixup.h - Instruction Relocation and Patching -*- 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 LLVM_MC_MCFIXUP_H #define LLVM_MC_MCFIXUP_H #include "llvm/Support/DataTypes.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/SMLoc.h" #include <cassert> namespace llvm { class MCExpr; /// Extensible enumeration to represent the type of a fixup. enum MCFixupKind { … }; /// Encode information on a single operation to perform on a byte /// sequence (e.g., an encoded instruction) which requires assemble- or run- /// time patching. /// /// Fixups are used any time the target instruction encoder needs to represent /// some value in an instruction which is not yet concrete. The encoder will /// encode the instruction assuming the value is 0, and emit a fixup which /// communicates to the assembler backend how it should rewrite the encoded /// value. /// /// During the process of relaxation, the assembler will apply fixups as /// symbolic values become concrete. When relaxation is complete, any remaining /// fixups become relocations in the object file (or errors, if the fixup cannot /// be encoded on the target). class MCFixup { … }; } // End llvm namespace #endif