11d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar//===-- llvm/MC/MCFixupKindInfo.h - Fixup Descriptors -----------*- C++ -*-===//
21d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar//
31d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar//                     The LLVM Compiler Infrastructure
41d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar//
51d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar// This file is distributed under the University of Illinois Open Source
61d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar// License. See LICENSE.TXT for details.
71d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar//
81d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar//===----------------------------------------------------------------------===//
91d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar
101d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar#ifndef LLVM_MC_MCFIXUPKINDINFO_H
111d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar#define LLVM_MC_MCFIXUPKINDINFO_H
121d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar
131d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbarnamespace llvm {
141d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar
151d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar/// MCFixupKindInfo - Target independent information on a fixup kind.
161d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbarstruct MCFixupKindInfo {
171d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar  enum FixupKindFlags {
181d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar    /// Is this fixup kind PCrelative? This is used by the assembler backend to
191d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar    /// evaluate fixup values in a target independent manner when possible.
201d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar    FKF_IsPCRel = (1 << 0),
21639aa87bee77fe2d83f0978ae1eea53e49def324Jim Grosbach
221d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar    /// Should this fixup kind force a 4-byte aligned effective PC value?
231d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar    FKF_IsAlignedDownTo32Bits = (1 << 1)
241d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar  };
251d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar
261d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar  /// A target specific name for the fixup kind. The names will be unique for
271d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar  /// distinct kinds on any given target.
281d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar  const char *Name;
291d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar
301d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar  /// The bit offset to write the relocation into.
311d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar  unsigned TargetOffset;
321d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar
331d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar  /// The number of bits written by this fixup. The bits are assumed to be
341d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar  /// contiguous.
351d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar  unsigned TargetSize;
361d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar
371d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar  /// Flags describing additional information on this fixup kind.
381d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar  unsigned Flags;
391d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar};
401d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar
411d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar} // End llvm namespace
421d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar
431d6547eb49ef46d2606810f0abad2570c41e38bdDaniel Dunbar#endif
44