* ppc.h: Split out ppc64 definitions to..
[platform/upstream/binutils.git] / include / elf / ppc64.h
1 /* PPC64 ELF support for BFD.
2    Copyright 2003 Free Software Foundation, Inc.
3
4 This file is part of BFD, the Binary File Descriptor library.
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
19
20 #ifndef _ELF_PPC64_H
21 #define _ELF_PPC64_H
22
23 #include "elf/reloc-macros.h"
24
25 /* Relocations.  */
26 START_RELOC_NUMBERS (elf_ppc64_reloc_type)
27   RELOC_NUMBER (R_PPC64_NONE,             0)
28   RELOC_NUMBER (R_PPC64_ADDR32,           1)
29   RELOC_NUMBER (R_PPC64_ADDR24,           2)
30   RELOC_NUMBER (R_PPC64_ADDR16,           3)
31   RELOC_NUMBER (R_PPC64_ADDR16_LO,        4)
32   RELOC_NUMBER (R_PPC64_ADDR16_HI,        5)
33   RELOC_NUMBER (R_PPC64_ADDR16_HA,        6)
34   RELOC_NUMBER (R_PPC64_ADDR14,           7)
35   RELOC_NUMBER (R_PPC64_ADDR14_BRTAKEN,   8)
36   RELOC_NUMBER (R_PPC64_ADDR14_BRNTAKEN,  9)
37   RELOC_NUMBER (R_PPC64_REL24,           10)
38   RELOC_NUMBER (R_PPC64_REL14,           11)
39   RELOC_NUMBER (R_PPC64_REL14_BRTAKEN,   12)
40   RELOC_NUMBER (R_PPC64_REL14_BRNTAKEN,  13)
41   RELOC_NUMBER (R_PPC64_GOT16,           14)
42   RELOC_NUMBER (R_PPC64_GOT16_LO,        15)
43   RELOC_NUMBER (R_PPC64_GOT16_HI,        16)
44   RELOC_NUMBER (R_PPC64_GOT16_HA,        17)
45   /* 18 unused.  32-bit reloc is R_PPC_PLTREL24.  */
46   RELOC_NUMBER (R_PPC64_COPY,            19)
47   RELOC_NUMBER (R_PPC64_GLOB_DAT,        20)
48   RELOC_NUMBER (R_PPC64_JMP_SLOT,        21)
49   RELOC_NUMBER (R_PPC64_RELATIVE,        22)
50   /* 23 unused.  32-bit reloc is R_PPC_LOCAL24PC.  */
51   RELOC_NUMBER (R_PPC64_UADDR32,         24)
52   RELOC_NUMBER (R_PPC64_UADDR16,         25)
53   RELOC_NUMBER (R_PPC64_REL32,           26)
54   RELOC_NUMBER (R_PPC64_PLT32,           27)
55   RELOC_NUMBER (R_PPC64_PLTREL32,        28)
56   RELOC_NUMBER (R_PPC64_PLT16_LO,        29)
57   RELOC_NUMBER (R_PPC64_PLT16_HI,        30)
58   RELOC_NUMBER (R_PPC64_PLT16_HA,        31)
59   /* 32 unused.  32-bit reloc is R_PPC_SDAREL16.  */
60   RELOC_NUMBER (R_PPC64_SECTOFF,         33)
61   RELOC_NUMBER (R_PPC64_SECTOFF_LO,      34)
62   RELOC_NUMBER (R_PPC64_SECTOFF_HI,      35)
63   RELOC_NUMBER (R_PPC64_SECTOFF_HA,      36)
64   RELOC_NUMBER (R_PPC64_REL30,           37)
65   RELOC_NUMBER (R_PPC64_ADDR64,          38)
66   RELOC_NUMBER (R_PPC64_ADDR16_HIGHER,   39)
67   RELOC_NUMBER (R_PPC64_ADDR16_HIGHERA,  40)
68   RELOC_NUMBER (R_PPC64_ADDR16_HIGHEST,  41)
69   RELOC_NUMBER (R_PPC64_ADDR16_HIGHESTA, 42)
70   RELOC_NUMBER (R_PPC64_UADDR64,         43)
71   RELOC_NUMBER (R_PPC64_REL64,           44)
72   RELOC_NUMBER (R_PPC64_PLT64,           45)
73   RELOC_NUMBER (R_PPC64_PLTREL64,        46)
74   RELOC_NUMBER (R_PPC64_TOC16,           47)
75   RELOC_NUMBER (R_PPC64_TOC16_LO,        48)
76   RELOC_NUMBER (R_PPC64_TOC16_HI,        49)
77   RELOC_NUMBER (R_PPC64_TOC16_HA,        50)
78   RELOC_NUMBER (R_PPC64_TOC,             51)
79   RELOC_NUMBER (R_PPC64_PLTGOT16,        52)
80   RELOC_NUMBER (R_PPC64_PLTGOT16_LO,     53)
81   RELOC_NUMBER (R_PPC64_PLTGOT16_HI,     54)
82   RELOC_NUMBER (R_PPC64_PLTGOT16_HA,     55)
83
84 /* The following relocs were added in the 64-bit PowerPC ELF ABI
85    revision 1.2. */
86   RELOC_NUMBER (R_PPC64_ADDR16_DS,       56)
87   RELOC_NUMBER (R_PPC64_ADDR16_LO_DS,    57)
88   RELOC_NUMBER (R_PPC64_GOT16_DS,        58)
89   RELOC_NUMBER (R_PPC64_GOT16_LO_DS,     59)
90   RELOC_NUMBER (R_PPC64_PLT16_LO_DS,     60)
91   RELOC_NUMBER (R_PPC64_SECTOFF_DS,      61)
92   RELOC_NUMBER (R_PPC64_SECTOFF_LO_DS,   62)
93   RELOC_NUMBER (R_PPC64_TOC16_DS,        63)
94   RELOC_NUMBER (R_PPC64_TOC16_LO_DS,     64)
95   RELOC_NUMBER (R_PPC64_PLTGOT16_DS,     65)
96   RELOC_NUMBER (R_PPC64_PLTGOT16_LO_DS,  66)
97
98   /* These are GNU extensions to enable C++ vtable garbage collection.  */
99   RELOC_NUMBER (R_PPC64_GNU_VTINHERIT,  253)
100   RELOC_NUMBER (R_PPC64_GNU_VTENTRY,    254)
101
102 END_RELOC_NUMBERS (R_PPC64_max)
103
104 /* Specify the start of the .glink section.  */
105 #define DT_PPC64_GLINK          DT_LOPROC
106
107 /* Specify the start and size of the .opd section.  */
108 #define DT_PPC64_OPD            (DT_LOPROC + 1)
109 #define DT_PPC64_OPDSZ          (DT_LOPROC + 2)
110
111 #endif /* _ELF_PPC64_H */