1//===- X86Relocations.h - X86 Code Relocations ------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file defines the X86 target-specific relocation types. 11// 12//===----------------------------------------------------------------------===// 13 14#ifndef X86RELOCATIONS_H 15#define X86RELOCATIONS_H 16 17#include "llvm/CodeGen/MachineRelocation.h" 18 19namespace llvm { 20 namespace X86 { 21 /// RelocationType - An enum for the x86 relocation codes. Note that 22 /// the terminology here doesn't follow x86 convention - word means 23 /// 32-bit and dword means 64-bit. The relocations will be treated 24 /// by JIT or ObjectCode emitters, this is transparent to the x86 code 25 /// emitter but JIT and ObjectCode will treat them differently 26 enum RelocationType { 27 /// reloc_pcrel_word - PC relative relocation, add the relocated value to 28 /// the value already in memory, after we adjust it for where the PC is. 29 reloc_pcrel_word = 0, 30 31 /// reloc_picrel_word - PIC base relative relocation, add the relocated 32 /// value to the value already in memory, after we adjust it for where the 33 /// PIC base is. 34 reloc_picrel_word = 1, 35 36 /// reloc_absolute_word - absolute relocation, just add the relocated 37 /// value to the value already in memory. 38 reloc_absolute_word = 2, 39 40 /// reloc_absolute_word_sext - absolute relocation, just add the relocated 41 /// value to the value already in memory. In object files, it represents a 42 /// value which must be sign-extended when resolving the relocation. 43 reloc_absolute_word_sext = 3, 44 45 /// reloc_absolute_dword - absolute relocation, just add the relocated 46 /// value to the value already in memory. 47 reloc_absolute_dword = 4 48 }; 49 } 50} 51 52#endif 53