Home | History | Annotate | Download | only in X86
      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