xref: /illumos-gate/usr/src/lib/libdwarf/common/dwarf_reloc_ppc.h (revision 4d9fdb46b215739778ebc12079842c9905586999)
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_PPC_H
30*4d9fdb46SRobert Mustacchi #define DWARF_RELOC_PPC_H
31*4d9fdb46SRobert Mustacchi 
32*4d9fdb46SRobert Mustacchi /* Definitions for PPC */
33*4d9fdb46SRobert Mustacchi #define DWARF_RELOC_PPC
34*4d9fdb46SRobert Mustacchi 
35*4d9fdb46SRobert Mustacchi /* Include the definitions only in the case of Windows */
36*4d9fdb46SRobert Mustacchi #ifdef _WIN32
37*4d9fdb46SRobert Mustacchi /* PowerPC relocations defined by the ABIs */
38*4d9fdb46SRobert Mustacchi #define R_PPC_NONE                   0
39*4d9fdb46SRobert Mustacchi #define R_PPC_ADDR32                 1 /* 32bit absolute address */
40*4d9fdb46SRobert Mustacchi #define R_PPC_ADDR24                 2 /* 26bit address, 2 bits ignored.  */
41*4d9fdb46SRobert Mustacchi #define R_PPC_ADDR16                 3 /* 16bit absolute address */
42*4d9fdb46SRobert Mustacchi #define R_PPC_ADDR16_LO              4 /* lower 16bit of absolute address */
43*4d9fdb46SRobert Mustacchi #define R_PPC_ADDR16_HI              5 /* high 16bit of absolute address */
44*4d9fdb46SRobert Mustacchi #define R_PPC_ADDR16_HA              6 /* adjusted high 16bit */
45*4d9fdb46SRobert Mustacchi #define R_PPC_ADDR14                 7 /* 16bit address, 2 bits ignored */
46*4d9fdb46SRobert Mustacchi #define R_PPC_ADDR14_BRTAKEN         8
47*4d9fdb46SRobert Mustacchi #define R_PPC_ADDR14_BRNTAKEN        9
48*4d9fdb46SRobert Mustacchi #define R_PPC_REL24                 10 /* PC relative 26 bit */
49*4d9fdb46SRobert Mustacchi #define R_PPC_REL14                 11 /* PC relative 16 bit */
50*4d9fdb46SRobert Mustacchi #define R_PPC_REL14_BRTAKEN         12
51*4d9fdb46SRobert Mustacchi #define R_PPC_REL14_BRNTAKEN        13
52*4d9fdb46SRobert Mustacchi #define R_PPC_GOT16                 14
53*4d9fdb46SRobert Mustacchi #define R_PPC_GOT16_LO              15
54*4d9fdb46SRobert Mustacchi #define R_PPC_GOT16_HI              16
55*4d9fdb46SRobert Mustacchi #define R_PPC_GOT16_HA              17
56*4d9fdb46SRobert Mustacchi #define R_PPC_PLTREL24              18
57*4d9fdb46SRobert Mustacchi #define R_PPC_COPY                  19
58*4d9fdb46SRobert Mustacchi #define R_PPC_GLOB_DAT              20
59*4d9fdb46SRobert Mustacchi #define R_PPC_JMP_SLOT              21
60*4d9fdb46SRobert Mustacchi #define R_PPC_RELATIVE              22
61*4d9fdb46SRobert Mustacchi #define R_PPC_LOCAL24PC             23
62*4d9fdb46SRobert Mustacchi #define R_PPC_UADDR32               24
63*4d9fdb46SRobert Mustacchi #define R_PPC_UADDR16               25
64*4d9fdb46SRobert Mustacchi #define R_PPC_REL32                 26
65*4d9fdb46SRobert Mustacchi #define R_PPC_PLT32                 27
66*4d9fdb46SRobert Mustacchi #define R_PPC_PLTREL32              28
67*4d9fdb46SRobert Mustacchi #define R_PPC_PLT16_LO              29
68*4d9fdb46SRobert Mustacchi #define R_PPC_PLT16_HI              30
69*4d9fdb46SRobert Mustacchi #define R_PPC_PLT16_HA              31
70*4d9fdb46SRobert Mustacchi #define R_PPC_SDAREL16              32
71*4d9fdb46SRobert Mustacchi #define R_PPC_SECTOFF               33
72*4d9fdb46SRobert Mustacchi #define R_PPC_SECTOFF_LO            34
73*4d9fdb46SRobert Mustacchi #define R_PPC_SECTOFF_HI            35
74*4d9fdb46SRobert Mustacchi #define R_PPC_SECTOFF_HA            36
75*4d9fdb46SRobert Mustacchi 
76*4d9fdb46SRobert Mustacchi /* Unused types */
77*4d9fdb46SRobert Mustacchi #define R_PPC_37                    37
78*4d9fdb46SRobert Mustacchi #define R_PPC_38                    38
79*4d9fdb46SRobert Mustacchi #define R_PPC_39                    39
80*4d9fdb46SRobert Mustacchi #define R_PPC_40                    40
81*4d9fdb46SRobert Mustacchi #define R_PPC_41                    41
82*4d9fdb46SRobert Mustacchi #define R_PPC_42                    42
83*4d9fdb46SRobert Mustacchi #define R_PPC_43                    43
84*4d9fdb46SRobert Mustacchi #define R_PPC_44                    44
85*4d9fdb46SRobert Mustacchi #define R_PPC_45                    45
86*4d9fdb46SRobert Mustacchi #define R_PPC_46                    46
87*4d9fdb46SRobert Mustacchi #define R_PPC_47                    47
88*4d9fdb46SRobert Mustacchi #define R_PPC_48                    48
89*4d9fdb46SRobert Mustacchi #define R_PPC_49                    49
90*4d9fdb46SRobert Mustacchi #define R_PPC_50                    50
91*4d9fdb46SRobert Mustacchi #define R_PPC_51                    51
92*4d9fdb46SRobert Mustacchi #define R_PPC_52                    52
93*4d9fdb46SRobert Mustacchi #define R_PPC_53                    53
94*4d9fdb46SRobert Mustacchi #define R_PPC_54                    54
95*4d9fdb46SRobert Mustacchi #define R_PPC_55                    55
96*4d9fdb46SRobert Mustacchi 
97*4d9fdb46SRobert Mustacchi /* Unused types */
98*4d9fdb46SRobert Mustacchi #define R_PPC_56                    56
99*4d9fdb46SRobert Mustacchi #define R_PPC_57                    57
100*4d9fdb46SRobert Mustacchi #define R_PPC_58                    58
101*4d9fdb46SRobert Mustacchi #define R_PPC_59                    59
102*4d9fdb46SRobert Mustacchi #define R_PPC_60                    60
103*4d9fdb46SRobert Mustacchi #define R_PPC_61                    61
104*4d9fdb46SRobert Mustacchi #define R_PPC_62                    62
105*4d9fdb46SRobert Mustacchi #define R_PPC_63                    63
106*4d9fdb46SRobert Mustacchi #define R_PPC_64                    64
107*4d9fdb46SRobert Mustacchi #define R_PPC_65                    65
108*4d9fdb46SRobert Mustacchi #define R_PPC_66                    66
109*4d9fdb46SRobert Mustacchi 
110*4d9fdb46SRobert Mustacchi /* PowerPC relocations defined for the TLS access ABI.  */
111*4d9fdb46SRobert Mustacchi #define R_PPC_TLS                   67 /* none      (sym+add)@tls */
112*4d9fdb46SRobert Mustacchi #define R_PPC_DTPMOD32              68 /* word32    (sym+add)@dtpmod */
113*4d9fdb46SRobert Mustacchi #define R_PPC_TPREL16               69 /* half16*   (sym+add)@tprel */
114*4d9fdb46SRobert Mustacchi #define R_PPC_TPREL16_LO            70 /* half16    (sym+add)@tprel@l */
115*4d9fdb46SRobert Mustacchi #define R_PPC_TPREL16_HI            71 /* half16    (sym+add)@tprel@h */
116*4d9fdb46SRobert Mustacchi #define R_PPC_TPREL16_HA            72 /* half16    (sym+add)@tprel@ha */
117*4d9fdb46SRobert Mustacchi #define R_PPC_TPREL32               73 /* word32    (sym+add)@tprel */
118*4d9fdb46SRobert Mustacchi #define R_PPC_DTPREL16              74 /* half16*   (sym+add)@dtprel */
119*4d9fdb46SRobert Mustacchi #define R_PPC_DTPREL16_LO           75 /* half16    (sym+add)@dtprel@l */
120*4d9fdb46SRobert Mustacchi #define R_PPC_DTPREL16_HI           76 /* half16    (sym+add)@dtprel@h */
121*4d9fdb46SRobert Mustacchi #define R_PPC_DTPREL16_HA           77 /* half16    (sym+add)@dtprel@ha */
122*4d9fdb46SRobert Mustacchi #define R_PPC_DTPREL32              78 /* word32    (sym+add)@dtprel */
123*4d9fdb46SRobert Mustacchi #define R_PPC_GOT_TLSGD16           79 /* half16*   (sym+add)@got@tlsgd */
124*4d9fdb46SRobert Mustacchi #define R_PPC_GOT_TLSGD16_LO        80 /* half16    (sym+add)@got@tlsgd@l */
125*4d9fdb46SRobert Mustacchi #define R_PPC_GOT_TLSGD16_HI        81 /* half16    (sym+add)@got@tlsgd@h */
126*4d9fdb46SRobert Mustacchi #define R_PPC_GOT_TLSGD16_HA        82 /* half16    (sym+add)@got@tlsgd@ha */
127*4d9fdb46SRobert Mustacchi #define R_PPC_GOT_TLSLD16           83 /* half16*   (sym+add)@got@tlsld */
128*4d9fdb46SRobert Mustacchi #define R_PPC_GOT_TLSLD16_LO        84 /* half16    (sym+add)@got@tlsld@l */
129*4d9fdb46SRobert Mustacchi #define R_PPC_GOT_TLSLD16_HI        85 /* half16    (sym+add)@got@tlsld@h */
130*4d9fdb46SRobert Mustacchi #define R_PPC_GOT_TLSLD16_HA        86 /* half16    (sym+add)@got@tlsld@ha */
131*4d9fdb46SRobert Mustacchi #define R_PPC_GOT_TPREL16           87 /* half16*   (sym+add)@got@tprel */
132*4d9fdb46SRobert Mustacchi #define R_PPC_GOT_TPREL16_LO        88 /* half16    (sym+add)@got@tprel@l */
133*4d9fdb46SRobert Mustacchi #define R_PPC_GOT_TPREL16_HI        89 /* half16    (sym+add)@got@tprel@h */
134*4d9fdb46SRobert Mustacchi #define R_PPC_GOT_TPREL16_HA        90 /* half16    (sym+add)@got@tprel@ha */
135*4d9fdb46SRobert Mustacchi #define R_PPC_GOT_DTPREL16          91 /* half16*   (sym+add)@got@dtprel */
136*4d9fdb46SRobert Mustacchi #define R_PPC_GOT_DTPREL16_LO       92 /* half16*   (sym+add)@got@dtprel@l */
137*4d9fdb46SRobert Mustacchi #define R_PPC_GOT_DTPREL16_HI       93 /* half16*   (sym+add)@got@dtprel@h */
138*4d9fdb46SRobert Mustacchi #define R_PPC_GOT_DTPREL16_HA       94 /* half16*   (sym+add)@got@dtprel@ha */
139*4d9fdb46SRobert Mustacchi 
140*4d9fdb46SRobert Mustacchi /* Keep this the last entry.  */
141*4d9fdb46SRobert Mustacchi #define R_PPC_NUM                   95
142*4d9fdb46SRobert Mustacchi #endif /* _WIN32 */
143*4d9fdb46SRobert Mustacchi 
144*4d9fdb46SRobert Mustacchi /* PowerPC relocations defined by the ABIs */
145*4d9fdb46SRobert Mustacchi static const char *reloc_type_names_PPC[] = {
146*4d9fdb46SRobert Mustacchi     "R_PPC_NONE",                 /*  00 */
147*4d9fdb46SRobert Mustacchi     "R_PPC_ADDR32",               /*  01 */
148*4d9fdb46SRobert Mustacchi     "R_PPC_ADDR24",               /*  02 */
149*4d9fdb46SRobert Mustacchi     "R_PPC_ADDR16",               /*  03 */
150*4d9fdb46SRobert Mustacchi     "R_PPC_ADDR16_LO",            /*  04 */
151*4d9fdb46SRobert Mustacchi     "R_PPC_ADDR16_HI",            /*  05 */
152*4d9fdb46SRobert Mustacchi     "R_PPC_ADDR16_HA",            /*  06 */
153*4d9fdb46SRobert Mustacchi     "R_PPC_ADDR14",               /*  07 */
154*4d9fdb46SRobert Mustacchi     "R_PPC_ADDR14_BRTAKEN",       /*  08 */
155*4d9fdb46SRobert Mustacchi     "R_PPC_ADDR14_BRNTAKEN",      /*  09 */
156*4d9fdb46SRobert Mustacchi     "R_PPC_REL24",                /*  10 */
157*4d9fdb46SRobert Mustacchi     "R_PPC_REL14",                /*  11 */
158*4d9fdb46SRobert Mustacchi     "R_PPC_REL14_BRTAKEN",        /*  12 */
159*4d9fdb46SRobert Mustacchi     "R_PPC_REL14_BRNTAKEN",       /*  13 */
160*4d9fdb46SRobert Mustacchi     "R_PPC_GOT16",                /*  14 */
161*4d9fdb46SRobert Mustacchi     "R_PPC_GOT16_LO",             /*  15 */
162*4d9fdb46SRobert Mustacchi     "R_PPC_GOT16_HI",             /*  16 */
163*4d9fdb46SRobert Mustacchi     "R_PPC_GOT16_HA",             /*  17 */
164*4d9fdb46SRobert Mustacchi     "R_PPC_PLTREL24",             /*  18 */
165*4d9fdb46SRobert Mustacchi     "R_PPC_COPY",                 /*  19 */
166*4d9fdb46SRobert Mustacchi     "R_PPC_GLOB_DAT",             /*  20 */
167*4d9fdb46SRobert Mustacchi     "R_PPC_JMP_SLOT",             /*  21 */
168*4d9fdb46SRobert Mustacchi     "R_PPC_RELATIVE",             /*  22 */
169*4d9fdb46SRobert Mustacchi     "R_PPC_LOCAL24PC",            /*  23 */
170*4d9fdb46SRobert Mustacchi     "R_PPC_UADDR32",              /*  24 */
171*4d9fdb46SRobert Mustacchi     "R_PPC_UADDR16",              /*  25 */
172*4d9fdb46SRobert Mustacchi     "R_PPC_REL32",                /*  26 */
173*4d9fdb46SRobert Mustacchi     "R_PPC_PLT32",                /*  27 */
174*4d9fdb46SRobert Mustacchi     "R_PPC_PLTREL32",             /*  28 */
175*4d9fdb46SRobert Mustacchi     "R_PPC_PLT16_LO",             /*  29 */
176*4d9fdb46SRobert Mustacchi     "R_PPC_PLT16_HI",             /*  30 */
177*4d9fdb46SRobert Mustacchi     "R_PPC_PLT16_HA",             /*  31 */
178*4d9fdb46SRobert Mustacchi     "R_PPC_SDAREL16",             /*  32 */
179*4d9fdb46SRobert Mustacchi     "R_PPC_SECTOFF",              /*  33 */
180*4d9fdb46SRobert Mustacchi     "R_PPC_SECTOFF_LO",           /*  34 */
181*4d9fdb46SRobert Mustacchi     "R_PPC_SECTOFF_HI",           /*  35 */
182*4d9fdb46SRobert Mustacchi     "R_PPC_SECTOFF_HA",           /*  36 */
183*4d9fdb46SRobert Mustacchi     "R_PPC_37",                   /*  37 */
184*4d9fdb46SRobert Mustacchi     "R_PPC_38",                   /*  38 */
185*4d9fdb46SRobert Mustacchi     "R_PPC_39",                   /*  39 */
186*4d9fdb46SRobert Mustacchi     "R_PPC_40",                   /*  40 */
187*4d9fdb46SRobert Mustacchi     "R_PPC_41",                   /*  41 */
188*4d9fdb46SRobert Mustacchi     "R_PPC_42",                   /*  42 */
189*4d9fdb46SRobert Mustacchi     "R_PPC_43",                   /*  43 */
190*4d9fdb46SRobert Mustacchi     "R_PPC_44",                   /*  44 */
191*4d9fdb46SRobert Mustacchi     "R_PPC_45",                   /*  45 */
192*4d9fdb46SRobert Mustacchi     "R_PPC_46",                   /*  46 */
193*4d9fdb46SRobert Mustacchi     "R_PPC_47",                   /*  47 */
194*4d9fdb46SRobert Mustacchi     "R_PPC_48",                   /*  48 */
195*4d9fdb46SRobert Mustacchi     "R_PPC_49",                   /*  49 */
196*4d9fdb46SRobert Mustacchi     "R_PPC_50",                   /*  50 */
197*4d9fdb46SRobert Mustacchi     "R_PPC_51",                   /*  51 */
198*4d9fdb46SRobert Mustacchi     "R_PPC_52",                   /*  52 */
199*4d9fdb46SRobert Mustacchi     "R_PPC_53",                   /*  53 */
200*4d9fdb46SRobert Mustacchi     "R_PPC_54",                   /*  54 */
201*4d9fdb46SRobert Mustacchi     "R_PPC_55",                   /*  55 */
202*4d9fdb46SRobert Mustacchi     "R_PPC_56",                   /*  56 */
203*4d9fdb46SRobert Mustacchi     "R_PPC_57",                   /*  57 */
204*4d9fdb46SRobert Mustacchi     "R_PPC_58",                   /*  58 */
205*4d9fdb46SRobert Mustacchi     "R_PPC_59",                   /*  59 */
206*4d9fdb46SRobert Mustacchi     "R_PPC_60",                   /*  60 */
207*4d9fdb46SRobert Mustacchi     "R_PPC_61",                   /*  61 */
208*4d9fdb46SRobert Mustacchi     "R_PPC_62",                   /*  62 */
209*4d9fdb46SRobert Mustacchi     "R_PPC_63",                   /*  63 */
210*4d9fdb46SRobert Mustacchi     "R_PPC_64",                   /*  64 */
211*4d9fdb46SRobert Mustacchi     "R_PPC_65",                   /*  65 */
212*4d9fdb46SRobert Mustacchi     "R_PPC_66",                   /*  66 */
213*4d9fdb46SRobert Mustacchi     "R_PPC_TLS",                  /*  67 */
214*4d9fdb46SRobert Mustacchi     "R_PPC_DTPMOD32",             /*  68 */
215*4d9fdb46SRobert Mustacchi     "R_PPC_TPREL16",              /*  69 */
216*4d9fdb46SRobert Mustacchi     "R_PPC_TPREL16_LO",           /*  70 */
217*4d9fdb46SRobert Mustacchi     "R_PPC_TPREL16_HI",           /*  71 */
218*4d9fdb46SRobert Mustacchi     "R_PPC_TPREL16_HA",           /*  72 */
219*4d9fdb46SRobert Mustacchi     "R_PPC_TPREL32",              /*  73 */
220*4d9fdb46SRobert Mustacchi     "R_PPC_DTPREL16",             /*  74 */
221*4d9fdb46SRobert Mustacchi     "R_PPC_DTPREL16_LO",          /*  75 */
222*4d9fdb46SRobert Mustacchi     "R_PPC_DTPREL16_HI",          /*  76 */
223*4d9fdb46SRobert Mustacchi     "R_PPC_DTPREL16_HA",          /*  77 */
224*4d9fdb46SRobert Mustacchi     "R_PPC_DTPREL64",             /*  78 */
225*4d9fdb46SRobert Mustacchi     "R_PPC_GOT_TLSGD16",          /*  79 */
226*4d9fdb46SRobert Mustacchi     "R_PPC_GOT_TLSGD16_LO",       /*  80 */
227*4d9fdb46SRobert Mustacchi     "R_PPC_GOT_TLSGD16_HI",       /*  81 */
228*4d9fdb46SRobert Mustacchi     "R_PPC_GOT_TLSGD16_HA",       /*  82 */
229*4d9fdb46SRobert Mustacchi     "R_PPC_GOT_TLSLD16",          /*  83 */
230*4d9fdb46SRobert Mustacchi     "R_PPC_GOT_TLSLD16_LO",       /*  84 */
231*4d9fdb46SRobert Mustacchi     "R_PPC_GOT_TLSLD16_HI",       /*  85 */
232*4d9fdb46SRobert Mustacchi     "R_PPC_GOT_TLSLD16_HA",       /*  86 */
233*4d9fdb46SRobert Mustacchi     "R_PPC_GOT_TPREL16_DS",       /*  87 */
234*4d9fdb46SRobert Mustacchi     "R_PPC_GOT_TPREL16_LO",       /*  88 */
235*4d9fdb46SRobert Mustacchi     "R_PPC_GOT_TPREL16_HI",       /*  89 */
236*4d9fdb46SRobert Mustacchi     "R_PPC_GOT_TPREL16_HA",       /*  90 */
237*4d9fdb46SRobert Mustacchi     "R_PPC_GOT_DTPREL16",         /*  91 */
238*4d9fdb46SRobert Mustacchi     "R_PPC_GOT_DTPREL16_LO",      /*  92 */
239*4d9fdb46SRobert Mustacchi     "R_PPC_GOT_DTPREL16_HI",      /*  93 */
240*4d9fdb46SRobert Mustacchi     "R_PPC_GOT_DTPREL16_HA",      /*  94 */
241*4d9fdb46SRobert Mustacchi };
242*4d9fdb46SRobert Mustacchi #endif /* DWARF_RELOC_PPC_H */
243