12a6b7db3Sskrll // powerpc.h -- ELF definitions specific to EM_PPC and EM_PPC64 -*- C++ -*-
22a6b7db3Sskrll
3*cb63e24eSchristos // Copyright (C) 2008-2024 Free Software Foundation, Inc.
42a6b7db3Sskrll // Written by David S. Miller <davem@davemloft.net>.
52a6b7db3Sskrll
62a6b7db3Sskrll // This file is part of elfcpp.
72a6b7db3Sskrll
82a6b7db3Sskrll // This program is free software; you can redistribute it and/or
92a6b7db3Sskrll // modify it under the terms of the GNU Library General Public License
102a6b7db3Sskrll // as published by the Free Software Foundation; either version 2, or
112a6b7db3Sskrll // (at your option) any later version.
122a6b7db3Sskrll
132a6b7db3Sskrll // In addition to the permissions in the GNU Library General Public
142a6b7db3Sskrll // License, the Free Software Foundation gives you unlimited
152a6b7db3Sskrll // permission to link the compiled version of this file into
162a6b7db3Sskrll // combinations with other programs, and to distribute those
172a6b7db3Sskrll // combinations without any restriction coming from the use of this
182a6b7db3Sskrll // file. (The Library Public License restrictions do apply in other
192a6b7db3Sskrll // respects; for example, they cover modification of the file, and
202a6b7db3Sskrll /// distribution when not linked into a combined executable.)
212a6b7db3Sskrll
222a6b7db3Sskrll // This program is distributed in the hope that it will be useful, but
232a6b7db3Sskrll // WITHOUT ANY WARRANTY; without even the implied warranty of
242a6b7db3Sskrll // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
252a6b7db3Sskrll // Library General Public License for more details.
262a6b7db3Sskrll
272a6b7db3Sskrll // You should have received a copy of the GNU Library General Public
282a6b7db3Sskrll // License along with this program; if not, write to the Free Software
292a6b7db3Sskrll // Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
302a6b7db3Sskrll // 02110-1301, USA.
312a6b7db3Sskrll
322a6b7db3Sskrll #ifndef ELFCPP_POWERPC_H
332a6b7db3Sskrll #define ELFCPP_POWERPC_H
342a6b7db3Sskrll
352a6b7db3Sskrll namespace elfcpp
362a6b7db3Sskrll {
372a6b7db3Sskrll
382a6b7db3Sskrll // The relocation numbers for 32-bit and 64-bit powerpc are nearly
392a6b7db3Sskrll // identical. Therefore I've adopted the convention of using
402a6b7db3Sskrll // R_POWERPC_foo for values which are the same in R_PPC_* and R_PPC64_*.
412a6b7db3Sskrll // For relocations which are specific to the word size I will use
422a6b7db3Sskrll // R_PPC_foo or R_PPC64_foo.
432a6b7db3Sskrll enum
442a6b7db3Sskrll {
452a6b7db3Sskrll R_POWERPC_NONE = 0,
462a6b7db3Sskrll R_POWERPC_ADDR32 = 1,
472a6b7db3Sskrll R_POWERPC_ADDR24 = 2,
482a6b7db3Sskrll R_POWERPC_ADDR16 = 3,
492a6b7db3Sskrll R_POWERPC_ADDR16_LO = 4,
502a6b7db3Sskrll R_POWERPC_ADDR16_HI = 5,
512a6b7db3Sskrll R_POWERPC_ADDR16_HA = 6,
522a6b7db3Sskrll R_POWERPC_ADDR14 = 7,
532a6b7db3Sskrll R_POWERPC_ADDR14_BRTAKEN = 8,
542a6b7db3Sskrll R_POWERPC_ADDR14_BRNTAKEN = 9,
552a6b7db3Sskrll R_POWERPC_REL24 = 10,
562a6b7db3Sskrll R_POWERPC_REL14 = 11,
572a6b7db3Sskrll R_POWERPC_REL14_BRTAKEN = 12,
582a6b7db3Sskrll R_POWERPC_REL14_BRNTAKEN = 13,
592a6b7db3Sskrll R_POWERPC_GOT16 = 14,
602a6b7db3Sskrll R_POWERPC_GOT16_LO = 15,
612a6b7db3Sskrll R_POWERPC_GOT16_HI = 16,
622a6b7db3Sskrll R_POWERPC_GOT16_HA = 17,
632a6b7db3Sskrll R_PPC_PLTREL24 = 18,
642a6b7db3Sskrll R_POWERPC_COPY = 19,
652a6b7db3Sskrll R_POWERPC_GLOB_DAT = 20,
662a6b7db3Sskrll R_POWERPC_JMP_SLOT = 21,
672a6b7db3Sskrll R_POWERPC_RELATIVE = 22,
682a6b7db3Sskrll R_PPC_LOCAL24PC = 23,
692a6b7db3Sskrll R_POWERPC_UADDR32 = 24,
702a6b7db3Sskrll R_POWERPC_UADDR16 = 25,
712a6b7db3Sskrll R_POWERPC_REL32 = 26,
722a6b7db3Sskrll R_POWERPC_PLT32 = 27,
732a6b7db3Sskrll R_POWERPC_PLTREL32 = 28,
742a6b7db3Sskrll R_POWERPC_PLT16_LO = 29,
752a6b7db3Sskrll R_POWERPC_PLT16_HI = 30,
762a6b7db3Sskrll R_POWERPC_PLT16_HA = 31,
772a6b7db3Sskrll R_PPC_SDAREL16 = 32,
782a6b7db3Sskrll R_POWERPC_SECTOFF = 33,
792a6b7db3Sskrll R_POWERPC_SECTOFF_LO = 34,
802a6b7db3Sskrll R_POWERPC_SECTOFF_HI = 35,
812a6b7db3Sskrll R_POWERPC_SECTOFF_HA = 36,
822a6b7db3Sskrll R_POWERPC_ADDR30 = 37,
832a6b7db3Sskrll R_PPC64_ADDR64 = 38,
842a6b7db3Sskrll R_PPC64_ADDR16_HIGHER = 39,
852a6b7db3Sskrll R_PPC64_ADDR16_HIGHERA = 40,
862a6b7db3Sskrll R_PPC64_ADDR16_HIGHEST = 41,
872a6b7db3Sskrll R_PPC64_ADDR16_HIGHESTA = 42,
882a6b7db3Sskrll R_PPC64_UADDR64 = 43,
892a6b7db3Sskrll R_PPC64_REL64 = 44,
902a6b7db3Sskrll R_PPC64_PLT64 = 45,
912a6b7db3Sskrll R_PPC64_PLTREL64 = 46,
922a6b7db3Sskrll R_PPC64_TOC16 = 47,
932a6b7db3Sskrll R_PPC64_TOC16_LO = 48,
942a6b7db3Sskrll R_PPC64_TOC16_HI = 49,
952a6b7db3Sskrll R_PPC64_TOC16_HA = 50,
962a6b7db3Sskrll R_PPC64_TOC = 51,
972a6b7db3Sskrll R_PPC64_PLTGOT16 = 52,
982a6b7db3Sskrll R_PPC64_PLTGOT16_LO = 53,
992a6b7db3Sskrll R_PPC64_PLTGOT16_HI = 54,
1002a6b7db3Sskrll R_PPC64_PLTGOT16_HA = 55,
1012a6b7db3Sskrll R_PPC64_ADDR16_DS = 56,
1022a6b7db3Sskrll R_PPC64_ADDR16_LO_DS = 57,
1032a6b7db3Sskrll R_PPC64_GOT16_DS = 58,
1042a6b7db3Sskrll R_PPC64_GOT16_LO_DS = 59,
1052a6b7db3Sskrll R_PPC64_PLT16_LO_DS = 60,
1062a6b7db3Sskrll R_PPC64_SECTOFF_DS = 61,
1072a6b7db3Sskrll R_PPC64_SECTOFF_LO_DS = 62,
1082a6b7db3Sskrll R_PPC64_TOC16_DS = 63,
1092a6b7db3Sskrll R_PPC64_TOC16_LO_DS = 64,
1102a6b7db3Sskrll R_PPC64_PLTGOT16_DS = 65,
1112a6b7db3Sskrll R_PPC64_PLTGOT16_LO_DS = 66,
1122a6b7db3Sskrll R_POWERPC_TLS = 67,
1132a6b7db3Sskrll R_POWERPC_DTPMOD = 68,
1142a6b7db3Sskrll R_POWERPC_TPREL16 = 69,
1152a6b7db3Sskrll R_POWERPC_TPREL16_LO = 70,
1162a6b7db3Sskrll R_POWERPC_TPREL16_HI = 71,
1172a6b7db3Sskrll R_POWERPC_TPREL16_HA = 72,
1182a6b7db3Sskrll R_POWERPC_TPREL = 73,
1192a6b7db3Sskrll R_POWERPC_DTPREL16 = 74,
1202a6b7db3Sskrll R_POWERPC_DTPREL16_LO = 75,
1212a6b7db3Sskrll R_POWERPC_DTPREL16_HI = 76,
1222a6b7db3Sskrll R_POWERPC_DTPREL16_HA = 77,
1232a6b7db3Sskrll R_POWERPC_DTPREL = 78,
1242a6b7db3Sskrll R_POWERPC_GOT_TLSGD16 = 79,
1252a6b7db3Sskrll R_POWERPC_GOT_TLSGD16_LO = 80,
1262a6b7db3Sskrll R_POWERPC_GOT_TLSGD16_HI = 81,
1272a6b7db3Sskrll R_POWERPC_GOT_TLSGD16_HA = 82,
1282a6b7db3Sskrll R_POWERPC_GOT_TLSLD16 = 83,
1292a6b7db3Sskrll R_POWERPC_GOT_TLSLD16_LO = 84,
1302a6b7db3Sskrll R_POWERPC_GOT_TLSLD16_HI = 85,
1312a6b7db3Sskrll R_POWERPC_GOT_TLSLD16_HA = 86,
1322a6b7db3Sskrll R_POWERPC_GOT_TPREL16 = 87,
1332a6b7db3Sskrll R_POWERPC_GOT_TPREL16_LO = 88,
1342a6b7db3Sskrll R_POWERPC_GOT_TPREL16_HI = 89,
1352a6b7db3Sskrll R_POWERPC_GOT_TPREL16_HA = 90,
1362a6b7db3Sskrll R_POWERPC_GOT_DTPREL16 = 91,
1372a6b7db3Sskrll R_POWERPC_GOT_DTPREL16_LO = 92,
1382a6b7db3Sskrll R_POWERPC_GOT_DTPREL16_HI = 93,
1392a6b7db3Sskrll R_POWERPC_GOT_DTPREL16_HA = 94,
1409573673dSchristos R_PPC_TLSGD = 95,
1412a6b7db3Sskrll R_PPC64_TPREL16_DS = 95,
1429573673dSchristos R_PPC_TLSLD = 96,
1432a6b7db3Sskrll R_PPC64_TPREL16_LO_DS = 96,
1442a6b7db3Sskrll R_PPC64_TPREL16_HIGHER = 97,
1452a6b7db3Sskrll R_PPC64_TPREL16_HIGHERA = 98,
1462a6b7db3Sskrll R_PPC64_TPREL16_HIGHEST = 99,
1472a6b7db3Sskrll R_PPC64_TPREL16_HIGHESTA = 100,
1482a6b7db3Sskrll R_PPC_EMB_NADDR32 = 101,
1499573673dSchristos R_PPC64_DTPREL16_DS = 101,
1502a6b7db3Sskrll R_PPC_EMB_NADDR16 = 102,
1519573673dSchristos R_PPC64_DTPREL16_LO_DS = 102,
1522a6b7db3Sskrll R_PPC_EMB_NADDR16_LO = 103,
1539573673dSchristos R_PPC64_DTPREL16_HIGHER = 103,
1542a6b7db3Sskrll R_PPC_EMB_NADDR16_HI = 104,
1559573673dSchristos R_PPC64_DTPREL16_HIGHERA = 104,
1562a6b7db3Sskrll R_PPC_EMB_NADDR16_HA = 105,
1579573673dSchristos R_PPC64_DTPREL16_HIGHEST = 105,
1582a6b7db3Sskrll R_PPC_EMB_SDAI16 = 106,
1599573673dSchristos R_PPC64_DTPREL16_HIGHESTA = 106,
1602a6b7db3Sskrll R_PPC_EMB_SDA2I16 = 107,
1619573673dSchristos R_PPC64_TLSGD = 107,
1622a6b7db3Sskrll R_PPC_EMB_SDA2REL = 108,
1639573673dSchristos R_PPC64_TLSLD = 108,
1642a6b7db3Sskrll R_PPC_EMB_SDA21 = 109,
1659573673dSchristos R_PPC64_TOCSAVE = 109,
1662a6b7db3Sskrll R_PPC_EMB_MRKREF = 110,
1679573673dSchristos R_PPC64_ADDR16_HIGH = 110,
1682a6b7db3Sskrll R_PPC_EMB_RELSEC16 = 111,
1699573673dSchristos R_PPC64_ADDR16_HIGHA = 111,
1702a6b7db3Sskrll R_PPC_EMB_RELST_LO = 112,
1719573673dSchristos R_PPC64_TPREL16_HIGH = 112,
1722a6b7db3Sskrll R_PPC_EMB_RELST_HI = 113,
1739573673dSchristos R_PPC64_TPREL16_HIGHA = 113,
1742a6b7db3Sskrll R_PPC_EMB_RELST_HA = 114,
1759573673dSchristos R_PPC64_DTPREL16_HIGH = 114,
1762a6b7db3Sskrll R_PPC_EMB_BIT_FLD = 115,
1779573673dSchristos R_PPC64_DTPREL16_HIGHA = 115,
1782a6b7db3Sskrll R_PPC_EMB_RELSDA = 116,
1799573673dSchristos R_PPC64_REL24_NOTOC = 116,
1809573673dSchristos R_PPC64_ADDR64_LOCAL = 117,
1819573673dSchristos R_PPC64_ENTRY = 118,
182c1a20988Schristos R_POWERPC_PLTSEQ = 119,
183c1a20988Schristos R_POWERPC_PLTCALL = 120,
1846f4ced0bSchristos R_PPC64_PLTSEQ_NOTOC = 121,
1856f4ced0bSchristos R_PPC64_PLTCALL_NOTOC = 122,
1866f4ced0bSchristos R_PPC64_PCREL_OPT = 123,
1874f645668Schristos R_PPC64_REL24_P9NOTOC = 124,
1886f4ced0bSchristos
1896f4ced0bSchristos R_PPC64_D34 = 128,
1906f4ced0bSchristos R_PPC64_D34_LO = 129,
1916f4ced0bSchristos R_PPC64_D34_HI30 = 130,
1926f4ced0bSchristos R_PPC64_D34_HA30 = 131,
1936f4ced0bSchristos R_PPC64_PCREL34 = 132,
1946f4ced0bSchristos R_PPC64_GOT_PCREL34 = 133,
1956f4ced0bSchristos R_PPC64_PLT_PCREL34 = 134,
1966f4ced0bSchristos R_PPC64_PLT_PCREL34_NOTOC = 135,
1976f4ced0bSchristos R_PPC64_ADDR16_HIGHER34 = 136,
1986f4ced0bSchristos R_PPC64_ADDR16_HIGHERA34 = 137,
1996f4ced0bSchristos R_PPC64_ADDR16_HIGHEST34 = 138,
2006f4ced0bSchristos R_PPC64_ADDR16_HIGHESTA34 = 139,
2016f4ced0bSchristos R_PPC64_REL16_HIGHER34 = 140,
2026f4ced0bSchristos R_PPC64_REL16_HIGHERA34 = 141,
2036f4ced0bSchristos R_PPC64_REL16_HIGHEST34 = 142,
2046f4ced0bSchristos R_PPC64_REL16_HIGHESTA34 = 143,
2056f4ced0bSchristos R_PPC64_D28 = 144,
2066f4ced0bSchristos R_PPC64_PCREL28 = 145,
2076f4ced0bSchristos R_PPC64_TPREL34 = 146,
2086f4ced0bSchristos R_PPC64_DTPREL34 = 147,
2094f645668Schristos R_PPC64_GOT_TLSGD_PCREL34 = 148,
2104f645668Schristos R_PPC64_GOT_TLSLD_PCREL34 = 149,
2114f645668Schristos R_PPC64_GOT_TPREL_PCREL34 = 150,
2124f645668Schristos R_PPC64_GOT_DTPREL_PCREL34 = 151,
213be12b8bcSchristos
2149573673dSchristos R_PPC_VLE_REL8 = 216,
2159573673dSchristos R_PPC_VLE_REL15 = 217,
2169573673dSchristos R_PPC_VLE_REL24 = 218,
2179573673dSchristos R_PPC_VLE_LO16A = 219,
2189573673dSchristos R_PPC_VLE_LO16D = 220,
2199573673dSchristos R_PPC_VLE_HI16A = 221,
2209573673dSchristos R_PPC_VLE_HI16D = 222,
2219573673dSchristos R_PPC_VLE_HA16A = 223,
2229573673dSchristos R_PPC_VLE_HA16D = 224,
2239573673dSchristos R_PPC_VLE_SDA21 = 225,
2249573673dSchristos R_PPC_VLE_SDA21_LO = 226,
2259573673dSchristos R_PPC_VLE_SDAREL_LO16A = 227,
2269573673dSchristos R_PPC_VLE_SDAREL_LO16D = 228,
2279573673dSchristos R_PPC_VLE_SDAREL_HI16A = 229,
2289573673dSchristos R_PPC_VLE_SDAREL_HI16D = 230,
2299573673dSchristos R_PPC_VLE_SDAREL_HA16A = 231,
2309573673dSchristos R_PPC_VLE_SDAREL_HA16D = 232,
2319573673dSchristos
2326f4ced0bSchristos R_PPC64_REL16_HIGH = 240,
2336f4ced0bSchristos R_PPC64_REL16_HIGHA = 241,
2346f4ced0bSchristos R_PPC64_REL16_HIGHER = 242,
2356f4ced0bSchristos R_PPC64_REL16_HIGHERA = 243,
2366f4ced0bSchristos R_PPC64_REL16_HIGHEST = 244,
2376f4ced0bSchristos R_PPC64_REL16_HIGHESTA = 245,
2386f4ced0bSchristos
2399573673dSchristos R_POWERPC_REL16DX_HA = 246,
2409573673dSchristos R_PPC64_JMP_IREL = 247,
241be12b8bcSchristos R_POWERPC_IRELATIVE = 248,
2429573673dSchristos R_POWERPC_REL16 = 249,
2439573673dSchristos R_POWERPC_REL16_LO = 250,
2449573673dSchristos R_POWERPC_REL16_HI = 251,
2459573673dSchristos R_POWERPC_REL16_HA = 252,
2462a6b7db3Sskrll R_POWERPC_GNU_VTINHERIT = 253,
2472a6b7db3Sskrll R_POWERPC_GNU_VTENTRY = 254,
2482a6b7db3Sskrll R_PPC_TOC16 = 255,
2492a6b7db3Sskrll };
2502a6b7db3Sskrll
2512a6b7db3Sskrll // e_flags values defined for powerpc
2522a6b7db3Sskrll enum
2532a6b7db3Sskrll {
2542a6b7db3Sskrll EF_PPC_EMB = 0x80000000, // PowerPC embedded flag.
2552a6b7db3Sskrll EF_PPC_RELOCATABLE = 0x00010000, // PowerPC -mrelocatable flag. */
2562a6b7db3Sskrll EF_PPC_RELOCATABLE_LIB = 0x00008000, // PowerPC -mrelocatable-lib flag. */
2572a6b7db3Sskrll };
2582a6b7db3Sskrll
2599573673dSchristos // e_flags values defined for powerpc64
2609573673dSchristos enum
2619573673dSchristos {
2629573673dSchristos // ABI version
2639573673dSchristos // 1 for original function descriptor using ABI,
2649573673dSchristos // 2 for revised ABI without function descriptors,
2659573673dSchristos // 0 for unspecified or not using any features affected by the differences.
2669573673dSchristos EF_PPC64_ABI = 3
2679573673dSchristos };
2689573673dSchristos
269c1a20988Schristos // Object attribute tags. 0-3 are generic.
270c1a20988Schristos enum
271c1a20988Schristos {
272c1a20988Schristos // FP ABI, low 2 bits:
273c1a20988Schristos // 1 for double precision hard-float,
274c1a20988Schristos // 2 for soft-float,
275c1a20988Schristos // 3 for single precision hard-float.
276c1a20988Schristos // 0 for not tagged or not using any ABIs affected by the differences.
277c1a20988Schristos // Next 2 bits:
278c1a20988Schristos // 1 for ibm long double
279c1a20988Schristos // 2 for 64-bit long double
280c1a20988Schristos // 3 for IEEE long double.
281c1a20988Schristos // 0 for not tagged or not using any ABIs affected by the differences.
282c1a20988Schristos Tag_GNU_Power_ABI_FP = 4,
283c1a20988Schristos
284c1a20988Schristos // Value 1 for general purpose registers only, 2 for AltiVec
285c1a20988Schristos // registers, 3 for SPE registers; 0 for not tagged or not using any
286c1a20988Schristos // ABIs affected by the differences.
287c1a20988Schristos Tag_GNU_Power_ABI_Vector = 8,
288c1a20988Schristos
289c1a20988Schristos // Value 1 for ABIs using r3/r4 for returning structures <= 8 bytes,
290c1a20988Schristos // 2 for ABIs using memory; 0 for not tagged or not using any ABIs
291c1a20988Schristos // affected by the differences.
292c1a20988Schristos Tag_GNU_Power_ABI_Struct_Return = 12
293c1a20988Schristos };
294c1a20988Schristos
295fc4f4269Schristos // DT_PPC_OPT bits
296fc4f4269Schristos enum
297fc4f4269Schristos {
298fc4f4269Schristos PPC_OPT_TLS = 1
299fc4f4269Schristos };
300fc4f4269Schristos
301fc4f4269Schristos // DT_PPC64_OPT bits
302fc4f4269Schristos enum
303fc4f4269Schristos {
304fc4f4269Schristos PPC64_OPT_TLS = 1,
305fc4f4269Schristos PPC64_OPT_MULTI_TOC = 2,
306fc4f4269Schristos PPC64_OPT_LOCALENTRY = 4
307fc4f4269Schristos };
308fc4f4269Schristos
3099573673dSchristos enum
3109573673dSchristos {
3119573673dSchristos // The ELFv2 ABI uses three bits in the symbol st_other field of a
3129573673dSchristos // function definition to specify the number of instructions between a
3139573673dSchristos // function's global entry point and local entry point.
3149573673dSchristos // The global entry point is used when it is necessary to set up the
3159573673dSchristos // toc pointer (r2) for the function. Callers must enter the global
3169573673dSchristos // entry point with r12 set to the global entry point address. On
3179573673dSchristos // return from the function, r2 may have a different value to that
3189573673dSchristos // which it had on entry.
3199573673dSchristos // The local entry point is used when r2 is known to already be valid
3209573673dSchristos // for the function. There is no requirement on r12 when using the
3219573673dSchristos // local entry point, and on return r2 will contain the same value as
3229573673dSchristos // at entry.
3239573673dSchristos // A value of zero in these bits means that the function has a single
3249573673dSchristos // entry point with no requirement on r12 or r2, and that on return r2
3259573673dSchristos // will contain the same value as at entry.
3269573673dSchristos // Values of one and seven are reserved.
3279573673dSchristos
3289573673dSchristos STO_PPC64_LOCAL_BIT = 5,
3299573673dSchristos STO_PPC64_LOCAL_MASK = 0xE0
3309573673dSchristos };
3319573673dSchristos
3329573673dSchristos // 3 bit other field to bytes.
3339573673dSchristos static inline unsigned int
ppc64_decode_local_entry(unsigned int other)3349573673dSchristos ppc64_decode_local_entry(unsigned int other)
3359573673dSchristos {
3369573673dSchristos return ((1 << other) >> 2) << 2;
3379573673dSchristos }
3389573673dSchristos
3399573673dSchristos // bytes to field value.
3409573673dSchristos static inline unsigned int
ppc64_encode_local_entry(unsigned int val)3419573673dSchristos ppc64_encode_local_entry(unsigned int val)
3429573673dSchristos {
3439573673dSchristos return (val >= 4 * 4
3449573673dSchristos ? (val >= 8 * 4
3459573673dSchristos ? (val >= 16 * 4 ? 6 : 5)
3469573673dSchristos : 4)
3479573673dSchristos : (val >= 2 * 4
3489573673dSchristos ? 3
3499573673dSchristos : (val >= 1 * 4 ? 2 : 0)));
3509573673dSchristos }
3519573673dSchristos
3522a6b7db3Sskrll } // End namespace elfcpp.
3532a6b7db3Sskrll
3542a6b7db3Sskrll #endif // !defined(ELFCPP_POWERPC_H)
355