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 19 namespace 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