1 |
/* ELF support for BFD. |
/* ELF support for BFD. |
2 |
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, |
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, |
3 |
2001, 2002 |
2001, 2002, 2003, 2004 |
4 |
Free Software Foundation, Inc. |
Free Software Foundation, Inc. |
5 |
|
|
6 |
Written by Fred Fish @ Cygnus Support, from information published |
Written by Fred Fish @ Cygnus Support, from information published |
7 |
in "UNIX System V Release 4, Programmers Guide: ANSI C and |
in "UNIX System V Release 4, Programmers Guide: ANSI C and |
8 |
Programming Support Tools". |
Programming Support Tools". |
9 |
|
|
10 |
This file is part of BFD, the Binary File Descriptor library. |
This file is part of BFD, the Binary File Descriptor library. |
11 |
|
|
12 |
This program is free software; you can redistribute it and/or modify |
This program is free software; you can redistribute it and/or modify |
13 |
it under the terms of the GNU General Public License as published by |
it under the terms of the GNU General Public License as published by |
14 |
the Free Software Foundation; either version 2 of the License, or |
the Free Software Foundation; either version 2 of the License, or |
15 |
(at your option) any later version. |
(at your option) any later version. |
16 |
|
|
17 |
This program is distributed in the hope that it will be useful, |
This program is distributed in the hope that it will be useful, |
18 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
19 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
20 |
GNU General Public License for more details. |
GNU General Public License for more details. |
21 |
|
|
22 |
You should have received a copy of the GNU General Public License |
You should have received a copy of the GNU General Public License |
23 |
along with this program; if not, write to the Free Software |
along with this program; if not, write to the Free Software |
24 |
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
25 |
|
|
26 |
|
|
27 |
/* This file is part of ELF support for BFD, and contains the portions |
/* This file is part of ELF support for BFD, and contains the portions |
28 |
that are common to both the internal and external representations. |
that are common to both the internal and external representations. |
29 |
For example, ELFMAG0 is the byte 0x7F in both the internal (in-memory) |
For example, ELFMAG0 is the byte 0x7F in both the internal (in-memory) |
30 |
and external (in-file) representations. */ |
and external (in-file) representations. */ |
31 |
|
|
32 |
#ifndef _ELF_COMMON_H |
#ifndef _ELF_COMMON_H |
33 |
#define _ELF_COMMON_H |
#define _ELF_COMMON_H |
34 |
|
|
35 |
/* Fields in e_ident[] */ |
/* Fields in e_ident[]. */ |
36 |
|
|
37 |
#define EI_MAG0 0 /* File identification byte 0 index */ |
#define EI_MAG0 0 /* File identification byte 0 index */ |
38 |
#define ELFMAG0 0x7F /* Magic number byte 0 */ |
#define ELFMAG0 0x7F /* Magic number byte 0 */ |
39 |
|
|
40 |
#define EI_MAG1 1 /* File identification byte 1 index */ |
#define EI_MAG1 1 /* File identification byte 1 index */ |
41 |
#define ELFMAG1 'E' /* Magic number byte 1 */ |
#define ELFMAG1 'E' /* Magic number byte 1 */ |
42 |
|
|
43 |
#define EI_MAG2 2 /* File identification byte 2 index */ |
#define EI_MAG2 2 /* File identification byte 2 index */ |
44 |
#define ELFMAG2 'L' /* Magic number byte 2 */ |
#define ELFMAG2 'L' /* Magic number byte 2 */ |
45 |
|
|
46 |
#define EI_MAG3 3 /* File identification byte 3 index */ |
#define EI_MAG3 3 /* File identification byte 3 index */ |
47 |
#define ELFMAG3 'F' /* Magic number byte 3 */ |
#define ELFMAG3 'F' /* Magic number byte 3 */ |
48 |
|
|
49 |
#define EI_CLASS 4 /* File class */ |
#define EI_CLASS 4 /* File class */ |
50 |
#define ELFCLASSNONE 0 /* Invalid class */ |
#define ELFCLASSNONE 0 /* Invalid class */ |
51 |
#define ELFCLASS32 1 /* 32-bit objects */ |
#define ELFCLASS32 1 /* 32-bit objects */ |
52 |
#define ELFCLASS64 2 /* 64-bit objects */ |
#define ELFCLASS64 2 /* 64-bit objects */ |
53 |
|
|
54 |
#define EI_DATA 5 /* Data encoding */ |
#define EI_DATA 5 /* Data encoding */ |
55 |
#define ELFDATANONE 0 /* Invalid data encoding */ |
#define ELFDATANONE 0 /* Invalid data encoding */ |
56 |
#define ELFDATA2LSB 1 /* 2's complement, little endian */ |
#define ELFDATA2LSB 1 /* 2's complement, little endian */ |
57 |
#define ELFDATA2MSB 2 /* 2's complement, big endian */ |
#define ELFDATA2MSB 2 /* 2's complement, big endian */ |
58 |
|
|
59 |
#define EI_VERSION 6 /* File version */ |
#define EI_VERSION 6 /* File version */ |
60 |
|
|
61 |
#define EI_OSABI 7 /* Operating System/ABI indication */ |
#define EI_OSABI 7 /* Operating System/ABI indication */ |
62 |
#define ELFOSABI_NONE 0 /* UNIX System V ABI */ |
#define ELFOSABI_NONE 0 /* UNIX System V ABI */ |
63 |
#define ELFOSABI_HPUX 1 /* HP-UX operating system */ |
#define ELFOSABI_HPUX 1 /* HP-UX operating system */ |
64 |
#define ELFOSABI_NETBSD 2 /* NetBSD */ |
#define ELFOSABI_NETBSD 2 /* NetBSD */ |
65 |
#define ELFOSABI_LINUX 3 /* GNU/Linux */ |
#define ELFOSABI_LINUX 3 /* GNU/Linux */ |
66 |
#define ELFOSABI_HURD 4 /* GNU/Hurd */ |
#define ELFOSABI_HURD 4 /* GNU/Hurd */ |
67 |
#define ELFOSABI_SOLARIS 6 /* Solaris */ |
#define ELFOSABI_SOLARIS 6 /* Solaris */ |
68 |
#define ELFOSABI_AIX 7 /* AIX */ |
#define ELFOSABI_AIX 7 /* AIX */ |
69 |
#define ELFOSABI_IRIX 8 /* IRIX */ |
#define ELFOSABI_IRIX 8 /* IRIX */ |
70 |
#define ELFOSABI_FREEBSD 9 /* FreeBSD */ |
#define ELFOSABI_FREEBSD 9 /* FreeBSD */ |
71 |
#define ELFOSABI_TRU64 10 /* TRU64 UNIX */ |
#define ELFOSABI_TRU64 10 /* TRU64 UNIX */ |
72 |
#define ELFOSABI_MODESTO 11 /* Novell Modesto */ |
#define ELFOSABI_MODESTO 11 /* Novell Modesto */ |
73 |
#define ELFOSABI_OPENBSD 12 /* OpenBSD */ |
#define ELFOSABI_OPENBSD 12 /* OpenBSD */ |
74 |
#define ELFOSABI_STANDALONE 255 /* Standalone (embedded) application */ |
#define ELFOSABI_OPENVMS 13 /* OpenVMS */ |
75 |
#define ELFOSABI_ARM 97 /* ARM */ |
#define ELFOSABI_NSK 14 /* Hewlett-Packard Non-Stop Kernel */ |
76 |
|
#define ELFOSABI_AROS 15 /* Amiga Research OS */ |
77 |
|
#define ELFOSABI_ARM 97 /* ARM */ |
78 |
|
#define ELFOSABI_STANDALONE 255 /* Standalone (embedded) application */ |
79 |
|
|
80 |
#define EI_ABIVERSION 8 /* ABI version */ |
#define EI_ABIVERSION 8 /* ABI version */ |
81 |
|
|
82 |
#define EI_PAD 9 /* Start of padding bytes */ |
#define EI_PAD 9 /* Start of padding bytes */ |
83 |
|
|
89 |
#define ET_EXEC 2 /* Executable file */ |
#define ET_EXEC 2 /* Executable file */ |
90 |
#define ET_DYN 3 /* Shared object file */ |
#define ET_DYN 3 /* Shared object file */ |
91 |
#define ET_CORE 4 /* Core file */ |
#define ET_CORE 4 /* Core file */ |
92 |
#define ET_LOOS 0xFE00 /* Operating system-specific */ |
#define ET_LOOS 0xFE00 /* Operating system-specific */ |
93 |
#define ET_HIOS 0xFEFF /* Operating system-specific */ |
#define ET_HIOS 0xFEFF /* Operating system-specific */ |
94 |
#define ET_LOPROC 0xFF00 /* Processor-specific */ |
#define ET_LOPROC 0xFF00 /* Processor-specific */ |
95 |
#define ET_HIPROC 0xFFFF /* Processor-specific */ |
#define ET_HIPROC 0xFFFF /* Processor-specific */ |
96 |
|
|
98 |
are officially assigned by registry@caldera.com. See below for a list of |
are officially assigned by registry@caldera.com. See below for a list of |
99 |
ad-hoc numbers used during initial development. */ |
ad-hoc numbers used during initial development. */ |
100 |
|
|
101 |
#define EM_NONE 0 /* No machine */ |
#define EM_NONE 0 /* No machine */ |
102 |
#define EM_M32 1 /* AT&T WE 32100 */ |
#define EM_M32 1 /* AT&T WE 32100 */ |
103 |
#define EM_SPARC 2 /* SUN SPARC */ |
#define EM_SPARC 2 /* SUN SPARC */ |
104 |
#define EM_386 3 /* Intel 80386 */ |
#define EM_386 3 /* Intel 80386 */ |
105 |
#define EM_68K 4 /* Motorola m68k family */ |
#define EM_68K 4 /* Motorola m68k family */ |
106 |
#define EM_88K 5 /* Motorola m88k family */ |
#define EM_88K 5 /* Motorola m88k family */ |
107 |
#define EM_486 6 /* Intel 80486 *//* Reserved for future use */ |
#define EM_486 6 /* Intel 80486 *//* Reserved for future use */ |
108 |
#define EM_860 7 /* Intel 80860 */ |
#define EM_860 7 /* Intel 80860 */ |
109 |
#define EM_MIPS 8 /* MIPS R3000 (officially, big-endian only) */ |
#define EM_MIPS 8 /* MIPS R3000 (officially, big-endian only) */ |
110 |
#define EM_S370 9 /* IBM System/370 */ |
#define EM_S370 9 /* IBM System/370 */ |
111 |
#define EM_MIPS_RS3_LE 10 /* MIPS R3000 little-endian (Oct 4 1999 Draft)*/ /* Depreciated */ |
#define EM_MIPS_RS3_LE 10 /* MIPS R3000 little-endian (Oct 4 1999 Draft) Deprecated */ |
112 |
|
|
113 |
#define EM_PARISC 15 /* HPPA */ |
#define EM_PARISC 15 /* HPPA */ |
114 |
|
|
115 |
#define EM_VPP550 17 /* Fujitsu VPP500 */ |
#define EM_VPP550 17 /* Fujitsu VPP500 */ |
116 |
#define EM_SPARC32PLUS 18 /* Sun's "v8plus" */ |
#define EM_SPARC32PLUS 18 /* Sun's "v8plus" */ |
117 |
#define EM_960 19 /* Intel 80960 */ |
#define EM_960 19 /* Intel 80960 */ |
118 |
#define EM_PPC 20 /* PowerPC */ |
#define EM_PPC 20 /* PowerPC */ |
119 |
#define EM_PPC64 21 /* 64-bit PowerPC */ |
#define EM_PPC64 21 /* 64-bit PowerPC */ |
120 |
#define EM_S390 22 /* IBM S/390 */ |
#define EM_S390 22 /* IBM S/390 */ |
121 |
|
|
122 |
#define EM_V800 36 /* NEC V800 series */ |
#define EM_V800 36 /* NEC V800 series */ |
123 |
#define EM_FR20 37 /* Fujitsu FR20 */ |
#define EM_FR20 37 /* Fujitsu FR20 */ |
124 |
#define EM_RH32 38 /* TRW RH32 */ |
#define EM_RH32 38 /* TRW RH32 */ |
125 |
#define EM_MCORE 39 /* Motorola M*Core */ /* May also be taken by Fujitsu MMA */ |
#define EM_MCORE 39 /* Motorola M*Core */ /* May also be taken by Fujitsu MMA */ |
126 |
#define EM_RCE 39 /* Old name for MCore */ |
#define EM_RCE 39 /* Old name for MCore */ |
127 |
#define EM_ARM 40 /* ARM */ |
#define EM_ARM 40 /* ARM */ |
128 |
#define EM_OLD_ALPHA 41 /* Digital Alpha */ |
#define EM_OLD_ALPHA 41 /* Digital Alpha */ |
129 |
#define EM_SH 42 /* Hitachi SH */ |
#define EM_SH 42 /* Renesas (formerly Hitachi) / SuperH SH */ |
130 |
#define EM_SPARCV9 43 /* SPARC v9 64-bit */ |
#define EM_SPARCV9 43 /* SPARC v9 64-bit */ |
131 |
#define EM_TRICORE 44 /* Siemens Tricore embedded processor */ |
#define EM_TRICORE 44 /* Siemens Tricore embedded processor */ |
132 |
#define EM_ARC 45 /* ARC Cores */ |
#define EM_ARC 45 /* ARC Cores */ |
133 |
#define EM_H8_300 46 /* Hitachi H8/300 */ |
#define EM_H8_300 46 /* Renesas (formerly Hitachi) H8/300 */ |
134 |
#define EM_H8_300H 47 /* Hitachi H8/300H */ |
#define EM_H8_300H 47 /* Renesas (formerly Hitachi) H8/300H */ |
135 |
#define EM_H8S 48 /* Hitachi H8S */ |
#define EM_H8S 48 /* Renesas (formerly Hitachi) H8S */ |
136 |
#define EM_H8_500 49 /* Hitachi H8/500 */ |
#define EM_H8_500 49 /* Renesas (formerly Hitachi) H8/500 */ |
137 |
#define EM_IA_64 50 /* Intel IA-64 Processor */ |
#define EM_IA_64 50 /* Intel IA-64 Processor */ |
138 |
#define EM_MIPS_X 51 /* Stanford MIPS-X */ |
#define EM_MIPS_X 51 /* Stanford MIPS-X */ |
139 |
#define EM_COLDFIRE 52 /* Motorola Coldfire */ |
#define EM_COLDFIRE 52 /* Motorola Coldfire */ |
140 |
#define EM_68HC12 53 /* Motorola M68HC12 */ |
#define EM_68HC12 53 /* Motorola M68HC12 */ |
141 |
#define EM_MMA 54 /* Fujitsu Multimedia Accelerator */ |
#define EM_MMA 54 /* Fujitsu Multimedia Accelerator */ |
142 |
#define EM_PCP 55 /* Siemens PCP */ |
#define EM_PCP 55 /* Siemens PCP */ |
143 |
#define EM_NCPU 56 /* Sony nCPU embedded RISC processor */ |
#define EM_NCPU 56 /* Sony nCPU embedded RISC processor */ |
144 |
#define EM_NDR1 57 /* Denso NDR1 microprocesspr */ |
#define EM_NDR1 57 /* Denso NDR1 microprocesspr */ |
145 |
#define EM_STARCORE 58 /* Motorola Star*Core processor */ |
#define EM_STARCORE 58 /* Motorola Star*Core processor */ |
146 |
#define EM_ME16 59 /* Toyota ME16 processor */ |
#define EM_ME16 59 /* Toyota ME16 processor */ |
147 |
#define EM_ST100 60 /* STMicroelectronics ST100 processor */ |
#define EM_ST100 60 /* STMicroelectronics ST100 processor */ |
148 |
#define EM_TINYJ 61 /* Advanced Logic Corp. TinyJ embedded processor */ |
#define EM_TINYJ 61 /* Advanced Logic Corp. TinyJ embedded processor */ |
149 |
#define EM_X86_64 62 /* Advanced Micro Devices X86-64 processor */ |
#define EM_X86_64 62 /* Advanced Micro Devices X86-64 processor */ |
150 |
|
|
151 |
#define EM_PDP10 64 /* Digital Equipment Corp. PDP-10 */ |
#define EM_PDP10 64 /* Digital Equipment Corp. PDP-10 */ |
152 |
#define EM_PDP11 65 /* Digital Equipment Corp. PDP-11 */ |
#define EM_PDP11 65 /* Digital Equipment Corp. PDP-11 */ |
153 |
#define EM_FX66 66 /* Siemens FX66 microcontroller */ |
#define EM_FX66 66 /* Siemens FX66 microcontroller */ |
154 |
#define EM_ST9PLUS 67 /* STMicroelectronics ST9+ 8/16 bit microcontroller */ |
#define EM_ST9PLUS 67 /* STMicroelectronics ST9+ 8/16 bit microcontroller */ |
155 |
#define EM_ST7 68 /* STMicroelectronics ST7 8-bit microcontroller */ |
#define EM_ST7 68 /* STMicroelectronics ST7 8-bit microcontroller */ |
156 |
#define EM_68HC16 69 /* Motorola MC68HC16 Microcontroller */ |
#define EM_68HC16 69 /* Motorola MC68HC16 Microcontroller */ |
157 |
#define EM_68HC11 70 /* Motorola MC68HC11 Microcontroller */ |
#define EM_68HC11 70 /* Motorola MC68HC11 Microcontroller */ |
158 |
#define EM_68HC08 71 /* Motorola MC68HC08 Microcontroller */ |
#define EM_68HC08 71 /* Motorola MC68HC08 Microcontroller */ |
159 |
#define EM_68HC05 72 /* Motorola MC68HC05 Microcontroller */ |
#define EM_68HC05 72 /* Motorola MC68HC05 Microcontroller */ |
160 |
#define EM_SVX 73 /* Silicon Graphics SVx */ |
#define EM_SVX 73 /* Silicon Graphics SVx */ |
161 |
#define EM_ST19 74 /* STMicroelectronics ST19 8-bit cpu */ |
#define EM_ST19 74 /* STMicroelectronics ST19 8-bit cpu */ |
162 |
#define EM_VAX 75 /* Digital VAX */ |
#define EM_VAX 75 /* Digital VAX */ |
163 |
#define EM_CRIS 76 /* Axis Communications 32-bit embedded processor */ |
#define EM_CRIS 76 /* Axis Communications 32-bit embedded processor */ |
164 |
#define EM_JAVELIN 77 /* Infineon Technologies 32-bit embedded cpu */ |
#define EM_JAVELIN 77 /* Infineon Technologies 32-bit embedded cpu */ |
165 |
#define EM_FIREPATH 78 /* Element 14 64-bit DSP processor */ |
#define EM_FIREPATH 78 /* Element 14 64-bit DSP processor */ |
166 |
#define EM_ZSP 79 /* LSI Logic's 16-bit DSP processor */ |
#define EM_ZSP 79 /* LSI Logic's 16-bit DSP processor */ |
167 |
#define EM_MMIX 80 /* Donald Knuth's educational 64-bit processor */ |
#define EM_MMIX 80 /* Donald Knuth's educational 64-bit processor */ |
168 |
#define EM_HUANY 81 /* Harvard's machine-independent format */ |
#define EM_HUANY 81 /* Harvard's machine-independent format */ |
169 |
#define EM_PRISM 82 /* SiTera Prism */ |
#define EM_PRISM 82 /* SiTera Prism */ |
170 |
#define EM_AVR 83 /* Atmel AVR 8-bit microcontroller */ |
#define EM_AVR 83 /* Atmel AVR 8-bit microcontroller */ |
171 |
#define EM_FR30 84 /* Fujitsu FR30 */ |
#define EM_FR30 84 /* Fujitsu FR30 */ |
172 |
#define EM_D10V 85 /* Mitsubishi D10V */ |
#define EM_D10V 85 /* Mitsubishi D10V */ |
173 |
#define EM_D30V 86 /* Mitsubishi D30V */ |
#define EM_D30V 86 /* Mitsubishi D30V */ |
174 |
#define EM_V850 87 /* NEC v850 */ |
#define EM_V850 87 /* NEC v850 */ |
175 |
#define EM_M32R 88 /* Mitsubishi M32R */ |
#define EM_M32R 88 /* Renesas M32R (formerly Mitsubishi M32R) */ |
176 |
#define EM_MN10300 89 /* Matsushita MN10300 */ |
#define EM_MN10300 89 /* Matsushita MN10300 */ |
177 |
#define EM_MN10200 90 /* Matsushita MN10200 */ |
#define EM_MN10200 90 /* Matsushita MN10200 */ |
178 |
#define EM_PJ 91 /* picoJava */ |
#define EM_PJ 91 /* picoJava */ |
179 |
#define EM_OPENRISC 92 /* OpenRISC 32-bit embedded processor */ |
#define EM_OPENRISC 92 /* OpenRISC 32-bit embedded processor */ |
180 |
#define EM_ARC_A5 93 /* ARC Cores Tangent-A5 */ |
#define EM_ARC_A5 93 /* ARC Cores Tangent-A5 */ |
181 |
#define EM_XTENSA 94 /* Tensilica Xtensa Architecture */ |
#define EM_XTENSA 94 /* Tensilica Xtensa Architecture */ |
182 |
#define EM_IP2K 101 /* Ubicom IP2022 micro controller */ |
#define EM_IP2K 101 /* Ubicom IP2022 micro controller */ |
183 |
|
#define EM_CR 103 /* National Semiconductor CompactRISC */ |
184 |
|
#define EM_MSP430 105 /* TI msp430 micro controller */ |
185 |
|
#define EM_CRX 114 /* National Semiconductor CRX */ |
186 |
|
|
187 |
/* If it is necessary to assign new unofficial EM_* values, please pick large |
/* If it is necessary to assign new unofficial EM_* values, please pick large |
188 |
random numbers (0x8523, 0xa7f2, etc.) to minimize the chances of collision |
random numbers (0x8523, 0xa7f2, etc.) to minimize the chances of collision |
194 |
|
|
195 |
Normally, each entity or maintainer responsible for a machine with an |
Normally, each entity or maintainer responsible for a machine with an |
196 |
unofficial e_machine number should eventually ask registry@caldera.com for |
unofficial e_machine number should eventually ask registry@caldera.com for |
197 |
an officially blessed number to be added to the list above. */ |
an officially blessed number to be added to the list above. */ |
198 |
|
|
199 |
#define EM_PJ_OLD 99 /* picoJava */ |
#define EM_PJ_OLD 99 /* picoJava */ |
200 |
|
|
201 |
/* Cygnus PowerPC ELF backend. Written in the absence of an ABI. */ |
/* Cygnus PowerPC ELF backend. Written in the absence of an ABI. */ |
202 |
#define EM_CYGNUS_POWERPC 0x9025 |
#define EM_CYGNUS_POWERPC 0x9025 |
208 |
/* Old version of PowerPC, this should be removed shortly. */ |
/* Old version of PowerPC, this should be removed shortly. */ |
209 |
#define EM_PPC_OLD 17 |
#define EM_PPC_OLD 17 |
210 |
|
|
211 |
/* (Depreciated) Temporary number for the OpenRISC processor. */ |
/* (Deprecated) Temporary number for the OpenRISC processor. */ |
212 |
#define EM_OR32 0x8472 |
#define EM_OR32 0x8472 |
213 |
|
|
214 |
/* Cygnus M32R ELF backend. Written in the absence of an ABI. */ |
/* Cygnus M32R ELF backend. Written in the absence of an ABI. */ |
215 |
#define EM_CYGNUS_M32R 0x9041 |
#define EM_CYGNUS_M32R 0x9041 |
216 |
|
|
217 |
/* Alpha backend magic number. Written in the absence of an ABI. */ |
/* Alpha backend magic number. Written in the absence of an ABI. */ |
218 |
#define EM_ALPHA 0x9026 |
#define EM_ALPHA 0x9026 |
249 |
Written in the absense of an ABI. */ |
Written in the absense of an ABI. */ |
250 |
#define EM_DLX 0x5aa5 |
#define EM_DLX 0x5aa5 |
251 |
|
|
252 |
#define EM_XSTORMY16 0xad45 |
#define EM_XSTORMY16 0xad45 |
253 |
|
|
254 |
/* FRV magic number - no EABI available??. */ |
/* FRV magic number - no EABI available??. */ |
255 |
#define EM_CYGNUS_FRV 0x5441 |
#define EM_CYGNUS_FRV 0x5441 |
256 |
|
|
257 |
/* Ubicom IP2xxx; no ABI */ |
/* Ubicom IP2xxx; no ABI */ |
258 |
#define EM_IP2K_OLD 0x8217 |
#define EM_IP2K_OLD 0x8217 |
259 |
|
|
260 |
|
/* MSP430 magic number |
261 |
|
Written in the absense everything. */ |
262 |
|
#define EM_MSP430_OLD 0x1059 |
263 |
|
|
264 |
|
/* Vitesse IQ2000. */ |
265 |
|
#define EM_IQ2000 0xFEBA |
266 |
|
|
267 |
|
/* Old, unofficial value for Xtensa. */ |
268 |
|
#define EM_XTENSA_OLD 0xabc7 |
269 |
|
|
270 |
/* See the above comment before you add a new EM_* value here. */ |
/* See the above comment before you add a new EM_* value here. */ |
271 |
|
|
276 |
|
|
277 |
/* Values for program header, p_type field. */ |
/* Values for program header, p_type field. */ |
278 |
|
|
279 |
#define PT_NULL 0 /* Program header table entry unused */ |
#define PT_NULL 0 /* Program header table entry unused */ |
280 |
#define PT_LOAD 1 /* Loadable program segment */ |
#define PT_LOAD 1 /* Loadable program segment */ |
281 |
#define PT_DYNAMIC 2 /* Dynamic linking information */ |
#define PT_DYNAMIC 2 /* Dynamic linking information */ |
282 |
#define PT_INTERP 3 /* Program interpreter */ |
#define PT_INTERP 3 /* Program interpreter */ |
284 |
#define PT_SHLIB 5 /* Reserved, unspecified semantics */ |
#define PT_SHLIB 5 /* Reserved, unspecified semantics */ |
285 |
#define PT_PHDR 6 /* Entry for header table itself */ |
#define PT_PHDR 6 /* Entry for header table itself */ |
286 |
#define PT_TLS 7 /* Thread local storage segment */ |
#define PT_TLS 7 /* Thread local storage segment */ |
287 |
#define PT_LOOS 0x60000000 /* OS-specific */ |
#define PT_LOOS 0x60000000 /* OS-specific */ |
288 |
#define PT_HIOS 0x6fffffff /* OS-specific */ |
#define PT_HIOS 0x6fffffff /* OS-specific */ |
289 |
#define PT_LOPROC 0x70000000 /* Processor-specific */ |
#define PT_LOPROC 0x70000000 /* Processor-specific */ |
290 |
#define PT_HIPROC 0x7FFFFFFF /* Processor-specific */ |
#define PT_HIPROC 0x7FFFFFFF /* Processor-specific */ |
291 |
|
|
292 |
#define PT_GNU_EH_FRAME (PT_LOOS + 0x474e550) |
#define PT_GNU_EH_FRAME (PT_LOOS + 0x474e550) /* Frame unwind information */ |
293 |
|
#define PT_SUNW_EH_FRAME PT_GNU_EH_FRAME /* Solaris uses the same value */ |
294 |
|
#define PT_GNU_STACK (PT_LOOS + 0x474e551) /* Stack flags */ |
295 |
|
#define PT_GNU_RELRO (PT_LOOS + 0x474e552) /* Read-only after relocation */ |
296 |
|
|
297 |
/* Program segment permissions, in program header p_flags field. */ |
/* Program segment permissions, in program header p_flags field. */ |
298 |
|
|
318 |
#define SHT_SHLIB 10 /* Reserved, unspecified semantics */ |
#define SHT_SHLIB 10 /* Reserved, unspecified semantics */ |
319 |
#define SHT_DYNSYM 11 /* Dynamic linking symbol table */ |
#define SHT_DYNSYM 11 /* Dynamic linking symbol table */ |
320 |
|
|
321 |
#define SHT_INIT_ARRAY 14 /* Array of ptrs to init functions */ |
#define SHT_INIT_ARRAY 14 /* Array of ptrs to init functions */ |
322 |
#define SHT_FINI_ARRAY 15 /* Array of ptrs to finish functions */ |
#define SHT_FINI_ARRAY 15 /* Array of ptrs to finish functions */ |
323 |
#define SHT_PREINIT_ARRAY 16 /* Array of ptrs to pre-init funcs */ |
#define SHT_PREINIT_ARRAY 16 /* Array of ptrs to pre-init funcs */ |
324 |
#define SHT_GROUP 17 /* Section contains a section group */ |
#define SHT_GROUP 17 /* Section contains a section group */ |
325 |
#define SHT_SYMTAB_SHNDX 18 /* Indicies for SHN_XINDEX entries */ |
#define SHT_SYMTAB_SHNDX 18 /* Indicies for SHN_XINDEX entries */ |
326 |
|
|
327 |
#define SHT_LOOS 0x60000000 /* First of OS specific semantics */ |
#define SHT_LOOS 0x60000000 /* First of OS specific semantics */ |
328 |
#define SHT_HIOS 0x6fffffff /* Last of OS specific semantics */ |
#define SHT_HIOS 0x6fffffff /* Last of OS specific semantics */ |
329 |
|
|
330 |
#define SHT_GNU_LIBLIST 0x6ffffff7 /* List of prelink dependencies */ |
#define SHT_GNU_LIBLIST 0x6ffffff7 /* List of prelink dependencies */ |
331 |
|
|
354 |
#define SHF_MERGE (1 << 4) /* Data in this section can be merged */ |
#define SHF_MERGE (1 << 4) /* Data in this section can be merged */ |
355 |
#define SHF_STRINGS (1 << 5) /* Contains null terminated character strings */ |
#define SHF_STRINGS (1 << 5) /* Contains null terminated character strings */ |
356 |
#define SHF_INFO_LINK (1 << 6) /* sh_info holds section header table index */ |
#define SHF_INFO_LINK (1 << 6) /* sh_info holds section header table index */ |
357 |
#define SHF_LINK_ORDER (1 << 7) /* Preserve section ordering when linking */ |
#define SHF_LINK_ORDER (1 << 7) /* Preserve section ordering when linking */ |
358 |
#define SHF_OS_NONCONFORMING (1 << 8) /* OS specific processing required */ |
#define SHF_OS_NONCONFORMING (1 << 8) /* OS specific processing required */ |
359 |
#define SHF_GROUP (1 << 9) /* Member of a section group */ |
#define SHF_GROUP (1 << 9) /* Member of a section group */ |
360 |
#define SHF_TLS (1 << 10) /* Thread local storage section */ |
#define SHF_TLS (1 << 10) /* Thread local storage section */ |
369 |
#define NT_FPREGSET 2 /* Contains copy of fpregset struct */ |
#define NT_FPREGSET 2 /* Contains copy of fpregset struct */ |
370 |
#define NT_PRPSINFO 3 /* Contains copy of prpsinfo struct */ |
#define NT_PRPSINFO 3 /* Contains copy of prpsinfo struct */ |
371 |
#define NT_TASKSTRUCT 4 /* Contains copy of task struct */ |
#define NT_TASKSTRUCT 4 /* Contains copy of task struct */ |
372 |
#define NT_PRXFPREG 0x46e62b7f /* Contains a user_xfpregs_struct; */ |
#define NT_AUXV 6 /* Contains copy of Elfxx_auxv_t */ |
373 |
|
#define NT_PRXFPREG 0x46e62b7f /* Contains a user_xfpregs_struct; */ |
374 |
/* note name must be "LINUX". */ |
/* note name must be "LINUX". */ |
375 |
|
|
376 |
/* Note segments for core files on dir-style procfs systems. */ |
/* Note segments for core files on dir-style procfs systems. */ |
401 |
#define GNU_ABI_TAG_LINUX 0 |
#define GNU_ABI_TAG_LINUX 0 |
402 |
#define GNU_ABI_TAG_HURD 1 |
#define GNU_ABI_TAG_HURD 1 |
403 |
#define GNU_ABI_TAG_SOLARIS 2 |
#define GNU_ABI_TAG_SOLARIS 2 |
404 |
|
#define GNU_ABI_TAG_FREEBSD 3 |
405 |
|
#define GNU_ABI_TAG_NETBSD 4 |
406 |
|
|
407 |
/* Values for NetBSD .note.netbsd.ident notes. Note name is "NetBSD". */ |
/* Values for NetBSD .note.netbsd.ident notes. Note name is "NetBSD". */ |
408 |
|
|
409 |
#define NT_NETBSD_IDENT 1 |
#define NT_NETBSD_IDENT 1 |
410 |
|
|
411 |
|
/* Values for OpenBSD .note.openbsd.ident notes. Note name is "OpenBSD". */ |
412 |
|
|
413 |
|
#define NT_OPENBSD_IDENT 1 |
414 |
|
|
415 |
/* Values for FreeBSD .note.ABI-tag notes. Note name is "FreeBSD". */ |
/* Values for FreeBSD .note.ABI-tag notes. Note name is "FreeBSD". */ |
416 |
|
|
417 |
#define NT_FREEBSD_ABI_TAG 1 |
#define NT_FREEBSD_ABI_TAG 1 |
449 |
#define STB_LOCAL 0 /* Symbol not visible outside obj */ |
#define STB_LOCAL 0 /* Symbol not visible outside obj */ |
450 |
#define STB_GLOBAL 1 /* Symbol visible outside obj */ |
#define STB_GLOBAL 1 /* Symbol visible outside obj */ |
451 |
#define STB_WEAK 2 /* Like globals, lower precedence */ |
#define STB_WEAK 2 /* Like globals, lower precedence */ |
452 |
#define STB_LOOS 10 /* OS-specific semantics */ |
#define STB_LOOS 10 /* OS-specific semantics */ |
453 |
#define STB_HIOS 12 /* OS-specific semantics */ |
#define STB_HIOS 12 /* OS-specific semantics */ |
454 |
#define STB_LOPROC 13 /* Application-specific semantics */ |
#define STB_LOPROC 13 /* Application-specific semantics */ |
455 |
#define STB_HIPROC 15 /* Application-specific semantics */ |
#define STB_HIPROC 15 /* Application-specific semantics */ |
456 |
|
|
461 |
#define STT_FILE 4 /* Symbol gives a file name */ |
#define STT_FILE 4 /* Symbol gives a file name */ |
462 |
#define STT_COMMON 5 /* An uninitialised common block */ |
#define STT_COMMON 5 /* An uninitialised common block */ |
463 |
#define STT_TLS 6 /* Thread local data object */ |
#define STT_TLS 6 /* Thread local data object */ |
464 |
#define STT_LOOS 10 /* OS-specific semantics */ |
#define STT_LOOS 10 /* OS-specific semantics */ |
465 |
#define STT_HIOS 12 /* OS-specific semantics */ |
#define STT_HIOS 12 /* OS-specific semantics */ |
466 |
#define STT_LOPROC 13 /* Application-specific semantics */ |
#define STT_LOPROC 13 /* Application-specific semantics */ |
467 |
#define STT_HIPROC 15 /* Application-specific semantics */ |
#define STT_HIPROC 15 /* Application-specific semantics */ |
468 |
|
|
473 |
#define SHN_LORESERVE 0xFF00 /* Begin range of reserved indices */ |
#define SHN_LORESERVE 0xFF00 /* Begin range of reserved indices */ |
474 |
#define SHN_LOPROC 0xFF00 /* Begin range of appl-specific */ |
#define SHN_LOPROC 0xFF00 /* Begin range of appl-specific */ |
475 |
#define SHN_HIPROC 0xFF1F /* End range of appl-specific */ |
#define SHN_HIPROC 0xFF1F /* End range of appl-specific */ |
476 |
#define SHN_LOOS 0xFF20 /* OS specific semantics, lo */ |
#define SHN_LOOS 0xFF20 /* OS specific semantics, lo */ |
477 |
#define SHN_HIOS 0xFF3F /* OS specific semantics, hi */ |
#define SHN_HIOS 0xFF3F /* OS specific semantics, hi */ |
478 |
#define SHN_ABS 0xFFF1 /* Associated symbol is absolute */ |
#define SHN_ABS 0xFFF1 /* Associated symbol is absolute */ |
479 |
#define SHN_COMMON 0xFFF2 /* Associated symbol is in common */ |
#define SHN_COMMON 0xFFF2 /* Associated symbol is in common */ |
480 |
#define SHN_XINDEX 0xFFFF /* Section index is held elsewhere */ |
#define SHN_XINDEX 0xFFFF /* Section index is held elsewhere */ |
481 |
#define SHN_HIRESERVE 0xFFFF /* End range of reserved indices */ |
#define SHN_HIRESERVE 0xFFFF /* End range of reserved indices */ |
482 |
#define SHN_BAD ((unsigned) -1) /* Used internally by bfd */ |
#define SHN_BAD ((unsigned) -1) /* Used internally by bfd */ |
483 |
|
|
484 |
/* The following constants control how a symbol may be accessed once it has |
/* The following constants control how a symbol may be accessed once it has |
485 |
become part of an executable or shared library. */ |
become part of an executable or shared library. */ |
486 |
|
|
487 |
#define STV_DEFAULT 0 /* Visibility is specified by binding type */ |
#define STV_DEFAULT 0 /* Visibility is specified by binding type */ |
488 |
#define STV_INTERNAL 1 /* OS specific version of STV_HIDDEN */ |
#define STV_INTERNAL 1 /* OS specific version of STV_HIDDEN */ |
489 |
#define STV_HIDDEN 2 /* Can only be seen inside currect component */ |
#define STV_HIDDEN 2 /* Can only be seen inside currect component */ |
497 |
|
|
498 |
#define ELF64_R_SYM(i) ((i) >> 32) |
#define ELF64_R_SYM(i) ((i) >> 32) |
499 |
#define ELF64_R_TYPE(i) ((i) & 0xffffffff) |
#define ELF64_R_TYPE(i) ((i) & 0xffffffff) |
500 |
#define ELF64_R_INFO(s,t) (((bfd_vma) (s) << 32) + (bfd_vma) (t)) |
#define ELF64_R_INFO(s,t) (((bfd_vma) (s) << 31 << 1) + (bfd_vma) (t)) |
501 |
|
|
502 |
/* Dynamic section tags. */ |
/* Dynamic section tags. */ |
503 |
|
|
525 |
#define DT_DEBUG 21 |
#define DT_DEBUG 21 |
526 |
#define DT_TEXTREL 22 |
#define DT_TEXTREL 22 |
527 |
#define DT_JMPREL 23 |
#define DT_JMPREL 23 |
528 |
#define DT_BIND_NOW 24 |
#define DT_BIND_NOW 24 |
529 |
#define DT_INIT_ARRAY 25 |
#define DT_INIT_ARRAY 25 |
530 |
#define DT_FINI_ARRAY 26 |
#define DT_FINI_ARRAY 26 |
531 |
#define DT_INIT_ARRAYSZ 27 |
#define DT_INIT_ARRAYSZ 27 |
532 |
#define DT_FINI_ARRAYSZ 28 |
#define DT_FINI_ARRAYSZ 28 |
533 |
#define DT_RUNPATH 29 |
#define DT_RUNPATH 29 |
534 |
#define DT_FLAGS 30 |
#define DT_FLAGS 30 |
535 |
|
#define DT_ENCODING 31 |
|
#define DT_ENCODING 32 |
|
536 |
#define DT_PREINIT_ARRAY 32 |
#define DT_PREINIT_ARRAY 32 |
537 |
#define DT_PREINIT_ARRAYSZ 33 |
#define DT_PREINIT_ARRAYSZ 33 |
538 |
|
|
539 |
/* Note, the Oct 4, 1999 draft of the ELF ABI changed the values |
/* Note, the Oct 4, 1999 draft of the ELF ABI changed the values |
540 |
for DT_LOOS and DT_HIOS. Some implementations however, use |
for DT_LOOS and DT_HIOS. Some implementations however, use |
541 |
values outside of the new range (see below). */ |
values outside of the new range (see below). */ |
542 |
#define OLD_DT_LOOS 0x60000000 |
#define OLD_DT_LOOS 0x60000000 |
543 |
#define DT_LOOS 0x6000000d |
#define DT_LOOS 0x6000000d |
544 |
#define DT_HIOS 0x6fff0000 |
#define DT_HIOS 0x6ffff000 |
545 |
#define OLD_DT_HIOS 0x6fffffff |
#define OLD_DT_HIOS 0x6fffffff |
546 |
|
|
547 |
#define DT_LOPROC 0x70000000 |
#define DT_LOPROC 0x70000000 |
548 |
#define DT_HIPROC 0x7fffffff |
#define DT_HIPROC 0x7fffffff |
549 |
|
|
550 |
/* The next four dynamic tags are used on Solaris. We support them |
/* The next four dynamic tags are used on Solaris. We support them |
551 |
everywhere. Note these values lie outside of the (new) range for |
everywhere. Note these values lie outside of the (new) range for |
552 |
OS specific values. This is a deliberate special case and we |
OS specific values. This is a deliberate special case and we |
553 |
maintain it for backwards compatability. */ |
maintain it for backwards compatability. */ |
554 |
#define DT_VALRNGLO 0x6ffffd00 |
#define DT_VALRNGLO 0x6ffffd00 |
555 |
#define DT_GNU_PRELINKED 0x6ffffdf5 |
#define DT_GNU_PRELINKED 0x6ffffdf5 |
608 |
defined here is the same as the one in <sys/link.h> on Solaris 8. */ |
defined here is the same as the one in <sys/link.h> on Solaris 8. */ |
609 |
#define DTF_1_CONFEXP 0x00000002 |
#define DTF_1_CONFEXP 0x00000002 |
610 |
|
|
611 |
/* Flag values used in the DT_POSFLAG_1 .dynamic entry. */ |
/* Flag values used in the DT_POSFLAG_1 .dynamic entry. */ |
612 |
#define DF_P1_LAZYLOAD 0x00000001 |
#define DF_P1_LAZYLOAD 0x00000001 |
613 |
#define DF_P1_GROUPPERM 0x00000002 |
#define DF_P1_GROUPPERM 0x00000002 |
614 |
|
|
628 |
#define DF_1_NODUMP 0x00001000 |
#define DF_1_NODUMP 0x00001000 |
629 |
#define DF_1_CONLFAT 0x00002000 |
#define DF_1_CONLFAT 0x00002000 |
630 |
|
|
631 |
/* Flag values for the DT_FLAGS entry. */ |
/* Flag values for the DT_FLAGS entry. */ |
632 |
#define DF_ORIGIN (1 << 0) |
#define DF_ORIGIN (1 << 0) |
633 |
#define DF_SYMBOLIC (1 << 1) |
#define DF_SYMBOLIC (1 << 1) |
634 |
#define DF_TEXTREL (1 << 2) |
#define DF_TEXTREL (1 << 2) |
695 |
#define SYMINFO_CURRENT 1 |
#define SYMINFO_CURRENT 1 |
696 |
#define SYMINFO_NUM 2 |
#define SYMINFO_NUM 2 |
697 |
|
|
698 |
/* Section Group Flags. */ |
/* Section Group Flags. */ |
699 |
|
|
700 |
#define GRP_COMDAT 0x1 /* A COMDAT group */ |
#define GRP_COMDAT 0x1 /* A COMDAT group */ |
701 |
|
|
702 |
|
/* Auxv a_type values. */ |
703 |
|
|
704 |
|
#define AT_NULL 0 /* End of vector */ |
705 |
|
#define AT_IGNORE 1 /* Entry should be ignored */ |
706 |
|
#define AT_EXECFD 2 /* File descriptor of program */ |
707 |
|
#define AT_PHDR 3 /* Program headers for program */ |
708 |
|
#define AT_PHENT 4 /* Size of program header entry */ |
709 |
|
#define AT_PHNUM 5 /* Number of program headers */ |
710 |
|
#define AT_PAGESZ 6 /* System page size */ |
711 |
|
#define AT_BASE 7 /* Base address of interpreter */ |
712 |
|
#define AT_FLAGS 8 /* Flags */ |
713 |
|
#define AT_ENTRY 9 /* Entry point of program */ |
714 |
|
#define AT_NOTELF 10 /* Program is not ELF */ |
715 |
|
#define AT_UID 11 /* Real uid */ |
716 |
|
#define AT_EUID 12 /* Effective uid */ |
717 |
|
#define AT_GID 13 /* Real gid */ |
718 |
|
#define AT_EGID 14 /* Effective gid */ |
719 |
|
#define AT_CLKTCK 17 /* Frequency of times() */ |
720 |
|
#define AT_PLATFORM 15 /* String identifying platform. */ |
721 |
|
#define AT_HWCAP 16 /* Machine dependent hints about |
722 |
|
processor capabilities. */ |
723 |
|
#define AT_FPUCW 18 /* Used FPU control word. */ |
724 |
|
#define AT_DCACHEBSIZE 19 /* Data cache block size. */ |
725 |
|
#define AT_ICACHEBSIZE 20 /* Instruction cache block size. */ |
726 |
|
#define AT_UCACHEBSIZE 21 /* Unified cache block size. */ |
727 |
|
#define AT_IGNOREPPC 22 /* Entry should be ignored */ |
728 |
|
#define AT_SECURE 23 /* Boolean, was exec setuid-like? */ |
729 |
|
/* Pointer to the global system page used for system calls and other |
730 |
|
nice things. */ |
731 |
|
#define AT_SYSINFO 32 |
732 |
|
#define AT_SYSINFO_EHDR 33 /* Pointer to ELF header of system-supplied DSO. */ |
733 |
|
|
734 |
|
#define AT_SUN_UID 2000 /* Effective user ID. */ |
735 |
|
#define AT_SUN_RUID 2001 /* Real user ID. */ |
736 |
|
#define AT_SUN_GID 2002 /* Effective group ID. */ |
737 |
|
#define AT_SUN_RGID 2003 /* Real group ID. */ |
738 |
|
#define AT_SUN_LDELF 2004 /* Dynamic linker's ELF header. */ |
739 |
|
#define AT_SUN_LDSHDR 2005 /* Dynamic linker's section headers. */ |
740 |
|
#define AT_SUN_LDNAME 2006 /* String giving name of dynamic linker. */ |
741 |
|
#define AT_SUN_LPAGESZ 2007 /* Large pagesize. */ |
742 |
|
#define AT_SUN_PLATFORM 2008 /* Platform name string. */ |
743 |
|
#define AT_SUN_HWCAP 2009 /* Machine dependent hints about |
744 |
|
processor capabilities. */ |
745 |
|
#define AT_SUN_IFLUSH 2010 /* Should flush icache? */ |
746 |
|
#define AT_SUN_CPU 2011 /* CPU name string. */ |
747 |
|
#define AT_SUN_EMUL_ENTRY 2012 /* COFF entry point address. */ |
748 |
|
#define AT_SUN_EMUL_EXECFD 2013 /* COFF executable file descriptor. */ |
749 |
|
#define AT_SUN_EXECNAME 2014 /* Canonicalized file name given to execve. */ |
750 |
|
#define AT_SUN_MMU 2015 /* String for name of MMU module. */ |
751 |
|
#define AT_SUN_LDDATA 2016 /* Dynamic linker's data segment address. */ |
752 |
|
|
753 |
|
|
754 |
#endif /* _ELF_COMMON_H */ |
#endif /* _ELF_COMMON_H */ |