]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - include/elf/s390.h
* aix386-core.c: Remove use of PTR and PARAMS macros.
[thirdparty/binutils-gdb.git] / include / elf / s390.h
CommitLineData
a85d7ed0 1/* 390 ELF support for BFD.
e4e42b45 2 Copyright 2000, 2001, 2003, 2010 Free Software Foundation, Inc.
a85d7ed0
NC
3 Contributed by Carl B. Pedersen and Martin Schwidefsky.
4
5 This file is part of BFD, the Binary File Descriptor library.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
e4e42b45 9 the Free Software Foundation; either version 3 of the License, or
a85d7ed0
NC
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
e172dbf8
NC
19 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
20 02110-1301, USA. */
a85d7ed0
NC
21
22#ifndef _ELF_390_H
23#define _ELF_390_H
24
25/* Processor specific flags for the ELF header e_flags field. */
26
27/* Symbol types. */
28
29#define STACK_REG 15 /* Global Stack reg */
30#define BACKL_REG 14 /* Global Backlink reg */
31#define BASE_REG 13 /* Global Base reg */
32#define GOT_REG 12 /* Holds addr of GOT */
33
34#include "elf/reloc-macros.h"
35
55786da2
AK
36/* Processor specific flags for the ELF header e_flags field. */
37
38#define EF_S390_HIGH_GPRS 0x00000001
39
a85d7ed0
NC
40/* Relocation types. */
41
42START_RELOC_NUMBERS (elf_s390_reloc_type)
43 RELOC_NUMBER (R_390_NONE, 0) /* No reloc. */
44 RELOC_NUMBER (R_390_8, 1) /* Direct 8 bit. */
45 RELOC_NUMBER (R_390_12, 2) /* Direct 12 bit. */
46 RELOC_NUMBER (R_390_16, 3) /* Direct 16 bit. */
47 RELOC_NUMBER (R_390_32, 4) /* Direct 32 bit. */
48 RELOC_NUMBER (R_390_PC32, 5) /* PC relative 32 bit. */
49 RELOC_NUMBER (R_390_GOT12, 6) /* 12 bit GOT offset. */
50 RELOC_NUMBER (R_390_GOT32, 7) /* 32 bit GOT offset. */
51 RELOC_NUMBER (R_390_PLT32, 8) /* 32 bit PC relative PLT address. */
52 RELOC_NUMBER (R_390_COPY, 9) /* Copy symbol at runtime. */
53 RELOC_NUMBER (R_390_GLOB_DAT, 10) /* Create GOT entry. */
54 RELOC_NUMBER (R_390_JMP_SLOT, 11) /* Create PLT entry. */
55 RELOC_NUMBER (R_390_RELATIVE, 12) /* Adjust by program base. */
43d92ce0 56 RELOC_NUMBER (R_390_GOTOFF32, 13) /* 32 bit offset to GOT. */
a85d7ed0
NC
57 RELOC_NUMBER (R_390_GOTPC, 14) /* 32 bit PC relative offset to GOT. */
58 RELOC_NUMBER (R_390_GOT16, 15) /* 16 bit GOT offset. */
59 RELOC_NUMBER (R_390_PC16, 16) /* PC relative 16 bit. */
60 RELOC_NUMBER (R_390_PC16DBL, 17) /* PC relative 16 bit shifted by 1. */
61 RELOC_NUMBER (R_390_PLT16DBL, 18) /* 16 bit PC rel. PLT shifted by 1. */
62 RELOC_NUMBER (R_390_PC32DBL, 19) /* PC relative 32 bit shifted by 1. */
63 RELOC_NUMBER (R_390_PLT32DBL, 20) /* 32 bit PC rel. PLT shifted by 1. */
64 RELOC_NUMBER (R_390_GOTPCDBL, 21) /* 32 bit PC rel. GOT shifted by 1. */
65 RELOC_NUMBER (R_390_64, 22) /* Direct 64 bit. */
66 RELOC_NUMBER (R_390_PC64, 23) /* PC relative 64 bit. */
67 RELOC_NUMBER (R_390_GOT64, 24) /* 64 bit GOT offset. */
68 RELOC_NUMBER (R_390_PLT64, 25) /* 64 bit PC relative PLT address. */
69 RELOC_NUMBER (R_390_GOTENT, 26) /* 32 bit PC rel. to GOT entry >> 1. */
43d92ce0
MS
70 RELOC_NUMBER (R_390_GOTOFF16, 27) /* 16 bit offset to GOT. */
71 RELOC_NUMBER (R_390_GOTOFF64, 28) /* 64 bit offset to GOT. */
72 RELOC_NUMBER (R_390_GOTPLT12, 29) /* 12 bit offset to jump slot. */
73 RELOC_NUMBER (R_390_GOTPLT16, 30) /* 16 bit offset to jump slot. */
74 RELOC_NUMBER (R_390_GOTPLT32, 31) /* 32 bit offset to jump slot. */
75 RELOC_NUMBER (R_390_GOTPLT64, 32) /* 64 bit offset to jump slot. */
76 RELOC_NUMBER (R_390_GOTPLTENT, 33) /* 32 bit rel. offset to jump slot. */
77 RELOC_NUMBER (R_390_PLTOFF16, 34) /* 16 bit offset from GOT to PLT. */
78 RELOC_NUMBER (R_390_PLTOFF32, 35) /* 32 bit offset from GOT to PLT. */
79 RELOC_NUMBER (R_390_PLTOFF64, 36) /* 16 bit offset from GOT to PLT. */
c20c23d5
MS
80 RELOC_NUMBER (R_390_TLS_LOAD, 37) /* Tag for load insn in TLS code. */
81 RELOC_NUMBER (R_390_TLS_GDCALL, 38) /* Tag for function call in general
82 dynamic TLS code. */
83 RELOC_NUMBER (R_390_TLS_LDCALL, 39) /* Tag for function call in local
84 dynamic TLS code. */
85 RELOC_NUMBER (R_390_TLS_GD32, 40) /* Direct 32 bit for general dynamic
86 thread local data. */
87 RELOC_NUMBER (R_390_TLS_GD64, 41) /* Direct 64 bit for general dynamic
88 thread local data. */
89 RELOC_NUMBER (R_390_TLS_GOTIE12, 42)/* 12 bit GOT offset for static TLS
90 block offset. */
91 RELOC_NUMBER (R_390_TLS_GOTIE32, 43)/* 32 bit GOT offset for static TLS
92 block offset. */
93 RELOC_NUMBER (R_390_TLS_GOTIE64, 44)/* 64 bit GOT offset for static TLS
94 block offset. */
95 RELOC_NUMBER (R_390_TLS_LDM32, 45) /* Direct 32 bit for local dynamic
96 thread local data in LD code. */
97 RELOC_NUMBER (R_390_TLS_LDM64, 46) /* Direct 64 bit for local dynamic
98 thread local data in LD code. */
99 RELOC_NUMBER (R_390_TLS_IE32, 47) /* 32 bit address of GOT entry for
100 negated static TLS block offset. */
101 RELOC_NUMBER (R_390_TLS_IE64, 48) /* 64 bit address of GOT entry for
102 negated static TLS block offset. */
103 RELOC_NUMBER (R_390_TLS_IEENT, 49) /* 32 bit rel. offset to GOT entry for
104 negated static TLS block offset. */
105 RELOC_NUMBER (R_390_TLS_LE32, 50) /* 32 bit negated offset relative to
106 static TLS block. */
107 RELOC_NUMBER (R_390_TLS_LE64, 51) /* 64 bit negated offset relative to
108 static TLS block. */
109 RELOC_NUMBER (R_390_TLS_LDO32, 52) /* 32 bit offset relative to TLS
110 block. */
111 RELOC_NUMBER (R_390_TLS_LDO64, 53) /* 64 bit offset relative to TLS
112 block. */
113 RELOC_NUMBER (R_390_TLS_DTPMOD, 54) /* ID of module containing symbol. */
114 RELOC_NUMBER (R_390_TLS_DTPOFF, 55) /* Offset in TLS block. */
115 RELOC_NUMBER (R_390_TLS_TPOFF, 56) /* Negate offset in static TLS
116 block. */
89af415b
MS
117 RELOC_NUMBER (R_390_20, 57) /* Direct 20 bit. */
118 RELOC_NUMBER (R_390_GOT20, 58) /* 20 bit GOT offset. */
119 RELOC_NUMBER (R_390_GOTPLT20, 59) /* 20 bit offset to jump slot. */
120 RELOC_NUMBER (R_390_TLS_GOTIE20, 60)/* 20 bit GOT offset for statis TLS
121 block offset. */
a85d7ed0
NC
122 /* These are GNU extensions to enable C++ vtable garbage collection. */
123 RELOC_NUMBER (R_390_GNU_VTINHERIT, 250)
124 RELOC_NUMBER (R_390_GNU_VTENTRY, 251)
125END_RELOC_NUMBERS (R_390_max)
126
127#endif /* _ELF_390_H */
128
129