1*4d9fdb46SRobert Mustacchi /* 2*4d9fdb46SRobert Mustacchi Copyright (C) 2007-2012 David Anderson. All Rights Reserved. 3*4d9fdb46SRobert Mustacchi Portions Copyright (C) 2012 SN Systems Ltd. All rights reserved. 4*4d9fdb46SRobert Mustacchi 5*4d9fdb46SRobert Mustacchi This program is free software; you can redistribute it and/or modify it 6*4d9fdb46SRobert Mustacchi under the terms of version 2.1 of the GNU Lesser General Public License 7*4d9fdb46SRobert Mustacchi published by the Free Software Foundation. 8*4d9fdb46SRobert Mustacchi 9*4d9fdb46SRobert Mustacchi This program is distributed in the hope that it would be useful, but 10*4d9fdb46SRobert Mustacchi WITHOUT ANY WARRANTY; without even the implied warranty of 11*4d9fdb46SRobert Mustacchi MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12*4d9fdb46SRobert Mustacchi 13*4d9fdb46SRobert Mustacchi Further, this software is distributed without any warranty that it is 14*4d9fdb46SRobert Mustacchi free of the rightful claim of any third person regarding infringement 15*4d9fdb46SRobert Mustacchi or the like. Any license provided herein, whether implied or 16*4d9fdb46SRobert Mustacchi otherwise, applies only to this software file. Patent licenses, if 17*4d9fdb46SRobert Mustacchi any, provided herein do not apply to combinations of this program with 18*4d9fdb46SRobert Mustacchi other software, or any other product whatsoever. 19*4d9fdb46SRobert Mustacchi 20*4d9fdb46SRobert Mustacchi You should have received a copy of the GNU Lesser General Public License along 21*4d9fdb46SRobert Mustacchi with this program; if not, write the Free Software Foundation, Inc., 51 22*4d9fdb46SRobert Mustacchi Franklin Street - Fifth Floor, Boston MA 02110-1301, USA. 23*4d9fdb46SRobert Mustacchi */ 24*4d9fdb46SRobert Mustacchi /* The address of the Free Software Foundation is 25*4d9fdb46SRobert Mustacchi Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, 26*4d9fdb46SRobert Mustacchi Boston, MA 02110-1301, USA. 27*4d9fdb46SRobert Mustacchi */ 28*4d9fdb46SRobert Mustacchi 29*4d9fdb46SRobert Mustacchi #ifndef DWARF_RELOC_X86_64_H 30*4d9fdb46SRobert Mustacchi #define DWARF_RELOC_X86_64_H 31*4d9fdb46SRobert Mustacchi 32*4d9fdb46SRobert Mustacchi /* Definitions for X86_64 */ 33*4d9fdb46SRobert Mustacchi #define DWARF_RELOC_X86_64 34*4d9fdb46SRobert Mustacchi 35*4d9fdb46SRobert Mustacchi /* Include the definitions only in the case of Windows */ 36*4d9fdb46SRobert Mustacchi #ifdef _WIN32 37*4d9fdb46SRobert Mustacchi /* Relocation types for AMD x86-64 architecture */ 38*4d9fdb46SRobert Mustacchi #define R_X86_64_NONE 0 /* No reloc */ 39*4d9fdb46SRobert Mustacchi #define R_X86_64_64 1 /* Direct 64 bit */ 40*4d9fdb46SRobert Mustacchi #define R_X86_64_PC32 2 /* PC relative 32 bit signed */ 41*4d9fdb46SRobert Mustacchi #define R_X86_64_GOT32 3 /* 32 bit GOT entry */ 42*4d9fdb46SRobert Mustacchi #define R_X86_64_PLT32 4 /* 32 bit PLT address */ 43*4d9fdb46SRobert Mustacchi #define R_X86_64_COPY 5 /* Copy symbol at runtime */ 44*4d9fdb46SRobert Mustacchi #define R_X86_64_GLOB_DAT 6 /* Create GOT entry */ 45*4d9fdb46SRobert Mustacchi #define R_X86_64_JUMP_SLOT 7 /* Create PLT entry */ 46*4d9fdb46SRobert Mustacchi #define R_X86_64_RELATIVE 8 /* Adjust by program base */ 47*4d9fdb46SRobert Mustacchi #define R_X86_64_GOTPCREL 9 /* 32 bit signed pc relative offset to GOT */ 48*4d9fdb46SRobert Mustacchi #define R_X86_64_32 10 /* Direct 32 bit zero extended */ 49*4d9fdb46SRobert Mustacchi #define R_X86_64_32S 11 /* Direct 32 bit sign extended */ 50*4d9fdb46SRobert Mustacchi #define R_X86_64_16 12 /* Direct 16 bit zero extended */ 51*4d9fdb46SRobert Mustacchi #define R_X86_64_PC16 13 /* 16 bit sign extended pc relative */ 52*4d9fdb46SRobert Mustacchi #define R_X86_64_8 14 /* Direct 8 bit sign extended */ 53*4d9fdb46SRobert Mustacchi #define R_X86_64_PC8 15 /* 8 bit sign extended pc relative */ 54*4d9fdb46SRobert Mustacchi #define R_X86_64_DTPMOD64 16 /* ID of module containing symbol */ 55*4d9fdb46SRobert Mustacchi #define R_X86_64_DTPOFF64 17 /* Offset in module's TLS block */ 56*4d9fdb46SRobert Mustacchi #define R_X86_64_TPOFF64 18 /* Offset in initial TLS block */ 57*4d9fdb46SRobert Mustacchi #define R_X86_64_TLSGD 19 /* 32 bit signed PC relative offset 58*4d9fdb46SRobert Mustacchi to two GOT entries for GD symbol */ 59*4d9fdb46SRobert Mustacchi #define R_X86_64_TLSLD 20 /* 32 bit signed PC relative offset 60*4d9fdb46SRobert Mustacchi to two GOT entries for LD symbol */ 61*4d9fdb46SRobert Mustacchi #define R_X86_64_DTPOFF32 21 /* Offset in TLS block */ 62*4d9fdb46SRobert Mustacchi #define R_X86_64_GOTTPOFF 22 /* 32 bit signed PC relative offset 63*4d9fdb46SRobert Mustacchi to GOT entry for IE symbol */ 64*4d9fdb46SRobert Mustacchi #define R_X86_64_TPOFF32 23 /* Offset in initial TLS block */ 65*4d9fdb46SRobert Mustacchi #define R_X86_64_PC64 24 /* PC relative 64 bit */ 66*4d9fdb46SRobert Mustacchi #define R_X86_64_GOTOFF64 25 /* 64 bit offset to GOT */ 67*4d9fdb46SRobert Mustacchi #define R_X86_64_GOTPC32 26 /* 32 bit signed pc relative offset to GOT */ 68*4d9fdb46SRobert Mustacchi #define R_X86_64_GOT64 27 /* 64-bit GOT entry offset */ 69*4d9fdb46SRobert Mustacchi #define R_X86_64_GOTPCREL64 28 /* 64-bit PC relative offset to GOT entry */ 70*4d9fdb46SRobert Mustacchi #define R_X86_64_GOTPC64 29 /* 64-bit PC relative offset to GOT */ 71*4d9fdb46SRobert Mustacchi #define R_X86_64_GOTPLT64 30 /* like GOT64, says PLT entry needed */ 72*4d9fdb46SRobert Mustacchi #define R_X86_64_PLTOFF64 31 /* 64-bit GOT relative offset to PLT entry */ 73*4d9fdb46SRobert Mustacchi #define R_X86_64_SIZE32 32 /* Size of symbol plus 32-bit addend */ 74*4d9fdb46SRobert Mustacchi #define R_X86_64_SIZE64 33 /* Size of symbol plus 64-bit addend */ 75*4d9fdb46SRobert Mustacchi #define R_X86_64_GOTPC32_TLSDESC 34 /* GOT offset for TLS descriptor */ 76*4d9fdb46SRobert Mustacchi #define R_X86_64_TLSDESC_CALL 35 /* Marker for call through TLS descriptor */ 77*4d9fdb46SRobert Mustacchi #define R_X86_64_TLSDESC 36 /* TLS descriptor */ 78*4d9fdb46SRobert Mustacchi #define R_X86_64_IRELATIVE 37 /* Adjust indirectly by program base */ 79*4d9fdb46SRobert Mustacchi #define R_X86_64_RELATIVE64 38 /* 64bit adjust by program base */ 80*4d9fdb46SRobert Mustacchi 81*4d9fdb46SRobert Mustacchi /* Keep this the last entry. */ 82*4d9fdb46SRobert Mustacchi #define R_X86_64_NUM 39 83*4d9fdb46SRobert Mustacchi #endif /* _WIN32 */ 84*4d9fdb46SRobert Mustacchi 85*4d9fdb46SRobert Mustacchi /* Relocation types for X86_64 */ 86*4d9fdb46SRobert Mustacchi static const char *reloc_type_names_X86_64[] = { 87*4d9fdb46SRobert Mustacchi "R_X86_64_NONE", /* 00 */ 88*4d9fdb46SRobert Mustacchi "R_X86_64_64", /* 01 */ 89*4d9fdb46SRobert Mustacchi "R_X86_64_PC32", /* 02 */ 90*4d9fdb46SRobert Mustacchi "R_X86_64_GOT32", /* 03 */ 91*4d9fdb46SRobert Mustacchi "R_X86_64_PLT32", /* 04 */ 92*4d9fdb46SRobert Mustacchi "R_X86_64_COPY", /* 05 */ 93*4d9fdb46SRobert Mustacchi "R_X86_64_GLOB_DAT", /* 06 */ 94*4d9fdb46SRobert Mustacchi "R_X86_64_JUMP_SLOT", /* 07 */ 95*4d9fdb46SRobert Mustacchi "R_X86_64_RELATIVE", /* 08 */ 96*4d9fdb46SRobert Mustacchi "R_X86_64_GOTPCREL", /* 09 */ 97*4d9fdb46SRobert Mustacchi "R_X86_64_32", /* 10 */ 98*4d9fdb46SRobert Mustacchi "R_X86_64_32S", /* 11 */ 99*4d9fdb46SRobert Mustacchi "R_X86_64_16", /* 12 */ 100*4d9fdb46SRobert Mustacchi "R_X86_64_PC16", /* 13 */ 101*4d9fdb46SRobert Mustacchi "R_X86_64_8", /* 14 */ 102*4d9fdb46SRobert Mustacchi "R_X86_64_PC8", /* 15 */ 103*4d9fdb46SRobert Mustacchi "R_X86_64_DTPMOD64", /* 16 */ 104*4d9fdb46SRobert Mustacchi "R_X86_64_DTPOFF64", /* 17 */ 105*4d9fdb46SRobert Mustacchi "R_X86_64_TPOFF64", /* 18 */ 106*4d9fdb46SRobert Mustacchi "R_X86_64_TLSGD", /* 19 */ 107*4d9fdb46SRobert Mustacchi "R_X86_64_TLSLD", /* 20 */ 108*4d9fdb46SRobert Mustacchi "R_X86_64_DTPOFF32", /* 21 */ 109*4d9fdb46SRobert Mustacchi "R_X86_64_GOTTPOFF", /* 22 */ 110*4d9fdb46SRobert Mustacchi "R_X86_64_TPOFF32", /* 23 */ 111*4d9fdb46SRobert Mustacchi "R_X86_64_PC64", /* 24 */ 112*4d9fdb46SRobert Mustacchi "R_X86_64_GOTOFF64", /* 25 */ 113*4d9fdb46SRobert Mustacchi "R_X86_64_GOTPC32", /* 26 */ 114*4d9fdb46SRobert Mustacchi "R_X86_64_GOT64", /* 27 */ 115*4d9fdb46SRobert Mustacchi "R_X86_64_GOTPCREL64", /* 28 */ 116*4d9fdb46SRobert Mustacchi "R_X86_64_GOTPC64", /* 29 */ 117*4d9fdb46SRobert Mustacchi "R_X86_64_GOTPLT64", /* 30 */ 118*4d9fdb46SRobert Mustacchi "R_X86_64_PLTOFF64", /* 31 */ 119*4d9fdb46SRobert Mustacchi "R_X86_64_SIZE32", /* 32 */ 120*4d9fdb46SRobert Mustacchi "R_X86_64_SIZE64", /* 33 */ 121*4d9fdb46SRobert Mustacchi "R_X86_64_GOTPC32_TLSDESC", /* 34 */ 122*4d9fdb46SRobert Mustacchi "R_X86_64_TLSDESC_CALL", /* 35 */ 123*4d9fdb46SRobert Mustacchi "R_X86_64_TLSDESC", /* 36 */ 124*4d9fdb46SRobert Mustacchi "R_X86_64_IRELATIVE", /* 37 */ 125*4d9fdb46SRobert Mustacchi "R_X86_64_RELATIVE64", /* 38 */ 126*4d9fdb46SRobert Mustacchi }; 127*4d9fdb46SRobert Mustacchi #endif /* DWARF_RELOC_X86_64_H */ 128