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