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