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